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/newly/device.py CHANGED
@@ -4,17 +4,19 @@ Newly Device
4
4
  from meerk40t.core.laserjob import LaserJob
5
5
  from meerk40t.core.spoolers import Spooler
6
6
  from meerk40t.core.view import View
7
+ from meerk40t.device.mixins import Status
7
8
  from meerk40t.kernel import CommandSyntaxError, Service, signal_listener
8
9
  from meerk40t.newly.driver import NewlyDriver
9
10
 
10
11
 
11
- class NewlyDevice(Service):
12
+ class NewlyDevice(Service, Status):
12
13
  """
13
14
  Newly Device
14
15
  """
15
16
 
16
17
  def __init__(self, kernel, path, *args, choices=None, **kwargs):
17
18
  Service.__init__(self, kernel, path)
19
+ Status.__init__(self)
18
20
  self.name = "newly"
19
21
  self.extension = "hpgl"
20
22
  self.job = None
@@ -87,7 +89,7 @@ class NewlyDevice(Service):
87
89
  },
88
90
  {
89
91
  "attr": "corner_speed",
90
- "type": 120,
92
+ "type": int,
91
93
  "label": _("Corner Speed"),
92
94
  "width": 133,
93
95
  "editable": True,
@@ -95,6 +97,8 @@ class NewlyDevice(Service):
95
97
  ],
96
98
  "style": "chart",
97
99
  "primary": "speed",
100
+ "allow_deletion": True,
101
+ "allow_duplication": True,
98
102
  "label": _("Speed Chart"),
99
103
  "tip": _("Raster speed to chart."),
100
104
  },
@@ -507,6 +511,9 @@ class NewlyDevice(Service):
507
511
 
508
512
  self.viewbuffer = ""
509
513
 
