From e2b5e968340aeab55c4b7c280946640fb3131107 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Sat, 1 Sep 2018 16:26:47 -0400 Subject: [PATCH] add change indicator to Params (#217) --- Makefile | 6 +-- icons/pencil.png | Bin 0 -> 15456 bytes icons/pencil_20x20.png | Bin 0 -> 734 bytes lib/extensions/params.py | 47 +++++++++++++++++++---- messages.po | 78 ++++++++++++++++++++++----------------- 5 files changed, 86 insertions(+), 45 deletions(-) create mode 100644 icons/pencil.png create mode 100644 icons/pencil_20x20.png diff --git a/Makefile b/Makefile index 770fd5851..ace17e923 100644 --- a/Makefile +++ b/Makefile @@ -11,9 +11,9 @@ dist: distclean locales inx cp -a images/examples dist/inkstitch cp -a palettes dist/inkstitch cp -a symbols dist/inkstitch - mkdir -p dist/inkstitch/bin/locales - cp -a locales/* dist/inkstitch/bin/locales - cp -a print dist/inkstitch/bin/ + cp -a icons dist/inkstitch/bin + cp -a locales dist/inkstitch/bin + cp -a print dist/inkstitch/bin if [ "$$BUILD" = "windows" ]; then \ cd dist; zip -r ../inkstitch-$(VERSION)-win32.zip *; \ else \ diff --git a/icons/pencil.png b/icons/pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..70e1d60ec18c7eb167412ad030baae7aef9f8f96 GIT binary patch literal 15456 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 literal 0 HcmV?d00001 diff --git a/icons/pencil_20x20.png b/icons/pencil_20x20.png new file mode 100644 index 0000000000000000000000000000000000000000..cd902ba5432bbd6dea3fb0fcc9eec90ae9b0e91e GIT binary patch literal 734 zcmV<40wMj0P)flM0J@p zp%2R&lWwJfO-5!LX%?YL7U=e_l_g{!BQ{>&e9zN`PE4F_v*+f4!}I*kIh+q5!LT0O z&o-*nBe@yr-vKn@Kg5Kyp^o@1JGGUbA^`UFU~ejHHqvO4X}GnS!Z)vz$&jZ2&?bUC z&&MQJo|UDc`(0i1ba0SwNlK#gg#`ql zC?2f)+SPpe;J0$WXywzNY&<(Vg~rCm$zrh(fQ#{9?H3yN(Z@gq_lpbQ)TD)X*o~yu z8wfy0q)>nrN&UpN4iFK<{2thL#4?00S(DHNIq01y!*iL+NPf8uPFX8?d{Wm7cpbV*5e zPtSvbrIkf6uQ!CU@`2X?@>gqI4Ky1MZ|(2xJw~$3BN&q;j?dFFPMG_r02rceYbAJm z?;f4o;V7cW01=oZDVUj&P;7Dq0O$emXyEcw-X;jlJtr$5T9_z;1p*R^O)j5StKP8| z_P5Mf_muMzcXrnE)J+;19xA1Yw`JsfY$BD4y^r<63IL!Im`0bDa)tox+@6lUyA7zW z9>MJFZGI05vOAt9rC!V}g@NdN!< literal 0 HcmV?d00001 diff --git a/lib/extensions/params.py b/lib/extensions/params.py index c464e044d..c301ed1a8 100644 --- a/lib/extensions/params.py +++ b/lib/extensions/params.py @@ -17,7 +17,7 @@ from .base import InkstitchExtension from ..i18n import _ from ..stitch_plan import patches_to_stitch_plan from ..elements import EmbroideryElement, Fill, AutoFill, Stroke, SatinColumn -from ..utils import save_stderr, restore_stderr +from ..utils import save_stderr, restore_stderr, get_bundled_dir from ..simulator import EmbroiderySimulator from ..commands import is_command @@ -112,10 +112,14 @@ class ParamsTab(ScrolledPanel): else: self.toggle = None - self.settings_grid = wx.FlexGridSizer(rows=0, cols=3, hgap=10, vgap=10) - self.settings_grid.AddGrowableCol(0, 1) + 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.pencil_icon = wx.Image(os.path.join(get_bundled_dir("icons"), "pencil_20x20.png")).ConvertToBitmap() + self.__set_properties() self.__do_layout() @@ -218,7 +222,11 @@ class ParamsTab(ScrolledPanel): self.on_change_hook = callable def changed(self, event): - self.changed_inputs.add(event.GetEventObject()) + input = event.GetEventObject() + self.changed_inputs.add(input) + + param = self.inputs_to_params[input] + self.enable_change_indicator(param) event.Skip() if self.on_change_hook: @@ -297,13 +305,17 @@ class ParamsTab(ScrolledPanel): box.Add(sizer, proportion=0, flag=wx.ALL, border=5) if self.toggle: - box.Add(self.toggle_checkbox, proportion=0, flag=wx.BOTTOM, border=10) + 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) + box.Add(toggle_sizer, proportion=0, flag=wx.BOTTOM, border=10) for param in self.params: + self.settings_grid.Add(self.create_change_indicator(param.name), proportion=0, flag=wx.ALIGN_CENTER_VERTICAL) + description = wx.StaticText(self, label=param.description) description.SetToolTip(param.tooltip) - - self.settings_grid.Add(description, proportion=1, flag=wx.EXPAND|wx.RIGHT, border=40) + self.settings_grid.Add(description, proportion=1, flag=wx.EXPAND|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.TOP, border=5) if param.type == 'boolean': @@ -327,14 +339,33 @@ class ParamsTab(ScrolledPanel): self.param_inputs[param.name] = input - self.settings_grid.Add(input, proportion=1, flag=wx.ALIGN_CENTER_VERTICAL) + self.settings_grid.Add(input, proportion=1, flag=wx.ALIGN_CENTER_VERTICAL|wx.EXPAND|wx.LEFT, border=40) self.settings_grid.Add(wx.StaticText(self, label=param.unit or ""), proportion=1, flag=wx.ALIGN_CENTER_VERTICAL) + self.inputs_to_params = {v: k for k, v in self.param_inputs.iteritems()} + box.Add(self.settings_grid, proportion=1, flag=wx.ALL, border=10) self.SetSizer(box) self.Layout() + def create_change_indicator(self, param): + indicator = wx.Button(self, style=wx.BORDER_NONE | wx.BU_NOTEXT, size=(28, 28)) + indicator.SetToolTip(_('Click to force this parameter to be saved when you click "Apply and Quit"')) + indicator.Bind(wx.EVT_BUTTON, lambda event: self.enable_change_indicator(param)) + + self.param_change_indicators[param] = indicator + return indicator + + def enable_change_indicator(self, param): + self.param_change_indicators[param].SetBitmapLabel(self.pencil_icon) + self.param_change_indicators[param].SetToolTip(_('This parameter will be saved when you click "Apply and Quit"')) + + self.changed_inputs.add(self.param_inputs[param]) + + if self.on_change_hook(): + self.on_change_hook(self) + # end of class SatinPane class SettingsFrame(wx.Frame): diff --git a/messages.po b/messages.po index 7e78e9078..efa4ca222 100644 --- a/messages.po +++ b/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-08-24 21:44-0400\n" +"POT-Creation-Date: 2018-09-01 16:26-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -501,7 +501,7 @@ msgstr "" msgid "Install" msgstr "" -#: lib/extensions/install.py:40 lib/extensions/params.py:380 +#: lib/extensions/install.py:40 lib/extensions/params.py:411 msgid "Cancel" msgstr "" @@ -557,94 +557,104 @@ msgstr "" msgid "Please choose one or more commands to attach." msgstr "" -#: lib/extensions/params.py:244 +#: lib/extensions/params.py:252 msgid "These settings will be applied to 1 object." msgstr "" -#: lib/extensions/params.py:246 +#: lib/extensions/params.py:254 #, python-format msgid "These settings will be applied to %d objects." msgstr "" -#: lib/extensions/params.py:249 +#: lib/extensions/params.py:257 msgid "" "Some settings had different values across objects. Select a value from " "the dropdown or enter a new one." msgstr "" -#: lib/extensions/params.py:253 +#: lib/extensions/params.py:261 #, python-format msgid "Disabling this tab will disable the following %d tabs." msgstr "" -#: lib/extensions/params.py:255 +#: lib/extensions/params.py:263 msgid "Disabling this tab will disable the following tab." msgstr "" -#: lib/extensions/params.py:258 +#: lib/extensions/params.py:266 #, python-format msgid "Enabling this tab will disable %s and vice-versa." msgstr "" -#: lib/extensions/params.py:288 +#: lib/extensions/params.py:296 msgid "Inkscape objects" msgstr "" -#: lib/extensions/params.py:346 -msgid "Embroidery Params" +#: lib/extensions/params.py:354 +msgid "" +"Click to force this parameter to be saved when you click \"Apply and " +"Quit\"" msgstr "" -#: lib/extensions/params.py:363 -msgid "Presets" -msgstr "" - -#: lib/extensions/params.py:368 -msgid "Load" -msgstr "" - -#: lib/extensions/params.py:371 -msgid "Add" -msgstr "" - -#: lib/extensions/params.py:374 -msgid "Overwrite" +#: lib/extensions/params.py:362 +msgid "This parameter will be saved when you click \"Apply and Quit\"" msgstr "" #: lib/extensions/params.py:377 +msgid "Embroidery Params" +msgstr "" + +#: lib/extensions/params.py:394 +msgid "Presets" +msgstr "" + +#: lib/extensions/params.py:399 +msgid "Load" +msgstr "" + +#: lib/extensions/params.py:402 +msgid "Add" +msgstr "" + +#: lib/extensions/params.py:405 +msgid "Overwrite" +msgstr "" + +#: lib/extensions/params.py:408 msgid "Delete" msgstr "" -#: lib/extensions/params.py:384 +#: lib/extensions/params.py:415 msgid "Use Last Settings" msgstr "" -#: lib/extensions/params.py:387 +#: lib/extensions/params.py:418 msgid "Apply and Quit" msgstr "" -#: lib/extensions/params.py:439 +#: lib/extensions/params.py:470 msgid "Preview" msgstr "" -#: lib/extensions/params.py:458 +#: lib/extensions/params.py:489 msgid "Internal Error" msgstr "" -#: lib/extensions/params.py:511 +#: lib/extensions/params.py:542 msgid "Please enter or select a preset name first." msgstr "" -#: lib/extensions/params.py:511 lib/extensions/params.py:517 -#: lib/extensions/params.py:545 +#: lib/extensions/params.py:542 lib/extensions/params.py:548 +#: lib/extensions/params.py:576 msgid "Preset" msgstr "" -#: lib/extensions/params.py:517 +#: lib/extensions/params.py:548 #, python-format msgid "Preset \"%s\" not found." msgstr "" -#: lib/extensions/params.py:545 +#: lib/extensions/params.py:576 #, python-format msgid "" "Preset \"%s\" already exists. Please use another name or press "