meerk40t 0.9.3001__py2.py3-none-any.whl → 0.9.7020__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/__init__.py +1 -1
- meerk40t/balormk/balor_params.py +167 -167
- meerk40t/balormk/clone_loader.py +457 -457
- meerk40t/balormk/controller.py +1566 -1512
- meerk40t/balormk/cylindermod.py +64 -0
- meerk40t/balormk/device.py +966 -1959
- meerk40t/balormk/driver.py +778 -591
- meerk40t/balormk/galvo_commands.py +1194 -0
- meerk40t/balormk/gui/balorconfig.py +237 -111
- meerk40t/balormk/gui/balorcontroller.py +191 -184
- meerk40t/balormk/gui/baloroperationproperties.py +116 -115
- meerk40t/balormk/gui/corscene.py +845 -0
- meerk40t/balormk/gui/gui.py +179 -147
- meerk40t/balormk/livelightjob.py +466 -382
- meerk40t/balormk/mock_connection.py +131 -109
- meerk40t/balormk/plugin.py +133 -135
- meerk40t/balormk/usb_connection.py +306 -301
- meerk40t/camera/__init__.py +1 -1
- meerk40t/camera/camera.py +514 -397
- meerk40t/camera/gui/camerapanel.py +1241 -1095
- meerk40t/camera/gui/gui.py +58 -58
- meerk40t/camera/plugin.py +441 -399
- meerk40t/ch341/__init__.py +27 -27
- meerk40t/ch341/ch341device.py +628 -628
- meerk40t/ch341/libusb.py +595 -589
- meerk40t/ch341/mock.py +171 -171
- meerk40t/ch341/windriver.py +157 -157
- meerk40t/constants.py +13 -0
- meerk40t/core/__init__.py +1 -1
- meerk40t/core/bindalias.py +550 -539
- meerk40t/core/core.py +47 -47
- meerk40t/core/cutcode/cubiccut.py +73 -73
- meerk40t/core/cutcode/cutcode.py +315 -312
- meerk40t/core/cutcode/cutgroup.py +141 -137
- meerk40t/core/cutcode/cutobject.py +192 -185
- meerk40t/core/cutcode/dwellcut.py +37 -37
- meerk40t/core/cutcode/gotocut.py +29 -29
- meerk40t/core/cutcode/homecut.py +29 -29
- meerk40t/core/cutcode/inputcut.py +34 -34
- meerk40t/core/cutcode/linecut.py +33 -33
- meerk40t/core/cutcode/outputcut.py +34 -34
- meerk40t/core/cutcode/plotcut.py +335 -335
- meerk40t/core/cutcode/quadcut.py +61 -61
- meerk40t/core/cutcode/rastercut.py +168 -148
- meerk40t/core/cutcode/waitcut.py +34 -34
- meerk40t/core/cutplan.py +1843 -1316
- meerk40t/core/drivers.py +330 -329
- meerk40t/core/elements/align.py +801 -669
- meerk40t/core/elements/branches.py +1858 -1507
- meerk40t/core/elements/clipboard.py +229 -219
- meerk40t/core/elements/element_treeops.py +4595 -2837
- meerk40t/core/elements/element_types.py +125 -105
- meerk40t/core/elements/elements.py +4315 -3617
- meerk40t/core/elements/files.py +117 -64
- meerk40t/core/elements/geometry.py +473 -224
- meerk40t/core/elements/grid.py +467 -316
- meerk40t/core/elements/materials.py +158 -94
- meerk40t/core/elements/notes.py +50 -38
- meerk40t/core/elements/offset_clpr.py +934 -912
- meerk40t/core/elements/offset_mk.py +963 -955
- meerk40t/core/elements/penbox.py +339 -267
- meerk40t/core/elements/placements.py +300 -83
- meerk40t/core/elements/render.py +785 -687
- meerk40t/core/elements/shapes.py +2618 -2092
- meerk40t/core/elements/testcases.py +105 -0
- meerk40t/core/elements/trace.py +651 -563
- meerk40t/core/elements/tree_commands.py +415 -409
- meerk40t/core/elements/undo_redo.py +116 -58
- meerk40t/core/elements/wordlist.py +319 -200
- meerk40t/core/exceptions.py +9 -9
- meerk40t/core/laserjob.py +220 -220
- meerk40t/core/logging.py +63 -63
- meerk40t/core/node/blobnode.py +83 -86
- meerk40t/core/node/bootstrap.py +105 -103
- meerk40t/core/node/branch_elems.py +40 -31
- meerk40t/core/node/branch_ops.py +45 -38
- meerk40t/core/node/branch_regmark.py +48 -41
- meerk40t/core/node/cutnode.py +29 -32
- meerk40t/core/node/effect_hatch.py +375 -257
- meerk40t/core/node/effect_warp.py +398 -0
- meerk40t/core/node/effect_wobble.py +441 -309
- meerk40t/core/node/elem_ellipse.py +404 -309
- meerk40t/core/node/elem_image.py +1082 -801
- meerk40t/core/node/elem_line.py +358 -292
- meerk40t/core/node/elem_path.py +259 -201
- meerk40t/core/node/elem_point.py +129 -102
- meerk40t/core/node/elem_polyline.py +310 -246
- meerk40t/core/node/elem_rect.py +376 -286
- meerk40t/core/node/elem_text.py +445 -418
- meerk40t/core/node/filenode.py +59 -40
- meerk40t/core/node/groupnode.py +138 -74
- meerk40t/core/node/image_processed.py +777 -766
- meerk40t/core/node/image_raster.py +156 -113
- meerk40t/core/node/layernode.py +31 -31
- meerk40t/core/node/mixins.py +135 -107
- meerk40t/core/node/node.py +1427 -1304
- meerk40t/core/node/nutils.py +117 -114
- meerk40t/core/node/op_cut.py +463 -335
- meerk40t/core/node/op_dots.py +296 -251
- meerk40t/core/node/op_engrave.py +414 -311
- meerk40t/core/node/op_image.py +755 -369
- meerk40t/core/node/op_raster.py +787 -522
- meerk40t/core/node/place_current.py +37 -40
- meerk40t/core/node/place_point.py +329 -126
- meerk40t/core/node/refnode.py +58 -47
- meerk40t/core/node/rootnode.py +225 -219
- meerk40t/core/node/util_console.py +48 -48
- meerk40t/core/node/util_goto.py +84 -65
- meerk40t/core/node/util_home.py +61 -61
- meerk40t/core/node/util_input.py +102 -102
- meerk40t/core/node/util_output.py +102 -102
- meerk40t/core/node/util_wait.py +65 -65
- meerk40t/core/parameters.py +709 -707
- meerk40t/core/planner.py +875 -785
- meerk40t/core/plotplanner.py +656 -652
- meerk40t/core/space.py +120 -113
- meerk40t/core/spoolers.py +706 -705
- meerk40t/core/svg_io.py +1836 -1549
- meerk40t/core/treeop.py +534 -445
- meerk40t/core/undos.py +278 -124
- meerk40t/core/units.py +784 -680
- meerk40t/core/view.py +393 -322
- meerk40t/core/webhelp.py +62 -62
- meerk40t/core/wordlist.py +513 -504
- meerk40t/cylinder/cylinder.py +247 -0
- meerk40t/cylinder/gui/cylindersettings.py +41 -0
- meerk40t/cylinder/gui/gui.py +24 -0
- meerk40t/device/__init__.py +1 -1
- meerk40t/device/basedevice.py +322 -123
- meerk40t/device/devicechoices.py +50 -0
- meerk40t/device/dummydevice.py +163 -128
- meerk40t/device/gui/defaultactions.py +618 -602
- meerk40t/device/gui/effectspanel.py +114 -0
- meerk40t/device/gui/formatterpanel.py +253 -290
- meerk40t/device/gui/warningpanel.py +337 -260
- meerk40t/device/mixins.py +13 -13
- meerk40t/dxf/__init__.py +1 -1
- meerk40t/dxf/dxf_io.py +766 -554
- meerk40t/dxf/plugin.py +47 -35
- meerk40t/external_plugins.py +79 -79
- meerk40t/external_plugins_build.py +28 -28
- meerk40t/extra/cag.py +112 -116
- meerk40t/extra/coolant.py +403 -0
- meerk40t/extra/encode_detect.py +204 -0
- meerk40t/extra/ezd.py +1165 -1165
- meerk40t/extra/hershey.py +834 -340
- meerk40t/extra/imageactions.py +322 -316
- meerk40t/extra/inkscape.py +628 -622
- meerk40t/extra/lbrn.py +424 -424
- meerk40t/extra/outerworld.py +283 -0
- meerk40t/extra/param_functions.py +1542 -1556
- meerk40t/extra/potrace.py +257 -253
- meerk40t/extra/serial_exchange.py +118 -0
- meerk40t/extra/updater.py +602 -453
- meerk40t/extra/vectrace.py +147 -146
- meerk40t/extra/winsleep.py +83 -83
- meerk40t/extra/xcs_reader.py +597 -0
- meerk40t/fill/fills.py +781 -335
- meerk40t/fill/patternfill.py +1061 -1061
- meerk40t/fill/patterns.py +614 -567
- meerk40t/grbl/control.py +87 -87
- meerk40t/grbl/controller.py +990 -903
- meerk40t/grbl/device.py +1084 -768
- meerk40t/grbl/driver.py +989 -771
- meerk40t/grbl/emulator.py +532 -497
- meerk40t/grbl/gcodejob.py +783 -767
- meerk40t/grbl/gui/grblconfiguration.py +373 -298
- meerk40t/grbl/gui/grblcontroller.py +485 -271
- meerk40t/grbl/gui/grblhardwareconfig.py +269 -153
- meerk40t/grbl/gui/grbloperationconfig.py +105 -0
- meerk40t/grbl/gui/gui.py +147 -116
- meerk40t/grbl/interpreter.py +44 -44
- meerk40t/grbl/loader.py +22 -22
- meerk40t/grbl/mock_connection.py +56 -56
- meerk40t/grbl/plugin.py +294 -264
- meerk40t/grbl/serial_connection.py +93 -88
- meerk40t/grbl/tcp_connection.py +81 -79
- meerk40t/grbl/ws_connection.py +112 -0
- meerk40t/gui/__init__.py +1 -1
- meerk40t/gui/about.py +2042 -296
- meerk40t/gui/alignment.py +1644 -1608
- meerk40t/gui/autoexec.py +199 -0
- meerk40t/gui/basicops.py +791 -670
- meerk40t/gui/bufferview.py +77 -71
- meerk40t/gui/busy.py +232 -133
- meerk40t/gui/choicepropertypanel.py +1662 -1469
- meerk40t/gui/consolepanel.py +706 -542
- meerk40t/gui/devicepanel.py +687 -581
- meerk40t/gui/dialogoptions.py +110 -107
- meerk40t/gui/executejob.py +316 -306
- meerk40t/gui/fonts.py +90 -90
- meerk40t/gui/functionwrapper.py +252 -0
- meerk40t/gui/gui_mixins.py +729 -0
- meerk40t/gui/guicolors.py +205 -182
- meerk40t/gui/help_assets/help_assets.py +218 -201
- meerk40t/gui/helper.py +154 -0
- meerk40t/gui/hersheymanager.py +1440 -846
- meerk40t/gui/icons.py +3422 -2747
- meerk40t/gui/imagesplitter.py +555 -508
- meerk40t/gui/keymap.py +354 -344
- meerk40t/gui/laserpanel.py +897 -806
- meerk40t/gui/laserrender.py +1470 -1232
- meerk40t/gui/lasertoolpanel.py +805 -793
- meerk40t/gui/magnetoptions.py +436 -0
- meerk40t/gui/materialmanager.py +2944 -0
- meerk40t/gui/materialtest.py +1722 -1694
- meerk40t/gui/mkdebug.py +646 -359
- meerk40t/gui/mwindow.py +163 -140
- meerk40t/gui/navigationpanels.py +2605 -2467
- meerk40t/gui/notes.py +143 -142
- meerk40t/gui/opassignment.py +414 -410
- meerk40t/gui/operation_info.py +310 -299
- meerk40t/gui/plugin.py +500 -328
- meerk40t/gui/position.py +714 -669
- meerk40t/gui/preferences.py +901 -650
- meerk40t/gui/propertypanels/attributes.py +1461 -1131
- meerk40t/gui/propertypanels/blobproperty.py +117 -114
- meerk40t/gui/propertypanels/consoleproperty.py +83 -80
- meerk40t/gui/propertypanels/gotoproperty.py +77 -0
- meerk40t/gui/propertypanels/groupproperties.py +223 -217
- meerk40t/gui/propertypanels/hatchproperty.py +489 -469
- meerk40t/gui/propertypanels/imageproperty.py +2244 -1384
- meerk40t/gui/propertypanels/inputproperty.py +59 -58
- meerk40t/gui/propertypanels/opbranchproperties.py +82 -80
- meerk40t/gui/propertypanels/operationpropertymain.py +1890 -1638
- meerk40t/gui/propertypanels/outputproperty.py +59 -58
- meerk40t/gui/propertypanels/pathproperty.py +389 -380
- meerk40t/gui/propertypanels/placementproperty.py +1214 -383
- meerk40t/gui/propertypanels/pointproperty.py +140 -136
- meerk40t/gui/propertypanels/propertywindow.py +313 -181
- meerk40t/gui/propertypanels/rasterwizardpanels.py +996 -912
- meerk40t/gui/propertypanels/regbranchproperties.py +76 -0
- meerk40t/gui/propertypanels/textproperty.py +770 -755
- meerk40t/gui/propertypanels/waitproperty.py +56 -55
- meerk40t/gui/propertypanels/warpproperty.py +121 -0
- meerk40t/gui/propertypanels/wobbleproperty.py +255 -204
- meerk40t/gui/ribbon.py +2471 -2210
- meerk40t/gui/scene/scene.py +1100 -1051
- meerk40t/gui/scene/sceneconst.py +22 -22
- meerk40t/gui/scene/scenepanel.py +439 -349
- meerk40t/gui/scene/scenespacewidget.py +365 -365
- meerk40t/gui/scene/widget.py +518 -505
- meerk40t/gui/scenewidgets/affinemover.py +215 -215
- meerk40t/gui/scenewidgets/attractionwidget.py +315 -309
- meerk40t/gui/scenewidgets/bedwidget.py +120 -97
- meerk40t/gui/scenewidgets/elementswidget.py +137 -107
- meerk40t/gui/scenewidgets/gridwidget.py +785 -745
- meerk40t/gui/scenewidgets/guidewidget.py +765 -765
- meerk40t/gui/scenewidgets/laserpathwidget.py +66 -66
- meerk40t/gui/scenewidgets/machineoriginwidget.py +86 -86
- meerk40t/gui/scenewidgets/nodeselector.py +28 -28
- meerk40t/gui/scenewidgets/rectselectwidget.py +592 -346
- meerk40t/gui/scenewidgets/relocatewidget.py +33 -33
- meerk40t/gui/scenewidgets/reticlewidget.py +83 -83
- meerk40t/gui/scenewidgets/selectionwidget.py +2958 -2756
- meerk40t/gui/simpleui.py +362 -333
- meerk40t/gui/simulation.py +2451 -2094
- meerk40t/gui/snapoptions.py +208 -203
- meerk40t/gui/spoolerpanel.py +1227 -1180
- meerk40t/gui/statusbarwidgets/defaultoperations.py +480 -353
- meerk40t/gui/statusbarwidgets/infowidget.py +520 -483
- meerk40t/gui/statusbarwidgets/opassignwidget.py +356 -355
- meerk40t/gui/statusbarwidgets/selectionwidget.py +172 -171
- meerk40t/gui/statusbarwidgets/shapepropwidget.py +754 -236
- meerk40t/gui/statusbarwidgets/statusbar.py +272 -260
- meerk40t/gui/statusbarwidgets/statusbarwidget.py +268 -270
- meerk40t/gui/statusbarwidgets/strokewidget.py +267 -251
- meerk40t/gui/themes.py +200 -78
- meerk40t/gui/tips.py +590 -0
- meerk40t/gui/toolwidgets/circlebrush.py +35 -35
- meerk40t/gui/toolwidgets/toolcircle.py +248 -242
- meerk40t/gui/toolwidgets/toolcontainer.py +82 -77
- meerk40t/gui/toolwidgets/tooldraw.py +97 -90
- meerk40t/gui/toolwidgets/toolellipse.py +219 -212
- meerk40t/gui/toolwidgets/toolimagecut.py +25 -132
- meerk40t/gui/toolwidgets/toolline.py +39 -144
- meerk40t/gui/toolwidgets/toollinetext.py +79 -236
- meerk40t/gui/toolwidgets/toollinetext_inline.py +296 -0
- meerk40t/gui/toolwidgets/toolmeasure.py +163 -216
- meerk40t/gui/toolwidgets/toolnodeedit.py +2088 -2074
- meerk40t/gui/toolwidgets/toolnodemove.py +92 -94
- meerk40t/gui/toolwidgets/toolparameter.py +754 -668
- meerk40t/gui/toolwidgets/toolplacement.py +108 -108
- meerk40t/gui/toolwidgets/toolpoint.py +68 -59
- meerk40t/gui/toolwidgets/toolpointlistbuilder.py +294 -0
- meerk40t/gui/toolwidgets/toolpointmove.py +183 -0
- meerk40t/gui/toolwidgets/toolpolygon.py +288 -403
- meerk40t/gui/toolwidgets/toolpolyline.py +38 -196
- meerk40t/gui/toolwidgets/toolrect.py +211 -207
- meerk40t/gui/toolwidgets/toolrelocate.py +72 -72
- meerk40t/gui/toolwidgets/toolribbon.py +598 -113
- meerk40t/gui/toolwidgets/tooltabedit.py +546 -0
- meerk40t/gui/toolwidgets/tooltext.py +98 -89
- meerk40t/gui/toolwidgets/toolvector.py +213 -204
- meerk40t/gui/toolwidgets/toolwidget.py +39 -39
- meerk40t/gui/usbconnect.py +98 -91
- meerk40t/gui/utilitywidgets/buttonwidget.py +18 -18
- meerk40t/gui/utilitywidgets/checkboxwidget.py +90 -90
- meerk40t/gui/utilitywidgets/controlwidget.py +14 -14
- meerk40t/gui/utilitywidgets/cyclocycloidwidget.py +343 -340
- meerk40t/gui/utilitywidgets/debugwidgets.py +148 -0
- meerk40t/gui/utilitywidgets/handlewidget.py +27 -27
- meerk40t/gui/utilitywidgets/harmonograph.py +450 -447
- meerk40t/gui/utilitywidgets/openclosewidget.py +40 -40
- meerk40t/gui/utilitywidgets/rotationwidget.py +54 -54
- meerk40t/gui/utilitywidgets/scalewidget.py +75 -75
- meerk40t/gui/utilitywidgets/seekbarwidget.py +183 -183
- meerk40t/gui/utilitywidgets/togglewidget.py +142 -142
- meerk40t/gui/utilitywidgets/toolbarwidget.py +8 -8
- meerk40t/gui/wordlisteditor.py +985 -931
- meerk40t/gui/wxmeerk40t.py +1447 -1169
- meerk40t/gui/wxmmain.py +5644 -4112
- meerk40t/gui/wxmribbon.py +1591 -1076
- meerk40t/gui/wxmscene.py +1631 -1453
- meerk40t/gui/wxmtree.py +2416 -2089
- meerk40t/gui/wxutils.py +1769 -1099
- meerk40t/gui/zmatrix.py +102 -102
- meerk40t/image/__init__.py +1 -1
- meerk40t/image/dither.py +429 -0
- meerk40t/image/imagetools.py +2793 -2269
- meerk40t/internal_plugins.py +150 -130
- meerk40t/kernel/__init__.py +63 -12
- meerk40t/kernel/channel.py +259 -212
- meerk40t/kernel/context.py +538 -538
- meerk40t/kernel/exceptions.py +41 -41
- meerk40t/kernel/functions.py +463 -414
- meerk40t/kernel/jobs.py +100 -100
- meerk40t/kernel/kernel.py +3828 -3571
- meerk40t/kernel/lifecycles.py +71 -71
- meerk40t/kernel/module.py +49 -49
- meerk40t/kernel/service.py +147 -147
- meerk40t/kernel/settings.py +383 -343
- meerk40t/lihuiyu/controller.py +883 -876
- meerk40t/lihuiyu/device.py +1181 -1069
- meerk40t/lihuiyu/driver.py +1466 -1372
- meerk40t/lihuiyu/gui/gui.py +127 -106
- meerk40t/lihuiyu/gui/lhyaccelgui.py +377 -363
- meerk40t/lihuiyu/gui/lhycontrollergui.py +741 -651
- meerk40t/lihuiyu/gui/lhydrivergui.py +470 -446
- meerk40t/lihuiyu/gui/lhyoperationproperties.py +238 -237
- meerk40t/lihuiyu/gui/tcpcontroller.py +226 -190
- meerk40t/lihuiyu/interpreter.py +53 -53
- meerk40t/lihuiyu/laserspeed.py +450 -450
- meerk40t/lihuiyu/loader.py +90 -90
- meerk40t/lihuiyu/parser.py +404 -404
- meerk40t/lihuiyu/plugin.py +101 -102
- meerk40t/lihuiyu/tcp_connection.py +111 -109
- meerk40t/main.py +231 -165
- meerk40t/moshi/builder.py +788 -781
- meerk40t/moshi/controller.py +505 -499
- meerk40t/moshi/device.py +495 -442
- meerk40t/moshi/driver.py +862 -696
- meerk40t/moshi/gui/gui.py +78 -76
- meerk40t/moshi/gui/moshicontrollergui.py +538 -522
- meerk40t/moshi/gui/moshidrivergui.py +87 -75
- meerk40t/moshi/plugin.py +43 -43
- meerk40t/network/console_server.py +140 -57
- meerk40t/network/kernelserver.py +10 -9
- meerk40t/network/tcp_server.py +142 -140
- meerk40t/network/udp_server.py +103 -77
- meerk40t/network/web_server.py +404 -0
- meerk40t/newly/controller.py +1158 -1144
- meerk40t/newly/device.py +874 -732
- meerk40t/newly/driver.py +540 -412
- meerk40t/newly/gui/gui.py +219 -188
- meerk40t/newly/gui/newlyconfig.py +116 -101
- meerk40t/newly/gui/newlycontroller.py +193 -186
- meerk40t/newly/gui/operationproperties.py +51 -51
- meerk40t/newly/mock_connection.py +82 -82
- meerk40t/newly/newly_params.py +56 -56
- meerk40t/newly/plugin.py +1214 -1246
- meerk40t/newly/usb_connection.py +322 -322
- meerk40t/rotary/gui/gui.py +52 -46
- meerk40t/rotary/gui/rotarysettings.py +240 -232
- meerk40t/rotary/rotary.py +202 -98
- meerk40t/ruida/control.py +291 -91
- meerk40t/ruida/controller.py +138 -1088
- meerk40t/ruida/device.py +676 -231
- meerk40t/ruida/driver.py +534 -472
- meerk40t/ruida/emulator.py +1494 -1491
- meerk40t/ruida/exceptions.py +4 -4
- meerk40t/ruida/gui/gui.py +71 -76
- meerk40t/ruida/gui/ruidaconfig.py +239 -72
- meerk40t/ruida/gui/ruidacontroller.py +187 -184
- meerk40t/ruida/gui/ruidaoperationproperties.py +48 -47
- meerk40t/ruida/loader.py +54 -52
- meerk40t/ruida/mock_connection.py +57 -109
- meerk40t/ruida/plugin.py +124 -87
- meerk40t/ruida/rdjob.py +2084 -945
- meerk40t/ruida/serial_connection.py +116 -0
- meerk40t/ruida/tcp_connection.py +146 -0
- meerk40t/ruida/udp_connection.py +73 -0
- meerk40t/svgelements.py +9671 -9669
- meerk40t/tools/driver_to_path.py +584 -579
- meerk40t/tools/geomstr.py +5583 -4680
- meerk40t/tools/jhfparser.py +357 -292
- meerk40t/tools/kerftest.py +904 -890
- meerk40t/tools/livinghinges.py +1168 -1033
- meerk40t/tools/pathtools.py +987 -949
- meerk40t/tools/pmatrix.py +234 -0
- meerk40t/tools/pointfinder.py +942 -942
- meerk40t/tools/polybool.py +941 -940
- meerk40t/tools/rasterplotter.py +1660 -547
- meerk40t/tools/shxparser.py +1047 -901
- meerk40t/tools/ttfparser.py +726 -446
- meerk40t/tools/zinglplotter.py +595 -593
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7020.dist-info}/LICENSE +21 -21
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7020.dist-info}/METADATA +150 -139
- meerk40t-0.9.7020.dist-info/RECORD +446 -0
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7020.dist-info}/WHEEL +1 -1
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7020.dist-info}/top_level.txt +0 -1
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7020.dist-info}/zip-safe +1 -1
- meerk40t/balormk/elementlightjob.py +0 -159
- meerk40t-0.9.3001.dist-info/RECORD +0 -437
- test/bootstrap.py +0 -63
- test/test_cli.py +0 -12
- test/test_core_cutcode.py +0 -418
- test/test_core_elements.py +0 -144
- test/test_core_plotplanner.py +0 -397
- test/test_core_viewports.py +0 -312
- test/test_drivers_grbl.py +0 -108
- test/test_drivers_lihuiyu.py +0 -443
- test/test_drivers_newly.py +0 -113
- test/test_element_degenerate_points.py +0 -43
- test/test_elements_classify.py +0 -97
- test/test_elements_penbox.py +0 -22
- test/test_file_svg.py +0 -176
- test/test_fill.py +0 -155
- test/test_geomstr.py +0 -1523
- test/test_geomstr_nodes.py +0 -18
- test/test_imagetools_actualize.py +0 -306
- test/test_imagetools_wizard.py +0 -258
- test/test_kernel.py +0 -200
- test/test_laser_speeds.py +0 -3303
- test/test_length.py +0 -57
- test/test_lifecycle.py +0 -66
- test/test_operations.py +0 -251
- test/test_operations_hatch.py +0 -57
- test/test_ruida.py +0 -19
- test/test_spooler.py +0 -22
- test/test_tools_rasterplotter.py +0 -29
- test/test_wobble.py +0 -133
- test/test_zingl.py +0 -124
- {test → meerk40t/cylinder}/__init__.py +0 -0
- /meerk40t/{core/element_commands.py → cylinder/gui/__init__.py} +0 -0
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7020.dist-info}/entry_points.txt +0 -0
meerk40t/grbl/gui/gui.py
CHANGED
@@ -1,116 +1,147 @@
|
|
1
|
-
def plugin(service, lifecycle):
|
2
|
-
if lifecycle == "invalidate":
|
3
|
-
try:
|
4
|
-
import serial # pylint: disable=unused-import
|
5
|
-
except ImportError:
|
6
|
-
return True
|
7
|
-
return not service.has_feature("wx")
|
8
|
-
if lifecycle == "service":
|
9
|
-
return "provider/device/grbl"
|
10
|
-
|
11
|
-
if lifecycle == "assigned":
|
12
|
-
service("window toggle Configuration\n")
|
13
|
-
|
14
|
-
if lifecycle == "added":
|
15
|
-
from meerk40t.grbl.gui.grblconfiguration import GRBLConfiguration
|
16
|
-
from meerk40t.grbl.gui.grblcontroller import GRBLController
|
17
|
-
from meerk40t.grbl.gui.grblhardwareconfig import GRBLHardwareConfig
|
18
|
-
from meerk40t.gui.
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
service.register("
|
32
|
-
|
33
|
-
|
34
|
-
service.register("
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
service.register(
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
"
|
51
|
-
"
|
52
|
-
"
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
"
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
"
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
"
|
88
|
-
"
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
"
|
105
|
-
"
|
106
|
-
"
|
107
|
-
"action": lambda v: service("
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
1
|
+
def plugin(service, lifecycle):
|
2
|
+
if lifecycle == "invalidate":
|
3
|
+
try:
|
4
|
+
import serial # pylint: disable=unused-import
|
5
|
+
except ImportError:
|
6
|
+
return True
|
7
|
+
return not service.has_feature("wx")
|
8
|
+
if lifecycle == "service":
|
9
|
+
return "provider/device/grbl"
|
10
|
+
|
11
|
+
if lifecycle == "assigned":
|
12
|
+
service("window toggle Configuration\n")
|
13
|
+
|
14
|
+
if lifecycle == "added":
|
15
|
+
from meerk40t.grbl.gui.grblconfiguration import GRBLConfiguration
|
16
|
+
from meerk40t.grbl.gui.grblcontroller import GRBLController
|
17
|
+
from meerk40t.grbl.gui.grblhardwareconfig import GRBLHardwareConfig
|
18
|
+
from meerk40t.grbl.gui.grbloperationconfig import GRBLAdvancedPanel
|
19
|
+
from meerk40t.gui.icons import (
|
20
|
+
icons8_computer_support,
|
21
|
+
icons8_connected,
|
22
|
+
icons8_emergency_stop_button,
|
23
|
+
icons8_flash_off,
|
24
|
+
icons8_flash_on,
|
25
|
+
icons8_info,
|
26
|
+
icons8_pause,
|
27
|
+
icons8_home_filled,
|
28
|
+
)
|
29
|
+
|
30
|
+
service.register("window/GRBLController", GRBLController)
|
31
|
+
service.register("winpath/GRBLController", service)
|
32
|
+
|
33
|
+
service.register("window/Configuration", GRBLConfiguration)
|
34
|
+
service.register("winpath/Configuration", service)
|
35
|
+
|
36
|
+
service.register("window/GrblHardwareConfig", GRBLHardwareConfig)
|
37
|
+
|
38
|
+
service.register("property/RasterOpNode/GRBL", GRBLAdvancedPanel)
|
39
|
+
service.register("property/CutOpNode/GRBL", GRBLAdvancedPanel)
|
40
|
+
service.register("property/EngraveOpNode/GRBL", GRBLAdvancedPanel)
|
41
|
+
service.register("property/ImageOpNode/GRBL", GRBLAdvancedPanel)
|
42
|
+
service.register("property/DotsOpNode/GRBL", GRBLAdvancedPanel)
|
43
|
+
_ = service._
|
44
|
+
|
45
|
+
service.register(
|
46
|
+
"button/control/Controller",
|
47
|
+
{
|
48
|
+
"label": _("Controller"),
|
49
|
+
"icon": icons8_connected,
|
50
|
+
"tip": _("Opens Controller Window"),
|
51
|
+
"help": "devicegrbl",
|
52
|
+
"action": lambda v: service("window toggle GRBLController\n"),
|
53
|
+
},
|
54
|
+
)
|
55
|
+
kernel = service.kernel
|
56
|
+
if not (
|
57
|
+
hasattr(kernel.args, "lock_device_config")
|
58
|
+
and kernel.args.lock_device_config
|
59
|
+
):
|
60
|
+
service.register(
|
61
|
+
"button/device/Configuration",
|
62
|
+
{
|
63
|
+
"label": _("Config"),
|
64
|
+
"icon": icons8_computer_support,
|
65
|
+
"tip": _("Opens device-specific configuration window"),
|
66
|
+
"help": "devicegrbl",
|
67
|
+
"action": lambda v: service("window toggle Configuration\n"),
|
68
|
+
},
|
69
|
+
)
|
70
|
+
service.register(
|
71
|
+
"button/control/Pause",
|
72
|
+
{
|
73
|
+
"label": _("Pause"),
|
74
|
+
"icon": icons8_pause,
|
75
|
+
"tip": _("Pause the laser"),
|
76
|
+
"help": "devicegrbl",
|
77
|
+
"action": lambda v: service("pause\n"),
|
78
|
+
},
|
79
|
+
)
|
80
|
+
|
81
|
+
service.register(
|
82
|
+
"button/control/Stop",
|
83
|
+
{
|
84
|
+
"label": _("Stop"),
|
85
|
+
"icon": icons8_emergency_stop_button,
|
86
|
+
"tip": _("Emergency stop the laser"),
|
87
|
+
"help": "devicegrbl",
|
88
|
+
"action": lambda v: service("estop\n"),
|
89
|
+
},
|
90
|
+
)
|
91
|
+
|
92
|
+
def has_red_dot_enabled():
|
93
|
+
# Does the current device have an active use_red_dot?
|
94
|
+
res = False
|
95
|
+
if hasattr(service, "use_red_dot"):
|
96
|
+
if service.use_red_dot:
|
97
|
+
res = True
|
98
|
+
return res
|
99
|
+
|
100
|
+
service.register(
|
101
|
+
"button/control/Redlight",
|
102
|
+
{
|
103
|
+
"label": _("Red Dot On"),
|
104
|
+
"icon": icons8_flash_on,
|
105
|
+
"tip": _("Turn Redlight On"),
|
106
|
+
"help": "devicegrbl",
|
107
|
+
"action": lambda v: service("red on\n"),
|
108
|
+
"toggle": {
|
109
|
+
"label": _("Red Dot Off"),
|
110
|
+
"help": "devicegrbl",
|
111
|
+
"action": lambda v: service("red off\n"),
|
112
|
+
"icon": icons8_flash_off,
|
113
|
+
"signal": "grbl_red_dot",
|
114
|
+
},
|
115
|
+
"rule_enabled": lambda v: has_red_dot_enabled(),
|
116
|
+
},
|
117
|
+
)
|
118
|
+
|
119
|
+
service.register(
|
120
|
+
"button/control/ClearAlarm",
|
121
|
+
{
|
122
|
+
"label": _("Clear Alarm"),
|
123
|
+
"icon": icons8_info,
|
124
|
+
"tip": _("Send a GRBL Clear Alarm command"),
|
125
|
+
"help": "devicegrbl",
|
126
|
+
"action": lambda v: service("clear_alarm\n"),
|
127
|
+
},
|
128
|
+
)
|
129
|
+
|
130
|
+
service.register(
|
131
|
+
"button/control/GoHome",
|
132
|
+
{
|
133
|
+
"label": _("Home"),
|
134
|
+
"icon": icons8_home_filled,
|
135
|
+
"tip": _("Send laser to home position (right click: to physical home)"),
|
136
|
+
"help": "devicegrbl",
|
137
|
+
"action": lambda v: service("home\n"),
|
138
|
+
"action_right": lambda v: service("physical_home\n"),
|
139
|
+
},
|
140
|
+
)
|
141
|
+
service.add_service_delegate(GRBLGui(service))
|
142
|
+
|
143
|
+
|
144
|
+
class GRBLGui:
|
145
|
+
def __init__(self, context):
|
146
|
+
self.context = context
|
147
|
+
# This is a stub.
|
meerk40t/grbl/interpreter.py
CHANGED
@@ -1,44 +1,44 @@
|
|
1
|
-
"""
|
2
|
-
GRBL Interpreter
|
3
|
-
|
4
|
-
The Interpreter listens to the local GRBL code being sent to the Controller and parses it. This allows it GRBL to track
|
5
|
-
position based on the data sent, and debug the device. This listens to the current device and thus must be attached
|
6
|
-
to a GRBL device.
|
7
|
-
"""
|
8
|
-
from meerk40t.grbl.emulator import GRBLEmulator
|
9
|
-
from meerk40t.kernel import Module
|
10
|
-
|
11
|
-
|
12
|
-
class GRBLInterpreter(Module):
|
13
|
-
def __init__(self, service, path):
|
14
|
-
Module.__init__(self, service, path)
|
15
|
-
self.emulator = GRBLEmulator(self, service.space.display.matrix())
|
16
|
-
self._attached_device = None
|
17
|
-
|
18
|
-
def __repr__(self):
|
19
|
-
return f"GcodeInterpreter({self.name})"
|
20
|
-
|
21
|
-
def move_abs(self, x, y):
|
22
|
-
self.context.signal("emulator;position", (x, y, x, y))
|
23
|
-
|
24
|
-
def move_rel(self, x, y):
|
25
|
-
self.context.signal("emulator;position", (x, y, x, y))
|
26
|
-
|
27
|
-
def plot(self, cutobject):
|
28
|
-
try:
|
29
|
-
start = cutobject.start
|
30
|
-
end = cutobject.end
|
31
|
-
except AttributeError:
|
32
|
-
return
|
33
|
-
self.context.signal("emulator;position", (start[0], start[1], end[0], end[1]))
|
34
|
-
|
35
|
-
def module_open(self, *args, **kwargs):
|
36
|
-
self._attached_device = "none"
|
37
|
-
if hasattr(self.context, "serial_port"):
|
38
|
-
self._attached_device = self.context.serial_port.lower()
|
39
|
-
send = self.context.channel(f"send-{self._attached_device}")
|
40
|
-
send.watch(self.emulator.write)
|
41
|
-
|
42
|
-
def module_close(self, *args, **kwargs):
|
43
|
-
send = self.context.channel(f"send-{self._attached_device}")
|
44
|
-
send.unwatch(self.emulator.write)
|
1
|
+
"""
|
2
|
+
GRBL Interpreter
|
3
|
+
|
4
|
+
The Interpreter listens to the local GRBL code being sent to the Controller and parses it. This allows it GRBL to track
|
5
|
+
position based on the data sent, and debug the device. This listens to the current device and thus must be attached
|
6
|
+
to a GRBL device.
|
7
|
+
"""
|
8
|
+
from meerk40t.grbl.emulator import GRBLEmulator
|
9
|
+
from meerk40t.kernel import Module
|
10
|
+
|
11
|
+
|
12
|
+
class GRBLInterpreter(Module):
|
13
|
+
def __init__(self, service, path):
|
14
|
+
Module.__init__(self, service, path)
|
15
|
+
self.emulator = GRBLEmulator(self, service.space.display.matrix())
|
16
|
+
self._attached_device = None
|
17
|
+
|
18
|
+
def __repr__(self):
|
19
|
+
return f"GcodeInterpreter({self.name})"
|
20
|
+
|
21
|
+
def move_abs(self, x, y):
|
22
|
+
self.context.signal("emulator;position", (x, y, x, y))
|
23
|
+
|
24
|
+
def move_rel(self, x, y):
|
25
|
+
self.context.signal("emulator;position", (x, y, x, y))
|
26
|
+
|
27
|
+
def plot(self, cutobject):
|
28
|
+
try:
|
29
|
+
start = cutobject.start
|
30
|
+
end = cutobject.end
|
31
|
+
except AttributeError:
|
32
|
+
return
|
33
|
+
self.context.signal("emulator;position", (start[0], start[1], end[0], end[1]))
|
34
|
+
|
35
|
+
def module_open(self, *args, **kwargs):
|
36
|
+
self._attached_device = "none"
|
37
|
+
if hasattr(self.context, "serial_port"):
|
38
|
+
self._attached_device = self.context.serial_port.lower()
|
39
|
+
send = self.context.channel(f"send-{self._attached_device}")
|
40
|
+
send.watch(self.emulator.write)
|
41
|
+
|
42
|
+
def module_close(self, *args, **kwargs):
|
43
|
+
send = self.context.channel(f"send-{self._attached_device}")
|
44
|
+
send.unwatch(self.emulator.write)
|
meerk40t/grbl/loader.py
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
"""
|
2
|
-
GCode Loader
|
3
|
-
|
4
|
-
Provides the required hooks to register the loader of gcode file.
|
5
|
-
"""
|
6
|
-
|
7
|
-
import os
|
8
|
-
|
9
|
-
|
10
|
-
class GCodeLoader:
|
11
|
-
@staticmethod
|
12
|
-
def load_types():
|
13
|
-
yield "Gcode File", ("gcode", "nc", "gc"), "application/x-gcode"
|
14
|
-
|
15
|
-
@staticmethod
|
16
|
-
def load(kernel, service, pathname, **kwargs):
|
17
|
-
basename = os.path.basename(pathname)
|
18
|
-
with open(pathname, "rb") as f:
|
19
|
-
op_branch = service.get(type="branch ops")
|
20
|
-
op_branch.add(data=f.read(), data_type="grbl", type="blob", label=basename)
|
21
|
-
kernel.root.close(basename)
|
22
|
-
return True
|
1
|
+
"""
|
2
|
+
GCode Loader
|
3
|
+
|
4
|
+
Provides the required hooks to register the loader of gcode file.
|
5
|
+
"""
|
6
|
+
|
7
|
+
import os
|
8
|
+
|
9
|
+
|
10
|
+
class GCodeLoader:
|
11
|
+
@staticmethod
|
12
|
+
def load_types():
|
13
|
+
yield "Gcode File", ("gcode", "nc", "gc"), "application/x-gcode"
|
14
|
+
|
15
|
+
@staticmethod
|
16
|
+
def load(kernel, service, pathname, **kwargs):
|
17
|
+
basename = os.path.basename(pathname)
|
18
|
+
with open(pathname, "rb") as f:
|
19
|
+
op_branch = service.get(type="branch ops")
|
20
|
+
op_branch.add(data=f.read(), data_type="grbl", type="blob", label=basename)
|
21
|
+
kernel.root.close(basename)
|
22
|
+
return True
|
meerk40t/grbl/mock_connection.py
CHANGED
@@ -1,56 +1,56 @@
|
|
1
|
-
"""
|
2
|
-
Mock Connection for GRBL
|
3
|
-
|
4
|
-
|
5
|
-
The mock connection is used for debug and research purposes. And simply prints the data sent to it rather than engaging
|
6
|
-
any hardware.
|
7
|
-
"""
|
8
|
-
from meerk40t.grbl.emulator import GRBLEmulator
|
9
|
-
|
10
|
-
|
11
|
-
class MockConnection:
|
12
|
-
def __init__(self, service, controller):
|
13
|
-
self.service = service
|
14
|
-
self.controller = controller
|
15
|
-
self.laser = None
|
16
|
-
self.read_buffer = bytearray()
|
17
|
-
self.emulator = GRBLEmulator(
|
18
|
-
device=None, units_to_device_matrix=service.view.matrix, reply=self.add_read
|
19
|
-
)
|
20
|
-
|
21
|
-
@property
|
22
|
-
def connected(self):
|
23
|
-
return self.laser is not None
|
24
|
-
|
25
|
-
def add_read(self, code):
|
26
|
-
self.read_buffer += bytes(code, encoding="raw_unicode_escape")
|
27
|
-
|
28
|
-
def read(self):
|
29
|
-
f = self.read_buffer.find(b"\n")
|
30
|
-
if f == -1:
|
31
|
-
return None
|
32
|
-
response = self.read_buffer[:f]
|
33
|
-
self.read_buffer = self.read_buffer[f + 1 :]
|
34
|
-
str_response = str(response, "raw_unicode_escape")
|
35
|
-
str_response = str_response.strip()
|
36
|
-
return str_response
|
37
|
-
|
38
|
-
def write(self, line: str):
|
39
|
-
self.emulator.write(line)
|
40
|
-
|
41
|
-
def connect(self):
|
42
|
-
if self.laser:
|
43
|
-
self.controller.log("Already connected", type="connection")
|
44
|
-
return
|
45
|
-
try:
|
46
|
-
self.controller.log("Attempting to Connect...", type="connection")
|
47
|
-
self.laser = True
|
48
|
-
self.controller.log("Connected", type="connection")
|
49
|
-
self.service.signal("grbl;status", "connected")
|
50
|
-
except ConnectionError:
|
51
|
-
self.controller.log("Connection Failed.", type="connection")
|
52
|
-
|
53
|
-
def disconnect(self):
|
54
|
-
self.laser = None
|
55
|
-
self.controller.log("Disconnected", type="connection")
|
56
|
-
self.service.signal("grbl;status", "disconnected")
|
1
|
+
"""
|
2
|
+
Mock Connection for GRBL
|
3
|
+
|
4
|
+
|
5
|
+
The mock connection is used for debug and research purposes. And simply prints the data sent to it rather than engaging
|
6
|
+
any hardware.
|
7
|
+
"""
|
8
|
+
from meerk40t.grbl.emulator import GRBLEmulator
|
9
|
+
|
10
|
+
|
11
|
+
class MockConnection:
|
12
|
+
def __init__(self, service, controller):
|
13
|
+
self.service = service
|
14
|
+
self.controller = controller
|
15
|
+
self.laser = None
|
16
|
+
self.read_buffer = bytearray()
|
17
|
+
self.emulator = GRBLEmulator(
|
18
|
+
device=None, units_to_device_matrix=service.view.matrix, reply=self.add_read
|
19
|
+
)
|
20
|
+
|
21
|
+
@property
|
22
|
+
def connected(self):
|
23
|
+
return self.laser is not None
|
24
|
+
|
25
|
+
def add_read(self, code):
|
26
|
+
self.read_buffer += bytes(code, encoding="raw_unicode_escape")
|
27
|
+
|
28
|
+
def read(self):
|
29
|
+
f = self.read_buffer.find(b"\n")
|
30
|
+
if f == -1:
|
31
|
+
return None
|
32
|
+
response = self.read_buffer[:f]
|
33
|
+
self.read_buffer = self.read_buffer[f + 1 :]
|
34
|
+
str_response = str(response, "raw_unicode_escape")
|
35
|
+
str_response = str_response.strip()
|
36
|
+
return str_response
|
37
|
+
|
38
|
+
def write(self, line: str):
|
39
|
+
self.emulator.write(line)
|
40
|
+
|
41
|
+
def connect(self):
|
42
|
+
if self.laser:
|
43
|
+
self.controller.log("Already connected", type="connection")
|
44
|
+
return
|
45
|
+
try:
|
46
|
+
self.controller.log("Attempting to Connect...", type="connection")
|
47
|
+
self.laser = True
|
48
|
+
self.controller.log("Connected", type="connection")
|
49
|
+
self.service.signal("grbl;status", "connected")
|
50
|
+
except ConnectionError:
|
51
|
+
self.controller.log("Connection Failed.", type="connection")
|
52
|
+
|
53
|
+
def disconnect(self):
|
54
|
+
self.laser = None
|
55
|
+
self.controller.log("Disconnected", type="connection")
|
56
|
+
self.service.signal("grbl;status", "disconnected")
|