diff --git a/lib/extensions/params.py b/lib/extensions/params.py index 4b6780eed..6c0f12c56 100644 --- a/lib/extensions/params.py +++ b/lib/extensions/params.py @@ -78,8 +78,7 @@ class ParamsTab(ScrolledPanel): self.param_change_indicators = {} self.settings_grid = wx.FlexGridSizer(rows=0, cols=4, hgap=10, vgap=15) - self.settings_grid.AddGrowableCol(1, 2) - self.settings_grid.SetFlexibleDirection(wx.HORIZONTAL) + self.settings_grid.AddGrowableCol(2, 1) self.pencil_icon = wx.Image(os.path.join(get_resource_dir( "icons"), "pencil_20x20.png")).ConvertToBitmap() @@ -348,24 +347,21 @@ class ParamsTab(ScrolledPanel): # just to add space around the settings box = wx.BoxSizer(wx.VERTICAL) - summary_box = wx.StaticBox( - self, wx.ID_ANY, label=_("Inkscape objects")) + summary_box = wx.StaticBox(self, wx.ID_ANY, label=_("Inkscape objects")) sizer = wx.StaticBoxSizer(summary_box, wx.HORIZONTAL) self.description = wx.StaticText(self) self.update_description() self.description.SetLabel(self.description_text) self.description_container = box self.Bind(wx.EVT_SIZE, self.resized) - sizer.Add(self.description, proportion=0, - flag=wx.EXPAND | wx.ALL, border=5) + sizer.Add(self.description, proportion=0, flag=wx.EXPAND | wx.ALL, border=5) box.Add(sizer, proportion=0, flag=wx.ALL, border=5) if self.toggle: toggle_sizer = wx.BoxSizer(wx.HORIZONTAL) toggle_sizer.Add(self.create_change_indicator( self.toggle.name), proportion=0, flag=wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, border=5) - toggle_sizer.Add(self.toggle_checkbox, proportion=0, - flag=wx.ALIGN_CENTER_VERTICAL) + toggle_sizer.Add(self.toggle_checkbox, proportion=0, flag=wx.ALIGN_CENTER_VERTICAL) box.Add(toggle_sizer, proportion=0, flag=wx.BOTTOM, border=10) for param in self.params: @@ -378,11 +374,9 @@ class ParamsTab(ScrolledPanel): description.Hide() for item in param.select_items: self.choice_widgets[item].extend([col1, description]) - # else: - self.settings_grid.Add( - col1, proportion=0, flag=wx.ALIGN_CENTER_VERTICAL) - self.settings_grid.Add(description, proportion=1, flag=wx.EXPAND | - wx.RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.TOP, border=5) + + self.settings_grid.Add(col1, flag=wx.ALIGN_CENTER_VERTICAL) + self.settings_grid.Add(description, flag=wx.RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.TOP, border=5) if param.type == 'boolean': if len(param.values) > 1: @@ -402,11 +396,18 @@ class ParamsTab(ScrolledPanel): self.dict_of_choices[param.name] = { "param": param, "widget": input, "last_initialized_choice": 1} elif param.type == 'combo': - input = wx.ComboBox(self, wx.ID_ANY, choices=[], style=wx.CB_READONLY) + input = wx.adv.BitmapComboBox(self, wx.ID_ANY, choices=[], style=wx.CB_READONLY) for option in param.options: - input.Append(option.name, option) + if option.preview_image: + image = wx.Image(option.preview_image) + image.Rescale(60, 60, quality=wx.IMAGE_QUALITY_HIGH) + image = wx.Bitmap(image) + else: + image = wx.NullBitmap + input.Append(option.name, image, option) if not param.options: input.Append(_('No options available'), ParamOption('not_available')) + value = self.get_combo_value_index(param.values[0], param.options) input.SetSelection(value) input.Bind(wx.EVT_COMBOBOX, self.changed) @@ -437,15 +438,13 @@ class ParamsTab(ScrolledPanel): col4.Hide() for item in param.select_items: self.choice_widgets[item].extend([input, col4]) - # else: - self.settings_grid.Add( - input, proportion=1, flag=wx.ALIGN_CENTER_VERTICAL | wx.EXPAND | wx.LEFT, border=40) - self.settings_grid.Add( - col4, proportion=1, flag=wx.ALIGN_CENTER_VERTICAL) + + self.settings_grid.Add(input, flag=wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.EXPAND, border=40) + self.settings_grid.Add(col4, flag=wx.ALIGN_CENTER_VERTICAL) self.inputs_to_params = {v: k for k, v in self.param_inputs.items()} - box.Add(self.settings_grid, proportion=1, flag=wx.ALL, border=10) + box.Add(self.settings_grid, proportion=1, flag=wx.ALL | wx.EXPAND, border=10) self.SetSizer(box) self.update_choice_widgets() diff --git a/lib/stitch_plan/lock_stitch.py b/lib/stitch_plan/lock_stitch.py index fec756538..4e1d347be 100644 --- a/lib/stitch_plan/lock_stitch.py +++ b/lib/stitch_plan/lock_stitch.py @@ -11,13 +11,14 @@ from .stitch import Stitch class LockStitchDefinition: - def __init__(self, lock_id=None, name=None, path=None): + def __init__(self, lock_id=None, name=None, path=None, preview_image=None): self.id: str = lock_id self.name: str = name self._path: str = path + self.preview_image: str = None def __repr__(self): - return "LockStitchDefinition(%s, %s, %s)" % (self.id, self.name, self.path) + return "LockStitchDefinition(%s, %s, %s, %s)" % (self.id, self.name, self._path, self.preview_image) def stitches(self): raise NotImplementedError(f"{self.__class__.__name__} must implement stitches()") diff --git a/lib/tiles.py b/lib/tiles.py index 683804a6c..686d5a6df 100644 --- a/lib/tiles.py +++ b/lib/tiles.py @@ -21,6 +21,7 @@ class Tile: def _load_tile(self, tile_path): self.tile_svg = inkex.load_svg(os.path.join(tile_path, "tile.svg")) + self.preview_image = self._load_preview(tile_path) self._load_metadata(tile_path) self.tile = None self.width = None @@ -32,10 +33,16 @@ class Tile: return self.name < other.name def __repr__(self): - return f"Tile({self.name}, {self.id})" + return f"Tile({self.name}, {self.id}, {self.preview_image})" __str__ = __repr__ + def _load_preview(self, tile_path): + image_path = os.path.join(tile_path, "preview.png") + if os.path.isfile(image_path): + return image_path + return None + def _load_metadata(self, tile_path): with open(os.path.join(tile_path, "tile.json"), "rb") as tile_json: tile_metadata = json.load(tile_json) diff --git a/lib/utils/param.py b/lib/utils/param.py index c7dfdab04..19a369e1a 100644 --- a/lib/utils/param.py +++ b/lib/utils/param.py @@ -1,8 +1,9 @@ class ParamOption: - def __init__(self, param_id=None, name=None, legacy=None): + def __init__(self, param_id=None, name=None, legacy=None, preview_image=None): self.id: str = param_id self.name: str = name self.legacy: int = legacy + self.preview_image: str = None def __repr__(self): - return "ParamOption(%s, %s, %s)" % (self.id, self.name, self.legacy) + return "ParamOption(%s, %s, %s, %s)" % (self.id, self.name, self.legacy, self.preview_image) diff --git a/tiles/N3-11a/preview.png b/tiles/N3-11a/preview.png new file mode 100644 index 000000000..a593b8604 Binary files /dev/null and b/tiles/N3-11a/preview.png differ diff --git a/tiles/N3-12/preview.png b/tiles/N3-12/preview.png new file mode 100644 index 000000000..4c8152c49 Binary files /dev/null and b/tiles/N3-12/preview.png differ diff --git a/tiles/N3-16a/preview.png b/tiles/N3-16a/preview.png new file mode 100644 index 000000000..c813e1621 Binary files /dev/null and b/tiles/N3-16a/preview.png differ diff --git a/tiles/N3-17/preview.png b/tiles/N3-17/preview.png new file mode 100644 index 000000000..4624b430c Binary files /dev/null and b/tiles/N3-17/preview.png differ diff --git a/tiles/N3-18-modified/preview.png b/tiles/N3-18-modified/preview.png new file mode 100644 index 000000000..9d0598d46 Binary files /dev/null and b/tiles/N3-18-modified/preview.png differ diff --git a/tiles/N3-18/preview.png b/tiles/N3-18/preview.png new file mode 100644 index 000000000..487974e10 Binary files /dev/null and b/tiles/N3-18/preview.png differ diff --git a/tiles/N3-20/preview.png b/tiles/N3-20/preview.png new file mode 100644 index 000000000..b1d09317e Binary files /dev/null and b/tiles/N3-20/preview.png differ diff --git a/tiles/N3-23b/preview.png b/tiles/N3-23b/preview.png new file mode 100644 index 000000000..620f1b94b Binary files /dev/null and b/tiles/N3-23b/preview.png differ diff --git a/tiles/N3-25c/preview.png b/tiles/N3-25c/preview.png new file mode 100644 index 000000000..6e51329d8 Binary files /dev/null and b/tiles/N3-25c/preview.png differ diff --git a/tiles/N3-26b/preview.png b/tiles/N3-26b/preview.png new file mode 100644 index 000000000..422133140 Binary files /dev/null and b/tiles/N3-26b/preview.png differ diff --git a/tiles/N3-27/preview.png b/tiles/N3-27/preview.png new file mode 100644 index 000000000..a54587e1d Binary files /dev/null and b/tiles/N3-27/preview.png differ diff --git a/tiles/N3-30a/preview.png b/tiles/N3-30a/preview.png new file mode 100644 index 000000000..9faddefb8 Binary files /dev/null and b/tiles/N3-30a/preview.png differ diff --git a/tiles/N3-51b/preview.png b/tiles/N3-51b/preview.png new file mode 100644 index 000000000..85ec99ee3 Binary files /dev/null and b/tiles/N3-51b/preview.png differ diff --git a/tiles/N3-57f-modified/preview.png b/tiles/N3-57f-modified/preview.png new file mode 100644 index 000000000..a9b86e215 Binary files /dev/null and b/tiles/N3-57f-modified/preview.png differ diff --git a/tiles/N3-58b/preview.png b/tiles/N3-58b/preview.png new file mode 100644 index 000000000..0031f07b3 Binary files /dev/null and b/tiles/N3-58b/preview.png differ diff --git a/tiles/N3-6/preview.png b/tiles/N3-6/preview.png new file mode 100644 index 000000000..dcf2cd040 Binary files /dev/null and b/tiles/N3-6/preview.png differ diff --git a/tiles/N3-7/preview.png b/tiles/N3-7/preview.png new file mode 100644 index 000000000..1495a4d8d Binary files /dev/null and b/tiles/N3-7/preview.png differ diff --git a/tiles/N3-8a-modified/preview.png b/tiles/N3-8a-modified/preview.png new file mode 100644 index 000000000..0eb8b9496 Binary files /dev/null and b/tiles/N3-8a-modified/preview.png differ diff --git a/tiles/N3-8a/preview.png b/tiles/N3-8a/preview.png new file mode 100644 index 000000000..93fe7504b Binary files /dev/null and b/tiles/N3-8a/preview.png differ diff --git a/tiles/N3-8b/preview.png b/tiles/N3-8b/preview.png new file mode 100644 index 000000000..2086eb2ea Binary files /dev/null and b/tiles/N3-8b/preview.png differ diff --git a/tiles/N4-13b/preview.png b/tiles/N4-13b/preview.png new file mode 100644 index 000000000..2282905a6 Binary files /dev/null and b/tiles/N4-13b/preview.png differ diff --git a/tiles/N4-13c/preview.png b/tiles/N4-13c/preview.png new file mode 100644 index 000000000..c414f1a1c Binary files /dev/null and b/tiles/N4-13c/preview.png differ diff --git a/tiles/N4-13d/preview.png b/tiles/N4-13d/preview.png new file mode 100644 index 000000000..305433924 Binary files /dev/null and b/tiles/N4-13d/preview.png differ diff --git a/tiles/N4-13e/preview.png b/tiles/N4-13e/preview.png new file mode 100644 index 000000000..0d4090b0f Binary files /dev/null and b/tiles/N4-13e/preview.png differ diff --git a/tiles/N4-13f/preview.png b/tiles/N4-13f/preview.png new file mode 100644 index 000000000..eb60e17d7 Binary files /dev/null and b/tiles/N4-13f/preview.png differ diff --git a/tiles/N4-16a/preview.png b/tiles/N4-16a/preview.png new file mode 100644 index 000000000..c93621bb5 Binary files /dev/null and b/tiles/N4-16a/preview.png differ diff --git a/tiles/N4-19/preview.png b/tiles/N4-19/preview.png new file mode 100644 index 000000000..08229bc2d Binary files /dev/null and b/tiles/N4-19/preview.png differ diff --git a/tiles/N4-20/preview.png b/tiles/N4-20/preview.png new file mode 100644 index 000000000..755ef06df Binary files /dev/null and b/tiles/N4-20/preview.png differ diff --git a/tiles/N4-21c/preview.png b/tiles/N4-21c/preview.png new file mode 100644 index 000000000..28db3002b Binary files /dev/null and b/tiles/N4-21c/preview.png differ diff --git a/tiles/N4-22/preview.png b/tiles/N4-22/preview.png new file mode 100644 index 000000000..862b4ec43 Binary files /dev/null and b/tiles/N4-22/preview.png differ diff --git a/tiles/N4-23a/preview.png b/tiles/N4-23a/preview.png new file mode 100644 index 000000000..13bf97b4d Binary files /dev/null and b/tiles/N4-23a/preview.png differ diff --git a/tiles/N4-23c/preview.png b/tiles/N4-23c/preview.png new file mode 100644 index 000000000..33c47c1c1 Binary files /dev/null and b/tiles/N4-23c/preview.png differ diff --git a/tiles/N4-27/preview.png b/tiles/N4-27/preview.png new file mode 100644 index 000000000..5fdce2072 Binary files /dev/null and b/tiles/N4-27/preview.png differ diff --git a/tiles/N4-29e/preview.png b/tiles/N4-29e/preview.png new file mode 100644 index 000000000..0b34c285e Binary files /dev/null and b/tiles/N4-29e/preview.png differ diff --git a/tiles/N4-29f/preview.png b/tiles/N4-29f/preview.png new file mode 100644 index 000000000..55e599ea0 Binary files /dev/null and b/tiles/N4-29f/preview.png differ diff --git a/tiles/N4-31/preview.png b/tiles/N4-31/preview.png new file mode 100644 index 000000000..f848a047b Binary files /dev/null and b/tiles/N4-31/preview.png differ diff --git a/tiles/N4-38/preview.png b/tiles/N4-38/preview.png new file mode 100644 index 000000000..46edd113e Binary files /dev/null and b/tiles/N4-38/preview.png differ diff --git a/tiles/N4-42e/preview.png b/tiles/N4-42e/preview.png new file mode 100644 index 000000000..72d289349 Binary files /dev/null and b/tiles/N4-42e/preview.png differ diff --git a/tiles/N4-44/preview.png b/tiles/N4-44/preview.png new file mode 100644 index 000000000..752bd4751 Binary files /dev/null and b/tiles/N4-44/preview.png differ diff --git a/tiles/N4-52/preview.png b/tiles/N4-52/preview.png new file mode 100644 index 000000000..8c9ad8b4e Binary files /dev/null and b/tiles/N4-52/preview.png differ diff --git a/tiles/N4-54d/preview.png b/tiles/N4-54d/preview.png new file mode 100644 index 000000000..20ba3a434 Binary files /dev/null and b/tiles/N4-54d/preview.png differ diff --git a/tiles/N4-5a-2/preview.png b/tiles/N4-5a-2/preview.png new file mode 100644 index 000000000..781b6e3c1 Binary files /dev/null and b/tiles/N4-5a-2/preview.png differ diff --git a/tiles/N4-5a/preview.png b/tiles/N4-5a/preview.png new file mode 100644 index 000000000..cfadae70f Binary files /dev/null and b/tiles/N4-5a/preview.png differ diff --git a/tiles/N4-82/preview.png b/tiles/N4-82/preview.png new file mode 100644 index 000000000..869bc09d5 Binary files /dev/null and b/tiles/N4-82/preview.png differ diff --git a/tiles/N4-85d/preview.png b/tiles/N4-85d/preview.png new file mode 100644 index 000000000..d5dff25ea Binary files /dev/null and b/tiles/N4-85d/preview.png differ diff --git a/tiles/N5-1e1/preview.png b/tiles/N5-1e1/preview.png new file mode 100644 index 000000000..a63316a70 Binary files /dev/null and b/tiles/N5-1e1/preview.png differ diff --git a/tiles/N5-1q2/preview.png b/tiles/N5-1q2/preview.png new file mode 100644 index 000000000..52bf20a5e Binary files /dev/null and b/tiles/N5-1q2/preview.png differ diff --git a/tiles/N5-1t/preview.png b/tiles/N5-1t/preview.png new file mode 100644 index 000000000..53b30b1ab Binary files /dev/null and b/tiles/N5-1t/preview.png differ diff --git a/tiles/N6-1/preview.png b/tiles/N6-1/preview.png new file mode 100644 index 000000000..a67e0dff2 Binary files /dev/null and b/tiles/N6-1/preview.png differ diff --git a/tiles/N6-2/preview.png b/tiles/N6-2/preview.png new file mode 100644 index 000000000..2affb8d97 Binary files /dev/null and b/tiles/N6-2/preview.png differ diff --git a/tiles/N6-5b/preview.png b/tiles/N6-5b/preview.png new file mode 100644 index 000000000..0c421f69f Binary files /dev/null and b/tiles/N6-5b/preview.png differ diff --git a/tiles/N6-6a/preview.png b/tiles/N6-6a/preview.png new file mode 100644 index 000000000..b3cb249fe Binary files /dev/null and b/tiles/N6-6a/preview.png differ diff --git a/tiles/N6-6c/preview.png b/tiles/N6-6c/preview.png new file mode 100644 index 000000000..30f69efbe Binary files /dev/null and b/tiles/N6-6c/preview.png differ diff --git a/tiles/NC5-11a/preview.png b/tiles/NC5-11a/preview.png new file mode 100644 index 000000000..1962c415f Binary files /dev/null and b/tiles/NC5-11a/preview.png differ diff --git a/tiles/NC5-20a/preview.png b/tiles/NC5-20a/preview.png new file mode 100644 index 000000000..0e1887a0e Binary files /dev/null and b/tiles/NC5-20a/preview.png differ diff --git a/tiles/P3-1/preview.png b/tiles/P3-1/preview.png new file mode 100644 index 000000000..94eae6280 Binary files /dev/null and b/tiles/P3-1/preview.png differ diff --git a/tiles/P3-12/preview.png b/tiles/P3-12/preview.png new file mode 100644 index 000000000..fe5439a26 Binary files /dev/null and b/tiles/P3-12/preview.png differ diff --git a/tiles/P4-1/preview.png b/tiles/P4-1/preview.png new file mode 100644 index 000000000..8c19a7195 Binary files /dev/null and b/tiles/P4-1/preview.png differ diff --git a/tiles/P4-10/preview.png b/tiles/P4-10/preview.png new file mode 100644 index 000000000..f4a5f5034 Binary files /dev/null and b/tiles/P4-10/preview.png differ diff --git a/tiles/P4-15/preview.png b/tiles/P4-15/preview.png new file mode 100644 index 000000000..a63d8d4fe Binary files /dev/null and b/tiles/P4-15/preview.png differ diff --git a/tiles/P4-19/preview.png b/tiles/P4-19/preview.png new file mode 100644 index 000000000..75c45d11c Binary files /dev/null and b/tiles/P4-19/preview.png differ diff --git a/tiles/P4-23/preview.png b/tiles/P4-23/preview.png new file mode 100644 index 000000000..77371b9fd Binary files /dev/null and b/tiles/P4-23/preview.png differ diff --git a/tiles/P4-24/preview.png b/tiles/P4-24/preview.png new file mode 100644 index 000000000..4031355c5 Binary files /dev/null and b/tiles/P4-24/preview.png differ diff --git a/tiles/P4-25/preview.png b/tiles/P4-25/preview.png new file mode 100644 index 000000000..57f8f7ee9 Binary files /dev/null and b/tiles/P4-25/preview.png differ diff --git a/tiles/P4-43-modified/preview.png b/tiles/P4-43-modified/preview.png new file mode 100644 index 000000000..8e978537d Binary files /dev/null and b/tiles/P4-43-modified/preview.png differ diff --git a/tiles/P4-43/preview.png b/tiles/P4-43/preview.png new file mode 100644 index 000000000..af67e4cdd Binary files /dev/null and b/tiles/P4-43/preview.png differ diff --git a/tiles/P4-47/preview.png b/tiles/P4-47/preview.png new file mode 100644 index 000000000..2c89736dc Binary files /dev/null and b/tiles/P4-47/preview.png differ diff --git a/tiles/P5-10_11/preview.png b/tiles/P5-10_11/preview.png new file mode 100644 index 000000000..a771eab4b Binary files /dev/null and b/tiles/P5-10_11/preview.png differ diff --git a/tiles/P5-19/preview.png b/tiles/P5-19/preview.png new file mode 100644 index 000000000..73529bde8 Binary files /dev/null and b/tiles/P5-19/preview.png differ diff --git a/tiles/P5-23_24/preview.png b/tiles/P5-23_24/preview.png new file mode 100644 index 000000000..4bc029ad0 Binary files /dev/null and b/tiles/P5-23_24/preview.png differ diff --git a/tiles/P5-4/preview.png b/tiles/P5-4/preview.png new file mode 100644 index 000000000..e99775044 Binary files /dev/null and b/tiles/P5-4/preview.png differ diff --git a/tiles/P6-6_11/preview.png b/tiles/P6-6_11/preview.png new file mode 100644 index 000000000..f4448a9a0 Binary files /dev/null and b/tiles/P6-6_11/preview.png differ diff --git a/tiles/diamond-square/preview.png b/tiles/diamond-square/preview.png new file mode 100644 index 000000000..2bb643b9e Binary files /dev/null and b/tiles/diamond-square/preview.png differ diff --git a/tiles/hexagon/preview.png b/tiles/hexagon/preview.png new file mode 100644 index 000000000..3e2ab181b Binary files /dev/null and b/tiles/hexagon/preview.png differ diff --git a/tiles/weird-one/preview.png b/tiles/weird-one/preview.png new file mode 100644 index 000000000..c33e63181 Binary files /dev/null and b/tiles/weird-one/preview.png differ