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/wxmmain.py
CHANGED
@@ -30,53 +30,57 @@ from meerk40t.kernel import lookup_listener, signal_listener
|
|
30
30
|
|
31
31
|
from ..core.units import UNITS_PER_INCH, UNITS_PER_PIXEL, Length
|
32
32
|
from ..svgelements import Color, Matrix, Path
|
33
|
-
from .icons import ( #
|
33
|
+
from .icons import ( # icon_duplicate,
|
34
34
|
STD_ICON_SIZE,
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
35
|
+
PyEmbeddedImage,
|
36
|
+
icon_bmap_text,
|
37
|
+
icon_cag_common,
|
38
|
+
icon_cag_subtract,
|
39
|
+
icon_cag_union,
|
40
|
+
icon_cag_xor,
|
41
|
+
icon_hatch,
|
39
42
|
icon_meerk40t,
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
43
|
+
icon_mk_align_bottom,
|
44
|
+
icon_mk_align_left,
|
45
|
+
icon_mk_align_right,
|
46
|
+
icon_mk_align_top,
|
47
|
+
icon_mk_circle,
|
48
|
+
icon_mk_ellipse,
|
49
|
+
icon_mk_point,
|
50
|
+
icon_mk_polygon,
|
51
|
+
icon_mk_polyline,
|
52
|
+
icon_mk_rectangular,
|
53
|
+
icon_mk_redo,
|
54
|
+
icon_mk_undo,
|
55
|
+
icon_power_button,
|
56
|
+
icons8_centerh,
|
57
|
+
icons8_centerv,
|
58
|
+
icons8_circled_left,
|
59
|
+
icons8_circled_right,
|
60
|
+
icons8_copy,
|
61
|
+
icons8_curly_brackets,
|
62
|
+
icons8_cursor,
|
63
|
+
icons8_delete,
|
64
|
+
icons8_finger,
|
65
|
+
icons8_flip_horizontal,
|
54
66
|
icons8_flip_vertical,
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
icons8_rotate_left_50,
|
70
|
-
icons8_rotate_right_50,
|
71
|
-
icons8_save_50,
|
72
|
-
icons8_scissors_50,
|
73
|
-
icons8_type_50,
|
74
|
-
icons8_undo_50,
|
75
|
-
icons8_ungroup_objects_50,
|
76
|
-
icons8_user_location_50,
|
77
|
-
icons8_vector_50,
|
67
|
+
icons8_group_objects,
|
68
|
+
icons8_measure,
|
69
|
+
icons8_node_edit,
|
70
|
+
icons8_opened_folder,
|
71
|
+
icons8_paste,
|
72
|
+
icons8_pencil_drawing,
|
73
|
+
icons8_place_marker,
|
74
|
+
icons8_rotate_left,
|
75
|
+
icons8_rotate_right,
|
76
|
+
icons8_save,
|
77
|
+
icons8_scissors,
|
78
|
+
icons8_ungroup_objects,
|
79
|
+
icons8_user_location,
|
80
|
+
icons8_vector,
|
78
81
|
icons_evenspace_horiz,
|
79
82
|
icons_evenspace_vert,
|
83
|
+
set_default_icon_size,
|
80
84
|
set_icon_appearance,
|
81
85
|
)
|
82
86
|
from .laserrender import (
|
@@ -120,6 +124,15 @@ class MeerK40t(MWindow):
|
|
120
124
|
# Not WX 4.1
|
121
125
|
pass
|
122
126
|
# print(self.GetDPIScaleFactor())
|
127
|
+
# What is the standardsize of a textbox?
|
128
|
+
testbox = wx.TextCtrl(self, wx.ID_ANY)
|
129
|
+
tb_size = testbox.Size
|
130
|
+
testbox.Destroy()
|
131
|
+
factor = 4 * tb_size[1] / 100.0
|
132
|
+
# Round to nearest 5...
|
133
|
+
def_size = int(round(factor * 50 / 5, 0) * 5)
|
134
|
+
set_default_icon_size(def_size)
|
135
|
+
|
123
136
|
self.context.gui = self
|
124
137
|
self._usb_running = dict()
|
125
138
|
context = self.context
|
@@ -154,6 +167,7 @@ class MeerK40t(MWindow):
|
|
154
167
|
|
155
168
|
self.edit_menu_choice = None
|
156
169
|
self._setup_edit_menu_choice()
|
170
|
+
self.view_menu_choice = None
|
157
171
|
|
158
172
|
# Menu Bar
|
159
173
|
self.main_menubar = wx.MenuBar()
|
@@ -378,6 +392,7 @@ class MeerK40t(MWindow):
|
|
378
392
|
"help": _("Undo last action"),
|
379
393
|
"action": on_click_undo,
|
380
394
|
"id": wx.ID_UNDO,
|
395
|
+
"enabled": self.context.elements.undo.has_undo,
|
381
396
|
"level": 1,
|
382
397
|
"segment": "",
|
383
398
|
},
|
@@ -386,6 +401,7 @@ class MeerK40t(MWindow):
|
|
386
401
|
"help": _("Revert last undo"),
|
387
402
|
"action": on_click_redo,
|
388
403
|
"id": wx.ID_REDO,
|
404
|
+
"enabled": self.context.elements.undo.has_redo,
|
389
405
|
"level": 1,
|
390
406
|
"segment": "",
|
391
407
|
},
|
@@ -593,7 +609,8 @@ class MeerK40t(MWindow):
|
|
593
609
|
@signal_listener("emphasized")
|
594
610
|
def on_update_statusbar(self, origin, *args):
|
595
611
|
value = self.context.elements.has_emphasis()
|
596
|
-
self.
|
612
|
+
self._update_status_menu(self.edit_menu, self.edit_menu_choice)
|
613
|
+
self._update_status_menu(self.view_menu, self.view_menu_choice)
|
597
614
|
if not self.widgets_created:
|
598
615
|
return
|
599
616
|
|
@@ -660,6 +677,7 @@ class MeerK40t(MWindow):
|
|
660
677
|
),
|
661
678
|
"page": "Gui",
|
662
679
|
"section": "Appearance",
|
680
|
+
"signals": "restart",
|
663
681
|
},
|
664
682
|
{
|
665
683
|
"attr": "mini_icon",
|
@@ -914,19 +932,19 @@ class MeerK40t(MWindow):
|
|
914
932
|
]
|
915
933
|
context.kernel.register_choices("preferences", choices)
|
916
934
|
choices = [
|
917
|
-
{
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
},
|
935
|
+
# {
|
936
|
+
# "attr": "use_toolmenu",
|
937
|
+
# "object": context.root,
|
938
|
+
# "default": True,
|
939
|
+
# "type": bool,
|
940
|
+
# "label": _("Use in-scene tool-menu"),
|
941
|
+
# "tip": _(
|
942
|
+
# "The scene-menu will appear if you right-click on the scene-background"
|
943
|
+
# ),
|
944
|
+
# "page": "Gui",
|
945
|
+
# "hidden": True,
|
946
|
+
# "section": "Scene",
|
947
|
+
# },
|
930
948
|
{
|
931
949
|
"attr": "button_repeat",
|
932
950
|
"object": self.context.root,
|
@@ -1011,11 +1029,36 @@ class MeerK40t(MWindow):
|
|
1011
1029
|
bsize_normal = STD_ICON_SIZE
|
1012
1030
|
# bsize_small = STD_ICON_SIZE / 2
|
1013
1031
|
bsize_small = STD_ICON_SIZE
|
1032
|
+
|
1033
|
+
def contains_a_param():
|
1034
|
+
result = False
|
1035
|
+
for e in kernel.elements.elems(emphasized=True):
|
1036
|
+
if e.functional_parameter is not None:
|
1037
|
+
result = True
|
1038
|
+
break
|
1039
|
+
return result
|
1040
|
+
|
1041
|
+
def contains_a_path():
|
1042
|
+
result = False
|
1043
|
+
for e in kernel.elements.elems(emphasized=True):
|
1044
|
+
if e.type in ("elem polyline", "elem path"):
|
1045
|
+
result = True
|
1046
|
+
break
|
1047
|
+
return result
|
1048
|
+
|
1049
|
+
def contains_an_element():
|
1050
|
+
from meerk40t.core.elements.element_types import elem_nodes
|
1051
|
+
|
1052
|
+
for e in kernel.elements.elems(emphasized=True):
|
1053
|
+
if e.type in elem_nodes:
|
1054
|
+
return True
|
1055
|
+
return False
|
1056
|
+
|
1014
1057
|
kernel.register(
|
1015
1058
|
"button/project/Open",
|
1016
1059
|
{
|
1017
1060
|
"label": _("Open"),
|
1018
|
-
"icon":
|
1061
|
+
"icon": icons8_opened_folder,
|
1019
1062
|
"tip": _("Opens new project"),
|
1020
1063
|
"action": lambda e: kernel.console(".dialog_load\n"),
|
1021
1064
|
"priority": -200,
|
@@ -1026,7 +1069,7 @@ class MeerK40t(MWindow):
|
|
1026
1069
|
"button/project/Save",
|
1027
1070
|
{
|
1028
1071
|
"label": _("Save"),
|
1029
|
-
"icon":
|
1072
|
+
"icon": icons8_save,
|
1030
1073
|
"tip": _("Saves a project to disk"),
|
1031
1074
|
"action": lambda e: kernel.console(".dialog_save\n"),
|
1032
1075
|
"priority": -100,
|
@@ -1038,10 +1081,10 @@ class MeerK40t(MWindow):
|
|
1038
1081
|
buttonsize = STD_ICON_SIZE
|
1039
1082
|
|
1040
1083
|
kernel.register(
|
1041
|
-
"button/
|
1084
|
+
"button/select/Scene",
|
1042
1085
|
{
|
1043
1086
|
"label": _("Select"),
|
1044
|
-
"icon":
|
1087
|
+
"icon": icons8_cursor,
|
1045
1088
|
"tip": _("Regular selection tool"),
|
1046
1089
|
"action": lambda v: kernel.elements("tool none\n"),
|
1047
1090
|
"group": "tool",
|
@@ -1053,7 +1096,7 @@ class MeerK40t(MWindow):
|
|
1053
1096
|
# "button/tools/Nodeeditor",
|
1054
1097
|
# {
|
1055
1098
|
# "label": _("Node Edit"),
|
1056
|
-
# "icon":
|
1099
|
+
# "icon": icons8_node_edit,
|
1057
1100
|
# "tip": _("Edit nodes of a polyline/path-object"),
|
1058
1101
|
# "action": lambda v: kernel.elements("tool nodemove\n"),
|
1059
1102
|
# "group": "tool",
|
@@ -1062,10 +1105,10 @@ class MeerK40t(MWindow):
|
|
1062
1105
|
# },
|
1063
1106
|
# )
|
1064
1107
|
kernel.register(
|
1065
|
-
"button/
|
1108
|
+
"button/select/Parameter",
|
1066
1109
|
{
|
1067
1110
|
"label": _("Parametric Edit"),
|
1068
|
-
"icon":
|
1111
|
+
"icon": icons8_finger,
|
1069
1112
|
"tip": _("Parametric edit of a shape"),
|
1070
1113
|
"action": lambda v: kernel.elements("tool parameter\n"),
|
1071
1114
|
"group": "tool",
|
@@ -1075,10 +1118,10 @@ class MeerK40t(MWindow):
|
|
1075
1118
|
},
|
1076
1119
|
)
|
1077
1120
|
kernel.register(
|
1078
|
-
"button/
|
1121
|
+
"button/select/Nodeeditor",
|
1079
1122
|
{
|
1080
1123
|
"label": _("Node Edit"),
|
1081
|
-
"icon":
|
1124
|
+
"icon": icons8_node_edit,
|
1082
1125
|
"tip": _("Edit nodes of a polyline/path-object"),
|
1083
1126
|
"action": lambda v: kernel.elements("tool edit\n"),
|
1084
1127
|
"group": "tool",
|
@@ -1087,12 +1130,24 @@ class MeerK40t(MWindow):
|
|
1087
1130
|
"rule_enabled": lambda cond: contains_a_path(),
|
1088
1131
|
},
|
1089
1132
|
)
|
1090
|
-
|
1091
1133
|
kernel.register(
|
1092
|
-
"button/
|
1134
|
+
"button/select/Hatch",
|
1135
|
+
{
|
1136
|
+
"label": _("Hatch"),
|
1137
|
+
"icon": icon_hatch,
|
1138
|
+
"tip": _("Wrap the current node in a hatch"),
|
1139
|
+
"action": lambda v: kernel.elements("effect-hatch\n"),
|
1140
|
+
# "group": "tool",
|
1141
|
+
"size": bsize_normal,
|
1142
|
+
# "identifier": "edit",
|
1143
|
+
"rule_enabled": lambda cond: contains_an_element(),
|
1144
|
+
},
|
1145
|
+
)
|
1146
|
+
kernel.register(
|
1147
|
+
"button/lasercontrol/Relocate",
|
1093
1148
|
{
|
1094
1149
|
"label": _("Set Position"),
|
1095
|
-
"icon":
|
1150
|
+
"icon": icons8_place_marker,
|
1096
1151
|
"tip": _("Set position to given location"),
|
1097
1152
|
"action": lambda v: kernel.elements("tool relocate\n"),
|
1098
1153
|
"group": "tool",
|
@@ -1102,10 +1157,10 @@ class MeerK40t(MWindow):
|
|
1102
1157
|
)
|
1103
1158
|
|
1104
1159
|
kernel.register(
|
1105
|
-
"button/
|
1160
|
+
"button/lasercontrol/Placement",
|
1106
1161
|
{
|
1107
1162
|
"label": _("Job Start"),
|
1108
|
-
"icon":
|
1163
|
+
"icon": icons8_user_location,
|
1109
1164
|
"tip": _("Add a job starting point to the scene"),
|
1110
1165
|
"action": lambda v: kernel.elements("tool placement\n"),
|
1111
1166
|
"group": "tool",
|
@@ -1115,15 +1170,15 @@ class MeerK40t(MWindow):
|
|
1115
1170
|
)
|
1116
1171
|
|
1117
1172
|
kernel.register(
|
1118
|
-
"button/tools/
|
1173
|
+
"button/tools/circle",
|
1119
1174
|
{
|
1120
|
-
"label": _("
|
1121
|
-
"icon":
|
1122
|
-
"tip": _("Add a
|
1123
|
-
"action": lambda v: kernel.elements("tool
|
1175
|
+
"label": _("Circle"),
|
1176
|
+
"icon": icon_mk_circle,
|
1177
|
+
"tip": _("Add a circle element"),
|
1178
|
+
"action": lambda v: kernel.elements("tool circle\n"),
|
1124
1179
|
"group": "tool",
|
1125
1180
|
"size": bsize_normal,
|
1126
|
-
"identifier": "
|
1181
|
+
"identifier": "circle",
|
1127
1182
|
},
|
1128
1183
|
)
|
1129
1184
|
|
@@ -1131,7 +1186,7 @@ class MeerK40t(MWindow):
|
|
1131
1186
|
"button/tools/ellipse",
|
1132
1187
|
{
|
1133
1188
|
"label": _("Ellipse"),
|
1134
|
-
"icon":
|
1189
|
+
"icon": icon_mk_ellipse,
|
1135
1190
|
"tip": _("Add an ellipse element"),
|
1136
1191
|
"action": lambda v: kernel.elements("tool ellipse\n"),
|
1137
1192
|
"group": "tool",
|
@@ -1141,15 +1196,15 @@ class MeerK40t(MWindow):
|
|
1141
1196
|
)
|
1142
1197
|
|
1143
1198
|
kernel.register(
|
1144
|
-
"button/tools/
|
1199
|
+
"button/tools/Rectangle",
|
1145
1200
|
{
|
1146
|
-
"label": _("
|
1147
|
-
"icon":
|
1148
|
-
"tip": _("Add a
|
1149
|
-
"action": lambda v: kernel.elements("tool
|
1201
|
+
"label": _("Rectangle"),
|
1202
|
+
"icon": icon_mk_rectangular,
|
1203
|
+
"tip": _("Add a rectangular element"),
|
1204
|
+
"action": lambda v: kernel.elements("tool rect\n"),
|
1150
1205
|
"group": "tool",
|
1151
1206
|
"size": bsize_normal,
|
1152
|
-
"identifier": "
|
1207
|
+
"identifier": "rect",
|
1153
1208
|
},
|
1154
1209
|
)
|
1155
1210
|
|
@@ -1157,7 +1212,7 @@ class MeerK40t(MWindow):
|
|
1157
1212
|
"button/tools/Polygon",
|
1158
1213
|
{
|
1159
1214
|
"label": _("Polygon"),
|
1160
|
-
"icon":
|
1215
|
+
"icon": icon_mk_polygon,
|
1161
1216
|
"tip": _(
|
1162
1217
|
"Add a polygon element\nLeft click: point/line\nDouble click: complete\nRight click: cancel"
|
1163
1218
|
),
|
@@ -1172,7 +1227,7 @@ class MeerK40t(MWindow):
|
|
1172
1227
|
"button/tools/Polyline",
|
1173
1228
|
{
|
1174
1229
|
"label": _("Polyline"),
|
1175
|
-
"icon":
|
1230
|
+
"icon": icon_mk_polyline,
|
1176
1231
|
"tip": _(
|
1177
1232
|
"Add a polyline element\nLeft click: point/line\nDouble click: complete\nRight click: cancel"
|
1178
1233
|
),
|
@@ -1183,24 +1238,11 @@ class MeerK40t(MWindow):
|
|
1183
1238
|
},
|
1184
1239
|
)
|
1185
1240
|
|
1186
|
-
kernel.register(
|
1187
|
-
"button/tools/Rectangle",
|
1188
|
-
{
|
1189
|
-
"label": _("Rectangle"),
|
1190
|
-
"icon": icons8_rectangular_50,
|
1191
|
-
"tip": _("Add a rectangular element"),
|
1192
|
-
"action": lambda v: kernel.elements("tool rect\n"),
|
1193
|
-
"group": "tool",
|
1194
|
-
"size": bsize_normal,
|
1195
|
-
"identifier": "rect",
|
1196
|
-
},
|
1197
|
-
)
|
1198
|
-
|
1199
1241
|
kernel.register(
|
1200
1242
|
"button/tools/Point",
|
1201
1243
|
{
|
1202
1244
|
"label": _("Point"),
|
1203
|
-
"icon":
|
1245
|
+
"icon": icon_mk_point,
|
1204
1246
|
"tip": _("Add point to the scene"),
|
1205
1247
|
"action": lambda v: kernel.elements("tool point\n"),
|
1206
1248
|
"group": "tool",
|
@@ -1213,7 +1255,7 @@ class MeerK40t(MWindow):
|
|
1213
1255
|
"button/tools/Vector",
|
1214
1256
|
{
|
1215
1257
|
"label": _("Vector"),
|
1216
|
-
"icon":
|
1258
|
+
"icon": icons8_vector,
|
1217
1259
|
"tip": _(
|
1218
1260
|
"Add a shape\nLeft click: point/line\nClick and hold: curve\nDouble click: complete\nRight click: end"
|
1219
1261
|
),
|
@@ -1223,11 +1265,25 @@ class MeerK40t(MWindow):
|
|
1223
1265
|
"identifier": "vector",
|
1224
1266
|
},
|
1225
1267
|
)
|
1268
|
+
|
1269
|
+
kernel.register(
|
1270
|
+
"button/tools/Draw",
|
1271
|
+
{
|
1272
|
+
"label": _("Draw"),
|
1273
|
+
"icon": icons8_pencil_drawing,
|
1274
|
+
"tip": _("Add a free-drawing element"),
|
1275
|
+
"action": lambda v: kernel.elements("tool draw\n"),
|
1276
|
+
"group": "tool",
|
1277
|
+
"size": bsize_normal,
|
1278
|
+
"identifier": "draw",
|
1279
|
+
},
|
1280
|
+
)
|
1281
|
+
|
1226
1282
|
kernel.register(
|
1227
1283
|
"button/tools/Text",
|
1228
1284
|
{
|
1229
1285
|
"label": _("Text"),
|
1230
|
-
"icon":
|
1286
|
+
"icon": icon_bmap_text,
|
1231
1287
|
"tip": _("Add a text element"),
|
1232
1288
|
"action": lambda v: kernel.elements("tool text\n"),
|
1233
1289
|
"group": "tool",
|
@@ -1240,7 +1296,7 @@ class MeerK40t(MWindow):
|
|
1240
1296
|
"button/basicediting/Delete",
|
1241
1297
|
{
|
1242
1298
|
"label": _("Delete"),
|
1243
|
-
"icon":
|
1299
|
+
"icon": icons8_delete,
|
1244
1300
|
"tip": _("Delete selected items"),
|
1245
1301
|
"action": lambda v: kernel.elements("tree selected delete\n"),
|
1246
1302
|
"size": bsize_normal,
|
@@ -1251,7 +1307,7 @@ class MeerK40t(MWindow):
|
|
1251
1307
|
"button/basicediting/Cut",
|
1252
1308
|
{
|
1253
1309
|
"label": _("Cut"),
|
1254
|
-
"icon":
|
1310
|
+
"icon": icons8_scissors,
|
1255
1311
|
"tip": _("Cut selected elements"),
|
1256
1312
|
"action": lambda v: kernel.elements("clipboard cut\n"),
|
1257
1313
|
"size": bsize_small,
|
@@ -1266,7 +1322,7 @@ class MeerK40t(MWindow):
|
|
1266
1322
|
"button/basicediting/Copy",
|
1267
1323
|
{
|
1268
1324
|
"label": _("Copy"),
|
1269
|
-
"icon":
|
1325
|
+
"icon": icons8_copy,
|
1270
1326
|
"tip": _("Copy selected elements to clipboard"),
|
1271
1327
|
"action": lambda v: kernel.elements("clipboard copy\n"),
|
1272
1328
|
"size": bsize_small,
|
@@ -1292,7 +1348,7 @@ class MeerK40t(MWindow):
|
|
1292
1348
|
"button/basicediting/Paste",
|
1293
1349
|
{
|
1294
1350
|
"label": _("Paste"),
|
1295
|
-
"icon":
|
1351
|
+
"icon": icons8_paste,
|
1296
1352
|
"tip": _("Paste elements from clipboard"),
|
1297
1353
|
"action": lambda v: kernel.elements(
|
1298
1354
|
"clipboard paste -dx 3mm -dy 3mm\n"
|
@@ -1306,10 +1362,8 @@ class MeerK40t(MWindow):
|
|
1306
1362
|
# "button/basicediting/Duplicate",
|
1307
1363
|
# {
|
1308
1364
|
# "label": _("Duplicate"),
|
1309
|
-
# "icon":
|
1310
|
-
# "tip": _(
|
1311
|
-
# "Duplicate selected elements"
|
1312
|
-
# ),
|
1365
|
+
# "icon": icon_duplicate,
|
1366
|
+
# "tip": _("Duplicate selected elements"),
|
1313
1367
|
# "action": lambda v: kernel.elements("element copy --dx=3mm --dy=3mm\n"),
|
1314
1368
|
# "size": bsize_small,
|
1315
1369
|
# "identifier": "editduplicate",
|
@@ -1323,24 +1377,24 @@ class MeerK40t(MWindow):
|
|
1323
1377
|
"button/undo/Undo",
|
1324
1378
|
{
|
1325
1379
|
"label": _("Undo"),
|
1326
|
-
"icon":
|
1380
|
+
"icon": icon_mk_undo,
|
1327
1381
|
"tip": _("Undo last operation"),
|
1328
1382
|
"action": lambda v: kernel.elements("undo\n"),
|
1329
1383
|
"size": bsize_small,
|
1330
1384
|
"identifier": "editundo",
|
1331
|
-
|
1385
|
+
"rule_enabled": lambda cond: kernel.elements.undo.has_undo(),
|
1332
1386
|
},
|
1333
1387
|
)
|
1334
1388
|
kernel.register(
|
1335
1389
|
"button/undo/Redo",
|
1336
1390
|
{
|
1337
1391
|
"label": _("Redo"),
|
1338
|
-
"icon":
|
1392
|
+
"icon": icon_mk_redo,
|
1339
1393
|
"tip": _("Redo last operation"),
|
1340
1394
|
"action": lambda v: kernel.elements("redo\n"),
|
1341
1395
|
"size": bsize_small,
|
1342
1396
|
"identifier": "editredo",
|
1343
|
-
|
1397
|
+
"rule_enabled": lambda cond: kernel.elements.undo.has_redo(),
|
1344
1398
|
},
|
1345
1399
|
)
|
1346
1400
|
|
@@ -1348,7 +1402,7 @@ class MeerK40t(MWindow):
|
|
1348
1402
|
"button/extended_tools/Measure",
|
1349
1403
|
{
|
1350
1404
|
"label": _("Measure"),
|
1351
|
-
"icon":
|
1405
|
+
"icon": icons8_measure,
|
1352
1406
|
"tip": _(
|
1353
1407
|
"Measure distance / perimeter / area\nLeft click: point/line\nDouble click: complete\nRight click: cancel"
|
1354
1408
|
),
|
@@ -1359,22 +1413,6 @@ class MeerK40t(MWindow):
|
|
1359
1413
|
},
|
1360
1414
|
)
|
1361
1415
|
|
1362
|
-
def contains_a_param():
|
1363
|
-
result = False
|
1364
|
-
for e in kernel.elements.elems(emphasized=True):
|
1365
|
-
if e.functional_parameter is not None:
|
1366
|
-
result = True
|
1367
|
-
break
|
1368
|
-
return result
|
1369
|
-
|
1370
|
-
def contains_a_path():
|
1371
|
-
result = False
|
1372
|
-
for e in kernel.elements.elems(emphasized=True):
|
1373
|
-
if e.type in ("elem polyline", "elem path"):
|
1374
|
-
result = True
|
1375
|
-
break
|
1376
|
-
return result
|
1377
|
-
|
1378
1416
|
# Default Size for smaller buttons
|
1379
1417
|
buttonsize = STD_ICON_SIZE / 2
|
1380
1418
|
|
@@ -1396,7 +1434,7 @@ class MeerK40t(MWindow):
|
|
1396
1434
|
"button/modify/Mirror",
|
1397
1435
|
{
|
1398
1436
|
"label": _("Mirror Horizontal"),
|
1399
|
-
"icon":
|
1437
|
+
"icon": icons8_flip_horizontal,
|
1400
1438
|
"tip": _("Mirror the selected element horizontally"),
|
1401
1439
|
"action": lambda v: kernel.elements("scale -1 1\n"),
|
1402
1440
|
"size": bsize_small,
|
@@ -1410,7 +1448,7 @@ class MeerK40t(MWindow):
|
|
1410
1448
|
"button/modify/Rotate90CW",
|
1411
1449
|
{
|
1412
1450
|
"label": _("Rotate CW"),
|
1413
|
-
"icon":
|
1451
|
+
"icon": icons8_rotate_right,
|
1414
1452
|
"tip": _("Rotate the selected element clockwise by 90 deg"),
|
1415
1453
|
"action": lambda v: kernel.elements("rotate 90deg\n"),
|
1416
1454
|
"size": bsize_small,
|
@@ -1424,7 +1462,7 @@ class MeerK40t(MWindow):
|
|
1424
1462
|
"button/modify/Rotate90CCW",
|
1425
1463
|
{
|
1426
1464
|
"label": _("Rotate CCW"),
|
1427
|
-
"icon":
|
1465
|
+
"icon": icons8_rotate_left,
|
1428
1466
|
"tip": _("Rotate the selected element counterclockwise by 90 deg"),
|
1429
1467
|
"action": lambda v: kernel.elements("rotate -90deg\n"),
|
1430
1468
|
"size": bsize_small,
|
@@ -1438,7 +1476,7 @@ class MeerK40t(MWindow):
|
|
1438
1476
|
"button/geometry/Union",
|
1439
1477
|
{
|
1440
1478
|
"label": _("Union"),
|
1441
|
-
"icon":
|
1479
|
+
"icon": icon_cag_union,
|
1442
1480
|
"tip": _("Create a union of the selected elements"),
|
1443
1481
|
"action": lambda v: kernel.elements("element union\n"),
|
1444
1482
|
"size": bsize_small,
|
@@ -1452,7 +1490,7 @@ class MeerK40t(MWindow):
|
|
1452
1490
|
"button/geometry/Difference",
|
1453
1491
|
{
|
1454
1492
|
"label": _("Difference"),
|
1455
|
-
"icon":
|
1493
|
+
"icon": icon_cag_subtract,
|
1456
1494
|
"tip": _("Create a difference of the selected elements"),
|
1457
1495
|
"action": lambda v: kernel.elements("element difference\n"),
|
1458
1496
|
"size": bsize_small,
|
@@ -1466,7 +1504,7 @@ class MeerK40t(MWindow):
|
|
1466
1504
|
"button/geometry/Xor",
|
1467
1505
|
{
|
1468
1506
|
"label": _("Xor"),
|
1469
|
-
"icon":
|
1507
|
+
"icon": icon_cag_xor,
|
1470
1508
|
"tip": _("Create a xor of the selected elements"),
|
1471
1509
|
"action": lambda v: kernel.elements("element xor\n"),
|
1472
1510
|
"size": bsize_small,
|
@@ -1480,7 +1518,7 @@ class MeerK40t(MWindow):
|
|
1480
1518
|
"button/geometry/Intersection",
|
1481
1519
|
{
|
1482
1520
|
"label": _("Intersection"),
|
1483
|
-
"icon":
|
1521
|
+
"icon": icon_cag_common,
|
1484
1522
|
"tip": _("Create a intersection of the selected elements"),
|
1485
1523
|
"action": lambda v: kernel.elements("element intersection\n"),
|
1486
1524
|
"size": bsize_small,
|
@@ -1537,7 +1575,7 @@ class MeerK40t(MWindow):
|
|
1537
1575
|
"button/group/Group",
|
1538
1576
|
{
|
1539
1577
|
"label": _("Group"),
|
1540
|
-
"icon":
|
1578
|
+
"icon": icons8_group_objects,
|
1541
1579
|
"tip": _("Group elements together"),
|
1542
1580
|
"action": lambda v: group_selection(),
|
1543
1581
|
"size": bsize_normal,
|
@@ -1582,7 +1620,7 @@ class MeerK40t(MWindow):
|
|
1582
1620
|
"button/group/Ungroup",
|
1583
1621
|
{
|
1584
1622
|
"label": _("Ungroup"),
|
1585
|
-
"icon":
|
1623
|
+
"icon": icons8_ungroup_objects,
|
1586
1624
|
"tip": _("Ungroup elements"),
|
1587
1625
|
"action": lambda v: ungroup_selection(),
|
1588
1626
|
"size": bsize_normal,
|
@@ -1594,7 +1632,7 @@ class MeerK40t(MWindow):
|
|
1594
1632
|
"button/align/AlignLeft",
|
1595
1633
|
{
|
1596
1634
|
"label": _("Left"),
|
1597
|
-
"icon":
|
1635
|
+
"icon": icon_mk_align_left,
|
1598
1636
|
"tip": _(
|
1599
1637
|
"Align selected elements at the leftmost position (right click: of the bed)"
|
1600
1638
|
),
|
@@ -1616,7 +1654,7 @@ class MeerK40t(MWindow):
|
|
1616
1654
|
"button/preparation/Wordlist",
|
1617
1655
|
{
|
1618
1656
|
"label": _("Wordlist"),
|
1619
|
-
"icon":
|
1657
|
+
"icon": icons8_curly_brackets,
|
1620
1658
|
"tip": _("Manages Wordlist-Entries")
|
1621
1659
|
+ "\n"
|
1622
1660
|
+ _(" (right go to next entry)"),
|
@@ -1627,7 +1665,7 @@ class MeerK40t(MWindow):
|
|
1627
1665
|
"multi": [
|
1628
1666
|
{
|
1629
1667
|
"identifier": "prep_wordlist_edit",
|
1630
|
-
"icon":
|
1668
|
+
"icon": icons8_curly_brackets,
|
1631
1669
|
"tip": _("Manages Wordlist-Entries")
|
1632
1670
|
+ _(" (right go to next entry)"),
|
1633
1671
|
"label": _("Wordlist Editor"),
|
@@ -1636,7 +1674,7 @@ class MeerK40t(MWindow):
|
|
1636
1674
|
},
|
1637
1675
|
{
|
1638
1676
|
"identifier": "prep_wordlist_plus_1",
|
1639
|
-
"icon":
|
1677
|
+
"icon": icons8_circled_right,
|
1640
1678
|
"tip": _("Wordlist: go to next entry")
|
1641
1679
|
+ _(" (right go to prev entry)"),
|
1642
1680
|
"label": _("Next"),
|
@@ -1646,7 +1684,7 @@ class MeerK40t(MWindow):
|
|
1646
1684
|
{
|
1647
1685
|
"identifier": "prep_wordlist_minus_1",
|
1648
1686
|
"label": _("Prev"),
|
1649
|
-
"icon":
|
1687
|
+
"icon": icons8_circled_left,
|
1650
1688
|
"tip": _("Wordlist: go to prev entry")
|
1651
1689
|
+ _(" (right go to next entry)"),
|
1652
1690
|
"action": lambda v: kernel.elements.wordlist_advance(-1),
|
@@ -1663,7 +1701,7 @@ class MeerK40t(MWindow):
|
|
1663
1701
|
"button/align/AlignRight",
|
1664
1702
|
{
|
1665
1703
|
"label": _("Right"),
|
1666
|
-
"icon":
|
1704
|
+
"icon": icon_mk_align_right,
|
1667
1705
|
"tip": _(
|
1668
1706
|
"Align selected elements at the rightmost position (right click: of the bed)"
|
1669
1707
|
),
|
@@ -1680,7 +1718,7 @@ class MeerK40t(MWindow):
|
|
1680
1718
|
"button/align/AlignTop",
|
1681
1719
|
{
|
1682
1720
|
"label": _("Top"),
|
1683
|
-
"icon":
|
1721
|
+
"icon": icon_mk_align_top,
|
1684
1722
|
"tip": _(
|
1685
1723
|
"Align selected elements at the topmost position (right click: of the bed)"
|
1686
1724
|
),
|
@@ -1697,7 +1735,7 @@ class MeerK40t(MWindow):
|
|
1697
1735
|
"button/align/AlignBottom",
|
1698
1736
|
{
|
1699
1737
|
"label": _("Bottom"),
|
1700
|
-
"icon":
|
1738
|
+
"icon": icon_mk_align_bottom,
|
1701
1739
|
"tip": _(
|
1702
1740
|
"Align selected elements at the lowest position (right click: of the bed)"
|
1703
1741
|
),
|
@@ -1714,7 +1752,7 @@ class MeerK40t(MWindow):
|
|
1714
1752
|
"button/align/AlignCenterH",
|
1715
1753
|
{
|
1716
1754
|
"label": _("Center X"),
|
1717
|
-
"icon":
|
1755
|
+
"icon": icons8_centerh,
|
1718
1756
|
"tip": _(
|
1719
1757
|
"Align selected elements at their center horizontally (right click: of the bed)"
|
1720
1758
|
),
|
@@ -1731,7 +1769,7 @@ class MeerK40t(MWindow):
|
|
1731
1769
|
"button/align/AlignCenterV",
|
1732
1770
|
{
|
1733
1771
|
"label": _("Center Y"),
|
1734
|
-
"icon":
|
1772
|
+
"icon": icons8_centerv,
|
1735
1773
|
"tip": _(
|
1736
1774
|
"Align selected elements at their center vertically (right click: of the bed)"
|
1737
1775
|
),
|
@@ -2371,7 +2409,12 @@ class MeerK40t(MWindow):
|
|
2371
2409
|
|
2372
2410
|
@property
|
2373
2411
|
def is_dark(self):
|
2374
|
-
|
2412
|
+
# try:
|
2413
|
+
# res = wx.SystemSettings().GetAppearance().IsDark()
|
2414
|
+
# except AttributeError:
|
2415
|
+
# res = wx.SystemSettings().GetColour(wx.SYS_COLOUR_WINDOW)[0] < 127
|
2416
|
+
res = wx.SystemSettings().GetColour(wx.SYS_COLOUR_WINDOW)[0] < 127
|
2417
|
+
return res
|
2375
2418
|
|
2376
2419
|
def __kernel_initialize(self):
|
2377
2420
|
context = self.context
|
@@ -2800,9 +2843,9 @@ class MeerK40t(MWindow):
|
|
2800
2843
|
self.Bind(wx.EVT_MENU, self.on_click_exit, id=menu_item.GetId())
|
2801
2844
|
self.main_menubar.Append(self.file_menu, _("File"))
|
2802
2845
|
|
2803
|
-
def
|
2846
|
+
def _update_status_menu(self, menu, choices, *args):
|
2804
2847
|
def handler(event):
|
2805
|
-
for entry in
|
2848
|
+
for entry in local_choices:
|
2806
2849
|
if "label" in entry and "enabled" in entry:
|
2807
2850
|
flag = True
|
2808
2851
|
label = entry["label"]
|
@@ -2811,13 +2854,15 @@ class MeerK40t(MWindow):
|
|
2811
2854
|
except AttributeError:
|
2812
2855
|
flag = True
|
2813
2856
|
if label:
|
2814
|
-
menu_id =
|
2857
|
+
menu_id = local_menu.FindItem(label)
|
2815
2858
|
if menu_id != wx.NOT_FOUND:
|
2816
|
-
menu_item =
|
2859
|
+
menu_item = local_menu.FindItemById(menu_id)
|
2817
2860
|
menu_item.Enable(flag)
|
2818
2861
|
if event:
|
2819
2862
|
event.Skip()
|
2820
2863
|
|
2864
|
+
local_menu = menu
|
2865
|
+
local_choices = choices
|
2821
2866
|
return handler
|
2822
2867
|
|
2823
2868
|
def __set_edit_menu(self):
|
@@ -2833,7 +2878,10 @@ class MeerK40t(MWindow):
|
|
2833
2878
|
else:
|
2834
2879
|
self.main_menubar.Append(self.edit_menu, label)
|
2835
2880
|
|
2836
|
-
self.edit_menu.Bind(
|
2881
|
+
self.edit_menu.Bind(
|
2882
|
+
wx.EVT_MENU_OPEN,
|
2883
|
+
self._update_status_menu(self.edit_menu, self.edit_menu_choice),
|
2884
|
+
)
|
2837
2885
|
|
2838
2886
|
def __set_view_menu(self):
|
2839
2887
|
def toggle_draw_mode(bits):
|
@@ -2874,6 +2922,7 @@ class MeerK40t(MWindow):
|
|
2874
2922
|
"action": self.on_click_zoom_selected,
|
2875
2923
|
"id": wx.ID_ZOOM_100,
|
2876
2924
|
"level": 1,
|
2925
|
+
"enabled": self.context.elements.has_emphasis,
|
2877
2926
|
"segment": "",
|
2878
2927
|
},
|
2879
2928
|
{
|
@@ -3138,8 +3187,13 @@ class MeerK40t(MWindow):
|
|
3138
3187
|
]
|
3139
3188
|
|
3140
3189
|
self.view_menu = wx.Menu()
|
3190
|
+
self.view_menu_choice = choices
|
3141
3191
|
self._create_menu_from_choices(self.view_menu, choices)
|
3142
3192
|
self.main_menubar.Append(self.view_menu, _("View"))
|
3193
|
+
self.view_menu.Bind(
|
3194
|
+
wx.EVT_MENU_OPEN,
|
3195
|
+
self._update_status_menu(self.view_menu, self.view_menu_choice),
|
3196
|
+
)
|
3143
3197
|
|
3144
3198
|
def __set_pane_menu(self):
|
3145
3199
|
# ==========
|
@@ -3354,6 +3408,7 @@ class MeerK40t(MWindow):
|
|
3354
3408
|
message="This requires a program restart before the language change will kick in!",
|
3355
3409
|
caption="Language changed",
|
3356
3410
|
)
|
3411
|
+
self.context.signal("restart")
|
3357
3412
|
|
3358
3413
|
return check
|
3359
3414
|
|
@@ -3363,6 +3418,19 @@ class MeerK40t(MWindow):
|
|
3363
3418
|
i += 1
|
3364
3419
|
self.main_menubar.Append(wxglade_tmp_menu, _("Languages"))
|
3365
3420
|
|
3421
|
+
@signal_listener("restart")
|
3422
|
+
def on_restart_required(self, *args):
|
3423
|
+
self.context.kernel.register(
|
3424
|
+
"button/project/Restart",
|
3425
|
+
{
|
3426
|
+
"label": _("Restart"),
|
3427
|
+
"icon": icon_power_button,
|
3428
|
+
"tip": _("Restart needed to apply new parameters"),
|
3429
|
+
"action": lambda v: self.context("restart\n"),
|
3430
|
+
"size": STD_ICON_SIZE,
|
3431
|
+
},
|
3432
|
+
)
|
3433
|
+
|
3366
3434
|
@signal_listener("file;loaded")
|
3367
3435
|
@signal_listener("file;saved")
|
3368
3436
|
@signal_listener("file;cleared")
|
@@ -3636,9 +3704,15 @@ class MeerK40t(MWindow):
|
|
3636
3704
|
else:
|
3637
3705
|
label = " - " + label
|
3638
3706
|
|
3707
|
+
try:
|
3708
|
+
dev_label = self.context.device.label
|
3709
|
+
except AttributeError:
|
3710
|
+
# Label cannot be found because device does not exist.
|
3711
|
+
dev_label = ""
|
3712
|
+
|
3639
3713
|
title = (
|
3640
3714
|
f"{str(self.context.kernel.name)} v{self.context.kernel.version} - "
|
3641
|
-
f"{
|
3715
|
+
f"{dev_label}{label}"
|
3642
3716
|
)
|
3643
3717
|
self.SetTitle(title)
|
3644
3718
|
|
@@ -3777,7 +3851,8 @@ class MeerK40t(MWindow):
|
|
3777
3851
|
self.context(".laserpath_clear\n")
|
3778
3852
|
self.validate_save()
|
3779
3853
|
kernel.busyinfo.end()
|
3780
|
-
self.context("tool none\n")
|
3854
|
+
self.context(".tool none\n")
|
3855
|
+
context.elements.undo.mark("blank")
|
3781
3856
|
|
3782
3857
|
def clear_and_open(self, pathname, preferred_loader=None):
|
3783
3858
|
self.clear_project(ops_too=False)
|
@@ -3878,9 +3953,11 @@ class MeerK40t(MWindow):
|
|
3878
3953
|
|
3879
3954
|
def on_click_open(self, event=None): # wxGlade: MeerK40t.<event_handler>
|
3880
3955
|
self.context(".dialog_load\n")
|
3956
|
+
self.context(".tool none\n")
|
3881
3957
|
|
3882
3958
|
def on_click_import(self, event=None): # wxGlade: MeerK40t.<event_handler>
|
3883
3959
|
self.context(".dialog_import\n")
|
3960
|
+
self.context(".tool none\n")
|
3884
3961
|
|
3885
3962
|
def on_click_stop(self, event=None):
|
3886
3963
|
self.context("estop\n")
|
@@ -3890,9 +3967,11 @@ class MeerK40t(MWindow):
|
|
3890
3967
|
|
3891
3968
|
def on_click_save(self, event):
|
3892
3969
|
self.context(".dialog_save\n")
|
3970
|
+
self.context(".tool none\n")
|
3893
3971
|
|
3894
3972
|
def on_click_save_as(self, event=None):
|
3895
3973
|
self.context(".dialog_save_as\n")
|
3974
|
+
self.context(".tool none\n")
|
3896
3975
|
|
3897
3976
|
def on_click_close(self, event=None):
|
3898
3977
|
try:
|