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/balormk/balor_params.py
CHANGED
@@ -13,19 +13,17 @@ FLOAT_PARAMETERS = (
|
|
13
13
|
"delay_laser_on",
|
14
14
|
"delay_laser_off",
|
15
15
|
"delay_polygon",
|
16
|
-
"wobble_speed",
|
17
16
|
)
|
18
17
|
INT_PARAMETERS = ("pulse_width",)
|
19
18
|
|
20
19
|
BOOL_PARAMETERS = (
|
21
|
-
"wobble_enabled",
|
22
20
|
"timing_enabled",
|
23
21
|
"rapid_enabled",
|
24
22
|
"pulse_width_enabled",
|
25
23
|
)
|
26
24
|
|
27
25
|
|
28
|
-
STRING_PARAMETERS = (
|
26
|
+
STRING_PARAMETERS = ()
|
29
27
|
|
30
28
|
|
31
29
|
class Parameters:
|
@@ -96,46 +94,6 @@ class Parameters:
|
|
96
94
|
def timing_enabled(self, value):
|
97
95
|
self.settings["timing_enabled"] = value
|
98
96
|
|
99
|
-
@property
|
100
|
-
def wobble_enabled(self):
|
101
|
-
return self.settings.get("wobble_enabled", False)
|
102
|
-
|
103
|
-
@wobble_enabled.setter
|
104
|
-
def wobble_enabled(self, value):
|
105
|
-
self.settings["wobble_enabled"] = value
|
106
|
-
|
107
|
-
@property
|
108
|
-
def wobble_radius(self):
|
109
|
-
return self.settings.get("wobble_radius", "1.5mm")
|
110
|
-
|
111
|
-
@wobble_radius.setter
|
112
|
-
def wobble_radius(self, value):
|
113
|
-
self.settings["wobble_radius"] = value
|
114
|
-
|
115
|
-
@property
|
116
|
-
def wobble_speed(self):
|
117
|
-
return self.settings.get("wobble_speed", 50.0)
|
118
|
-
|
119
|
-
@wobble_speed.setter
|
120
|
-
def wobble_speed(self, value):
|
121
|
-
self.settings["wobble_speed"] = value
|
122
|
-
|
123
|
-
@property
|
124
|
-
def wobble_interval(self):
|
125
|
-
return self.settings.get("wobble_interval", "0.3mm")
|
126
|
-
|
127
|
-
@wobble_interval.setter
|
128
|
-
def wobble_interval(self, value):
|
129
|
-
self.settings["wobble_interval"] = value
|
130
|
-
|
131
|
-
@property
|
132
|
-
def wobble_type(self):
|
133
|
-
return self.settings.get("wobble_type", "circle")
|
134
|
-
|
135
|
-
@wobble_type.setter
|
136
|
-
def wobble_type(self, value):
|
137
|
-
self.settings["wobble_type"] = value
|
138
|
-
|
139
97
|
@property
|
140
98
|
def speed(self):
|
141
99
|
return self.settings.get("speed", 100.0)
|
meerk40t/balormk/controller.py
CHANGED
@@ -12,7 +12,6 @@ from copy import copy
|
|
12
12
|
|
13
13
|
from meerk40t.balormk.mock_connection import MockConnection
|
14
14
|
from meerk40t.balormk.usb_connection import USBConnection
|
15
|
-
from meerk40t.fill.fills import Wobble
|
16
15
|
|
17
16
|
DRIVER_STATE_RAPID = 0
|
18
17
|
DRIVER_STATE_LIGHT = 1
|
@@ -273,7 +272,6 @@ class GalvoController:
|
|
273
272
|
self._delay_poly = None
|
274
273
|
self._delay_end = None
|
275
274
|
|
276
|
-
self._wobble = None
|
277
275
|
self._port_bits = 0
|
278
276
|
self._machine_index = 0
|
279
277
|
|
@@ -627,40 +625,6 @@ class GalvoController:
|
|
627
625
|
self.list_laser_off_delay(self.service.delay_laser_off)
|
628
626
|
self.list_polygon_delay(self.service.delay_polygon)
|
629
627
|
|
630
|
-
def set_wobble(self, settings):
|
631
|
-
"""
|
632
|
-
Set the wobble parameters and mark modifications routines.
|
633
|
-
|
634
|
-
@param settings: The dict setting to extract parameters from.
|
635
|
-
@return:
|
636
|
-
"""
|
637
|
-
if settings is None:
|
638
|
-
self._wobble = None
|
639
|
-
return
|
640
|
-
wobble_enabled = str(settings.get("wobble_enabled", False)).lower() == "true"
|
641
|
-
if not wobble_enabled:
|
642
|
-
self._wobble = None
|
643
|
-
return
|
644
|
-
wobble_radius = settings.get("wobble_radius", "1.5mm")
|
645
|
-
wobble_r, _ = self.service.view.position(wobble_radius, 0, vector=True)
|
646
|
-
wobble_interval = settings.get("wobble_interval", "0.3mm")
|
647
|
-
wobble_speed = settings.get("wobble_speed", 50.0)
|
648
|
-
wobble_type = settings.get("wobble_type", "circle")
|
649
|
-
wobble_interval, _ = self.service.view.position(wobble_interval, 0, vector=True)
|
650
|
-
algorithm = self.service.lookup(f"wobble/{wobble_type}")
|
651
|
-
if self._wobble is None:
|
652
|
-
self._wobble = Wobble(
|
653
|
-
algorithm=algorithm,
|
654
|
-
radius=wobble_r,
|
655
|
-
speed=wobble_speed,
|
656
|
-
interval=wobble_interval,
|
657
|
-
)
|
658
|
-
else:
|
659
|
-
# set our parameterizations
|
660
|
-
self._wobble.algorithm = algorithm
|
661
|
-
self._wobble.radius = wobble_r
|
662
|
-
self._wobble.speed = wobble_speed
|
663
|
-
|
664
628
|
#######################
|
665
629
|
# PLOTLIKE SHORTCUTS
|
666
630
|
#######################
|
@@ -673,11 +637,7 @@ class GalvoController:
|
|
673
637
|
return
|
674
638
|
if self._mark_speed is not None:
|
675
639
|
self.list_mark_speed(self._mark_speed)
|
676
|
-
|
677
|
-
for wx, wy in self._wobble(self._last_x, self._last_y, x, y):
|
678
|
-
self.list_mark(wx, wy)
|
679
|
-
else:
|
680
|
-
self.list_mark(x, y)
|
640
|
+
self.list_mark(x, y)
|
681
641
|
|
682
642
|
def goto(self, x, y, long=None, short=None, distance_limit=None):
|
683
643
|
if x == self._last_x and y == self._last_y:
|
meerk40t/balormk/device.py
CHANGED
@@ -15,12 +15,13 @@ from meerk40t.core.laserjob import LaserJob
|
|
15
15
|
from meerk40t.core.spoolers import Spooler
|
16
16
|
from meerk40t.core.units import Angle, Length
|
17
17
|
from meerk40t.core.view import View
|
18
|
+
from meerk40t.device.mixins import Status
|
18
19
|
from meerk40t.kernel import CommandSyntaxError, Service, signal_listener
|
19
20
|
from meerk40t.svgelements import Path, Point
|
20
21
|
from meerk40t.tools.geomstr import Geomstr
|
21
22
|
|
22
23
|
|
23
|
-
class BalorDevice(Service):
|
24
|
+
class BalorDevice(Service, Status):
|
24
25
|
"""
|
25
26
|
The BalorDevice is a MeerK40t service for the device type. It should be the main method of interacting with
|
26
27
|
the rest of meerk40t. It defines how the scene should look and contains a spooler which meerk40t will give jobs
|
@@ -29,6 +30,7 @@ class BalorDevice(Service):
|
|
29
30
|
|
30
31
|
def __init__(self, kernel, path, *args, choices=None, **kwargs):
|
31
32
|
Service.__init__(self, kernel, path)
|
33
|
+
Status.__init__(self)
|
32
34
|
self.name = "balor"
|
33
35
|
self.extension = "lmc"
|
34
36
|
self.job = None
|
@@ -1791,35 +1793,27 @@ class BalorDevice(Service):
|
|
1791
1793
|
"""
|
1792
1794
|
if data is None:
|
1793
1795
|
data = list(self.elements.elems(emphasized=True))
|
1794
|
-
|
1796
|
+
g = Geomstr()
|
1795
1797
|
for e in data:
|
1796
|
-
if e
|
1798
|
+
if hasattr(e, "as_image"):
|
1797
1799
|
bounds = e.bounds
|
1798
|
-
|
1799
|
-
(
|
1800
|
-
|
1801
|
-
|
1802
|
-
|
1803
|
-
|
1800
|
+
g.append(
|
1801
|
+
Geomstr.rect(
|
1802
|
+
bounds[0],
|
1803
|
+
bounds[1],
|
1804
|
+
bounds[2] - bounds[0],
|
1805
|
+
bounds[3] - bounds[1],
|
1806
|
+
)
|
1807
|
+
)
|
1804
1808
|
elif e.type == "elem text":
|
1805
1809
|
continue # We can't outline text.
|
1806
1810
|
else:
|
1807
|
-
|
1808
|
-
|
1809
|
-
except AttributeError:
|
1810
|
-
try:
|
1811
|
-
path = abs(e.path)
|
1812
|
-
except AttributeError:
|
1813
|
-
continue
|
1814
|
-
pts += [q for q in path.as_points()]
|
1815
|
-
hull = [p for p in Point.convex_hull(pts)]
|
1811
|
+
g.append(e.as_geometry())
|
1812
|
+
hull = Geomstr.hull(g)
|
1816
1813
|
if len(hull) == 0:
|
1817
1814
|
channel(_("No elements bounds to trace."))
|
1818
1815
|
return
|
1819
|
-
hull
|
1820
|
-
hull = list(map(complex, hull))
|
1821
|
-
geometry = Geomstr.lines(*hull)
|
1822
|
-
return "geometry", geometry
|
1816
|
+
return "geometry", hull
|
1823
1817
|
|
1824
1818
|
def ant_points(points, steps):
|
1825
1819
|
points = list(points)
|
meerk40t/balormk/driver.py
CHANGED
@@ -102,7 +102,7 @@ class BalorDriver:
|
|
102
102
|
"""
|
103
103
|
Required.
|
104
104
|
|
105
|
-
Sets a laser parameter this could be speed, power,
|
105
|
+
Sets a laser parameter this could be speed, power, number_of_unicorns, or any unknown parameters for
|
106
106
|
yet to be written drivers.
|
107
107
|
|
108
108
|
@param key:
|
@@ -186,7 +186,6 @@ class BalorDriver:
|
|
186
186
|
con.program_mode()
|
187
187
|
self._list_bits = con._port_bits
|
188
188
|
last_on = None
|
189
|
-
con.set_wobble(None)
|
190
189
|
queue = self.queue
|
191
190
|
self.queue = list()
|
192
191
|
for q in queue:
|
@@ -198,7 +197,6 @@ class BalorDriver:
|
|
198
197
|
except KeyError:
|
199
198
|
self.value_penbox = None
|
200
199
|
con.set_settings(settings)
|
201
|
-
con.set_wobble(settings)
|
202
200
|
# LOOP CHECKS
|
203
201
|
if self._aborting:
|
204
202
|
con.abort()
|
@@ -323,7 +321,6 @@ class BalorDriver:
|
|
323
321
|
except KeyError:
|
324
322
|
self.value_penbox = None
|
325
323
|
con.set_settings(settings)
|
326
|
-
con.set_wobble(settings)
|
327
324
|
elif on & (
|
328
325
|
PLOT_RAPID | PLOT_JOG
|
329
326
|
): # Plot planner requests position change.
|
@@ -533,6 +530,7 @@ class BalorDriver:
|
|
533
530
|
return
|
534
531
|
self.paused = True
|
535
532
|
self.connection.pause()
|
533
|
+
self.service.signal("pause")
|
536
534
|
|
537
535
|
def resume(self):
|
538
536
|
"""
|
@@ -545,6 +543,7 @@ class BalorDriver:
|
|
545
543
|
"""
|
546
544
|
self.paused = False
|
547
545
|
self.connection.resume()
|
546
|
+
self.service.signal("pause")
|
548
547
|
|
549
548
|
def reset(self):
|
550
549
|
"""
|
@@ -554,6 +553,7 @@ class BalorDriver:
|
|
554
553
|
"""
|
555
554
|
self.paused = False
|
556
555
|
self.connection.abort()
|
556
|
+
self.service.signal("pause")
|
557
557
|
|
558
558
|
def dwell(self, time_in_ms):
|
559
559
|
"""
|
@@ -4,7 +4,7 @@ from meerk40t.device.gui.defaultactions import DefaultActionPanel
|
|
4
4
|
from meerk40t.device.gui.formatterpanel import FormatterPanel
|
5
5
|
from meerk40t.device.gui.warningpanel import WarningPanel
|
6
6
|
from meerk40t.gui.choicepropertypanel import ChoicePropertyPanel
|
7
|
-
from meerk40t.gui.icons import
|
7
|
+
from meerk40t.gui.icons import icons8_administrative_tools
|
8
8
|
from meerk40t.gui.mwindow import MWindow
|
9
9
|
from meerk40t.kernel import signal_listener
|
10
10
|
|
@@ -16,7 +16,7 @@ class BalorConfiguration(MWindow):
|
|
16
16
|
super().__init__(420, 570, *args, **kwds)
|
17
17
|
self.context = self.context.device
|
18
18
|
_icon = wx.NullIcon
|
19
|
-
_icon.CopyFromBitmap(
|
19
|
+
_icon.CopyFromBitmap(icons8_administrative_tools.GetBitmap())
|
20
20
|
self.SetIcon(_icon)
|
21
21
|
self.SetTitle(_(_("Balor-Configuration")))
|
22
22
|
|
@@ -2,7 +2,11 @@ import threading
|
|
2
2
|
|
3
3
|
import wx
|
4
4
|
|
5
|
-
from meerk40t.gui.icons import
|
5
|
+
from meerk40t.gui.icons import (
|
6
|
+
get_default_icon_size,
|
7
|
+
icons8_connected,
|
8
|
+
icons8_disconnected,
|
9
|
+
)
|
6
10
|
from meerk40t.gui.mwindow import MWindow
|
7
11
|
from meerk40t.gui.wxutils import dip_size
|
8
12
|
from meerk40t.kernel import signal_listener
|
@@ -58,7 +62,9 @@ class BalorControllerPanel(wx.ScrolledWindow):
|
|
58
62
|
_("Force connection/disconnection from the device.")
|
59
63
|
)
|
60
64
|
self.button_device_connect.SetBitmap(
|
61
|
-
|
65
|
+
icons8_disconnected.GetBitmap(
|
66
|
+
use_theme=False, resize=get_default_icon_size()
|
67
|
+
)
|
62
68
|
)
|
63
69
|
# end wxGlade
|
64
70
|
|
@@ -89,14 +95,16 @@ class BalorControllerPanel(wx.ScrolledWindow):
|
|
89
95
|
def set_button_connected(self):
|
90
96
|
self.button_device_connect.SetBackgroundColour("#00ff00")
|
91
97
|
self.button_device_connect.SetBitmap(
|
92
|
-
|
98
|
+
icons8_connected.GetBitmap(use_theme=False, resize=get_default_icon_size())
|
93
99
|
)
|
94
100
|
self.button_device_connect.Enable()
|
95
101
|
|
96
102
|
def set_button_disconnected(self):
|
97
103
|
self.button_device_connect.SetBackgroundColour("#dfdf00")
|
98
104
|
self.button_device_connect.SetBitmap(
|
99
|
-
|
105
|
+
icons8_disconnected.GetBitmap(
|
106
|
+
use_theme=False, resize=get_default_icon_size()
|
107
|
+
)
|
100
108
|
)
|
101
109
|
self.button_device_connect.Enable()
|
102
110
|
|
@@ -161,7 +169,7 @@ class BalorController(MWindow):
|
|
161
169
|
self.add_module_delegate(self.panel)
|
162
170
|
self.SetTitle(_("Balor-Controller"))
|
163
171
|
_icon = wx.NullIcon
|
164
|
-
_icon.CopyFromBitmap(
|
172
|
+
_icon.CopyFromBitmap(icons8_connected.GetBitmap())
|
165
173
|
self.SetIcon(_icon)
|
166
174
|
self.Layout()
|
167
175
|
|
@@ -92,52 +92,6 @@ class BalorOperationPanel(ScrolledPanel):
|
|
92
92
|
"label": _("Polygon Delay"),
|
93
93
|
"tip": _("Delay amount between different points in the path travel."),
|
94
94
|
},
|
95
|
-
{
|
96
|
-
"attr": "wobble_enabled",
|
97
|
-
"object": params,
|
98
|
-
"default": False,
|
99
|
-
"type": bool,
|
100
|
-
"label": _("Enable Wobble"),
|
101
|
-
"tip": _("Enable wobble for this particular cut"),
|
102
|
-
},
|
103
|
-
{
|
104
|
-
"attr": "wobble_radius",
|
105
|
-
"object": params,
|
106
|
-
"default": "1.5mm",
|
107
|
-
"type": Length,
|
108
|
-
"conditional": (params, "wobble_enabled"),
|
109
|
-
"label": _("Radius of wobble"),
|
110
|
-
"tip": _("Radius of the wobble for this cut, if wobble is enabled."),
|
111
|
-
},
|
112
|
-
{
|
113
|
-
"attr": "wobble_interval",
|
114
|
-
"object": params,
|
115
|
-
"default": "0.2mm",
|
116
|
-
"type": Length,
|
117
|
-
"conditional": (params, "wobble_enabled"),
|
118
|
-
"label": _("Wobble Sampling Interval"),
|
119
|
-
"tip": _("Sample interval for the wobble of this cut"),
|
120
|
-
},
|
121
|
-
{
|
122
|
-
"attr": "wobble_speed",
|
123
|
-
"object": params,
|
124
|
-
"default": 50.0,
|
125
|
-
"type": float,
|
126
|
-
"conditional": (params, "wobble_enabled"),
|
127
|
-
"label": _("Wobble Speed Multiplier"),
|
128
|
-
"tip": _("Wobble rotation speed multiplier"),
|
129
|
-
},
|
130
|
-
{
|
131
|
-
"attr": "wobble_type",
|
132
|
-
"object": params,
|
133
|
-
"default": "circle",
|
134
|
-
"type": str,
|
135
|
-
"style": "combo",
|
136
|
-
"choices": list(self.context.match("wobble", suffix=True)),
|
137
|
-
"conditional": (params, "wobble_enabled"),
|
138
|
-
"label": _("Wobble Pattern Type"),
|
139
|
-
"tip": _("Pattern type for the given wobble."),
|
140
|
-
},
|
141
95
|
]
|
142
96
|
|
143
97
|
self.panel = ChoicePropertyPanel(
|
meerk40t/balormk/gui/gui.py
CHANGED
@@ -8,13 +8,13 @@ def plugin(service, lifecycle):
|
|
8
8
|
import wx # pylint: disable=unused-import
|
9
9
|
|
10
10
|
from meerk40t.gui.icons import (
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
icons8_center_of_gravity,
|
12
|
+
icons8_computer_support,
|
13
|
+
icons8_connected,
|
14
|
+
icons8_flash_off,
|
15
|
+
icons8_flash_on,
|
16
|
+
icons8_light_off,
|
17
|
+
icons8_light_on,
|
18
18
|
)
|
19
19
|
|
20
20
|
from .balorconfig import BalorConfiguration
|
@@ -33,7 +33,7 @@ def plugin(service, lifecycle):
|
|
33
33
|
"button/control/Controller",
|
34
34
|
{
|
35
35
|
"label": _("Controller"),
|
36
|
-
"icon":
|
36
|
+
"icon": icons8_connected,
|
37
37
|
"tip": _("Opens Controller Window"),
|
38
38
|
"action": lambda e: service("window toggle Controller\n"),
|
39
39
|
},
|
@@ -42,7 +42,7 @@ def plugin(service, lifecycle):
|
|
42
42
|
"button/device/Configuration",
|
43
43
|
{
|
44
44
|
"label": _("Config"),
|
45
|
-
"icon":
|
45
|
+
"icon": icons8_computer_support,
|
46
46
|
"tip": _("Opens device-specific configuration window"),
|
47
47
|
"action": lambda v: service("window toggle Configuration\n"),
|
48
48
|
},
|
@@ -57,20 +57,20 @@ def plugin(service, lifecycle):
|
|
57
57
|
"button/control/Light_On",
|
58
58
|
{
|
59
59
|
"label": _("Galvo Light"),
|
60
|
-
"icon":
|
60
|
+
"icon": icons8_light_on,
|
61
61
|
"tip": _("Runs outline on selection"),
|
62
62
|
"identifier": "light_default",
|
63
63
|
"multi": [
|
64
64
|
{
|
65
65
|
"identifier": "live-full",
|
66
66
|
"label": _("Live Full"),
|
67
|
-
"icon":
|
67
|
+
"icon": icons8_computer_support,
|
68
68
|
"action": lambda e: service("full-light\n"),
|
69
69
|
},
|
70
70
|
{
|
71
71
|
"identifier": "live-regmark",
|
72
72
|
"label": _("Regmarks"),
|
73
|
-
"icon":
|
73
|
+
"icon": icons8_computer_support,
|
74
74
|
"action": lambda e: service("regmark-light\n"),
|
75
75
|
},
|
76
76
|
{
|
@@ -81,7 +81,7 @@ def plugin(service, lifecycle):
|
|
81
81
|
{
|
82
82
|
"identifier": "live-hull",
|
83
83
|
"label": _("Live Hull"),
|
84
|
-
"icon":
|
84
|
+
"icon": icons8_computer_support,
|
85
85
|
"action": lambda e: service("hull-light\n"),
|
86
86
|
},
|
87
87
|
{
|
@@ -107,7 +107,7 @@ def plugin(service, lifecycle):
|
|
107
107
|
],
|
108
108
|
"toggle": {
|
109
109
|
"label": _("Stop Tracing..."),
|
110
|
-
"icon":
|
110
|
+
"icon": icons8_light_off,
|
111
111
|
"tip": _("Turn light off"),
|
112
112
|
"action": lambda v: service("stop\n"),
|
113
113
|
"signal": "light_simulate",
|
@@ -118,13 +118,13 @@ def plugin(service, lifecycle):
|
|
118
118
|
"button/control/Redlight",
|
119
119
|
{
|
120
120
|
"label": _("Red Dot On"),
|
121
|
-
"icon":
|
121
|
+
"icon": icons8_flash_on,
|
122
122
|
"tip": _("Turn Redlight On"),
|
123
123
|
"action": lambda v: service("red on\n"),
|
124
124
|
"toggle": {
|
125
125
|
"label": _("Red Dot Off"),
|
126
126
|
"action": lambda v: service("red off\n"),
|
127
|
-
"icon":
|
127
|
+
"icon": icons8_flash_off,
|
128
128
|
},
|
129
129
|
},
|
130
130
|
)
|
@@ -132,7 +132,7 @@ def plugin(service, lifecycle):
|
|
132
132
|
"button/control/Center",
|
133
133
|
{
|
134
134
|
"label": _("Center"),
|
135
|
-
"icon":
|
135
|
+
"icon": icons8_center_of_gravity,
|
136
136
|
"tip": _("Center selection on laserbed"),
|
137
137
|
"action": lambda v: service("align bed group xy center center\n"),
|
138
138
|
},
|
@@ -4,10 +4,11 @@ import wx
|
|
4
4
|
from wx import aui
|
5
5
|
|
6
6
|
from meerk40t.gui.icons import (
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
get_default_icon_size,
|
8
|
+
icons8_camera,
|
9
|
+
icons8_connected,
|
10
|
+
icons8_detective,
|
11
|
+
icons8_image_in_frame,
|
11
12
|
)
|
12
13
|
from meerk40t.gui.mwindow import MWindow
|
13
14
|
from meerk40t.gui.scene.sceneconst import (
|
@@ -75,13 +76,17 @@ class CameraPanel(wx.Panel, Job):
|
|
75
76
|
|
76
77
|
if not pane:
|
77
78
|
self.button_update = wx.BitmapButton(
|
78
|
-
self, wx.ID_ANY,
|
79
|
+
self, wx.ID_ANY, icons8_camera.GetBitmap(resize=get_default_icon_size())
|
79
80
|
)
|
80
81
|
self.button_export = wx.BitmapButton(
|
81
|
-
self,
|
82
|
+
self,
|
83
|
+
wx.ID_ANY,
|
84
|
+
icons8_image_in_frame.GetBitmap(resize=get_default_icon_size()),
|
82
85
|
)
|
83
86
|
self.button_reconnect = wx.BitmapButton(
|
84
|
-
self,
|
87
|
+
self,
|
88
|
+
wx.ID_ANY,
|
89
|
+
icons8_connected.GetBitmap(resize=get_default_icon_size()),
|
85
90
|
)
|
86
91
|
self.check_fisheye = wx.CheckBox(self, wx.ID_ANY, _("Correct Fisheye"))
|
87
92
|
self.check_perspective = wx.CheckBox(
|
@@ -96,7 +101,9 @@ class CameraPanel(wx.Panel, Job):
|
|
96
101
|
style=wx.SL_AUTOTICKS | wx.SL_HORIZONTAL | wx.SL_LABELS,
|
97
102
|
)
|
98
103
|
self.button_detect = wx.BitmapButton(
|
99
|
-
self,
|
104
|
+
self,
|
105
|
+
wx.ID_ANY,
|
106
|
+
icons8_detective.GetBitmap(resize=get_default_icon_size()),
|
100
107
|
)
|
101
108
|
scene_name = f"Camera{self.index}"
|
102
109
|
else:
|
@@ -725,7 +732,7 @@ class CameraInterface(MWindow):
|
|
725
732
|
# ==========
|
726
733
|
|
727
734
|
_icon = wx.NullIcon
|
728
|
-
_icon.CopyFromBitmap(
|
735
|
+
_icon.CopyFromBitmap(icons8_camera.GetBitmap())
|
729
736
|
self.SetIcon(_icon)
|
730
737
|
self.SetTitle(_("CameraInterface {index}").format(index=index))
|
731
738
|
self.Layout()
|
@@ -800,7 +807,7 @@ class CameraInterface(MWindow):
|
|
800
807
|
"button/preparation/Camera",
|
801
808
|
{
|
802
809
|
"label": _("Camera"),
|
803
|
-
"icon":
|
810
|
+
"icon": icons8_camera,
|
804
811
|
"tip": _("Opens Camera Window"),
|
805
812
|
"identifier": "camera_id",
|
806
813
|
"action": camera_click(),
|
@@ -1072,7 +1079,7 @@ class CameraURI(MWindow):
|
|
1072
1079
|
|
1073
1080
|
self.panel = CameraURIPanel(self, wx.ID_ANY, context=self.context, index=index)
|
1074
1081
|
_icon = wx.NullIcon
|
1075
|
-
_icon.CopyFromBitmap(
|
1082
|
+
_icon.CopyFromBitmap(icons8_camera.GetBitmap())
|
1076
1083
|
self.SetIcon(_icon)
|
1077
1084
|
# begin wxGlade: CameraURI.__set_properties
|
1078
1085
|
self.SetTitle(_("URI Manager"))
|
@@ -28,7 +28,9 @@ class RasterCut(CutObject):
|
|
28
28
|
CutObject.__init__(
|
29
29
|
self, settings=settings, passes=passes, parent=parent, color=color
|
30
30
|
)
|
31
|
-
|
31
|
+
if image.mode not in ("L", "1"):
|
32
|
+
image = image.convert("L")
|
33
|
+
# assert image.mode in ("L", "1")
|
32
34
|
self.first = True # Raster cuts are always first within themselves.
|
33
35
|
self.image = image
|
34
36
|
self.offset_x = offset_x
|