514
+ # Sort the entries for the rasterchart
515
+ self.speedchart.sort(key=lambda x: x["speed"])
516
+
510
517
  @self.console_command(
511
518
  "estop",
512
519
  help=_("stops the current job, deletes the spooler"),
meerk40t/newly/driver.py CHANGED
@@ -365,6 +365,7 @@ class NewlyDriver:
365
365
  return
366
366
  self.paused = True
367
367
  self.connection.pause()
368
+ self.service.signal("pause")
368
369
 
369
370
  def resume(self):
370
371
  """
@@ -377,6 +378,7 @@ class NewlyDriver:
377
378
  """
378
379
  self.paused = False
379
380
  self.connection.resume()
381
+ self.service.signal("pause")
380
382
 
381
383
  def reset(self):
382
384
  """
@@ -384,7 +386,9 @@ class NewlyDriver:
384
386
 
385
387
  @return:
386
388
  """
389
+ self.paused = False
387
390
  self.connection.abort()
391
+ self.service.signal("pause")
388
392
 
389
393
  def status(self):
390
394
  """
meerk40t/newly/gui/gui.py CHANGED
@@ -7,7 +7,7 @@ def plugin(service, lifecycle):
7
7
  # Needed to test wx import.
8
8
  import wx # pylint: disable=unused-import
9
9
 
10
- from meerk40t.gui.icons import icons8_computer_support_50, icons8_connected_50
10
+ from meerk40t.gui.icons import icons8_computer_support, icons8_connected
11
11
 
12
12
  from .newlyconfig import NewlyConfiguration
13
13
  from .newlycontroller import NewlyController
@@ -26,7 +26,7 @@ def plugin(service, lifecycle):
26
26
  "button/control/Controller",
27
27
  {
28
28
  "label": _("Controller"),
29
- "icon": icons8_connected_50,
29
+ "icon": icons8_connected,
30
30
  "tip": _("Opens Controller Window"),
31
31
  "action": lambda e: service("window toggle Controller\n"),
32
32
  },
@@ -35,7 +35,7 @@ def plugin(service, lifecycle):
35
35
  "button/device/Configuration",
36
36
  {
37
37
  "label": _("Config"),
38
- "icon": icons8_computer_support_50,
38
+ "icon": icons8_computer_support,
39
39
  "tip": _("Opens device-specific configuration window"),
40
40
  "action": lambda v: service("window toggle Configuration\n"),
41
41
  },
@@ -43,14 +43,13 @@ def plugin(service, lifecycle):
43
43
 
44
44
  if lifecycle == "service_attach":
45
45
  from meerk40t.gui.icons import (
46
- icons8_circled_play_50,
47
- icons8_circled_stop_50,
48
- icons8_computer_support_50,
49
- icons8_connected_50,
50
- icons8_file_50,
51
- icons8_move_50,
52
- icons8_play_50,
53
- icons8_rectangular_50,
46
+ icon_mk_rectangular,
47
+ icons8_circled_play,
48
+ icons8_circled_stop,
49
+ icons8_computer_support,
50
+ icons8_connected,
51
+ icons8_file,
52
+ icons8_move,
54
53
  )
55
54
 
56
55
  _ = service.kernel.translation
@@ -60,7 +59,7 @@ def plugin(service, lifecycle):
60
59
  "button/control/SelectFile",
61
60
  {
62
61
  "label": _("File {index}").format(index=selected),
63
- "icon": icons8_file_50,
62
+ "icon": icons8_file,
64
63
  "tip": _("Select active file to use for machine."),
65
64
  "identifier": "file_index",
66
65
  "object": service,
@@ -127,7 +126,7 @@ def plugin(service, lifecycle):
127
126
  "button/control/AutoStart",
128
127
  {
129
128
  "label": _("Send Only"),
130
- "icon": icons8_circled_stop_50,
129
+ "icon": icons8_circled_stop,
131
130
  "tip": _("Send the file but do not start the file"),
132
131
  "toggle_attr": "autoplay",
133
132
  "object": service,
@@ -135,7 +134,7 @@ def plugin(service, lifecycle):
135
134
  "toggle": {
136
135
  "label": _("Send & Start"),
137
136
  "tip": _("Automatically start the device after send"),
138
- "icon": icons8_circled_play_50,
137
+ "icon": icons8_circled_play,
139
138
  "signal": "autoplay",
140
139
  },
141
140
  },
@@ -144,7 +143,7 @@ def plugin(service, lifecycle):
144
143
  "button/control/DrawFrame",
145
144
  {
146
145
  "label": _("Draw Frame"),
147
- "icon": icons8_rectangular_50,
146
+ "icon": icon_mk_rectangular,
148
147
  "tip": _(
149
148
  "Draw a bounding rectangle of the object saved in the machine"
150
149
  ),
@@ -158,7 +157,7 @@ def plugin(service, lifecycle):
158
157
  "button/control/MoveFrame",
159
158
  {
160
159
  "label": _("Move Frame"),
161
- "icon": icons8_move_50,
160
+ "icon": icons8_move,
162
161
  "tip": _(
163
162
  "Move the bounding rectangle of the object saved in the machine"
164
163
  ),
@@ -172,7 +171,7 @@ def plugin(service, lifecycle):
172
171
  "button/control/Replay",
173
172
  {
174
173
  "label": _("Replay"),
175
- "icon": icons8_play_50,
174
+ "icon": icons8_circled_play,
176
175
  "tip": _("Replay the file saved in the machine"),
177
176
  "action": lambda v: service(
178
177
  "replay {index}\n".format(index=service.file_index)
@@ -4,7 +4,7 @@ from meerk40t.device.gui.defaultactions import DefaultActionPanel
4
4
  from meerk40t.device.gui.formatterpanel import FormatterPanel
5
5
  from meerk40t.device.gui.warningpanel import WarningPanel
6
6
  from meerk40t.gui.choicepropertypanel import ChoicePropertyPanel
7
- from meerk40t.gui.icons import icons8_administrative_tools_50
7
+ from meerk40t.gui.icons import icons8_administrative_tools
8
8
  from meerk40t.gui.mwindow import MWindow
9
9
 
10
10
  _ = wx.GetTranslation
@@ -15,7 +15,7 @@ class NewlyConfiguration(MWindow):
15
15
  super().__init__(420, 570, *args, **kwds)
16
16
  self.context = self.context.device
17
17
  _icon = wx.NullIcon
18
- _icon.CopyFromBitmap(icons8_administrative_tools_50.GetBitmap())
18
+ _icon.CopyFromBitmap(icons8_administrative_tools.GetBitmap())
19
19
  self.SetIcon(_icon)
20
20
  self.SetTitle(_("Newly-Configuration"))
21
21
 
@@ -2,7 +2,11 @@ import threading
2
2
 
3
3
  import wx
4
4
 
5
- from meerk40t.gui.icons import icons8_connected_50, icons8_disconnected_50
5
+ from meerk40t.gui.icons import (
6
+ get_default_icon_size,
7
+ icons8_connected,
8
+ icons8_disconnected,
9
+ )
6
10
  from meerk40t.gui.mwindow import MWindow
7
11
  from meerk40t.gui.wxutils import dip_size
8
12
  from meerk40t.kernel import signal_listener
@@ -58,7 +62,9 @@ class NewlyControllerPanel(wx.ScrolledWindow):
58
62
  _("Force connection/disconnection from the device.")
59
63
  )
60
64
  self.button_device_connect.SetBitmap(
61
- icons8_disconnected_50.GetBitmap(use_theme=False)
65
+ icons8_disconnected.GetBitmap(
66
+ use_theme=False, resize=get_default_icon_size()
67
+ )
62
68
  )
63
69
  # end wxGlade
64
70
 
@@ -89,14 +95,16 @@ class NewlyControllerPanel(wx.ScrolledWindow):
89
95
  def set_button_connected(self):
90
96
  self.button_device_connect.SetBackgroundColour("#00ff00")
91
97
  self.button_device_connect.SetBitmap(
92
- icons8_connected_50.GetBitmap(use_theme=False)
98
+ icons8_connected.GetBitmap(use_theme=False, resize=get_default_icon_size())
93
99
  )
94
100
  self.button_device_connect.Enable()
95
101
 
96
102
  def set_button_disconnected(self):
97
103
  self.button_device_connect.SetBackgroundColour("#dfdf00")
98
104
  self.button_device_connect.SetBitmap(
99
- icons8_disconnected_50.GetBitmap(use_theme=False)
105
+ icons8_disconnected.GetBitmap(
106
+ use_theme=False, resize=get_default_icon_size()
107
+ )
100
108
  )
101
109
  self.button_device_connect.Enable()
102
110
 
@@ -163,7 +171,7 @@ class NewlyController(MWindow):
163
171
  self.add_module_delegate(self.panel)
164
172
  self.SetTitle(_("Newly-Controller"))
165
173
  _icon = wx.NullIcon
166
- _icon.CopyFromBitmap(icons8_connected_50.GetBitmap())
174
+ _icon.CopyFromBitmap(icons8_connected.GetBitmap())
167
175
  self.SetIcon(_icon)
168
176
  self.Layout()
169
177
 
@@ -7,7 +7,7 @@ def plugin(kernel, lifecycle):
7
7
  if lifecycle == "invalidate":
8
8
  return not kernel.has_feature("wx")
9
9
  if lifecycle == "register":
10
- from meerk40t.gui.icons import icons8_roll_50
10
+ from meerk40t.gui.icons import icon_rotary
11
11
  from meerk40t.rotary.gui.rotarysettings import RotarySettings
12
12
 
13
13
  _ = kernel.translation
@@ -21,7 +21,7 @@ def plugin(kernel, lifecycle):
21
21
  "button/device/Rotary",
22
22
  {
23
23
  "label": _("Rotary"),
24
- "icon": icons8_roll_50,
24
+ "icon": icon_rotary,
25
25
  "tip": _("Opens Rotary Window"),
26
26
  "action": lambda v: kernel.console("window toggle Rotary\n"),
27
27
  },
@@ -5,7 +5,7 @@
5
5
 
6
6
  import wx
7
7
 
8
- from meerk40t.gui.icons import icons8_roll_50
8
+ from meerk40t.gui.icons import icon_rotary
9
9
  from meerk40t.gui.mwindow import MWindow
10
10
  from meerk40t.gui.wxutils import ScrolledPanel, StaticBoxSizer, TextCtrl, dip_size
11
11
 
@@ -216,7 +216,7 @@ class RotarySettings(MWindow):
216
216
  self.panel = RotarySettingsPanel(self, wx.ID_ANY, context=self.context.rotary)
217
217
  self.add_module_delegate(self.panel)
218
218
  _icon = wx.NullIcon
219
- _icon.CopyFromBitmap(icons8_roll_50.GetBitmap())
219
+ _icon.CopyFromBitmap(icon_rotary.GetBitmap())
220
220
  self.SetIcon(_icon)
221
221
  # begin wxGlade: RotarySettings.__set_properties
222
222
  self.SetTitle(_("Rotary-Settings"))
meerk40t/ruida/device.py CHANGED
@@ -9,6 +9,7 @@ from meerk40t.kernel import Service
9
9
 
10
10
  from ..core.spoolers import Spooler
11
11
  from ..core.units import UNITS_PER_NM, Length
12
+ from ..device.mixins import Status
12
13
  from .driver import RuidaDriver
13
14
 
14
15
 
@@ -19,7 +20,9 @@ class RuidaDevice(Service):
19
20
 
20
21
  def __init__(self, kernel, path, *args, choices=None, **kwargs):
21
22
  Service.__init__(self, kernel, path)
23
+ Status.__init__(self)
22
24
  self.name = "RuidaDevice"
25
+
23
26
  if choices is not None:
24
27
  for c in choices:
25
28
  attr = c.get("attr")
meerk40t/ruida/driver.py CHANGED
@@ -431,6 +431,7 @@ class RuidaDriver:
431
431
  return
432
432
  self.paused = True
433
433
  self.connection.pause()
434
+ self.service.signal("pause")
434
435
 
435
436
  def resume(self):
436
437
  """
@@ -443,6 +444,7 @@ class RuidaDriver:
443
444
  """
444
445
  self.paused = False
445
446
  self.connection.resume()
447
+ self.service.signal("pause")
446
448
 
447
449
  def reset(self):
448
450
  """
@@ -451,6 +453,8 @@ class RuidaDriver:
451
453
  @return:
452
454
  """
453
455
  self.connection.abort()
456
+ self.paused = False
457
+ self.service.signal("pause")
454
458
 
455
459
  def dwell(self, time_in_ms):
456
460
  """
meerk40t/ruida/gui/gui.py CHANGED
@@ -7,9 +7,9 @@ def plugin(service, lifecycle):
7
7
  import wx
8
8
 
9
9
  from meerk40t.gui.icons import (
10
- icons8_computer_support_50,
11
- icons8_connected_50,
12
- icons8_info_50,
10
+ icons8_computer_support,
11
+ icons8_connected,
12
+ icons8_info,
13
13
  )
14
14
 
15
15
  _ = service._
@@ -28,7 +28,7 @@ def plugin(service, lifecycle):
28
28
  "button/control/Info",
29
29
  {
30
30
  "label": _("Ruida Info"),
31
- "icon": icons8_info_50,
31
+ "icon": icons8_info,
32
32
  "tip": _("Provide information about the Ruida Driver"),
33
33
  "action": popup_info,
34
34
  },
@@ -37,7 +37,7 @@ def plugin(service, lifecycle):
37
37
  "button/control/Controller",
38
38
  {
39
39
  "label": _("Controller"),
40
- "icon": icons8_connected_50,
40
+ "icon": icons8_connected,
41
41
  "tip": _("Opens Controller Window"),
42
42
  "action": lambda e: service("window toggle Controller\n"),
43
43
  },
@@ -46,7 +46,7 @@ def plugin(service, lifecycle):
46
46
  "button/device/Configuration",
47
47
  {
48
48
  "label": _("Config"),
49
- "icon": icons8_computer_support_50,
49
+ "icon": icons8_computer_support,
50
50
  "tip": _("Opens device-specific configuration window"),
51
51
  "action": lambda v: service("window toggle Configuration\n"),
52
52
  },
@@ -4,7 +4,7 @@ from meerk40t.device.gui.defaultactions import DefaultActionPanel
4
4
  from meerk40t.device.gui.formatterpanel import FormatterPanel
5
5
  from meerk40t.device.gui.warningpanel import WarningPanel
6
6
  from meerk40t.gui.choicepropertypanel import ChoicePropertyPanel
7
- from meerk40t.gui.icons import icons8_administrative_tools_50
7
+ from meerk40t.gui.icons import icons8_administrative_tools
8
8
  from meerk40t.gui.mwindow import MWindow
9
9
 
10
10
  _ = wx.GetTranslation
@@ -15,7 +15,7 @@ class RuidaConfiguration(MWindow):
15
15
  super().__init__(420, 570, *args, **kwds)
16
16
  self.context = self.context.device
17
17
  _icon = wx.NullIcon
18
- _icon.CopyFromBitmap(icons8_administrative_tools_50.GetBitmap())
18
+ _icon.CopyFromBitmap(icons8_administrative_tools.GetBitmap())
19
19
  self.SetIcon(_icon)
20
20
  self.SetTitle(_(_("Ruida-Configuration")))
21
21
 
@@ -2,7 +2,11 @@ import threading
2
2
 
3
3
  import wx
4
4
 
5
- from meerk40t.gui.icons import icons8_connected_50, icons8_disconnected_50
5
+ from meerk40t.gui.icons import (
6
+ get_default_icon_size,
7
+ icons8_connected,
8
+ icons8_disconnected,
9
+ )
6
10
  from meerk40t.gui.mwindow import MWindow
7
11
  from meerk40t.gui.wxutils import dip_size
8
12
  from meerk40t.kernel import signal_listener
@@ -58,7 +62,9 @@ class RuidaControllerPanel(wx.ScrolledWindow):
58
62
  _("Force connection/disconnection from the device.")
59
63
  )
