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
@@ -3,7 +3,21 @@ from copy import copy
3
3
 
4
4
  import wx
5
5
 
6
- from meerk40t.gui.icons import STD_ICON_SIZE, PyEmbeddedImage
6
+ from meerk40t.gui.icons import (
7
+ STD_ICON_SIZE,
8
+ icon_node_add,
9
+ icon_node_append,
10
+ icon_node_break,
11
+ icon_node_close,
12
+ icon_node_curve,
13
+ icon_node_delete,
14
+ icon_node_join,
15
+ icon_node_line,
16
+ icon_node_line_all,
17
+ icon_node_smooth,
18
+ icon_node_smooth_all,
19
+ icon_node_symmetric,
20
+ )
7
21
  from meerk40t.gui.laserrender import swizzlecolor
8
22
  from meerk40t.gui.mwindow import MWindow
9
23
  from meerk40t.gui.scene.sceneconst import (
@@ -45,7 +59,6 @@ class EditTool(ToolWidget):
45
59
  self.path = None
46
60
  self.element = None
47
61
  self.selected_index = None
48
- self.anyselected = False
49
62
 
50
63
  self.move_type = "node"
51
64
  self.node_type = "path"
@@ -65,6 +78,8 @@ class EditTool(ToolWidget):
65
78
  self.pen_selection = wx.Pen()
66
79
  self.pen_selection.SetColour(self.scene.colors.color_selection3)
67
80
  self.pen_selection.SetStyle(wx.PENSTYLE_SHORT_DASH)
81
+ self.brush_highlight = wx.Brush(wx.RED_BRUSH)
82
+ self.brush_normal = wx.Brush(wx.TRANSPARENT_BRUSH)
68
83
  # want to have sharp edges
69
84
  self.pen_selection.SetJoin(wx.JOIN_MITER)
70
85
  # "key": (routine, info, available for poly, available for path)
@@ -87,108 +102,6 @@ class EditTool(ToolWidget):
87
102
  self.message = ""
88
103
 
89
104
  def define_buttons(self):
90
- node_add = PyEmbeddedImage(
91
- b"iVBORw0KGgoAAAANSUhEUgAAABkAAAAZAQMAAAD+JxcgAAAABlBMVEUAAAD///+l2Z/dAAAA"
92
- b"CXBIWXMAAA7EAAAOxAGVKw4bAAAAJ0lEQVQImWP4//h/AwM24g+DPDKBU93//yCCoR5G2KEQ"
93
- b"YIAmBlcMABg0P3m4MIsZAAAAAElFTkSuQmCC"
94
- )
95
-
96
- node_append = PyEmbeddedImage(
97
- b"iVBORw0KGgoAAAANSUhEUgAAABkAAAAZAQMAAAD+JxcgAAAABlBMVEUAAAD///+l2Z/dAAAA"
98
- b"CXBIWXMAAA7EAAAOxAGVKw4bAAAALklEQVQImWP4//h/AwM24g+DPDKBU93//zCC/wd7A8P7"
99
- b"39+RiRfM3zHEwOpAOgBQXErXEDO0NAAAAABJRU5ErkJggg=="
100
- )
101
-
102
- node_break = PyEmbeddedImage(
103
- b"iVBORw0KGgoAAAANSUhEUgAAABcAAAAZAQMAAADg7ieTAAAABlBMVEUAAAD///+l2Z/dAAAA"
104
- b"CXBIWXMAAA7EAAAOxAGVKw4bAAAAOElEQVQImWP4//8fw39GIK6FYIYaBjgbLA6Sf4+EGaG4"
105
- b"GYiPQ8Qa/jEx7Pv3C4zt/v2As0HiQP0AnIQ8UXzwP+sAAAAASUVORK5CYII="
106
- )
107
-
108
- node_curve = PyEmbeddedImage(
109
- b"iVBORw0KGgoAAAANSUhEUgAAABkAAAAZAQMAAAD+JxcgAAAABlBMVEUAAAD///+l2Z/dAAAA"
110
- b"CXBIWXMAAA7EAAAOxAGVKw4bAAAARklEQVQImWP4//9/AwOUOAgi7gKJP7JA4iGIdR4kJg+U"
111
- b"/VcPIkDq/oCInyDiN4j4DCK+w4nnIOI9iGgGEbtRiWYk2/43AADobVHMAT+avQAAAABJRU5E"
112
- b"rkJggg=="
113
- )
114
-
115
- node_delete = PyEmbeddedImage(
116
- b"iVBORw0KGgoAAAANSUhEUgAAABkAAAAZAQMAAAD+JxcgAAAABlBMVEUAAAD///+l2Z/dAAAA"
117
- b"CXBIWXMAAA7EAAAOxAGVKw4bAAAAKUlEQVQImWP4//9/AwM24g+DPDKBUx0SMakeSOyvh3FB"
118
- b"LDBAE4OoA3IBbltJOc3s08cAAAAASUVORK5CYII="
119
- )
120
-
121
- node_join = PyEmbeddedImage(
122
- b"iVBORw0KGgoAAAANSUhEUgAAABkAAAAZAQMAAAD+JxcgAAAABlBMVEUAAAD///+l2Z/dAAAA"
123
- b"CXBIWXMAAA7EAAAOxAGVKw4bAAAAPklEQVQImWP4//9/A8OD/80NDO/+74YSff93IHPBsv+/"
124
- b"/0chGkDEQRDxGC72H04wgIg6GNFQx4DMhcgC1QEARo5M+gzPuwgAAAAASUVORK5CYII="
125
- )
126
-
127
- node_line = PyEmbeddedImage(
128
- b"iVBORw0KGgoAAAANSUhEUgAAABkAAAAZAQMAAAD+JxcgAAAABlBMVEUAAAD///+l2Z/dAAAA"
129
- b"CXBIWXMAAA7EAAAOxAGVKw4bAAAARElEQVQImWP4//9/A8P//wdAxD0sRAOIsAcS/+qBxB+Q"
130
- b"4p8g4jOIeA4izoOI+SDCHkj8qwcSf0CGNoKIvViIRoiV/xsA49JQrrbQItQAAAAASUVORK5C"
131
- b"YII="
132
- )
133
-
134
- node_symmetric = PyEmbeddedImage(
135
- b"iVBORw0KGgoAAAANSUhEUgAAABkAAAAZAQMAAAD+JxcgAAAABlBMVEUAAAD///+l2Z/dAAAA"
136
- b"CXBIWXMAAA7EAAAOxAGVKw4bAAAAV0lEQVQImV3NqxGAMBRE0R2qQoXS2ApICVDJowRKQEYi"
137
- b"YsIAWX6DIObIeyGJeGgllDTKwKjMl147MesgJq3Eoo0IjES0QCTzROdqYnAV4S1dZbvz/B5/"
138
- b"TrOwSVb5BTbFAAAAAElFTkSuQmCC"
139
- )
140
-
141
- node_smooth = PyEmbeddedImage(
142
- b"iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAAXNSR0IArs4c6QAAAARnQU1B"
143
- b"AACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAIgSURBVEhLY/wPBAw0BkxQmqZg+FhC"
144
- b"VJx8+fyZ4fKVK1AeBEhKSDAoKCpCefgBUZZcvHCBITo6CsqDgJjYWIaKikooDz8gKrjevX8P"
145
- b"ZSHAh3fvGX7//g3l4Qc4ffLz50+G9evWMSxftpTh7r17UFFUwM3NzeDm6saQlJLMoKioBBXF"
146
- b"BFgtOX/+HENNdRXDw4ePwHwZGVmGJ08eg9kwICQkxPDj+3eGb0DMxMTEkJySwpCdncPAwsIC"
147
- b"VYEAGJZs3bqFoaaqiuH3nz8Mjg6ODHkFBWADFy1cCFUBAdo6Ogx2dnYMq1etYpg6dQrDly9f"
148
- b"GKysbRgmTpzIwMnJCVUFBSBLYODgwYP/dXV1/usB8do1a6CihMGLF8//h4YE/9fW0vyfmZn5"
149
- b"/++fP1AZCIBb8ubNm/8W5mb/dbS1/m/ftg0qSjz4/Pnz/4AAf7BF8+bOhYpCANyS2tpqsIKO"
150
- b"jnaoCOng/v37/40MDf4bGxmCHQ0DYEtAAoYG+mCfAMMWLEEu6O7qAjt22rSpUJH//8H55MD+"
151
- b"/Qy/fv1i8A8IACdLSkBkZCSY3rVzJ5gGAWZ+Pr6G7du3MgB9wyAsJMzwB5iq1DU0oNKkg/Xr"
152
- b"1zFcOHeO4dWrVwzfvn4DZofzDIwgr0HlwcDZ2Ylh4qQpUB7pwNfHh+H+fUTmBYXMaH1CEmA8"
153
- b"duwYSpyAihB1dXUoj3QAqhZA5RkMMDMzEVefUApGI54EwMAAANLW9DiEznjCAAAAAElFTkSu"
154
- b"QmCC"
155
- )
156
-
157
- node_smooth_all = PyEmbeddedImage(
158
- b"iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwY"
159
- b"AAACs0lEQVR4nO2YO2hUQRSGj4r4loh2Rldws3P+/+zdK2xhSB+idop2FqJgFUEt1FJERBtt"
160
- b"VKy0UvCBz0IR0UKsTBoRBEVREcEHiEh8JBrlZu+uIbmYx97sA+eDKbaY/86/c86cMyPi8Xg8"
161
- b"Ho/nP6RYLM404PDIETjnpJlob22dY8TvkQPAOmkmzCxMMkJq9yaRGdLIFAqFeaa606DPkkwM"
162
- b"Gx8NOBoE2VZpNACsJfR1ZbHQH0b8SjDxrbI70D5Sd4vIdGkESN1rxGApdPAmCp8gCBYRuEui"
163
- b"Z/gw0w1mroPE5coc4FImk5ldVxMG7Bm2C6edcwvGPddcF6HvYjM36pY7Zq6rEj7Agclp2Mpy"
164
- b"SJJ6UGpNsVicS+JFbOJMNVr5fK5A4iuh/aqal1pCanc5J7LZ7MIU9PbF4XkxnRWOEwJPSka4"
165
- b"Q1LaYSM+EDoQtrUtlVpAMhsfn/1hGLakp4sTkW4e2CpTjVEvEHgQn1Sfo9+q2l6tLum2EHhY"
166
- b"0tWnQ9+h7qpWN3DORVojhyS3HdxYvREcS2hnzlera+Y6ktbsjYyF35HJh9boxEkr2UsHifbF"
167
- b"CX81tWSH3owNDEZ1aijZpxoC14eOYNXOtDTzwOa4eD+SWkHq9rjtOZeaJnAv1jyUlubYHyXn"
168
- b"E/opqvCBc0G1ennVzrh4DwDISJ2uBr3R3X+yOrlcbolRX8Y16aTU5QWG6C0nfTabnTVRjTAM"
169
- b"WyodCPRVmq3UhDCzZUa8jRdy3zm3YrxzA+cCoz6O534huUrqCYA2As//LkiPRIai4jnqCg3s"
170
- b"V9WcAcfj94LolHoPYLU0Aqq62ICzw4pZdM///q9HDStdnW+RXC6NRqlC65Xyv53cvOKnUe+Q"
171
- b"XCMi06SRiR43DHotwURPtHvSTBj0VIKR29Js5FXXJzyQb6v3ujwej8fj8Uid+AMS4JbuhXD/"
172
- b"gAAAAABJRU5ErkJggg=="
173
- )
174
-
175
- node_close = PyEmbeddedImage(
176
- b"iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwY"
177
- b"AAACpklEQVR4nO2YSWsVQRRGjwlOcWM0YCDguFHzUKMrccClszEgiCKSgBiCYOJGI7qX4MYg"
178
- b"auLsD3DnhD5F/AGaxAHEZKFunDfqwiQ+KbgNl6K7051+TbpNHajV++7te19VV9dX4HA4HA7H"
179
- b"xDAFOA5cAGrJMTuBkoy3QB05Za1qJPfNHMtzM3OBrUCLvCOvIjSzAOgQfdhoAbbIM1KhEjgI"
180
- b"PAFGrML9xh0r/k2EGD2GgcfAAaCiXE1sAgZiFvLUyvExZnxJjT5gY9Imjsi/Yyd/DzwEbslS"
181
- b"0r99ApZbeVYD3UBPyDC5TM4PATPUNt4mTvkkuww0KM1ea6mZJgokpwG44rOMO+MmagL+qgTv"
182
- b"gBWWZpU1W6aJesrLSmBQPWMUaIwaPAf4oYL7A3aRfSk34VFjvaPfgGoicFYFfQUWBuhmAL3A"
183
- b"bWAp6bIY+K7q6horYBbwWwUcJTt0qLp+AVVh4t1K/BmYRnaYLivEq29XmLhXCa+RPW6o+i6F"
184
- b"CR8o4SGyx2FV3/0w4Usl3Eb22GHtpoH0K+F2su2B+ibF0upRwutkj5uqvotRt98vsuXlcvut"
185
- b"ko+NJ24nm270JzBzrIAu61yzKOUClwH3gPPA1ADNEuuIciZK4moraEAObmlQLwdO71l7fDQ1"
186
- b"1mfBLK/ZUR/QKEdmL3hQju1pNmEsQcHHlwxZx3izBcei0zI1xuRcFbeXlILVxIiYNO/ib40c"
187
- b"kWxjZS4oxkVbgNU1drQo9jTMvnZbjtJvJkpil02uYoC//wO0kpANwIsElwemMM2zmPHPgXWU"
188
- b"iQq5mikGzFDYeG3luhshZhh4BOwv53WQnxXeDDQDp2UrDBongPlWfJ3PzcuQ5GqW3JGsbBao"
189
- b"lZnSzZwkp/jNzHr+k2aayDHzgHPyjlROdDEOh8PhmJz8A+PVbUCLkfVDAAAAAElFTkSuQmCC"
190
- )
191
-
192
105
  def becomes_enabled(needs_selection, active_for_path, active_for_poly):
193
106
  def routine(*args):
194
107
  # print(
@@ -244,7 +157,7 @@ class EditTool(ToolWidget):
244
157
  # active_for_path, active_for_poly,
245
158
  # "tooltiptext", button],
246
159
  "i": [
247
- node_add,
160
+ icon_node_add,
248
161
  True,
249
162
  True,
250
163
  True,
@@ -252,7 +165,7 @@ class EditTool(ToolWidget):
252
165
  _("Insert"),
253
166
  ],
254
167
  "a": [
255
- node_append,
168
+ icon_node_append,
256
169
  False,
257
170
  True,
258
171
  True,
@@ -260,7 +173,7 @@ class EditTool(ToolWidget):
260
173
  _("Append"),
261
174
  ],
262
175
  "d": [
263
- node_delete,
176
+ icon_node_delete,
264
177
  True,
265
178
  True,
266
179
  True,
@@ -268,7 +181,7 @@ class EditTool(ToolWidget):
268
181
  _("Delete"),
269
182
  ],
270
183
  "l": [
271
- node_line,
184
+ icon_node_line,
272
185
  True,
273
186
  True,
274
187
  False,
@@ -276,7 +189,7 @@ class EditTool(ToolWidget):
276
189
  _("> Line"),
277
190
  ],
278
191
  "c": [
279
- node_curve,
192
+ icon_node_curve,
280
193
  True,
281
194
  True,
282
195
  False,
@@ -284,7 +197,7 @@ class EditTool(ToolWidget):
284
197
  _("> Curve"),
285
198
  ],
286
199
  "s": [
287
- node_symmetric,
200
+ icon_node_symmetric,
288
201
  True,
289
202
  True,
290
203
  False,
@@ -292,7 +205,7 @@ class EditTool(ToolWidget):
292
205
  _("Symmetric"),
293
206
  ],
294
207
  "j": [
295
- node_join,
208
+ icon_node_join,
296
209
  True,
297
210
  True,
298
211
  False,
@@ -300,7 +213,7 @@ class EditTool(ToolWidget):
300
213
  _("Join"),
301
214
  ],
302
215
  "b": [
303
- node_break,
216
+ icon_node_break,
304
217
  True,
305
218
  True,
306
219
  False,
@@ -308,7 +221,7 @@ class EditTool(ToolWidget):
308
221
  _("Break"),
309
222
  ],
310
223
  "o": [
311
- node_smooth,
224
+ icon_node_smooth,
312
225
  True,
313
226
  True,
314
227
  False,
@@ -316,15 +229,23 @@ class EditTool(ToolWidget):
316
229
  _("Smooth"),
317
230
  ],
318
231
  "v": [
319
- node_smooth_all,
232
+ icon_node_smooth_all,
320
233
  False,
321
234
  True,
322
235
  False,
323
236
  _("Convert all lines into smooth curves"),
324
237
  _("Very smooth"),
325
238
  ],
239
+ "w": [
240
+ icon_node_line_all,
241
+ False,
242
+ True,
243
+ False,
244
+ _("Convert all segments into lines"),
245
+ _("Line all"),
246
+ ],
326
247
  "z": [
327
- node_close,
248
+ icon_node_close,
328
249
  False,
329
250
  True,
330
251
  True,
@@ -332,7 +253,7 @@ class EditTool(ToolWidget):
332
253
  _("Close"),
333
254
  ],
334
255
  "p": [
335
- node_smooth_all,
256
+ icon_node_smooth_all,
336
257
  False,
337
258
  False,
338
259
  True,
@@ -476,6 +397,8 @@ class EditTool(ToolWidget):
476
397
  else:
477
398
  return
478
399
  # print(self.path.d(), self.path)
400
+ if self.path is None:
401
+ return
479
402
  self.path.approximate_arcs_with_cubics()
480
403
  # print(self.path.d(), self.path)
481
404
  # try:
@@ -808,13 +731,24 @@ class EditTool(ToolWidget):
808
731
  if entry["type"] == "point":
809
732
  if idx == self.selected_index or entry["selected"]:
810
733
  gc.SetPen(self.pen_highlight)
734
+ gc.SetBrush(self.brush_highlight)
735
+ factor = 1.25
811
736
  else:
812
737
  gc.SetPen(self.pen)
813
- gc.DrawEllipse(ptx - offset, pty - offset, offset * 2, offset * 2)
738
+ gc.SetBrush(self.brush_normal)
739
+ factor = 1
740
+ gc.DrawEllipse(
741
+ ptx - factor * offset,
742
+ pty - factor * offset,
743
+ offset * 2 * factor,
744
+ offset * 2 * factor,
745
+ )
814
746
  elif entry["type"] == "control":
815
747
  if idx == self.selected_index or entry["selected"]:
748
+ factor = 1.25
816
749
  gc.SetPen(self.pen_highlight)
817
750
  else:
751
+ factor = 1
818
752
  gc.SetPen(self.pen_ctrl)
819
753
  # Do we have a second controlpoint at the same segment?
820
754
  if isinstance(entry["segment"], CubicBezier):
@@ -826,11 +760,11 @@ class EditTool(ToolWidget):
826
760
  if orgnode is not None and orgnode["selected"]:
827
761
  gc.SetPen(self.pen_ctrl_semi)
828
762
  pattern = [
829
- (ptx - offset, pty),
830
- (ptx, pty + offset),
831
- (ptx + offset, pty),
832
- (ptx, pty - offset),
833
- (ptx - offset, pty),
763
+ (ptx - factor * offset, pty),
764
+ (ptx, pty + factor * offset),
765
+ (ptx + factor * offset, pty),
766
+ (ptx, pty - factor * offset),
767
+ (ptx - factor * offset, pty),
834
768
  ]
835
769
  gc.DrawLines(pattern)
836
770
  if 0 <= entry["connector"] < len(self.nodes):
@@ -841,15 +775,17 @@ class EditTool(ToolWidget):
841
775
  gc.DrawLines(pattern)
842
776
  elif entry["type"] == "midpoint":
843
777
  if idx == self.selected_index or entry["selected"]:
778
+ factor = 1.25
844
779
  gc.SetPen(self.pen_highlight)
845
780
  else:
781
+ factor = 1
846
782
  gc.SetPen(self.pen_ctrl)
847
783
  pattern = [
848
- (ptx - offset, pty),
849
- (ptx, pty + offset),
850
- (ptx + offset, pty),
851
- (ptx, pty - offset),
852
- (ptx - offset, pty),
784
+ (ptx - factor * offset, pty),
785
+ (ptx, pty + factor * offset),
786
+ (ptx + factor * offset, pty),
787
+ (ptx, pty - factor * offset),
788
+ (ptx - factor * offset, pty),
853
789
  ]
854
790
  gc.DrawLines(pattern)
855
791
 
@@ -998,12 +934,7 @@ class EditTool(ToolWidget):
998
934
  modified = True
999
935
  else:
1000
936
  dealt_with = []
1001
- anyselected = False
1002
- for entry in self.nodes:
1003
- if entry["selected"] and entry["type"] == "point":
1004
- anyselected = True
1005
- break
1006
- if not anyselected:
937
+ if not self.anyselected:
1007
938
  # Let's select the last point, so the last segment will be closed/opened
1008
939
  for idx in range(len(self.nodes) - 1, -1, -1):
1009
940
  entry = self.nodes[idx]
@@ -1852,6 +1783,14 @@ class EditTool(ToolWidget):
1852
1783
  if modified:
1853
1784
  self.modify_element(True)
1854
1785
 
1786
+ @property
1787
+ def anyselected(self):
1788
+ if self.nodes:
1789
+ for entry in self.nodes:
1790
+ if entry["selected"]:
1791
+ return True
1792
+ return False
1793
+
1855
1794
  def event(
1856
1795
  self,
1857
1796
  window_pos=None,
@@ -1895,7 +1834,6 @@ class EditTool(ToolWidget):
1895
1834
 
1896
1835
  xp = space_pos[0]
1897
1836
  yp = space_pos[1]
1898
- self.anyselected = False
1899
1837
  if self.nodes:
1900
1838
  w = offset * 4
1901
1839
  h = offset * 4
@@ -1920,19 +1858,13 @@ class EditTool(ToolWidget):
1920
1858
  if orgnode is not None:
1921
1859
  orgnode["selected"] = True
1922
1860
  entry["selected"] = True
1923
- self.anyselected = True
1924
1861
  else:
1925
1862
  # Shift-Key Pressed?
1926
1863
  if "shift" not in modifiers:
1927
1864
  self.clear_selection()
1928
1865
  entry["selected"] = True
1929
- self.anyselected = True
1930
1866
  else:
1931
1867
  entry["selected"] = not entry["selected"]
1932
- for chk in self.nodes:
1933
- if chk["selected"]:
1934
- self.anyselected = True
1935
- break
1936
1868
  break
1937
1869
  else: # For-else == icky
1938
1870
  self.selected_index = None
@@ -2086,7 +2018,6 @@ class EditTool(ToolWidget):
2086
2018
  if abs(dx) < 1e-10 or abs(dy) < 1e-10:
2087
2019
  return RESPONSE_CONSUME
2088
2020
  # We select all points (not controls) inside
2089
- anyselected = False
2090
2021
  if self.element:
2091
2022
  for entry in self.nodes:
2092
2023
  pt = entry["point"]
@@ -2096,10 +2027,6 @@ class EditTool(ToolWidget):
2096
2027
  and y0 <= pt.y <= y1
2097
2028
  ):
2098
2029
  entry["selected"] = True
2099
- if entry["selected"]:
2100
- # Could as well be another one not inside the
2101
- # current selection
2102
- anyselected = True
2103
2030
  self.scene.request_refresh()
2104
2031
  self.enable_rules()
2105
2032
  self.p1 = None
@@ -33,7 +33,7 @@ class PointTool(ToolWidget):
33
33
  sx, sy = self.scene.get_snap_point(
34
34
  space_pos[0], space_pos[1], modifiers
35
35
  )
36
- point = Point(sx, sx)
36
+ point = Point(sx, sy)
37
37
  else:
38
38
  point = Point(nearest_snap[0], nearest_snap[1])
39
39
  elements = self.scene.context.elements
@@ -3,7 +3,13 @@ from math import sin, sqrt, tan, tau
3
3
  import wx
4
4
 
5
5
  from meerk40t.core.units import Angle, Length
6
- from meerk40t.gui.icons import STD_ICON_SIZE, PyEmbeddedImage, icons8_polygon_50
6
+ from meerk40t.gui.icons import (
7
+ STD_ICON_SIZE,
8
+ icon_crossing_star,
9
+ icon_mk_polygon,
10
+ icon_polygon,
11
+ icon_regular_star,
12
+ )
7
13
  from meerk40t.gui.laserrender import swizzlecolor
8
14
  from meerk40t.gui.scene.sceneconst import (
9
15
  RESPONSE_ABORT,
@@ -64,65 +70,12 @@ class PolygonTool(ToolWidget):
64
70
 
65
71
  def define_buttons(self):
66
72
  icon_size = STD_ICON_SIZE
67
- icon_regular_star = PyEmbeddedImage(
68
- b"iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwY"
69
- b"AAAD5klEQVR4nO2ZaahNaxjHf8c5uAfXlEPGpMzDByGzW265fCDXUPcDMuSTWfKB4pshlClj"
70
- b"XVxdRd2MR9dMXeEDkumQFNec46Acw3G2Hv1Xve32OXvtY6119opfrdq969nP87zvWut9hhd+"
71
- b"4IsawFngjH7Hll+BhK6hxJg9zkT+JqY0BkqBMl2lGosds/QkCoGj+j2TGHJFzo8Bxur3NWJG"
72
- b"bzn+AqgN1AKeaawXMWKznF7ljK3W2CZiQj7wSk53ccY7aawEqEMMmCSH/0tx77zuTSQGnJOz"
73
- b"U1Lcm6p7Fu2zmg5AOfAW+DnF/XrAG03GXrWsZbmc3FaJzHbJLCNLyQMey8m+lcj1k8xToCZZ"
74
- b"yCg5eMuH7A3JjiQLOSjn5vmQnS/ZA1RDbCgA2gE9gcHAcGAcMB1YAHwCPkguHQWS/aT/Tpeu"
75
- b"4dLdU7YKZNsXE4A/gX3AceACcB24DxQrc034vPZmsDh7M9BbJl/uy7cL8nWffLc58NyHolLl"
76
- b"TfeAy4oVhXJmK7AGWAI0z2AiLfSfNdJhugql+7JsvZDtdP7ZHPhNaUNCe/x4oBvQFmgE5FL9"
77
- b"5MqXtvJtvBOPSjSHr7QHbjoZ6y9kL/2BJ/L1blI+95X6zs5jH+EMso9p2iTMx3/1lCp8hF50"
78
- b"tmtLlgStvBR+2Vha/gDe6U/28TWl+mgMnJAv74HJmSqwvfyBFNzTRxY1HYHb8uFxmtQn7RZ5"
79
- b"UYosox1NdIxwdlPbjtt8q0KruXdIYbne1TC7hjnAQuCzbO4JuqKc7UR5C151CZ6fgL+cRVuq"
80
- b"iYX6uK3d0zpA3abLayGVyFaoWGVXJIOW5wSF9/oWRVk9rpdRy5WCwl4j07mOCPHSmQEB6hwo"
81
- b"nVZ0RUILJ8EMMupbpH4t3a2IsG91KATdh6Pse+2SsTkh6J4r3TuJgIcyFkbK0l26HxEynWXo"
82
- b"ic9A1UlnI0d9bqk5Tq1htkJjpoxY9E334S5MKlM/Kr2xI4bK2C35UOuh/TJSWSrdRwc6Xpqx"
83
- b"XVe5c9hjMhUxWXJmKxRyneOCVKlJvla8zEn97VTXY5CadwklhFvUC06mlZOm+CqeMsVrdVp9"
84
- b"kMwQ4I5TJq+tIKnMVwT3ylVr7wxLIVfko/VaZRZL+QZnrKFW1nttrurYLR09gEtJ/bAmzv2N"
85
- b"Gl8Uwjw4LeVecTXOORd8p5XOJNLnqTR4Kx0v1XE0ftfYqaAnUUf1sr3/XYF/nNU8p5K0qlhr"
86
- b"9Jij74ieWJlewUDrnmHOynuNsWKdSgVR+ORIV7GTx3nNj1TfUJVZmdSitDyrJcHTzEmBvGtF"
87
- b"kAZOSun/OgcJm1GylZDtwBiiXasB0dFANs3298MXw0hXuTS4jKMAAAAASUVORK5CYII="
88
- )
89
- icon_crossing_star = PyEmbeddedImage(
90
- b"iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAABnRSTlMA/wD/AP83WBt9AAAA"
91
- b"CXBIWXMAAA7EAAAOxAGVKw4bAAACbUlEQVRYhd2YO08CQRDHZw/LCw0tHb3PgoJeOv08+gV8"
92
- b"ND4a/QAajYaHET8CCT0JoaAlAZUooiWsxSXruXc7O8tsjLkJ1e3M3H/3tzO7h5BSwv+zwFsi"
93
- b"kQtEzls2X4n8WqZlKXy+OGZ6tQBgIecLOfeVzYMsDZwXjpmGqPD54siVlYqMzzG7EDVwXjiy"
94
- b"ZCGwmBwzCjEVGZ/j8rJywQrTAbHlZVnvj5wLJgtiuVw2DVUqFU5mIf7nrpdSCggEBCcnp5Js"
95
- b"UQjfJ25HR8cqBOIp6FkEBLs7u7hPdbvqlDAuANRAvd4gKqNPwClhrVb/eSJ/14vqzkjviXwo"
96
- b"zcnqaXqdvt/VMH56FAoFqyYAyOfzyCiyBCllqK6/gcj1ej1t9ObmFgBeXp8pst6nbwDQaj1p"
97
- b"z7vdrlrI1LXUIf6SnDYbOkGTP2mfIBlNQEulElETABSLxaRKXBMAgLE8EpVyd3c/HA6dWpEK"
98
- b"n0wmV1fXDiWMQEydpX2iPmKpJ89Czi8uL5zUaHZ2fuYwHzqLfr+verFTO41+g8GA/i4qRIjV"
99
- b"FHHbxt2c65foF7d4YxuPx0mH0WiEtyW7EVe13W4nwaUCNVEWEHQ6Hc8QTRQ0oNh54sJx+eu2"
100
- b"pobaJ2lG2luPjy3++5zCSRDx9Y9G9/f3pJQHB4dWT4o+lizkLEf8SRc1qwf+juQQcmPz2beQ"
101
- b"v4qaD03TV3Wj2cBjcbND1FbeqeKSzkSOJIha0jAMiTgWch6GYao+liyVbm11XU30YzalpI7s"
102
- b"YzZVvW1zY0tLazILRC2e07qcUlEr8fNrxm+nn18zorPzJwbfuJ8Y1uDlzFuX/3v7BikOKD82"
103
- b"lTxEAAAAAElFTkSuQmCC"
104
- )
105
- icon_polygon = PyEmbeddedImage(
106
- b"iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwY"
107
- b"AAACZUlEQVR4nO2aT0sVURjGf7qo0EVIEUUYiYFCFLRIsEViGXTzC1hgfYeSbFVt0o1pu3Kj"
108
- b"req61BbZoqCWldEHUFKvtJBKKPpH6Y0DT3AW/rn3zJxzz8j9wV3NnOd5z9yZOe/7noEqVaKh"
109
- b"G1gCZoGzKeoaLaNZAHIEwBgVPf8WQ0xkLsBEZn1PYjewbJmleWt1WRdpWV7eGJTRS48ez+Ux"
110
- b"4MvgIPAdWAPafZkAJ+XxEzjkw+ChrtQj/PNYXuNpCx8HVoHfQDP+OQz8kueJNIWf6QoNEY67"
111
- b"8pxOS7BTgl+APYSjAfgk73NJxWqBGYldJTzX5P1esThzRUIfgJ2EZ4fWKxPDZVeRXcCCRHqo"
112
- b"HBcVg8nv6lwEbkjgXdK/NSE1wGvF0u/yoH3W4DNUntOKZQXYW87Aexo4STxMKaaRUgc0aTH6"
113
- b"CxwlHlqAP1qUj5QyYEIzv098PFBs+a1ObFPC9g3YT3zsA74qxlObnfhCM75JvNxSjK/WO3hB"
114
- b"72lzwkegnnipV4zF9er7Quh6OSGFjeLN8kQW7AM562DWbq3zm9XL5oGKldul9A3s1+8B4n79"
115
- b"tm91cl4zNotPbIwqNlPTZzZFaS03RUGJWVGJWiw8UUzDrml8mt1EVzqsNL7svkF/RIXVG8Vy"
116
- b"3bXUnZeAKTcrxSVrzXAqdVHBH0vzoTeJkLml3krItGZC05dWO8hu0Dk9aAlosF44iRt0/5mW"
117
- b"oGljhmJYnk/TFD2mBTJUE7vJVxMbtfhLTg8SkpfXWJY3etrk8QNo9GUyEHDr7U6ozdC5LG+G"
118
- b"bpvt6W31wUBOk/H1CcfiRnV4lSqE5x+0Tyg887i34gAAAABJRU5ErkJggg=="
119
- )
120
73
 
121
74
  self.scene.context.kernel.register(
122
75
  "button/secondarytool_polygon/tool_freehand",
123
76
  {
124
77
  "label": _("Freehand"),
125
- "icon": icons8_polygon_50,
78
+ "icon": icon_mk_polygon,
126
79
  "tip": _("Draw a freehand polygon (f)"),
127
80
  "action": lambda v: self.set_designmode(0),
128
81
  "size": icon_size,
@@ -135,7 +135,8 @@ class RectTool(ToolWidget):
135
135
  self.p2 = None
136
136
  self.scene.pane.tool_active = False
137
137
  self.scene.request_refresh()
138
- response = RESPONSE_ABORT
138
+ # Allow other widgets (like the selection widget to take over)
139
+ response = RESPONSE_CHAIN
139
140
  elif event_type == "leftup":
140
141
  self.scene.pane.tool_active = False
141
142
  try:
@@ -1,6 +1,6 @@
1
1
  import wx
2
2
 
3
- from meerk40t.gui.icons import icons8_usb_connector_50
3
+ from meerk40t.gui.icons import icons8_usb_connector
4
4
  from meerk40t.gui.mwindow import MWindow
5
5
 
6
6
  _ = wx.GetTranslation
@@ -75,7 +75,7 @@ class UsbConnect(MWindow):
75
75
  self.panel = UsbConnectPanel(self, wx.ID_ANY, context=self.context)
76
76
  self.add_module_delegate(self.panel)
77
77
  _icon = wx.NullIcon
78
- _icon.CopyFromBitmap(icons8_usb_connector_50.GetBitmap())
78
+ _icon.CopyFromBitmap(icons8_usb_connector.GetBitmap())
79
79
  self.SetIcon(_icon)
80
80
  # begin wxGlade: Terminal.__set_properties
81
81
  self.SetTitle(_("UsbConnect"))
@@ -208,7 +208,7 @@ class MajorHandleWidget(Widget):
208
208
  self.pen.SetColour(wx.BLUE)
209
209
  self.pen.SetWidth(1000)
210
210
  self.widget = cyclowidget
211
- self.bitmap = icons.icons8_point_50.GetBitmap(use_theme=False)
211
+ self.bitmap = icons.icon_mk_point.GetBitmap(use_theme=False)
212
212
  self._start_x = None
213
213
  self._start_y = None
214
214
  self._current_x = None
@@ -283,7 +283,7 @@ class MinorHandleWidget(Widget):
283
283
  self.pen.SetColour(wx.BLUE)
284
284
  self.pen.SetWidth(1000)
285
285
  self.widget = cyclowidget
286
- self.bitmap = icons.icons8_point_50.GetBitmap(use_theme=False)
286
+ self.bitmap = icons.icon_mk_point.GetBitmap(use_theme=False)
287
287
  self._start_x = None
288
288
  self._start_y = None
289
289
  self._current_x = None
@@ -178,7 +178,7 @@ class HarmonographWidget(Widget):
178
178
  size * -0.5,
179
179
  size * -1,
180
180
  size * 0.5,
181
- icons.icons8_checkmark_50.GetBitmap(use_theme=False),
181
+ icons.icons8_checkmark.GetBitmap(use_theme=False),
182
182
  self.confirm,
183
183
  )
184
184
  accept_widget.background_brush = wx.WHITE_BRUSH
@@ -190,7 +190,7 @@ class HarmonographWidget(Widget):
190
190
  size * -2,
191
191
  size * 0.5,
192
192
  size * -1,
193
- icons.icons8_next_page_20.GetBitmap(use_theme=False, resize=50),
193
+ icons.icons8_circled_right.GetBitmap(use_theme=False, resize=50),
194
194
  self.set_random_harmonograph,
195
195
  )
196
196
  random_widget.background_brush = wx.WHITE_BRUSH
@@ -202,7 +202,7 @@ class HarmonographWidget(Widget):
202
202
  size * -0.5,
203
203
  size * 2,
204
204
  size * 0.5,
205
- icons.icons8_delete_50.GetBitmap(use_theme=False),
205
+ icons.icons8_delete.GetBitmap(use_theme=False),
206
206
  self.cancel,
207
207
  )
208
208
  remove_widget.background_brush = wx.WHITE_BRUSH
@@ -222,7 +222,7 @@ class HarmonographWidget(Widget):
222
222
  size * 1,
223
223
  size * 0,
224
224
  size * 2,
225
- icons.icons8_rotate_left_50.GetBitmap(use_theme=False),
225
+ icons.icons8_rotate_left.GetBitmap(use_theme=False),
226
226
  delta_theta,
227
227
  )
228
228
  rotation_widget.background_brush = wx.WHITE_BRUSH
@@ -241,7 +241,7 @@ class HarmonographWidget(Widget):
241
241
  size * 1,
242
242
  size * 1,
243
243
  size * 2,
244
- icons.icons8_fantasy_50.GetBitmap(use_theme=False),
244
+ icons.icon_magic_wand.GetBitmap(use_theme=False),
245
245
  delta_step,
246
246
  )
