diff --git a/src/app/puzzle/puzzlemainwindow.ui b/src/app/puzzle/puzzlemainwindow.ui
index 9f991ae41..30bb49096 100644
--- a/src/app/puzzle/puzzlemainwindow.ui
+++ b/src/app/puzzle/puzzlemainwindow.ui
@@ -37,7 +37,7 @@
- 320
+ 360
0
@@ -102,8 +102,8 @@
0
0
- 115
- 41
+ 356
+ 779
@@ -185,7 +185,7 @@
0
0
- 316
+ 356
779
@@ -212,47 +212,47 @@
-
-
-
+
Unit
-
-
+
-
-
+
- Templates
+ Template
-
-
+
-
-
+
Width
-
-
+
-
-
+
-
-
+
Length
-
-
+
Orientation
@@ -261,7 +261,7 @@
-
-
-
+
Portrait
@@ -284,7 +284,7 @@
-
-
+
Landscape
@@ -307,6 +307,13 @@
+ -
+
+
+ Remove unused length
+
+
+
@@ -395,6 +402,101 @@
Control
+
+ -
+
+
-
+
+
+ Follow grainline
+
+
+
+ -
+
+
-
+
+
+ No
+
+
+
+ -
+
+
+ Vertical grainline
+
+
+
+
+
+
+ :/puzzleicon/64x64/iconGrainlineVertical.png:/puzzleicon/64x64/iconGrainlineVertical.png
+
+
+
+ 28
+ 28
+
+
+
+
+ -
+
+
+ Horizontal grainline
+
+
+
+
+
+
+ :/puzzleicon/64x64/iconGrainlineHorizontal.png:/puzzleicon/64x64/iconGrainlineHorizontal.png
+
+
+
+ 28
+ 28
+
+
+
+
+
+
+ -
+
+
+ Pieces gap
+
+
+
+ -
+
+
+
+
+ -
+
+
+ Wargnin superposition of pieces
+
+
+
+ -
+
+
+ Warning pieces out of bound
+
+
+
+ -
+
+
+ Sticky edges
+
+
+
+
-
@@ -402,6 +504,29 @@
Export
+
+
-
+
+
-
+
+
+ Format
+
+
+
+ -
+
+
+
+
+ -
+
+
+ Export Layout
+
+
+
+
-
@@ -466,8 +591,8 @@
0
0
- 98
- 41
+ 356
+ 779
@@ -546,8 +671,8 @@
0
0
- 98
- 41
+ 356
+ 779
diff --git a/src/app/puzzle/share/resources/puzzleicon.qrc b/src/app/puzzle/share/resources/puzzleicon.qrc
index 0eb2506df..fb33ba546 100644
--- a/src/app/puzzle/share/resources/puzzleicon.qrc
+++ b/src/app/puzzle/share/resources/puzzleicon.qrc
@@ -7,5 +7,7 @@
puzzleicon/64x64/iconTiles.png
puzzleicon/64x64/iconLandscape.png
puzzleicon/64x64/iconPortrait.png
+ puzzleicon/64x64/iconGrainlineVertical.png
+ puzzleicon/64x64/iconGrainlineHorizontal.png
diff --git a/src/app/puzzle/share/resources/puzzleicon/64x64/iconGrainlineHorizontal.png b/src/app/puzzle/share/resources/puzzleicon/64x64/iconGrainlineHorizontal.png
new file mode 100644
index 000000000..394d48fc0
Binary files /dev/null and b/src/app/puzzle/share/resources/puzzleicon/64x64/iconGrainlineHorizontal.png differ
diff --git a/src/app/puzzle/share/resources/puzzleicon/64x64/iconGrainlineVertical.png b/src/app/puzzle/share/resources/puzzleicon/64x64/iconGrainlineVertical.png
new file mode 100644
index 000000000..e2a49f1ab
Binary files /dev/null and b/src/app/puzzle/share/resources/puzzleicon/64x64/iconGrainlineVertical.png differ
diff --git a/src/app/puzzle/share/resources/puzzleicon/svg/icon_grainline_horizontal.svg b/src/app/puzzle/share/resources/puzzleicon/svg/icon_grainline_horizontal.svg
new file mode 100644
index 000000000..d0609895f
--- /dev/null
+++ b/src/app/puzzle/share/resources/puzzleicon/svg/icon_grainline_horizontal.svg
@@ -0,0 +1,64 @@
+
+
+
+
diff --git a/src/app/puzzle/share/resources/puzzleicon/svg/icon_grainline_vertical.svg b/src/app/puzzle/share/resources/puzzleicon/svg/icon_grainline_vertical.svg
new file mode 100644
index 000000000..22c7e42f6
--- /dev/null
+++ b/src/app/puzzle/share/resources/puzzleicon/svg/icon_grainline_vertical.svg
@@ -0,0 +1,64 @@
+
+
+
+