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/core/elements/penbox.py
CHANGED
@@ -1,267 +1,339 @@
|
|
1
|
-
"""
|
2
|
-
This
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
)
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
1
|
+
"""
|
2
|
+
This module provides a set of console commands for managing the penbox within the application.
|
3
|
+
Users can add, retrieve, and manipulate pen settings, facilitating the organization and retrieval of pen configurations.
|
4
|
+
Pens contain a coupöe of burn settings that can be applied by using the pen for a given element.
|
5
|
+
It will feel familiar to ezc*d users.
|
6
|
+
It's probably a very similar concept to the material methodology and the material manager.
|
7
|
+
|
8
|
+
Functions:
|
9
|
+
- plugin(kernel, lifecycle=None): Initializes the plugin and sets up penbox commands.
|
10
|
+
- init_commands(kernel): Initializes the penbox commands and defines the associated operations.
|
11
|
+
- penbox(command, channel, _, key=None, remainder=None, **kwargs): Displays information about the penbox or lists the available pen entries.
|
12
|
+
Args:
|
13
|
+
command: The command context.
|
14
|
+
channel: The communication channel for messages.
|
15
|
+
key: The specific penbox key to retrieve.
|
16
|
+
remainder: Additional command arguments.
|
17
|
+
Returns:
|
18
|
+
A tuple containing the type of penbox and the data.
|
19
|
+
- penbox_add(command, channel, _, count=None, data=None, remainder=None, **kwargs): Adds a specified number of pens to the chosen penbox.
|
20
|
+
Args:
|
21
|
+
command: The command context.
|
22
|
+
channel: The communication channel for messages.
|
23
|
+
count: The number of pens to add.
|
24
|
+
data: The penbox to which pens are added.
|
25
|
+
remainder: Additional command arguments.
|
26
|
+
Returns:
|
27
|
+
A tuple containing the type of penbox and the data.
|
28
|
+
- penbox_del(command, channel, _, count=None, data=None, remainder=None, **kwargs): Deletes a specified number of pens from the chosen penbox.
|
29
|
+
Args:
|
30
|
+
command: The command context.
|
31
|
+
channel: The communication channel for messages.
|
32
|
+
count: The number of pens to delete.
|
33
|
+
data: The penbox from which pens are deleted.
|
34
|
+
remainder: Additional command arguments.
|
35
|
+
Returns:
|
36
|
+
A tuple containing the type of penbox and the data.
|
37
|
+
- penbox_set(command, channel, _, index=None, key=None, value=None, data=None, remainder=None, **kwargs): Sets a value in the penbox for the specified index and key.
|
38
|
+
Args:
|
39
|
+
command: The command context.
|
40
|
+
channel: The communication channel for messages.
|
41
|
+
index: The index in the penbox to set the value.
|
42
|
+
key: The key for the penbox entry.
|
43
|
+
value: The value to set in the penbox.
|
44
|
+
data: The penbox to modify.
|
45
|
+
remainder: Additional command arguments.
|
46
|
+
Returns:
|
47
|
+
A tuple containing the type of penbox and the data.
|
48
|
+
- penbox_pass(command, channel, _, key=None, remainder=None, data=None, **kwargs): Sets the penbox pass for the given operation.
|
49
|
+
Args:
|
50
|
+
command: The command context.
|
51
|
+
channel: The communication channel for messages.
|
52
|
+
key: The penbox key to set the pass for.
|
53
|
+
remainder: Additional command arguments.
|
54
|
+
data: The operations to modify.
|
55
|
+
Returns:
|
56
|
+
A tuple containing the type of operations and the data.
|
57
|
+
- penbox_value(command, channel, _, key=None, remainder=None, data=None, **kwargs): Sets the penbox value for the given operation.
|
58
|
+
Args:
|
59
|
+
command: The command context.
|
60
|
+
channel: The communication channel for messages.
|
61
|
+
key: The penbox key to set the value for.
|
62
|
+
remainder: Additional command arguments.
|
63
|
+
data: The operations to modify.
|
64
|
+
Returns:
|
65
|
+
A tuple containing the type of operations and the data.
|
66
|
+
- load_persistent_penbox(): Loads pen settings from persistent storage into the application.
|
67
|
+
Returns:
|
68
|
+
None
|
69
|
+
- save_persistent_penbox(): Saves the current pen settings to persistent storage.
|
70
|
+
Returns:
|
71
|
+
None
|
72
|
+
- shutdown(*args, **kwargs): Handles the shutdown process by saving pen settings.
|
73
|
+
Returns:
|
74
|
+
None
|
75
|
+
"""
|
76
|
+
|
77
|
+
import re
|
78
|
+
|
79
|
+
from meerk40t.kernel import CommandSyntaxError, Service, Settings
|
80
|
+
|
81
|
+
|
82
|
+
def plugin(kernel, lifecycle=None):
|
83
|
+
_ = kernel.translation
|
84
|
+
if lifecycle == "register":
|
85
|
+
kernel.add_service("penbox", Penbox(kernel))
|
86
|
+
|
87
|
+
|
88
|
+
def index_range(index_string):
|
89
|
+
"""
|
90
|
+
Parses index ranges in the form <idx>,<idx>-<idx>,<idx>
|
91
|
+
@param index_string:
|
92
|
+
@return:
|
93
|
+
"""
|
94
|
+
indexes = list()
|
95
|
+
for s in index_string.split(","):
|
96
|
+
q = list(s.split("-"))
|
97
|
+
if len(q) == 1:
|
98
|
+
indexes.append(int(q[0]))
|
99
|
+
else:
|
100
|
+
start = int(q[0])
|
101
|
+
end = int(q[1])
|
102
|
+
if start > end:
|
103
|
+
for q in range(end, start + 1):
|
104
|
+
indexes.append(q)
|
105
|
+
else:
|
106
|
+
for q in range(start, end + 1):
|
107
|
+
indexes.append(q)
|
108
|
+
return indexes
|
109
|
+
|
110
|
+
|
111
|
+
class Penbox(Service):
|
112
|
+
def __init__(self, kernel, *args, **kwargs):
|
113
|
+
Service.__init__(self, kernel, "penbox")
|
114
|
+
self.pen_data = Settings(self.kernel.name, "penbox.cfg")
|
115
|
+
self.pens = {}
|
116
|
+
self.load_persistent_penbox()
|
117
|
+
|
118
|
+
_ = kernel.translation
|
119
|
+
|
120
|
+
# ==========
|
121
|
+
# PENBOX COMMANDS
|
122
|
+
# ==========
|
123
|
+
|
124
|
+
@self.console_argument("key", help=_("Penbox key"))
|
125
|
+
@self.console_command(
|
126
|
+
"penbox",
|
127
|
+
help=_("Penbox base operation"),
|
128
|
+
input_type=None,
|
129
|
+
output_type="penbox",
|
130
|
+
)
|
131
|
+
def penbox(command, channel, _, key=None, remainder=None, **kwargs):
|
132
|
+
if remainder is None or key is None:
|
133
|
+
channel("----------")
|
134
|
+
if key is None:
|
135
|
+
for key in self.pens:
|
136
|
+
channel(str(key))
|
137
|
+
else:
|
138
|
+
try:
|
139
|
+
for i, value in enumerate(self.pens[key]):
|
140
|
+
channel(f"{i}: {str(value)}")
|
141
|
+
except KeyError:
|
142
|
+
channel(_("penbox does not exist"))
|
143
|
+
channel("----------")
|
144
|
+
return "penbox", key
|
145
|
+
|
146
|
+
@self.console_argument("count", help=_("Penbox count"), type=int)
|
147
|
+
@self.console_command(
|
148
|
+
"add",
|
149
|
+
help=_("add pens to the chosen penbox"),
|
150
|
+
input_type="penbox",
|
151
|
+
output_type="penbox",
|
152
|
+
)
|
153
|
+
def penbox_add(
|
154
|
+
command, channel, _, count=None, data=None, remainder=None, **kwargs
|
155
|
+
):
|
156
|
+
if count is None:
|
157
|
+
raise CommandSyntaxError
|
158
|
+
current = self.pens.get(data)
|
159
|
+
if current is None:
|
160
|
+
current = list()
|
161
|
+
self.pens[data] = current
|
162
|
+
current.extend([dict() for _ in range(count)])
|
163
|
+
return "penbox", data
|
164
|
+
|
165
|
+
@self.console_argument("count", help=_("Penbox count"), type=int)
|
166
|
+
@self.console_command(
|
167
|
+
"del",
|
168
|
+
help=_("delete pens to the chosen penbox"),
|
169
|
+
input_type="penbox",
|
170
|
+
output_type="penbox",
|
171
|
+
)
|
172
|
+
def penbox_del(
|
173
|
+
command, channel, _, count=None, data=None, remainder=None, **kwargs
|
174
|
+
):
|
175
|
+
if count is None:
|
176
|
+
raise CommandSyntaxError
|
177
|
+
current = self.pens.get(data)
|
178
|
+
if current is None:
|
179
|
+
current = list()
|
180
|
+
self.pens[data] = current
|
181
|
+
for _ in range(count):
|
182
|
+
try:
|
183
|
+
del current[-1]
|
184
|
+
except IndexError:
|
185
|
+
break
|
186
|
+
return "penbox", data
|
187
|
+
|
188
|
+
@self.console_argument("index", help=_("Penbox index"), type=index_range)
|
189
|
+
@self.console_argument("key", help=_("Penbox key"), type=str)
|
190
|
+
@self.console_argument("value", help=_("Penbox key"), type=str)
|
191
|
+
@self.console_command(
|
192
|
+
"set",
|
193
|
+
help=_("set value in penbox"),
|
194
|
+
input_type="penbox",
|
195
|
+
output_type="penbox",
|
196
|
+
)
|
197
|
+
def penbox_set(
|
198
|
+
command,
|
199
|
+
channel,
|
200
|
+
_,
|
201
|
+
index=None,
|
202
|
+
key=None,
|
203
|
+
value=None,
|
204
|
+
data=None,
|
205
|
+
remainder=None,
|
206
|
+
**kwargs,
|
207
|
+
):
|
208
|
+
if not value:
|
209
|
+
raise CommandSyntaxError
|
210
|
+
current = self.pens.get(data)
|
211
|
+
if current is None:
|
212
|
+
current = list()
|
213
|
+
self.pens[data] = current
|
214
|
+
rex = re.compile(r"([+-]?[0-9]+)(?:[,-]([+-]?[0-9]+))?")
|
215
|
+
m = rex.match(value)
|
216
|
+
if not m:
|
217
|
+
raise CommandSyntaxError
|
218
|
+
value = float(m.group(1))
|
219
|
+
end = m.group(2)
|
220
|
+
if end:
|
221
|
+
end = float(end)
|
222
|
+
|
223
|
+
if not end:
|
224
|
+
for i in index:
|
225
|
+
try:
|
226
|
+
current[i][key] = value
|
227
|
+
except IndexError:
|
228
|
+
pass
|
229
|
+
else:
|
230
|
+
r = len(index)
|
231
|
+
try:
|
232
|
+
s = (end - value) / (r - 1)
|
233
|
+
except ZeroDivisionError:
|
234
|
+
s = 0
|
235
|
+
d = 0
|
236
|
+
for i in index:
|
237
|
+
try:
|
238
|
+
current[i][key] = value + d
|
239
|
+
except IndexError:
|
240
|
+
pass
|
241
|
+
d += s
|
242
|
+
return "penbox", data
|
243
|
+
|
244
|
+
# ==========
|
245
|
+
# PENBOX OPERATION COMMANDS
|
246
|
+
# ==========
|
247
|
+
|
248
|
+
@self.console_argument("key", help=_("Penbox key"))
|
249
|
+
@self.console_command(
|
250
|
+
"penbox_pass",
|
251
|
+
help=_("Set the penbox_pass for the given operation"),
|
252
|
+
input_type="ops",
|
253
|
+
output_type="ops",
|
254
|
+
)
|
255
|
+
def penbox_pass(
|
256
|
+
command, channel, _, key=None, remainder=None, data=None, **kwargs
|
257
|
+
):
|
258
|
+
if data is not None:
|
259
|
+
if key is not None:
|
260
|
+
for op in data:
|
261
|
+
try:
|
262
|
+
op.settings["penbox_pass"] = key
|
263
|
+
channel(f"{str(op)} penbox_pass changed to {key}.")
|
264
|
+
except AttributeError:
|
265
|
+
pass
|
266
|
+
else:
|
267
|
+
if key is None:
|
268
|
+
channel("----------")
|
269
|
+
for op in data:
|
270
|
+
try:
|
271
|
+
key = op.settings.get("penbox_pass")
|
272
|
+
if key is None:
|
273
|
+
channel(f"{str(op)} penbox_pass is not set.")
|
274
|
+
else:
|
275
|
+
channel(f"{str(op)} penbox_pass is set to {key}.")
|
276
|
+
except AttributeError:
|
277
|
+
pass # No op.settings.
|
278
|
+
channel("----------")
|
279
|
+
return "ops", data
|
280
|
+
|
281
|
+
@self.console_argument("key", help=_("Penbox key"))
|
282
|
+
@self.console_command(
|
283
|
+
"penbox_value",
|
284
|
+
help=_("Set the penbox_value for the given operation"),
|
285
|
+
input_type="ops",
|
286
|
+
output_type="ops",
|
287
|
+
)
|
288
|
+
def penbox_value(
|
289
|
+
command, channel, _, key=None, remainder=None, data=None, **kwargs
|
290
|
+
):
|
291
|
+
if data is not None:
|
292
|
+
if key is not None:
|
293
|
+
for op in data:
|
294
|
+
try:
|
295
|
+
op.settings["penbox_value"] = key
|
296
|
+
channel(f"{str(op)} penbox_value changed to {key}.")
|
297
|
+
except AttributeError:
|
298
|
+
pass
|
299
|
+
else:
|
300
|
+
if key is None:
|
301
|
+
channel("----------")
|
302
|
+
for op in data:
|
303
|
+
try:
|
304
|
+
key = op.settings.get("penbox_value")
|
305
|
+
if key is None:
|
306
|
+
channel(f"{str(op)} penbox_value is not set.")
|
307
|
+
else:
|
308
|
+
channel(f"{str(op)} penbox_value is set to {key}.")
|
309
|
+
except AttributeError:
|
310
|
+
pass # No op.settings.
|
311
|
+
channel("----------")
|
312
|
+
return "ops", data
|
313
|
+
|
314
|
+
# --------------------------- END COMMANDS ------------------------------
|
315
|
+
|
316
|
+
def load_persistent_penbox(self):
|
317
|
+
settings = self.pen_data
|
318
|
+
pens = settings.read_persistent_string_dict("pens", suffix=True)
|
319
|
+
for pen in pens:
|
320
|
+
length = int(pens[pen])
|
321
|
+
box = list()
|
322
|
+
for i in range(length):
|
323
|
+
penbox = dict()
|
324
|
+
settings.read_persistent_string_dict(f"{pen} {i}", penbox, suffix=True)
|
325
|
+
box.append(penbox)
|
326
|
+
self.pens[pen] = box
|
327
|
+
|
328
|
+
def save_persistent_penbox(self):
|
329
|
+
sections = {}
|
330
|
+
for section in self.pens:
|
331
|
+
sections[section] = len(self.pens[section])
|
332
|
+
self.pen_data.write_persistent_dict("pens", sections)
|
333
|
+
for section in self.pens:
|
334
|
+
for i, p in enumerate(self.pens[section]):
|
335
|
+
self.pen_data.write_persistent_dict(f"{section} {i}", p)
|
336
|
+
|
337
|
+
def shutdown(self, *args, **kwargs):
|
338
|
+
self.save_persistent_penbox()
|
339
|
+
self.pen_data.write_configuration()
|