247
247
  step_handle.background_brush = wx.WHITE_BRUSH
@@ -258,7 +258,7 @@ class HarmonographWidget(Widget):
258
258
  size * 2,
259
259
  size * 0,
260
260
  size * 3,
261
- icons.icons8_roll_50.GetBitmap(use_theme=False),
261
+ icons.icon_rotary.GetBitmap(use_theme=False),
262
262
  delta_rotations,
263
263
  )
264
264
  rotate_widget.background_brush = wx.WHITE_BRUSH
@@ -277,7 +277,7 @@ class HarmonographWidget(Widget):
277
277
  -1,
278
278
  CurveWidget(
279
279
  scene,
280
- icons.icons8_computer_support_50.GetBitmap(use_theme=False),
280
+ icons.icons8_computer_support.GetBitmap(use_theme=False),
281
281
  c,
282
282
  ),
283
283
  )
@@ -19,7 +19,7 @@ class ScaleWidget(HandleWidget):
19
19
  top,
20
20
  right,
21
21
  bottom,
22
- icons.icons8_resize_horizontal_50.GetBitmap(use_theme=False),
22
+ icons.icon_resize_horizontal.GetBitmap(use_theme=False),
23
23
  )
24
24
  self.scale = 1.0
25
25
  self.current_scale = 1.0