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
meerk40t/gui/wordlisteditor.py
CHANGED
@@ -7,13 +7,14 @@ from wx import aui
|
|
7
7
|
from ..kernel import signal_listener
|
8
8
|
from .icons import (
|
9
9
|
STD_ICON_SIZE,
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
10
|
+
get_default_icon_size,
|
11
|
+
icon_add_new,
|
12
|
+
icon_edit,
|
13
|
+
icon_trash,
|
14
|
+
icons8_circled_left,
|
15
|
+
icons8_circled_right,
|
16
|
+
icons8_curly_brackets,
|
17
|
+
icons8_paste,
|
17
18
|
)
|
18
19
|
from .mwindow import MWindow
|
19
20
|
from .wxutils import StaticBoxSizer, dip_size
|
@@ -47,13 +48,13 @@ class WordlistMiniPanel(wx.Panel):
|
|
47
48
|
main_sizer = wx.BoxSizer(wx.HORIZONTAL)
|
48
49
|
self.button_edit = wx.Button(self, wx.ID_ANY, _("Edit"))
|
49
50
|
self.button_edit.SetBitmap(
|
50
|
-
|
51
|
+
icons8_curly_brackets.GetBitmap(resize=0.5 * get_default_icon_size())
|
51
52
|
)
|
52
53
|
self.button_edit.SetToolTip(_("Manages Wordlist-Entries"))
|
53
54
|
|
54
55
|
self.button_next = wx.Button(self, wx.ID_ANY, _("Next"))
|
55
56
|
self.button_next.SetBitmap(
|
56
|
-
|
57
|
+
icons8_circled_right.GetBitmap(resize=0.5 * get_default_icon_size())
|
57
58
|
)
|
58
59
|
self.button_next.SetToolTip(
|
59
60
|
_("Wordlist: go to next page (right-click to next entry)")
|
@@ -61,7 +62,7 @@ class WordlistMiniPanel(wx.Panel):
|
|
61
62
|
|
62
63
|
self.button_prev = wx.Button(self, wx.ID_ANY, _("Prev"))
|
63
64
|
self.button_prev.SetBitmap(
|
64
|
-
|
65
|
+
icons8_circled_left.GetBitmap(resize=0.5 * get_default_icon_size())
|
65
66
|
)
|
66
67
|
self.button_prev.SetToolTip(
|
67
68
|
_("Wordlist: go to previous page (right-click to previous entry)")
|
@@ -196,6 +197,8 @@ class WordlistPanel(wx.Panel):
|
|
196
197
|
sizer_index_left.Add(
|
197
198
|
sizer_edit_wordlist_buttons, 0, wx.ALIGN_CENTER_VERTICAL, 0
|
198
199
|
)
|
200
|
+
testsize = dip_size(self, 22, 22)
|
201
|
+
icon_size = testsize[0]
|
199
202
|
|
200
203
|
self.btn_edit_wordlist_del = wx.StaticBitmap(
|
201
204
|
self, wx.ID_ANY, size=dip_size(self, 25, 25)
|
@@ -215,12 +218,24 @@ class WordlistPanel(wx.Panel):
|
|
215
218
|
self.btn_edit_content_paste = wx.StaticBitmap(
|
216
219
|
self, wx.ID_ANY, size=dip_size(self, 25, 25)
|
217
220
|
)
|
218
|
-
self.btn_edit_wordlist_del.SetBitmap(
|
219
|
-
|
220
|
-
|
221
|
-
self.
|
222
|
-
|
223
|
-
|
221
|
+
self.btn_edit_wordlist_del.SetBitmap(
|
222
|
+
icon_trash.GetBitmap(resize=icon_size, buffer=1)
|
223
|
+
)
|
224
|
+
self.btn_edit_wordlist_edit.SetBitmap(
|
225
|
+
icon_edit.GetBitmap(resize=icon_size, buffer=1)
|
226
|
+
)
|
227
|
+
self.btn_edit_content_add.SetBitmap(
|
228
|
+
icon_add_new.GetBitmap(resize=icon_size, buffer=1)
|
229
|
+
)
|
230
|
+
self.btn_edit_content_del.SetBitmap(
|
231
|
+
icon_trash.GetBitmap(resize=icon_size, buffer=1)
|
232
|
+
)
|
233
|
+
self.btn_edit_content_edit.SetBitmap(
|
234
|
+
icon_edit.GetBitmap(resize=icon_size, buffer=1)
|
235
|
+
)
|
236
|
+
self.btn_edit_content_paste.SetBitmap(
|
237
|
+
icons8_paste.GetBitmap(resize=icon_size, buffer=1)
|
238
|
+
)
|
224
239
|
|
225
240
|
self.btn_edit_wordlist_del.SetToolTip(_("Delete the current variable"))
|
226
241
|
self.btn_edit_wordlist_edit.SetToolTip(
|
@@ -854,7 +869,7 @@ class WordlistEditor(MWindow):
|
|
854
869
|
self.panel_about.set_parent(self)
|
855
870
|
|
856
871
|
_icon = wx.NullIcon
|
857
|
-
_icon.CopyFromBitmap(
|
872
|
+
_icon.CopyFromBitmap(icons8_curly_brackets.GetBitmap())
|
858
873
|
self.SetIcon(_icon)
|
859
874
|
self.notebook_main = wx.aui.AuiNotebook(
|
860
875
|
self,
|
@@ -892,7 +907,7 @@ class WordlistEditor(MWindow):
|
|
892
907
|
"button/config/Wordlist",
|
893
908
|
{
|
894
909
|
"label": _("Wordlist Editor"),
|
895
|
-
"icon":
|
910
|
+
"icon": icons8_curly_brackets,
|
896
911
|
"tip": _("Manages Wordlist-Entries"),
|
897
912
|
"action": lambda v: kernel.console("window toggle Wordlist\n"),
|
898
913
|
},
|
meerk40t/gui/wxmeerk40t.py
CHANGED
@@ -20,6 +20,7 @@ from meerk40t.gui.navigationpanels import Navigation
|
|
20
20
|
from meerk40t.gui.spoolerpanel import JobSpooler
|
21
21
|
from meerk40t.gui.wxmscene import SceneWindow
|
22
22
|
from meerk40t.kernel import CommandSyntaxError, ConsoleFunction, Module, get_safe_path
|
23
|
+
from meerk40t.kernel.kernel import Job
|
23
24
|
|
24
25
|
from ..main import APPLICATION_NAME, APPLICATION_VERSION
|
25
26
|
from ..tools.kerftest import KerfTool
|
@@ -35,10 +36,11 @@ from .hersheymanager import (
|
|
35
36
|
register_hershey_stuff,
|
36
37
|
)
|
37
38
|
from .icons import (
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
DARKMODE,
|
40
|
+
icons8_emergency_stop_button,
|
41
|
+
icons8_gas_industry,
|
42
|
+
icons8_home_filled,
|
43
|
+
icons8_pause,
|
42
44
|
)
|
43
45
|
from .imagesplitter import RenderSplit
|
44
46
|
from .keymap import Keymap
|
@@ -75,6 +77,7 @@ from .propertypanels.rasterwizardpanels import (
|
|
75
77
|
)
|
76
78
|
from .propertypanels.textproperty import TextPropertyPanel
|
77
79
|
from .propertypanels.waitproperty import WaitPropertyPanel
|
80
|
+
from .propertypanels.wobbleproperty import WobblePropertyPanel
|
78
81
|
from .simpleui import SimpleUI
|
79
82
|
from .simulation import Simulation
|
80
83
|
from .wordlisteditor import WordlistEditor
|
@@ -95,28 +98,103 @@ The Transformations work in Windows/OSX/Linux for wxPython 4.0+ (and likely befo
|
|
95
98
|
_ = wx.GetTranslation
|
96
99
|
|
97
100
|
|
98
|
-
class
|
99
|
-
def __init__(
|
100
|
-
|
101
|
+
class ActionPanel(wx.Panel):
|
102
|
+
def __init__(
|
103
|
+
self,
|
104
|
+
*args,
|
105
|
+
context=None,
|
106
|
+
action=None,
|
107
|
+
action_right=None,
|
108
|
+
fgcolor=None,
|
109
|
+
bgcolor=None,
|
110
|
+
icon=None,
|
111
|
+
tooltip="",
|
112
|
+
**kwds,
|
113
|
+
):
|
101
114
|
kwds["style"] = kwds.get("style", 0)
|
102
115
|
wx.Panel.__init__(self, *args, **kwds)
|
103
|
-
|
116
|
+
|
104
117
|
self.context = context
|
105
|
-
self.button_go = wx.
|
106
|
-
self.
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
self.
|
111
|
-
self.button_go.
|
112
|
-
self.
|
113
|
-
self.
|
114
|
-
self.button_go.SetToolTip(_("One Touch: Send Job To Laser "))
|
118
|
+
self.button_go = wx.Button(self, wx.ID_ANY)
|
119
|
+
self.icon = icon
|
120
|
+
self.fgcolor = fgcolor
|
121
|
+
if bgcolor is not None:
|
122
|
+
self.button_go.SetBackgroundColour(bgcolor)
|
123
|
+
self.button_go.SetToolTip(tooltip)
|
124
|
+
# self.button_go.SetBitmapMargins(0, 0)
|
125
|
+
self.action = action
|
126
|
+
self.action_right = action_right
|
115
127
|
|
116
128
|
main_sizer = wx.BoxSizer(wx.HORIZONTAL)
|
117
129
|
main_sizer.Add(self.button_go, 1, wx.EXPAND, 0)
|
118
130
|
self.SetSizer(main_sizer)
|
119
131
|
main_sizer.Fit(self)
|
132
|
+
self.button_go.Bind(wx.EVT_BUTTON, self.on_button_go_click)
|
133
|
+
if self.action_right is not None:
|
134
|
+
self.button_go.Bind(wx.EVT_RIGHT_DOWN, self.on_button_go_click_right)
|
135
|
+
|
136
|
+
self.button_go.Bind(wx.EVT_SIZE, self.on_button_resize)
|
137
|
+
# Initial resize
|
138
|
+
self.resize_button()
|
139
|
+
self.resize_job = Job(
|
140
|
+
process=self.resize_button,
|
141
|
+
job_name=f"_resize_actionpanel_{self.Id}",
|
142
|
+
interval=0.1,
|
143
|
+
times=1,
|
144
|
+
run_main=True,
|
145
|
+
)
|
146
|
+
|
147
|
+
def on_button_go_click(self, event):
|
148
|
+
if self.action is not None:
|
149
|
+
self.action()
|
150
|
+
|
151
|
+
def on_button_go_click_right(self, event):
|
152
|
+
if self.action_right is not None:
|
153
|
+
self.action_right()
|
154
|
+
|
155
|
+
def resize_button(self):
|
156
|
+
size = self.button_go.Size
|
157
|
+
minsize = min(size[0], size[1])
|
158
|
+
# Leave some room at the edges,
|
159
|
+
# for every 25 pixel 1 pixel at each side
|
160
|
+
room = int(minsize / 25) * 2
|
161
|
+
best_size = minsize - room
|
162
|
+
# At least 20 px high
|
163
|
+
best_size = max(best_size, 20)
|
164
|
+
border = 2
|
165
|
+
bmp = self.icon.GetBitmap(color=self.fgcolor, resize=best_size, buffer=border)
|
166
|
+
# s = bmp.Size
|
167
|
+
# print(f"Was asking for {best_size}x{best_size}, got {s[0]}x{s[1]}")
|
168
|
+
self.button_go.SetBitmap(bmp)
|
169
|
+
bmp = self.icon.GetBitmap(resize=best_size, buffer=border)
|
170
|
+
self.button_go.SetBitmapFocus(bmp)
|
171
|
+
|
172
|
+
def on_button_resize(self, event):
|
173
|
+
self.context.schedule(self.resize_job)
|
174
|
+
event.Skip()
|
175
|
+
|
176
|
+
|
177
|
+
class GoPanel(ActionPanel):
|
178
|
+
def __init__(self, *args, context=None, **kwds):
|
179
|
+
# begin wxGlade: PassesPanel.__init__
|
180
|
+
kwds["style"] = kwds.get("style", 0)
|
181
|
+
fgcol = context.themes.get("start_fg")
|
182
|
+
bgcol = context.themes.get("start_bg")
|
183
|
+
ActionPanel.__init__(
|
184
|
+
self,
|
185
|
+
context=context,
|
186
|
+
action=None,
|
187
|
+
fgcolor=fgcol,
|
188
|
+
bgcolor=bgcol,
|
189
|
+
icon=icons8_gas_industry,
|
190
|
+
tooltip=_("One Touch: Send Job To Laser "),
|
191
|
+
*args,
|
192
|
+
**kwds,
|
193
|
+
)
|
194
|
+
self.click_time = 0
|
195
|
+
self.was_mouse = False
|
196
|
+
self.button_go.Bind(wx.EVT_BUTTON, self.on_button_go_click)
|
197
|
+
self.button_go.Bind(wx.EVT_LEFT_DOWN, self.on_mouse_down)
|
120
198
|
|
121
199
|
def on_mouse_down(self, event):
|
122
200
|
self.was_mouse = True
|
@@ -175,19 +253,9 @@ def register_panel_go(window, context):
|
|
175
253
|
|
176
254
|
def register_panel_stop(window, context):
|
177
255
|
# Define Stop.
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
ConsoleFunction(context, "estop\n"),
|
182
|
-
stop,
|
183
|
-
)
|
184
|
-
stop.SetBackgroundColour(wx.Colour(127, 0, 0))
|
185
|
-
stop.SetBitmap(
|
186
|
-
icons8_emergency_stop_button_50.GetBitmap(color=wx.WHITE, keepalpha=True)
|
187
|
-
)
|
188
|
-
stop.SetBitmapFocus(icons8_emergency_stop_button_50.GetBitmap())
|
189
|
-
stop.SetToolTip(_("Emergency stop/reset the controller."))
|
190
|
-
stop.SetSize(stop.GetBestSize())
|
256
|
+
def action():
|
257
|
+
context("estop\n")
|
258
|
+
|
191
259
|
pane = (
|
192
260
|
aui.AuiPaneInfo()
|
193
261
|
.Bottom()
|
@@ -200,17 +268,31 @@ def register_panel_stop(window, context):
|
|
200
268
|
)
|
201
269
|
pane.submenu = "_10_" + _("Laser")
|
202
270
|
pane.dock_proportion = 98
|
203
|
-
|
204
|
-
|
271
|
+
fgcol = context.themes.get("stop_fg")
|
272
|
+
bgcol = context.themes.get("stop_bg")
|
273
|
+
panel = ActionPanel(
|
274
|
+
window,
|
275
|
+
wx.ID_ANY,
|
276
|
+
context=context,
|
277
|
+
action=action,
|
278
|
+
fgcolor=fgcol,
|
279
|
+
bgcolor=bgcol,
|
280
|
+
icon=icons8_emergency_stop_button,
|
281
|
+
tooltip=_("Emergency stop/reset the controller."),
|
282
|
+
)
|
283
|
+
pane.control = panel
|
205
284
|
window.on_pane_create(pane)
|
206
285
|
context.register("pane/stop", pane)
|
207
286
|
|
208
287
|
|
209
288
|
def register_panel_home(window, context):
|
210
289
|
# Define Home.
|
211
|
-
|
212
|
-
|
213
|
-
|
290
|
+
def action():
|
291
|
+
context("home\n")
|
292
|
+
|
293
|
+
def action_right():
|
294
|
+
context("physical_home\n")
|
295
|
+
|
214
296
|
pane = (
|
215
297
|
aui.AuiPaneInfo()
|
216
298
|
.Bottom()
|
@@ -223,35 +305,30 @@ def register_panel_home(window, context):
|
|
223
305
|
)
|
224
306
|
pane.submenu = "_10_" + _("Laser")
|
225
307
|
pane.dock_proportion = 98
|
226
|
-
|
308
|
+
|
309
|
+
fgcol = None
|
310
|
+
bgcol = None
|
311
|
+
panel = ActionPanel(
|
312
|
+
window,
|
313
|
+
wx.ID_ANY,
|
314
|
+
context=context,
|
315
|
+
action=action,
|
316
|
+
action_right=action_right,
|
317
|
+
fgcolor=fgcol,
|
318
|
+
bgcolor=bgcol,
|
319
|
+
icon=icons8_home_filled,
|
320
|
+
tooltip=_("Send laser to home position"),
|
321
|
+
)
|
322
|
+
pane.control = panel
|
227
323
|
window.on_pane_create(pane)
|
228
324
|
context.register("pane/home", pane)
|
229
325
|
|
230
326
|
|
231
327
|
def register_panel_pause(window, context):
|
232
328
|
# Define Pause.
|
233
|
-
|
234
|
-
|
235
|
-
)
|
236
|
-
|
237
|
-
def on_pause_button(event=None):
|
238
|
-
try:
|
239
|
-
context("pause\n")
|
240
|
-
# if self.pipe_state != 3:
|
241
|
-
# pause.SetBitmap(icons8_play_50.GetBitmap())
|
242
|
-
# else:
|
243
|
-
# pause.SetBitmap(icons8_pause_50.GetBitmap(use_theme=False))
|
244
|
-
except AttributeError:
|
245
|
-
pass
|
329
|
+
def action():
|
330
|
+
context("pause\n")
|
246
331
|
|
247
|
-
window.Bind(
|
248
|
-
wx.EVT_BUTTON,
|
249
|
-
on_pause_button,
|
250
|
-
pause,
|
251
|
-
)
|
252
|
-
pause.SetBackgroundColour(wx.Colour(255, 255, 0))
|
253
|
-
pause.SetToolTip(_("Pause/Resume the controller"))
|
254
|
-
pause.SetSize(pause.GetBestSize())
|
255
332
|
pane = (
|
256
333
|
aui.AuiPaneInfo()
|
257
334
|
.Caption(_("Pause"))
|
@@ -264,8 +341,20 @@ def register_panel_pause(window, context):
|
|
264
341
|
)
|
265
342
|
pane.submenu = "_10_" + _("Laser")
|
266
343
|
pane.dock_proportion = 98
|
267
|
-
pane.control = pause
|
268
344
|
|
345
|
+
bgcol = context.themes.get("pause_bg")
|
346
|
+
fgcol = None
|
347
|
+
panel = ActionPanel(
|
348
|
+
window,
|
349
|
+
wx.ID_ANY,
|
350
|
+
context=context,
|
351
|
+
action=action,
|
352
|
+
fgcolor=fgcol,
|
353
|
+
bgcolor=bgcol,
|
354
|
+
icon=icons8_pause,
|
355
|
+
tooltip=_("Pause/Resume the controller"),
|
356
|
+
)
|
357
|
+
pane.control = panel
|
269
358
|
window.on_pane_create(pane)
|
270
359
|
context.register("pane/pause", pane)
|
271
360
|
|
@@ -303,10 +392,9 @@ class wxMeerK40t(wx.App, Module):
|
|
303
392
|
# Is this a Windows machine? If yes:
|
304
393
|
# Turn on high-DPI awareness to make sure rendering is sharp on big
|
305
394
|
# monitors with font scaling enabled.
|
306
|
-
from platform import system
|
307
395
|
|
308
396
|
high_dpi = context.setting(bool, "high_dpi", True)
|
309
|
-
if system() == "Windows" and high_dpi:
|
397
|
+
if platform.system() == "Windows" and high_dpi:
|
310
398
|
try:
|
311
399
|
# https://discuss.wxpython.org/t/support-for-high-dpi-on-windows-10/32925
|
312
400
|
from ctypes import OleDLL
|
@@ -325,8 +413,12 @@ class wxMeerK40t(wx.App, Module):
|
|
325
413
|
self.Bind(wx.EVT_TIMER, context._kernel.scheduler_main, self.timer)
|
326
414
|
context._kernel.scheduler_handles_main_thread_jobs = False
|
327
415
|
self.timer.Start(50)
|
328
|
-
|
329
|
-
|
416
|
+
# try:
|
417
|
+
# res = wx.SystemSettings().GetAppearance().IsDark()
|
418
|
+
# except AttributeError:
|
419
|
+
# res = wx.SystemSettings().GetColour(wx.SYS_COLOUR_WINDOW)[0] < 127
|
420
|
+
res = wx.SystemSettings().GetColour(wx.SYS_COLOUR_WINDOW)[0] < 127
|
421
|
+
icons.DARKMODE = res
|
330
422
|
icons.icon_r = 230
|
331
423
|
icons.icon_g = 230
|
332
424
|
icons.icon_b = 230
|
@@ -714,6 +806,7 @@ class wxMeerK40t(wx.App, Module):
|
|
714
806
|
kernel.register("property/PolylineNode/PathProperty", PathPropertyPanel)
|
715
807
|
kernel.register("property/RectNode/PathProperty", PathPropertyPanel)
|
716
808
|
kernel.register("property/HatchEffectNode/HatchProperty", HatchPropertyPanel)
|
809
|
+
kernel.register("property/WobbleEffectNode/WobbleProperty", WobblePropertyPanel)
|
717
810
|
kernel.register("property/PointNode/PointProperty", PointPropertyPanel)
|
718
811
|
kernel.register("property/TextNode/TextProperty", TextPropertyPanel)
|
719
812
|
kernel.register("property/BlobNode/BlobProperty", BlobPropertyPanel)
|
@@ -810,10 +903,17 @@ class wxMeerK40t(wx.App, Module):
|
|
810
903
|
context = kernel.root
|
811
904
|
|
812
905
|
context.setting(bool, "developer_mode", False)
|
813
|
-
|
814
|
-
|
906
|
+
context.setting(bool, "debug_mode", False)
|
907
|
+
if context.debug_mode:
|
908
|
+
from meerk40t.gui.mkdebug import (
|
909
|
+
register_panel_color,
|
910
|
+
register_panel_debugger,
|
911
|
+
register_panel_icon,
|
912
|
+
)
|
815
913
|
|
816
|
-
|
914
|
+
kernel.register("wxpane/debug_tree", register_panel_debugger)
|
915
|
+
kernel.register("wxpane/debug_color", register_panel_color)
|
916
|
+
kernel.register("wxpane/debug_icons", register_panel_icon)
|
817
917
|
|
818
918
|
@context.console_argument("sure", type=str, help="Are you sure? 'yes'?")
|
819
919
|
@context.console_command("nuke_settings", hidden=True)
|