60
64
  self.button_device_connect.SetBitmap(
61
- icons8_disconnected_50.GetBitmap(use_theme=False)
65
+ icons8_disconnected.GetBitmap(
66
+ use_theme=False, resize=get_default_icon_size()
67
+ )
62
68
  )
63
69
  # end wxGlade
64
70
 
@@ -89,14 +95,16 @@ class RuidaControllerPanel(wx.ScrolledWindow):
89
95
  def set_button_connected(self):
90
96
  self.button_device_connect.SetBackgroundColour("#00ff00")
91
97
  self.button_device_connect.SetBitmap(
92
- icons8_connected_50.GetBitmap(use_theme=False)
98
+ icons8_connected.GetBitmap(use_theme=False, resize=get_default_icon_size())
93
99
  )
94
100
  self.button_device_connect.Enable()
95
101
 
96
102
  def set_button_disconnected(self):
97
103
  self.button_device_connect.SetBackgroundColour("#dfdf00")
98
104
  self.button_device_connect.SetBitmap(
99
- icons8_disconnected_50.GetBitmap(use_theme=False)
105
+ icons8_disconnected.GetBitmap(
106
+ use_theme=False, resize=get_default_icon_size()
107
+ )
100
108
  )
101
109
  self.button_device_connect.Enable()
