meerk40t 0.9.2000__py2.py3-none-any.whl → 0.9.3001__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. meerk40t/balormk/balor_params.py +1 -43
  2. meerk40t/balormk/controller.py +1 -41
  3. meerk40t/balormk/device.py +16 -22
  4. meerk40t/balormk/driver.py +4 -4
  5. meerk40t/balormk/gui/balorconfig.py +2 -2
  6. meerk40t/balormk/gui/balorcontroller.py +13 -5
  7. meerk40t/balormk/gui/baloroperationproperties.py +0 -46
  8. meerk40t/balormk/gui/gui.py +17 -17
  9. meerk40t/camera/gui/camerapanel.py +18 -11
  10. meerk40t/core/cutcode/rastercut.py +3 -1
  11. meerk40t/core/cutplan.py +145 -14
  12. meerk40t/core/elements/clipboard.py +18 -9
  13. meerk40t/core/elements/element_treeops.py +320 -180
  14. meerk40t/core/elements/element_types.py +7 -2
  15. meerk40t/core/elements/elements.py +53 -27
  16. meerk40t/core/elements/geometry.py +8 -0
  17. meerk40t/core/elements/offset_clpr.py +129 -4
  18. meerk40t/core/elements/offset_mk.py +3 -1
  19. meerk40t/core/elements/shapes.py +28 -25
  20. meerk40t/core/laserjob.py +7 -0
  21. meerk40t/core/node/bootstrap.py +4 -0
  22. meerk40t/core/node/effect_hatch.py +85 -96
  23. meerk40t/core/node/effect_wobble.py +309 -0
  24. meerk40t/core/node/elem_image.py +49 -19
  25. meerk40t/core/node/elem_line.py +60 -0
  26. meerk40t/core/node/elem_rect.py +5 -3
  27. meerk40t/core/node/image_processed.py +766 -0
  28. meerk40t/core/node/image_raster.py +113 -0
  29. meerk40t/core/node/node.py +120 -1
  30. meerk40t/core/node/op_cut.py +2 -8
  31. meerk40t/core/node/op_dots.py +0 -8
  32. meerk40t/core/node/op_engrave.py +2 -18
  33. meerk40t/core/node/op_image.py +22 -35
  34. meerk40t/core/node/op_raster.py +0 -9
  35. meerk40t/core/planner.py +32 -2
  36. meerk40t/core/svg_io.py +699 -461
  37. meerk40t/core/treeop.py +191 -0
  38. meerk40t/core/undos.py +15 -1
  39. meerk40t/core/units.py +14 -4
  40. meerk40t/device/dummydevice.py +3 -2
  41. meerk40t/device/gui/defaultactions.py +43 -55
  42. meerk40t/device/gui/formatterpanel.py +58 -49
  43. meerk40t/device/gui/warningpanel.py +12 -12
  44. meerk40t/device/mixins.py +13 -0
  45. meerk40t/dxf/dxf_io.py +9 -5
  46. meerk40t/extra/ezd.py +28 -26
  47. meerk40t/extra/imageactions.py +300 -308
  48. meerk40t/extra/lbrn.py +19 -2
  49. meerk40t/fill/fills.py +6 -6
  50. meerk40t/fill/patternfill.py +1061 -1061
  51. meerk40t/fill/patterns.py +2 -6
  52. meerk40t/grbl/controller.py +168 -52
  53. meerk40t/grbl/device.py +23 -18
  54. meerk40t/grbl/driver.py +39 -0
  55. meerk40t/grbl/emulator.py +79 -19
  56. meerk40t/grbl/gcodejob.py +10 -0
  57. meerk40t/grbl/gui/grblconfiguration.py +2 -2
  58. meerk40t/grbl/gui/grblcontroller.py +24 -8
  59. meerk40t/grbl/gui/grblhardwareconfig.py +153 -0
  60. meerk40t/grbl/gui/gui.py +17 -14
  61. meerk40t/grbl/mock_connection.py +15 -34
  62. meerk40t/grbl/plugin.py +0 -4
  63. meerk40t/grbl/serial_connection.py +2 -1
  64. meerk40t/gui/about.py +8 -5
  65. meerk40t/gui/alignment.py +10 -6
  66. meerk40t/gui/basicops.py +27 -17
  67. meerk40t/gui/bufferview.py +2 -2
  68. meerk40t/gui/choicepropertypanel.py +101 -13
  69. meerk40t/gui/consolepanel.py +12 -9
  70. meerk40t/gui/devicepanel.py +38 -25
  71. meerk40t/gui/executejob.py +6 -4
  72. meerk40t/gui/help_assets/help_assets.py +13 -10
  73. meerk40t/gui/hersheymanager.py +8 -6
  74. meerk40t/gui/icons.py +1951 -3065
  75. meerk40t/gui/imagesplitter.py +14 -7
  76. meerk40t/gui/keymap.py +3 -3
  77. meerk40t/gui/laserpanel.py +151 -84
  78. meerk40t/gui/laserrender.py +61 -70
  79. meerk40t/gui/lasertoolpanel.py +8 -7
  80. meerk40t/gui/materialtest.py +3 -3
  81. meerk40t/gui/mkdebug.py +254 -1
  82. meerk40t/gui/navigationpanels.py +321 -180
  83. meerk40t/gui/notes.py +3 -3
  84. meerk40t/gui/opassignment.py +12 -12
  85. meerk40t/gui/operation_info.py +13 -13
  86. meerk40t/gui/plugin.py +5 -0
  87. meerk40t/gui/position.py +20 -18
  88. meerk40t/gui/preferences.py +21 -6
  89. meerk40t/gui/propertypanels/attributes.py +70 -22
  90. meerk40t/gui/propertypanels/blobproperty.py +2 -2
  91. meerk40t/gui/propertypanels/consoleproperty.py +2 -2
  92. meerk40t/gui/propertypanels/groupproperties.py +3 -3
  93. meerk40t/gui/propertypanels/hatchproperty.py +11 -18
  94. meerk40t/gui/propertypanels/imageproperty.py +4 -3
  95. meerk40t/gui/propertypanels/opbranchproperties.py +1 -1
  96. meerk40t/gui/propertypanels/pathproperty.py +2 -2
  97. meerk40t/gui/propertypanels/pointproperty.py +2 -2
  98. meerk40t/gui/propertypanels/propertywindow.py +4 -4
  99. meerk40t/gui/propertypanels/textproperty.py +3 -3
  100. meerk40t/gui/propertypanels/wobbleproperty.py +204 -0
  101. meerk40t/gui/ribbon.py +367 -259
  102. meerk40t/gui/scene/scene.py +31 -5
  103. meerk40t/gui/scenewidgets/elementswidget.py +12 -4
  104. meerk40t/gui/scenewidgets/gridwidget.py +2 -2
  105. meerk40t/gui/scenewidgets/laserpathwidget.py +7 -2
  106. meerk40t/gui/scenewidgets/machineoriginwidget.py +6 -2
  107. meerk40t/gui/scenewidgets/relocatewidget.py +1 -1
  108. meerk40t/gui/scenewidgets/reticlewidget.py +9 -0
  109. meerk40t/gui/scenewidgets/selectionwidget.py +12 -7
  110. meerk40t/gui/simpleui.py +95 -8
  111. meerk40t/gui/simulation.py +44 -36
  112. meerk40t/gui/spoolerpanel.py +124 -26
  113. meerk40t/gui/statusbarwidgets/defaultoperations.py +18 -6
  114. meerk40t/gui/statusbarwidgets/infowidget.py +2 -2
  115. meerk40t/gui/statusbarwidgets/opassignwidget.py +12 -12
  116. meerk40t/gui/statusbarwidgets/shapepropwidget.py +45 -18
  117. meerk40t/gui/statusbarwidgets/statusbar.py +11 -4
  118. meerk40t/gui/themes.py +78 -0
  119. meerk40t/gui/toolwidgets/toolcircle.py +2 -1
  120. meerk40t/gui/toolwidgets/toolellipse.py +2 -1
  121. meerk40t/gui/toolwidgets/toolimagecut.py +132 -0
  122. meerk40t/gui/toolwidgets/toolline.py +144 -0
  123. meerk40t/gui/toolwidgets/toolnodeedit.py +72 -145
  124. meerk40t/gui/toolwidgets/toolpoint.py +1 -1
  125. meerk40t/gui/toolwidgets/toolpolygon.py +8 -55
  126. meerk40t/gui/toolwidgets/toolrect.py +2 -1
  127. meerk40t/gui/usbconnect.py +2 -2
  128. meerk40t/gui/utilitywidgets/cyclocycloidwidget.py +2 -2
  129. meerk40t/gui/utilitywidgets/harmonograph.py +7 -7
  130. meerk40t/gui/utilitywidgets/scalewidget.py +1 -1
  131. meerk40t/gui/wordlisteditor.py +33 -18
  132. meerk40t/gui/wxmeerk40t.py +166 -66
  133. meerk40t/gui/wxmmain.py +236 -157
  134. meerk40t/gui/wxmribbon.py +49 -25
  135. meerk40t/gui/wxmscene.py +49 -38
  136. meerk40t/gui/wxmtree.py +216 -85
  137. meerk40t/gui/wxutils.py +62 -4
  138. meerk40t/image/imagetools.py +443 -15
  139. meerk40t/internal_plugins.py +2 -10
  140. meerk40t/kernel/kernel.py +12 -4
  141. meerk40t/lihuiyu/controller.py +7 -7
  142. meerk40t/lihuiyu/device.py +3 -1
  143. meerk40t/lihuiyu/driver.py +3 -0
  144. meerk40t/lihuiyu/gui/gui.py +8 -8
  145. meerk40t/lihuiyu/gui/lhyaccelgui.py +2 -2
  146. meerk40t/lihuiyu/gui/lhycontrollergui.py +73 -27
  147. meerk40t/lihuiyu/gui/lhydrivergui.py +2 -2
  148. meerk40t/lihuiyu/gui/tcpcontroller.py +22 -9
  149. meerk40t/main.py +6 -1
  150. meerk40t/moshi/controller.py +5 -5
  151. meerk40t/moshi/device.py +5 -2
  152. meerk40t/moshi/driver.py +4 -0
  153. meerk40t/moshi/gui/gui.py +8 -8
  154. meerk40t/moshi/gui/moshicontrollergui.py +24 -8
  155. meerk40t/moshi/gui/moshidrivergui.py +2 -2
  156. meerk40t/newly/controller.py +2 -0
  157. meerk40t/newly/device.py +9 -2
  158. meerk40t/newly/driver.py +4 -0
  159. meerk40t/newly/gui/gui.py +16 -17
  160. meerk40t/newly/gui/newlyconfig.py +2 -2
  161. meerk40t/newly/gui/newlycontroller.py +13 -5
  162. meerk40t/rotary/gui/gui.py +2 -2
  163. meerk40t/rotary/gui/rotarysettings.py +2 -2
  164. meerk40t/ruida/device.py +3 -0
  165. meerk40t/ruida/driver.py +4 -0
  166. meerk40t/ruida/gui/gui.py +6 -6
  167. meerk40t/ruida/gui/ruidaconfig.py +2 -2
  168. meerk40t/ruida/gui/ruidacontroller.py +13 -5
  169. meerk40t/svgelements.py +9 -9
  170. meerk40t/tools/geomstr.py +849 -153
  171. meerk40t/tools/kerftest.py +8 -4
  172. meerk40t/tools/livinghinges.py +15 -8
  173. {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/METADATA +21 -16
  174. {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/RECORD +185 -177
  175. {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/entry_points.txt +0 -1
  176. test/test_core_elements.py +8 -24
  177. test/test_file_svg.py +88 -0
  178. test/test_fill.py +9 -9
  179. test/test_geomstr.py +258 -8
  180. test/test_kernel.py +4 -0
  181. test/test_tools_rasterplotter.py +29 -0
  182. meerk40t/extra/embroider.py +0 -56
  183. meerk40t/extra/pathoptimize.py +0 -249
  184. {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/LICENSE +0 -0
  185. {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/WHEEL +0 -0
  186. {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/top_level.txt +0 -0
  187. {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/zip-safe +0 -0
meerk40t/gui/wxmribbon.py CHANGED
@@ -29,11 +29,11 @@ from wx import aui
29
29
  from meerk40t.gui.icons import (
30
30
  STD_ICON_SIZE,
31
31
  get_default_icon_size,
32
- icons8_add_new_25,
33
- icons8_down_50,
34
- icons8_opened_folder_50,
35
- icons8_remove_25,
36
- icons8_up_50,
32
+ icon_add_new,
33
+ icon_trash,
34
+ icons8_down,
35
+ icons8_opened_folder,
36
+ icons8_up,
37
37
  )
38
38
  from meerk40t.gui.ribbon import RibbonBarPanel
39
39
  from meerk40t.gui.wxutils import StaticBoxSizer, dip_size
@@ -141,8 +141,9 @@ class MKRibbonBarPanel(RibbonBarPanel):
141
141
  self.storage = Settings(self.context.kernel.name, f"ribbon_{identifier}.cfg")
142
142
  self.storage.read_configuration()
143
143
 
144
+ self.allow_labels = bool(show_labels is None or show_labels)
144
145
  # Layout properties.
145
- if show_labels is None or show_labels:
146
+ if self.allow_labels:
146
147
  self.toggle_show_labels(context.setting(bool, "ribbon_show_labels", True))
147
148
 
148
149
  self._pages = []
@@ -158,19 +159,29 @@ class MKRibbonBarPanel(RibbonBarPanel):
158
159
  "label": "Tools", # Label
159
160
  "panels": [ # Panels to include
160
161
  {
161
- "id": "tool",
162
- "label": "Project",
162
+ "id": "select",
163
+ "label": "Select + Edit",
163
164
  "seq": 1,
164
165
  },
165
166
  {
166
- "id": "extended_tools",
167
- "label": "group",
167
+ "id": "lasercontrol",
168
+ "label": "Laser",
168
169
  "seq": 2,
169
170
  },
171
+ {
172
+ "id": "tool",
173
+ "label": "Create",
174
+ "seq": 3,
175
+ },
176
+ {
177
+ "id": "extended_tools",
178
+ "label": "Extended Tools",
179
+ "seq": 4,
180
+ },
170
181
  {
171
182
  "id": "group",
172
183
  "label": "Group",
173
- "seq": 3,
184
+ "seq": 5,
174
185
  },
175
186
  ],
176
187
  "seq": 1, # Sequence
@@ -366,6 +377,7 @@ class MKRibbonBarPanel(RibbonBarPanel):
366
377
 
367
378
  def restart(self):
368
379
  self.storage.read_configuration()
380
+ self.art.establish_colors()
369
381
  self.pages = []
370
382
  self.set_default_pages()
371
383
  # Define Ribbon.
@@ -392,7 +404,8 @@ class MKRibbonBarPanel(RibbonBarPanel):
392
404
 
393
405
  @signal_listener("ribbon_show_labels")
394
406
  def on_show_labels_change(self, origin, value, *args):
395
- self.toggle_show_labels(value)
407
+ if self.allow_labels:
408
+ self.toggle_show_labels(value)
396
409
 
397
410
  @lookup_listener("button/basicediting")
398
411
  def set_editing_buttons(self, new_values, old_values):
@@ -438,10 +451,18 @@ class MKRibbonBarPanel(RibbonBarPanel):
438
451
  def set_align_buttons(self, new_values, old_values):
439
452
  self.set_panel_buttons("align", new_values)
440
453
 
454
+ @lookup_listener("button/select")
455
+ def set_select_buttons(self, new_values, old_values):
456
+ self.set_panel_buttons("select", new_values)
457
+
441
458
  @lookup_listener("button/tool")
442
459
  def set_tool_buttons(self, new_values, old_values):
443
460
  self.set_panel_buttons("tool", new_values)
444
461
 
462
+ @lookup_listener("button/lasercontrol")
463
+ def set_lasercontrol_buttons(self, new_values, old_values):
464
+ self.set_panel_buttons("lasercontrol", new_values)
465
+
445
466
  @lookup_listener("button/extended_tools")
446
467
  def set_tool_extended_buttons(self, new_values, old_values):
447
468
  self.set_panel_buttons("extended_tools", new_values)
@@ -454,6 +475,10 @@ class MKRibbonBarPanel(RibbonBarPanel):
454
475
  def on_emphasis_change(self, origin, *args):
455
476
  self.apply_enable_rules()
456
477
 
478
+ @signal_listener("undoredo")
479
+ def on_undostate_change(self, origin, *args):
480
+ self.apply_enable_rules()
481
+
457
482
  @signal_listener("selected")
458
483
  def on_selected_change(self, origin, node=None, *args):
459
484
  self.apply_enable_rules()
@@ -497,7 +522,7 @@ class MKRibbonBarPanel(RibbonBarPanel):
497
522
  name_id,
498
523
  wx.ID_ANY,
499
524
  label,
500
- icons8_opened_folder_50.GetBitmap(resize=16),
525
+ icons8_opened_folder.GetBitmap(resize=16),
501
526
  )
502
527
  entry["_object"] = page
503
528
  for pentry in sorted(panel_list, key=lambda d: d["seq"]):
@@ -508,7 +533,7 @@ class MKRibbonBarPanel(RibbonBarPanel):
508
533
  parent=page,
509
534
  id=wx.ID_ANY,
510
535
  label=p_label,
511
- icon=icons8_opened_folder_50.GetBitmap(),
536
+ icon=icons8_opened_folder.GetBitmap(),
512
537
  )
513
538
  pentry["_object"] = panel
514
539
 
@@ -601,15 +626,15 @@ class RibbonEditor(wx.Panel):
601
626
  self.button_down_page = wx.StaticBitmap(
602
627
  self, wx.ID_ANY, size=dip_size(self, 30, 20)
603
628
  )
629
+ testsize = dip_size(self, 20, 20)
630
+ iconsize = testsize[0]
604
631
  self.button_add_page.SetBitmap(
605
- icons8_add_new_25.GetBitmap(resize=STD_ICON_SIZE / 2)
632
+ icon_add_new.GetBitmap(resize=iconsize, buffer=1)
606
633
  )
607
- self.button_del_page.SetBitmap(
608
- icons8_remove_25.GetBitmap(resize=STD_ICON_SIZE / 2)
609
- )
610
- self.button_up_page.SetBitmap(icons8_up_50.GetBitmap(resize=STD_ICON_SIZE / 2))
634
+ self.button_del_page.SetBitmap(icon_trash.GetBitmap(resize=iconsize, buffer=1))
635
+ self.button_up_page.SetBitmap(icons8_up.GetBitmap(resize=iconsize, buffer=1))
611
636
  self.button_down_page.SetBitmap(
612
- icons8_down_50.GetBitmap(resize=STD_ICON_SIZE / 2)
637
+ icons8_down.GetBitmap(resize=iconsize, buffer=1)
613
638
  )
614
639
 
615
640
  self.button_del_panel = wx.StaticBitmap(
@@ -621,12 +646,10 @@ class RibbonEditor(wx.Panel):
621
646
  self.button_down_panel = wx.StaticBitmap(
622
647
  self, wx.ID_ANY, size=dip_size(self, 30, 30)
623
648
  )
624
- self.button_del_panel.SetBitmap(
625
- icons8_remove_25.GetBitmap(resize=STD_ICON_SIZE / 2)
626
- )
627
- self.button_up_panel.SetBitmap(icons8_up_50.GetBitmap(resize=STD_ICON_SIZE / 2))
649
+ self.button_del_panel.SetBitmap(icon_trash.GetBitmap(resize=iconsize, buffer=1))
650
+ self.button_up_panel.SetBitmap(icons8_up.GetBitmap(resize=iconsize, buffer=1))
628
651
  self.button_down_panel.SetBitmap(
629
- icons8_down_50.GetBitmap(resize=STD_ICON_SIZE / 2)
652
+ icons8_down.GetBitmap(resize=iconsize, buffer=1)
630
653
  )
631
654
 
632
655
  self.list_options = wx.ListBox(self, wx.ID_ANY, style=wx.LB_SINGLE)
@@ -824,6 +847,7 @@ class RibbonEditor(wx.Panel):
824
847
  self.ribbon_identifier = rlist[idx]
825
848
  rib = self.current_ribbon()
826
849
  self.check_labels.SetValue(rib.art.show_labels)
850
+ self.check_labels.Enable(rib.allow_labels)
827
851
  self.fill_pages(reload=True)
828
852
 
829
853
  def on_move_page_up(self, event):
meerk40t/gui/wxmscene.py CHANGED
@@ -11,9 +11,9 @@ from meerk40t.core.units import UNITS_PER_PIXEL, Length
11
11
  from meerk40t.gui.icons import (
12
12
  STD_ICON_SIZE,
13
13
  icon_meerk40t,
14
- icons8_menu_50,
14
+ icons8_menu,
15
15
  icons8_r_white,
16
- icons8_text_50,
16
+ icons8_text,
17
17
  )
18
18
  from meerk40t.gui.laserrender import DRAW_MODE_BACKGROUND, DRAW_MODE_GUIDES, LaserRender
19
19
  from meerk40t.gui.mwindow import MWindow
@@ -34,6 +34,8 @@ from meerk40t.gui.toolwidgets.toolcircle import CircleTool
34
34
  from meerk40t.gui.toolwidgets.toolcontainer import ToolContainer
35
35
  from meerk40t.gui.toolwidgets.tooldraw import DrawTool
36
36
  from meerk40t.gui.toolwidgets.toolellipse import EllipseTool
37
+ from meerk40t.gui.toolwidgets.toolimagecut import ImageCutTool
38
+ from meerk40t.gui.toolwidgets.toolline import LineTool
37
39
  from meerk40t.gui.toolwidgets.toollinetext import LineTextTool
38
40
  from meerk40t.gui.toolwidgets.toolmeasure import MeasureTool
39
41
  from meerk40t.gui.toolwidgets.toolnodeedit import EditTool
@@ -207,6 +209,7 @@ class MeerK40tScenePanel(wx.Panel):
207
209
 
208
210
  context.register("tool/draw", DrawTool)
209
211
  context.register("tool/rect", RectTool)
212
+ context.register("tool/line", LineTool)
210
213
  context.register("tool/polyline", PolylineTool)
211
214
  context.register("tool/polygon", PolygonTool)
212
215
  context.register("tool/point", PointTool)
@@ -222,6 +225,7 @@ class MeerK40tScenePanel(wx.Panel):
222
225
  context.register("tool/placement", PlacementTool)
223
226
  context.register("tool/nodemove", NodeMoveTool)
224
227
  context.register("tool/parameter", ParameterTool)
228
+ context.register("tool/imagecut", ImageCutTool)
225
229
 
226
230
  bsize_normal = STD_ICON_SIZE
227
231
 
@@ -237,7 +241,7 @@ class MeerK40tScenePanel(wx.Panel):
237
241
  "button/tools/Linetext",
238
242
  {
239
243
  "label": _("Vector Text"),
240
- "icon": icons8_text_50,
244
+ "icon": icons8_text,
241
245
  "tip": _("Add a vector text element"),
242
246
  "action": lambda v: proxy_linetext(),
243
247
  "group": "tool",
@@ -280,34 +284,34 @@ class MeerK40tScenePanel(wx.Panel):
280
284
  pass
281
285
  dlg.Destroy()
282
286
 
283
- @context.console_command("tool_menu", hidden=True)
284
- def tool_menu(channel, _, **kwgs):
285
- orgx = 5
286
- orgy = 5
287
- # Are guides drawn?
288
- if self.context.draw_mode & DRAW_MODE_GUIDES == 0:
289
- orgx += 25
290
- orgy += 25
291
- if self._tool_widget is not None:
292
- visible = self._tool_widget.visible
293
- self._tool_widget.show(not visible)
294
- self.widget_scene.request_refresh()
295
-
296
- if self._tool_widget is None:
297
- self._tool_widget = ToggleWidget(
298
- self.widget_scene,
299
- orgx,
300
- orgy,
301
- orgx + 25,
302
- orgy + 25,
303
- icons8_menu_50.GetBitmap(use_theme=False),
304
- "button/tool",
305
- )
306
- self.widget_scene.widget_root.interface_widget.add_widget(
307
- -1,
308
- self._tool_widget,
309
- )
310
- channel(_("Added tool widget to interface"))
287
+ # @context.console_command("tool_menu", hidden=True)
288
+ # def tool_menu(channel, _, **kwgs):
289
+ # orgx = 5
290
+ # orgy = 5
291
+ # # Are guides drawn?
292
+ # if self.context.draw_mode & DRAW_MODE_GUIDES == 0:
293
+ # orgx += 25
294
+ # orgy += 25
295
+ # if self._tool_widget is not None:
296
+ # visible = self._tool_widget.visible
297
+ # self._tool_widget.show(not visible)
298
+ # self.widget_scene.request_refresh()
299
+
300
+ # if self._tool_widget is None:
301
+ # self._tool_widget = ToggleWidget(
302
+ # self.widget_scene,
303
+ # orgx,
304
+ # orgy,
305
+ # orgx + 25,
306
+ # orgy + 25,
307
+ # icons8_menu.GetBitmap(use_theme=False),
308
+ # "button/tool",
309
+ # )
310
+ # self.widget_scene.widget_root.interface_widget.add_widget(
311
+ # -1,
312
+ # self._tool_widget,
313
+ # )
314
+ # channel(_("Added tool widget to interface"))
311
315
 
312
316
  @context.console_command("seek_bar", hidden=True)
313
317
  def seek_bar(channel, _, **kwgs):
@@ -422,8 +426,8 @@ class MeerK40tScenePanel(wx.Panel):
422
426
  )
423
427
  select_values = (
424
428
  (
425
- context.lookup("button/tools/Scene"),
426
- "button/tools/Scene",
429
+ context.lookup("button/select/Scene"),
430
+ "button/select/Scene",
427
431
  "Select",
428
432
  ),
429
433
  )
@@ -1290,12 +1294,19 @@ class MeerK40tScenePanel(wx.Panel):
1290
1294
  def on_close(self, event):
1291
1295
  self.save_magnets()
1292
1296
 
1297
+ @signal_listener("pause")
1293
1298
  @signal_listener("pipe;running")
1294
- def on_driver_mode(self, origin, state):
1295
- if state:
1296
- self.widget_scene.overrule_background = wx.RED
1297
- else:
1298
- self.widget_scene.overrule_background = None
1299
+ def on_driver_mode(self, origin, *args):
1300
+ # pipe running has (state) as args
1301
+ new_color = None
1302
+ try:
1303
+ if self.context.device.driver.paused:
1304
+ new_color = self.context.themes.get("pause_bg")
1305
+ elif self.context.device.laser_status == "active":
1306
+ new_color = self.context.themes.get("stop_bg")
1307
+ except AttributeError:
1308
+ pass
1309
+ self.widget_scene.overrule_background = new_color
1299
1310
  self.widget_scene.request_refresh_for_animation()
1300
1311
 
1301
1312
  @signal_listener("background")