meerk40t 0.9.3001__py2.py3-none-any.whl → 0.9.7010__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 +1195 -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 +1844 -1507
- meerk40t/core/elements/clipboard.py +229 -219
- meerk40t/core/elements/element_treeops.py +4561 -2837
- meerk40t/core/elements/element_types.py +125 -105
- meerk40t/core/elements/elements.py +4329 -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 +933 -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/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 +462 -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 +198 -0
- meerk40t/extra/ezd.py +1165 -1165
- meerk40t/extra/hershey.py +835 -340
- meerk40t/extra/imageactions.py +322 -316
- meerk40t/extra/inkscape.py +630 -622
- meerk40t/extra/lbrn.py +424 -424
- meerk40t/extra/outerworld.py +284 -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 +1081 -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 +170 -133
- meerk40t/gui/choicepropertypanel.py +1673 -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 +1430 -846
- meerk40t/gui/icons.py +3422 -2747
- meerk40t/gui/imagesplitter.py +555 -508
- meerk40t/gui/keymap.py +354 -344
- meerk40t/gui/laserpanel.py +892 -806
- meerk40t/gui/laserrender.py +1470 -1232
- meerk40t/gui/lasertoolpanel.py +805 -793
- meerk40t/gui/magnetoptions.py +436 -0
- meerk40t/gui/materialmanager.py +2917 -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 +494 -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 +2468 -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 +589 -346
- meerk40t/gui/scenewidgets/relocatewidget.py +33 -33
- meerk40t/gui/scenewidgets/reticlewidget.py +83 -83
- meerk40t/gui/scenewidgets/selectionwidget.py +2952 -2756
- meerk40t/gui/simpleui.py +357 -333
- meerk40t/gui/simulation.py +2431 -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 +591 -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 +160 -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 +1444 -1169
- meerk40t/gui/wxmmain.py +5578 -4112
- meerk40t/gui/wxmribbon.py +1591 -1076
- meerk40t/gui/wxmscene.py +1635 -1453
- meerk40t/gui/wxmtree.py +2410 -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 +2778 -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 +3809 -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 +102 -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 +390 -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 +672 -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 +940 -940
- meerk40t/tools/rasterplotter.py +1660 -547
- meerk40t/tools/shxparser.py +989 -901
- meerk40t/tools/ttfparser.py +726 -446
- meerk40t/tools/zinglplotter.py +595 -593
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/LICENSE +21 -21
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/METADATA +150 -139
- meerk40t-0.9.7010.dist-info/RECORD +445 -0
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/WHEEL +1 -1
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/top_level.txt +0 -1
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.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.7010.dist-info}/entry_points.txt +0 -0
@@ -1,200 +1,319 @@
|
|
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
|
-
@self.console_command(
|
137
|
-
"
|
138
|
-
help=_("
|
139
|
-
input_type="wordlist",
|
140
|
-
output_type="wordlist",
|
141
|
-
)
|
142
|
-
def
|
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
|
-
|
1
|
+
"""
|
2
|
+
This module provides a set of console commands for managing wordlists within the application.
|
3
|
+
These commands allow users to add, retrieve, and manipulate wordlist entries, as well as manage wordlist files.
|
4
|
+
|
5
|
+
Functions:
|
6
|
+
- plugin(kernel, lifecycle=None): Initializes the plugin and sets up wordlist commands.
|
7
|
+
- init_commands(kernel): Initializes the wordlist commands and defines the associated operations.
|
8
|
+
- wordlist_base(command, channel, _, remainder=None, **kwargs): Base operation for wordlist commands.
|
9
|
+
Args:
|
10
|
+
command: The command context.
|
11
|
+
channel: The communication channel for messages.
|
12
|
+
remainder: Additional command arguments.
|
13
|
+
Returns:
|
14
|
+
A tuple containing the wordlist type and an empty string.
|
15
|
+
- wordlist_add(command, channel, _, key=None, value=None, **kwargs): Adds a value to the wordlist under the specified key.
|
16
|
+
Args:
|
17
|
+
command: The command context.
|
18
|
+
channel: The communication channel for messages.
|
19
|
+
key: The key for the wordlist entry.
|
20
|
+
value: The content to associate with the key.
|
21
|
+
Returns:
|
22
|
+
A tuple containing the wordlist type and the key.
|
23
|
+
- wordlist_addcounter(command, channel, _, key=None, value=None, **kwargs): Adds a numeric counter to the wordlist under the specified key.
|
24
|
+
Args:
|
25
|
+
command: The command context.
|
26
|
+
channel: The communication channel for messages.
|
27
|
+
key: The key for the wordlist entry.
|
28
|
+
value: The initial value for the counter.
|
29
|
+
Returns:
|
30
|
+
A tuple containing the wordlist type and the key.
|
31
|
+
- wordlist_get(command, channel, _, key=None, index=None, **kwargs): Retrieves the current value from the wordlist for the specified key and index.
|
32
|
+
Args:
|
33
|
+
command: The command context.
|
34
|
+
channel: The communication channel for messages.
|
35
|
+
key: The key for the wordlist entry.
|
36
|
+
index: The index of the value to retrieve.
|
37
|
+
Returns:
|
38
|
+
A tuple containing the wordlist type and the retrieved value.
|
39
|
+
- wordlist_set(command, channel, _, key=None, value=None, index=None, **kwargs): Sets a value in the wordlist for the specified key and index.
|
40
|
+
Args:
|
41
|
+
command: The command context.
|
42
|
+
channel: The communication channel for messages.
|
43
|
+
key: The key for the wordlist entry.
|
44
|
+
value: The value to set.
|
45
|
+
index: The index to use for the value.
|
46
|
+
Returns:
|
47
|
+
A tuple containing the wordlist type and the key.
|
48
|
+
- wordlist_index(command, channel, _, key=None, index=None, **kwargs): Sets the index in the wordlist for the specified key.
|
49
|
+
Args:
|
50
|
+
command: The command context.
|
51
|
+
channel: The communication channel for messages.
|
52
|
+
key: The key for the wordlist entry.
|
53
|
+
index: The index to set.
|
54
|
+
Returns:
|
55
|
+
A tuple containing the wordlist type and the key.
|
56
|
+
- wordlist_restore(command, channel, _, filename=None, remainder=None, **kwargs): Loads a previously saved wordlist from the specified file.
|
57
|
+
Args:
|
58
|
+
command: The command context.
|
59
|
+
channel: The communication channel for messages.
|
60
|
+
filename: The name of the wordlist file to load.
|
61
|
+
Returns:
|
62
|
+
A tuple containing the wordlist type and an empty string.
|
63
|
+
- wordlist_backup(command, channel, _, filename=None, remainder=None, **kwargs): Saves the current wordlist to the specified file.
|
64
|
+
Args:
|
65
|
+
command: The command context.
|
66
|
+
channel: The communication channel for messages.
|
67
|
+
filename: The name of the file to save the wordlist to.
|
68
|
+
Returns:
|
69
|
+
A tuple containing the wordlist type and an empty string.
|
70
|
+
- wordlist_list(command, channel, _, key=None, **kwargs): Lists the values in the wordlist for the specified key.
|
71
|
+
Args:
|
72
|
+
command: The command context.
|
73
|
+
channel: The communication channel for messages.
|
74
|
+
key: The key for the wordlist entry.
|
75
|
+
Returns:
|
76
|
+
A tuple containing the wordlist type and the key.
|
77
|
+
- wordlist_load(command, channel, _, filename=None, **kwargs): Attaches a CSV file to the wordlist.
|
78
|
+
Args:
|
79
|
+
command: The command context.
|
80
|
+
channel: The communication channel for messages.
|
81
|
+
filename: The name of the CSV file to load.
|
82
|
+
Returns:
|
83
|
+
A tuple containing the wordlist type and the names of the loaded entries.
|
84
|
+
- wordlist_advance(command, channel, _, **kwargs): Advances all indices in the wordlist if they are in use.
|
85
|
+
Args:
|
86
|
+
command: The command context.
|
87
|
+
channel: The communication channel for messages.
|
88
|
+
Returns:
|
89
|
+
A tuple containing the wordlist type and an empty string.
|
90
|
+
"""
|
91
|
+
|
92
|
+
import os.path
|
93
|
+
import re
|
94
|
+
|
95
|
+
|
96
|
+
def plugin(kernel, lifecycle=None):
|
97
|
+
_ = kernel.translation
|
98
|
+
if lifecycle == "postboot":
|
99
|
+
init_commands(kernel)
|
100
|
+
|
101
|
+
|
102
|
+
def init_commands(kernel):
|
103
|
+
self = kernel.elements
|
104
|
+
|
105
|
+
_ = kernel.translation
|
106
|
+
|
107
|
+
# ==========
|
108
|
+
# WORDLISTS COMMANDS
|
109
|
+
# ==========
|
110
|
+
|
111
|
+
@self.console_command(
|
112
|
+
"wordlist",
|
113
|
+
help=_("Wordlist base operation"),
|
114
|
+
output_type="wordlist",
|
115
|
+
)
|
116
|
+
def wordlist_base(command, channel, _, remainder=None, **kwargs):
|
117
|
+
return "wordlist", ""
|
118
|
+
|
119
|
+
@self.console_argument("key", help=_("Wordlist value"))
|
120
|
+
@self.console_argument("value", help=_("Content"))
|
121
|
+
@self.console_command(
|
122
|
+
"add",
|
123
|
+
help=_("add value to wordlist"),
|
124
|
+
input_type="wordlist",
|
125
|
+
output_type="wordlist",
|
126
|
+
)
|
127
|
+
def wordlist_add(command, channel, _, key=None, value=None, **kwargs):
|
128
|
+
if key is not None:
|
129
|
+
if value is None:
|
130
|
+
value = ""
|
131
|
+
self.mywordlist.add(key, value)
|
132
|
+
return "wordlist", key
|
133
|
+
|
134
|
+
@self.console_argument("key", help=_("Wordlist value"))
|
135
|
+
@self.console_argument("value", help=_("Content"))
|
136
|
+
@self.console_command(
|
137
|
+
"addcounter",
|
138
|
+
help=_("add numeric counter to wordlist"),
|
139
|
+
input_type="wordlist",
|
140
|
+
output_type="wordlist",
|
141
|
+
)
|
142
|
+
def wordlist_addcounter(command, channel, _, key=None, value=None, **kwargs):
|
143
|
+
if key is not None:
|
144
|
+
if value is None:
|
145
|
+
value = 1
|
146
|
+
else:
|
147
|
+
try:
|
148
|
+
value = int(value)
|
149
|
+
except ValueError:
|
150
|
+
value = 1
|
151
|
+
self.mywordlist.add(key, value, 2)
|
152
|
+
return "wordlist", key
|
153
|
+
|
154
|
+
@self.console_argument("key", help=_("Wordlist value"))
|
155
|
+
@self.console_argument("index", help=_("index to use"))
|
156
|
+
@self.console_command(
|
157
|
+
"get",
|
158
|
+
help=_("get current value from wordlist"),
|
159
|
+
input_type="wordlist",
|
160
|
+
output_type="wordlist",
|
161
|
+
)
|
162
|
+
def wordlist_get(command, channel, _, key=None, index=None, **kwargs):
|
163
|
+
if key is not None:
|
164
|
+
result = self.mywordlist.fetch_value(skey=key, idx=index)
|
165
|
+
channel(str(result))
|
166
|
+
else:
|
167
|
+
channel(_("Missing key"))
|
168
|
+
result = ""
|
169
|
+
return "wordlist", result
|
170
|
+
|
171
|
+
@self.console_argument("key", help=_("Wordlist value"))
|
172
|
+
@self.console_argument("value", help=_("Wordlist value"))
|
173
|
+
@self.console_argument("index", help=_("index to use"))
|
174
|
+
@self.console_command(
|
175
|
+
"set",
|
176
|
+
help=_("set value to wordlist"),
|
177
|
+
input_type="wordlist",
|
178
|
+
output_type="wordlist",
|
179
|
+
)
|
180
|
+
def wordlist_set(command, channel, _, key=None, value=None, index=None, **kwargs):
|
181
|
+
if key is not None and value is not None:
|
182
|
+
self.mywordlist.set_value(skey=key, value=value, idx=index)
|
183
|
+
else:
|
184
|
+
channel(_("Not enough parameters given"))
|
185
|
+
return "wordlist", key
|
186
|
+
|
187
|
+
@self.console_argument(
|
188
|
+
"key", help=_("Individual wordlist value (use @ALL for all)")
|
189
|
+
)
|
190
|
+
@self.console_argument("index", help=_("index to use, or +2 to increment by 2"))
|
191
|
+
@self.console_command(
|
192
|
+
"index",
|
193
|
+
help=_("sets index in wordlist"),
|
194
|
+
input_type="wordlist",
|
195
|
+
output_type="wordlist",
|
196
|
+
all_arguments_required=True,
|
197
|
+
)
|
198
|
+
def wordlist_index(command, channel, _, key=None, index=None, **kwargs):
|
199
|
+
self.mywordlist.set_index(skey=key, idx=index)
|
200
|
+
return "wordlist", key
|
201
|
+
|
202
|
+
@self.console_argument(
|
203
|
+
"filename", help=_("Wordlist file (if empty use mk40-default)")
|
204
|
+
)
|
205
|
+
@self.console_command(
|
206
|
+
"restore",
|
207
|
+
help=_("Loads a previously saved wordlist"),
|
208
|
+
input_type="wordlist",
|
209
|
+
output_type="wordlist",
|
210
|
+
)
|
211
|
+
def wordlist_restore(command, channel, _, filename=None, remainder=None, **kwargs):
|
212
|
+
new_file = filename
|
213
|
+
if filename is not None:
|
214
|
+
new_file = os.path.join(self.kernel.current_directory, filename)
|
215
|
+
if not os.path.exists(new_file):
|
216
|
+
channel(_("No such file."))
|
217
|
+
return
|
218
|
+
self.mywordlist.load_data(new_file)
|
219
|
+
return "wordlist", ""
|
220
|
+
|
221
|
+
@self.console_argument(
|
222
|
+
"filename", help=_("Wordlist file (if empty use mk40-default)")
|
223
|
+
)
|
224
|
+
@self.console_command(
|
225
|
+
"backup",
|
226
|
+
help=_("Saves the current wordlist"),
|
227
|
+
input_type="wordlist",
|
228
|
+
output_type="wordlist",
|
229
|
+
)
|
230
|
+
def wordlist_backup(command, channel, _, filename=None, remainder=None, **kwargs):
|
231
|
+
new_file = filename
|
232
|
+
if filename is not None:
|
233
|
+
new_file = os.path.join(self.kernel.current_directory, filename)
|
234
|
+
|
235
|
+
self.mywordlist.save_data(new_file)
|
236
|
+
return "wordlist", ""
|
237
|
+
|
238
|
+
@self.console_argument("key", help=_("Wordlist value"))
|
239
|
+
@self.console_command(
|
240
|
+
"list",
|
241
|
+
help=_("list wordlist values"),
|
242
|
+
input_type="wordlist",
|
243
|
+
output_type="wordlist",
|
244
|
+
)
|
245
|
+
def wordlist_list(command, channel, _, key=None, **kwargs):
|
246
|
+
channel("----------")
|
247
|
+
if key is None:
|
248
|
+
for skey in self.mywordlist.content:
|
249
|
+
channel(str(skey))
|
250
|
+
else:
|
251
|
+
if key in self.mywordlist.content:
|
252
|
+
wordlist = self.mywordlist.content[key]
|
253
|
+
channel(
|
254
|
+
_("Wordlist {name} (Type={type}, Index={index}):").format(
|
255
|
+
name=key, type=wordlist[0], index=wordlist[1] - 2
|
256
|
+
)
|
257
|
+
)
|
258
|
+
for idx, value in enumerate(wordlist[2:]):
|
259
|
+
channel(f"#{idx}: {str(value)}")
|
260
|
+
else:
|
261
|
+
channel(_("There is no such pattern {name}").format(name=key))
|
262
|
+
channel("----------")
|
263
|
+
return "wordlist", key
|
264
|
+
|
265
|
+
@self.console_argument("filename", help=_("CSV file"))
|
266
|
+
@self.console_command(
|
267
|
+
"load",
|
268
|
+
help=_("Attach a csv-file to the wordlist"),
|
269
|
+
input_type="wordlist",
|
270
|
+
output_type="wordlist",
|
271
|
+
)
|
272
|
+
def wordlist_load(command, channel, _, filename=None, **kwargs):
|
273
|
+
if filename is None:
|
274
|
+
channel(_("No file specified."))
|
275
|
+
return
|
276
|
+
new_file = os.path.join(self.kernel.current_directory, filename)
|
277
|
+
if not os.path.exists(new_file):
|
278
|
+
channel(_("No such file."))
|
279
|
+
return
|
280
|
+
|
281
|
+
rows, columns, names = self.mywordlist.load_csv_file(new_file)
|
282
|
+
channel(_("Rows added: {rows}").format(rows=rows))
|
283
|
+
channel(_("Values added: {values}").format(columns=columns))
|
284
|
+
for name in names:
|
285
|
+
channel(" " + name)
|
286
|
+
return "wordlist", names
|
287
|
+
|
288
|
+
@self.console_command(
|
289
|
+
"advance",
|
290
|
+
help=_("advances all indices in wordlist (if wordlist was used)"),
|
291
|
+
input_type="wordlist",
|
292
|
+
output_type="wordlist",
|
293
|
+
)
|
294
|
+
def wordlist_advance(command, channel, _, **kwargs):
|
295
|
+
usage = False
|
296
|
+
brackets = re.compile(r"\{[^}]+\}")
|
297
|
+
for node in self.elems():
|
298
|
+
if hasattr(node, "text"):
|
299
|
+
if node.text:
|
300
|
+
bracketed_key = list(brackets.findall(str(node.text)))
|
301
|
+
if len(bracketed_key) > 0:
|
302
|
+
usage = True
|
303
|
+
break
|
304
|
+
elif hasattr(node, "mktext"):
|
305
|
+
if node.mktext:
|
306
|
+
bracketed_key = list(brackets.findall(str(node.mktext)))
|
307
|
+
if len(bracketed_key) > 0:
|
308
|
+
usage = True
|
309
|
+
break
|
310
|
+
|
311
|
+
if usage:
|
312
|
+
channel("Advancing wordlist indices")
|
313
|
+
self.mywordlist.move_all_indices(1)
|
314
|
+
self.signal("refresh_scene", "Scene")
|
315
|
+
else:
|
316
|
+
channel("Leaving wordlist indices untouched as no usage detected")
|
317
|
+
return "wordlist", ""
|
318
|
+
|
319
|
+
# --------------------------- END COMMANDS ------------------------------
|
meerk40t/core/exceptions.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
class Meerk40tError(Exception):
|
2
|
-
"""
|
3
|
-
This root Meerk40t exception is provided in case we ever want to provide common functionality
|
4
|
-
across all Meerk40t exceptions.
|
5
|
-
"""
|
6
|
-
|
7
|
-
|
8
|
-
class BadFileError(Meerk40tError):
|
9
|
-
"""Abort loading a malformed file"""
|
1
|
+
class Meerk40tError(Exception):
|
2
|
+
"""
|
3
|
+
This root Meerk40t exception is provided in case we ever want to provide common functionality
|
4
|
+
across all Meerk40t exceptions.
|
5
|
+
"""
|
6
|
+
|
7
|
+
|
8
|
+
class BadFileError(Meerk40tError):
|
9
|
+
"""Abort loading a malformed file"""
|