102
110
 
@@ -161,7 +169,7 @@ class RuidaController(MWindow):
161
169
  self.add_module_delegate(self.panel)
162
170
  self.SetTitle(_("Ruida-Controller"))
163
171
  _icon = wx.NullIcon
164
- _icon.CopyFromBitmap(icons8_connected_50.GetBitmap())
172
+ _icon.CopyFromBitmap(icons8_connected.GetBitmap())
165
173
  self.SetIcon(_icon)
166
174
  self.Layout()
167
175
 
meerk40t/svgelements.py CHANGED
@@ -3995,7 +3995,7 @@ class PathSegment:
3995
3995
 
3996
3996
  These segments define a 1:1 relationship with the path_d or path data attribute, denoted in
3997
3997
  SVG by the 'd' attribute. These are moveto, closepath, lineto, and the curves which are cubic
3998
- Bzier curves, quadratic Bzier curves, and elliptical arc. These are classed as Move, Close,
3998
+ B?zier curves, quadratic B?zier curves, and elliptical arc. These are classed as Move, Close,
3999
3999
  Line, CubicBezier, QuadraticBezier, and Arc. And in path_d are denoted as M, Z, L, C, Q, A.
4000
4000
 
4001
4001
  There are lowercase versions of these commands. And for C, and Q there are S and T which are
