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.
- meerk40t/balormk/balor_params.py +1 -43
- meerk40t/balormk/controller.py +1 -41
- meerk40t/balormk/device.py +16 -22
- meerk40t/balormk/driver.py +4 -4
- meerk40t/balormk/gui/balorconfig.py +2 -2
- meerk40t/balormk/gui/balorcontroller.py +13 -5
- meerk40t/balormk/gui/baloroperationproperties.py +0 -46
- meerk40t/balormk/gui/gui.py +17 -17
- meerk40t/camera/gui/camerapanel.py +18 -11
- meerk40t/core/cutcode/rastercut.py +3 -1
- meerk40t/core/cutplan.py +145 -14
- meerk40t/core/elements/clipboard.py +18 -9
- meerk40t/core/elements/element_treeops.py +320 -180
- meerk40t/core/elements/element_types.py +7 -2
- meerk40t/core/elements/elements.py +53 -27
- meerk40t/core/elements/geometry.py +8 -0
- meerk40t/core/elements/offset_clpr.py +129 -4
- meerk40t/core/elements/offset_mk.py +3 -1
- meerk40t/core/elements/shapes.py +28 -25
- meerk40t/core/laserjob.py +7 -0
- meerk40t/core/node/bootstrap.py +4 -0
- meerk40t/core/node/effect_hatch.py +85 -96
- meerk40t/core/node/effect_wobble.py +309 -0
- meerk40t/core/node/elem_image.py +49 -19
- meerk40t/core/node/elem_line.py +60 -0
- meerk40t/core/node/elem_rect.py +5 -3
- meerk40t/core/node/image_processed.py +766 -0
- meerk40t/core/node/image_raster.py +113 -0
- meerk40t/core/node/node.py +120 -1
- meerk40t/core/node/op_cut.py +2 -8
- meerk40t/core/node/op_dots.py +0 -8
- meerk40t/core/node/op_engrave.py +2 -18
- meerk40t/core/node/op_image.py +22 -35
- meerk40t/core/node/op_raster.py +0 -9
- meerk40t/core/planner.py +32 -2
- meerk40t/core/svg_io.py +699 -461
- meerk40t/core/treeop.py +191 -0
- meerk40t/core/undos.py +15 -1
- meerk40t/core/units.py +14 -4
- meerk40t/device/dummydevice.py +3 -2
- meerk40t/device/gui/defaultactions.py +43 -55
- meerk40t/device/gui/formatterpanel.py +58 -49
- meerk40t/device/gui/warningpanel.py +12 -12
- meerk40t/device/mixins.py +13 -0
- meerk40t/dxf/dxf_io.py +9 -5
- meerk40t/extra/ezd.py +28 -26
- meerk40t/extra/imageactions.py +300 -308
- meerk40t/extra/lbrn.py +19 -2
- meerk40t/fill/fills.py +6 -6
- meerk40t/fill/patternfill.py +1061 -1061
- meerk40t/fill/patterns.py +2 -6
- meerk40t/grbl/controller.py +168 -52
- meerk40t/grbl/device.py +23 -18
- meerk40t/grbl/driver.py +39 -0
- meerk40t/grbl/emulator.py +79 -19
- meerk40t/grbl/gcodejob.py +10 -0
- meerk40t/grbl/gui/grblconfiguration.py +2 -2
- meerk40t/grbl/gui/grblcontroller.py +24 -8
- meerk40t/grbl/gui/grblhardwareconfig.py +153 -0
- meerk40t/grbl/gui/gui.py +17 -14
- meerk40t/grbl/mock_connection.py +15 -34
- meerk40t/grbl/plugin.py +0 -4
- meerk40t/grbl/serial_connection.py +2 -1
- meerk40t/gui/about.py +8 -5
- meerk40t/gui/alignment.py +10 -6
- meerk40t/gui/basicops.py +27 -17
- meerk40t/gui/bufferview.py +2 -2
- meerk40t/gui/choicepropertypanel.py +101 -13
- meerk40t/gui/consolepanel.py +12 -9
- meerk40t/gui/devicepanel.py +38 -25
- meerk40t/gui/executejob.py +6 -4
- meerk40t/gui/help_assets/help_assets.py +13 -10
- meerk40t/gui/hersheymanager.py +8 -6
- meerk40t/gui/icons.py +1951 -3065
- meerk40t/gui/imagesplitter.py +14 -7
- meerk40t/gui/keymap.py +3 -3
- meerk40t/gui/laserpanel.py +151 -84
- meerk40t/gui/laserrender.py +61 -70
- meerk40t/gui/lasertoolpanel.py +8 -7
- meerk40t/gui/materialtest.py +3 -3
- meerk40t/gui/mkdebug.py +254 -1
- meerk40t/gui/navigationpanels.py +321 -180
- meerk40t/gui/notes.py +3 -3
- meerk40t/gui/opassignment.py +12 -12
- meerk40t/gui/operation_info.py +13 -13
- meerk40t/gui/plugin.py +5 -0
- meerk40t/gui/position.py +20 -18
- meerk40t/gui/preferences.py +21 -6
- meerk40t/gui/propertypanels/attributes.py +70 -22
- meerk40t/gui/propertypanels/blobproperty.py +2 -2
- meerk40t/gui/propertypanels/consoleproperty.py +2 -2
- meerk40t/gui/propertypanels/groupproperties.py +3 -3
- meerk40t/gui/propertypanels/hatchproperty.py +11 -18
- meerk40t/gui/propertypanels/imageproperty.py +4 -3
- meerk40t/gui/propertypanels/opbranchproperties.py +1 -1
- meerk40t/gui/propertypanels/pathproperty.py +2 -2
- meerk40t/gui/propertypanels/pointproperty.py +2 -2
- meerk40t/gui/propertypanels/propertywindow.py +4 -4
- meerk40t/gui/propertypanels/textproperty.py +3 -3
- meerk40t/gui/propertypanels/wobbleproperty.py +204 -0
- meerk40t/gui/ribbon.py +367 -259
- meerk40t/gui/scene/scene.py +31 -5
- meerk40t/gui/scenewidgets/elementswidget.py +12 -4
- meerk40t/gui/scenewidgets/gridwidget.py +2 -2
- meerk40t/gui/scenewidgets/laserpathwidget.py +7 -2
- meerk40t/gui/scenewidgets/machineoriginwidget.py +6 -2
- meerk40t/gui/scenewidgets/relocatewidget.py +1 -1
- meerk40t/gui/scenewidgets/reticlewidget.py +9 -0
- meerk40t/gui/scenewidgets/selectionwidget.py +12 -7
- meerk40t/gui/simpleui.py +95 -8
- meerk40t/gui/simulation.py +44 -36
- meerk40t/gui/spoolerpanel.py +124 -26
- meerk40t/gui/statusbarwidgets/defaultoperations.py +18 -6
- meerk40t/gui/statusbarwidgets/infowidget.py +2 -2
- meerk40t/gui/statusbarwidgets/opassignwidget.py +12 -12
- meerk40t/gui/statusbarwidgets/shapepropwidget.py +45 -18
- meerk40t/gui/statusbarwidgets/statusbar.py +11 -4
- meerk40t/gui/themes.py +78 -0
- meerk40t/gui/toolwidgets/toolcircle.py +2 -1
- meerk40t/gui/toolwidgets/toolellipse.py +2 -1
- meerk40t/gui/toolwidgets/toolimagecut.py +132 -0
- meerk40t/gui/toolwidgets/toolline.py +144 -0
- meerk40t/gui/toolwidgets/toolnodeedit.py +72 -145
- meerk40t/gui/toolwidgets/toolpoint.py +1 -1
- meerk40t/gui/toolwidgets/toolpolygon.py +8 -55
- meerk40t/gui/toolwidgets/toolrect.py +2 -1
- meerk40t/gui/usbconnect.py +2 -2
- meerk40t/gui/utilitywidgets/cyclocycloidwidget.py +2 -2
- meerk40t/gui/utilitywidgets/harmonograph.py +7 -7
- meerk40t/gui/utilitywidgets/scalewidget.py +1 -1
- meerk40t/gui/wordlisteditor.py +33 -18
- meerk40t/gui/wxmeerk40t.py +166 -66
- meerk40t/gui/wxmmain.py +236 -157
- meerk40t/gui/wxmribbon.py +49 -25
- meerk40t/gui/wxmscene.py +49 -38
- meerk40t/gui/wxmtree.py +216 -85
- meerk40t/gui/wxutils.py +62 -4
- meerk40t/image/imagetools.py +443 -15
- meerk40t/internal_plugins.py +2 -10
- meerk40t/kernel/kernel.py +12 -4
- meerk40t/lihuiyu/controller.py +7 -7
- meerk40t/lihuiyu/device.py +3 -1
- meerk40t/lihuiyu/driver.py +3 -0
- meerk40t/lihuiyu/gui/gui.py +8 -8
- meerk40t/lihuiyu/gui/lhyaccelgui.py +2 -2
- meerk40t/lihuiyu/gui/lhycontrollergui.py +73 -27
- meerk40t/lihuiyu/gui/lhydrivergui.py +2 -2
- meerk40t/lihuiyu/gui/tcpcontroller.py +22 -9
- meerk40t/main.py +6 -1
- meerk40t/moshi/controller.py +5 -5
- meerk40t/moshi/device.py +5 -2
- meerk40t/moshi/driver.py +4 -0
- meerk40t/moshi/gui/gui.py +8 -8
- meerk40t/moshi/gui/moshicontrollergui.py +24 -8
- meerk40t/moshi/gui/moshidrivergui.py +2 -2
- meerk40t/newly/controller.py +2 -0
- meerk40t/newly/device.py +9 -2
- meerk40t/newly/driver.py +4 -0
- meerk40t/newly/gui/gui.py +16 -17
- meerk40t/newly/gui/newlyconfig.py +2 -2
- meerk40t/newly/gui/newlycontroller.py +13 -5
- meerk40t/rotary/gui/gui.py +2 -2
- meerk40t/rotary/gui/rotarysettings.py +2 -2
- meerk40t/ruida/device.py +3 -0
- meerk40t/ruida/driver.py +4 -0
- meerk40t/ruida/gui/gui.py +6 -6
- meerk40t/ruida/gui/ruidaconfig.py +2 -2
- meerk40t/ruida/gui/ruidacontroller.py +13 -5
- meerk40t/svgelements.py +9 -9
- meerk40t/tools/geomstr.py +849 -153
- meerk40t/tools/kerftest.py +8 -4
- meerk40t/tools/livinghinges.py +15 -8
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/METADATA +21 -16
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/RECORD +185 -177
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/entry_points.txt +0 -1
- test/test_core_elements.py +8 -24
- test/test_file_svg.py +88 -0
- test/test_fill.py +9 -9
- test/test_geomstr.py +258 -8
- test/test_kernel.py +4 -0
- test/test_tools_rasterplotter.py +29 -0
- meerk40t/extra/embroider.py +0 -56
- meerk40t/extra/pathoptimize.py +0 -249
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/LICENSE +0 -0
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/WHEEL +0 -0
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/top_level.txt +0 -0
- {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
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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,
|
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
|
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":
|
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
|
-
|
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:
|
meerk40t/gui/usbconnect.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import wx
|
2
2
|
|
3
|
-
from meerk40t.gui.icons import
|
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(
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
280
|
+
icons.icons8_computer_support.GetBitmap(use_theme=False),
|
281
281
|
c,
|
282
282
|
),
|
283
283
|
)
|