@@ -4514,7 +4514,7 @@ class Line(Linear):
4514
4514
 
4515
4515
 
4516
4516
  class QuadraticBezier(Curve):
4517
- """Represents Quadratic Bzier commands."""
4517
+ """Represents Quadratic B?zier commands."""
4518
4518
 
4519
4519
  def __init__(self, start, control, end, **kwargs):
4520
4520
  Curve.__init__(self, start, end, **kwargs)
@@ -4604,7 +4604,7 @@ class QuadraticBezier(Curve):
4604
4604
 
4605
4605
  def bbox(self):
4606
4606
  """
4607
- Returns the bounding box for the quadratic Bzier curve.
4607
+ Returns the bounding box for the quadratic B?zier curve.
4608
4608
  """
4609
4609
  n = self.start.x - self.control.x
4610
4610
  d = self.start.x - 2 * self.control.x + self.end.x
@@ -4696,7 +4696,7 @@ class QuadraticBezier(Curve):
4696
4696
 
4697
4697
 
4698
4698
  class CubicBezier(Curve):
4699
- """Represents Cubic Bzier commands."""
4699
+ """Represents Cubic B?zier commands."""
4700
4700
 
4701
4701
  def __init__(self, start, control1, control2, end, **kwargs):
4702
4702
  Curve.__init__(self, start, end, **kwargs)
@@ -4801,7 +4801,7 @@ class CubicBezier(Curve):
4801
4801
  return [Point(*_compute_point(position)) for position in positions]
4802
4802
 
4803
4803
  def bbox(self):
4804
- """returns the tight-fitting bounding box of the Bzier curve.
4804
+ """returns the tight-fitting bounding box of the B?zier curve.
4805
4805
  Code by:
4806
4806
  https://github.com/mathandy/svgpathtools
4807
4807
  """
@@ -5331,7 +5331,7 @@ class Arc(Curve):
5331
5331
  def length(self, error=ERROR, min_depth=MIN_DEPTH):
5332
5332
  """The length of an elliptical arc segment requires numerical
5333
5333
  integration, and in that case it's simpler to just do a geometric
5334
- approximation, as for cubic Bzier curves.
5334
+ approximation, as for cubic B?zier curves.
5335
5335
  """
5336
5336
  if self.sweep == 0:
5337
5337
  return 0
@@ -6498,7 +6498,7 @@ class Path(Shape, MutableSequence):
6498
6498
 
6499
6499
  def approximate_arcs_with_cubics(self, error=0.1):
6500
6500
  """
6501
- Iterates through this path and replaces any Arcs with cubic Bzier curves.
6501
+ Iterates through this path and replaces any Arcs with cubic B?zier curves.
6502
6502
  """
6503
6503
  sweep_limit = tau * error
6504
6504
  for s in range(len(self) - 1, -1, -1):
@@ -6509,7 +6509,7 @@ class Path(Shape, MutableSequence):
6509
6509
 
6510
6510
  def approximate_arcs_with_quads(self, error=0.1):
6511
6511
  """
6512
- Iterates through this path and replaces any Arcs with quadratic Bzier curves.
6512
+ Iterates through this path and replaces any Arcs with quadratic B?zier curves.
6513
6513
  """
6514
6514
  sweep_limit = tau * error
6515
6515
  for s in range(len(self) - 1, -1, -1):
@@ -6520,7 +6520,7 @@ class Path(Shape, MutableSequence):
6520
6520
 
6521
6521
  def approximate_bezier_with_circular_arcs(self, error=0.01):
6522
6522
  """
6523
- Iterates through this path and replaces any Bzier curves with circular arcs.
6523
+ Iterates through this path and replaces any B?zier curves with circular arcs.
6524
6524
  """
6525
6525
  for s in range(len(self) - 1, -1, -1):
6526
6526
  segment = self[s]