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
meerk40t/extra/vectrace.py
CHANGED
@@ -1,146 +1,147 @@
|
|
1
|
-
from meerk40t.svgelements import Matrix, Path, Polygon
|
2
|
-
|
3
|
-
|
4
|
-
def plugin(kernel, lifecycle=None):
|
5
|
-
if lifecycle == "register":
|
6
|
-
_ = kernel.translation
|
7
|
-
|
8
|
-
@kernel.console_command(
|
9
|
-
"vectrace",
|
10
|
-
help=_("return paths around image"),
|
11
|
-
input_type="image",
|
12
|
-
output_type="elements",
|
13
|
-
)
|
14
|
-
def vectrace(data, **kwargs):
|
15
|
-
elements = kernel.root.elements
|
16
|
-
path = Path(fill="black", stroke="blue")
|
17
|
-
paths = []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
image
|
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
|
-
The
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
@param
|
58
|
-
@param
|
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
|
-
y
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
scanpoints
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
1
|
+
from meerk40t.svgelements import Matrix, Path, Polygon
|
2
|
+
|
3
|
+
|
4
|
+
def plugin(kernel, lifecycle=None):
|
5
|
+
if lifecycle == "register":
|
6
|
+
_ = kernel.translation
|
7
|
+
|
8
|
+
@kernel.console_command(
|
9
|
+
"vectrace",
|
10
|
+
help=_("return paths around image"),
|
11
|
+
input_type="image",
|
12
|
+
output_type="elements",
|
13
|
+
)
|
14
|
+
def vectrace(data, **kwargs):
|
15
|
+
elements = kernel.root.elements
|
16
|
+
path = Path(fill="black", stroke="blue")
|
17
|
+
paths = []
|
18
|
+
with elements.undoscope("Vectrace"):
|
19
|
+
for node in data:
|
20
|
+
matrix = node.matrix
|
21
|
+
image = node.image
|
22
|
+
width, height = node.image.size
|
23
|
+
if image.mode != "L":
|
24
|
+
image = image.convert("L")
|
25
|
+
image = image.point(lambda e: int(e > 127) * 255)
|
26
|
+
for points in _vectrace(image.load(), width, height):
|
27
|
+
path += Polygon(*points)
|
28
|
+
path.transform *= Matrix(matrix)
|
29
|
+
paths.append(
|
30
|
+
elements.elem_branch.add(
|
31
|
+
path=abs(path),
|
32
|
+
stroke_width=500,
|
33
|
+
stroke_scaled=False,
|
34
|
+
type="elem path",
|
35
|
+
)
|
36
|
+
)
|
37
|
+
return "elements", paths
|
38
|
+
|
39
|
+
|
40
|
+
_NORTH = 3
|
41
|
+
_EAST = 0
|
42
|
+
_SOUTH = 1
|
43
|
+
_WEST = 2
|
44
|
+
|
45
|
+
|
46
|
+
def _trace(pixels, x, y, width, height):
|
47
|
+
"""
|
48
|
+
This function is called only when the scanline polygon tracing has located a
|
49
|
+
point with a white values above y and before x.
|
50
|
+
Keeping a black pixel on the right. Position 0,0 is the topleft corner
|
51
|
+
above and more left than all pixels. There are n+1,m+1 locations for n,m
|
52
|
+
pixels. The pixel equal to the current position is always bottom right (se).
|
53
|
+
The pixels adjacent to the current location are:
|
54
|
+
(x - 1, y - 1), (x , y - 1)
|
55
|
+
X
|
56
|
+
(x - 1, y ), (x , y )
|
57
|
+
@param pixels:
|
58
|
+
@param x:
|
59
|
+
@param y:
|
60
|
+
@return:
|
61
|
+
"""
|
62
|
+
start_y = y
|
63
|
+
start_x = x
|
64
|
+
direction = _EAST
|
65
|
+
positions = [x + y * 1j]
|
66
|
+
scanpoints = list()
|
67
|
+
|
68
|
+
def px(pixel_x, pixel_y):
|
69
|
+
if 0 <= pixel_x < width and 0 <= pixel_y < height:
|
70
|
+
return pixels[pixel_x, pixel_y]
|
71
|
+
else:
|
72
|
+
return 255
|
73
|
+
|
74
|
+
while True:
|
75
|
+
nw = px(x - 1, y - 1)
|
76
|
+
ne = px(x, y - 1)
|
77
|
+
sw = px(x - 1, y)
|
78
|
+
se = px(x, y)
|
79
|
+
if direction == _EAST:
|
80
|
+
pixel_right = se
|
81
|
+
pixel_left = ne
|
82
|
+
# print("Going East (%d,%d): %d vs %d." % (x, y, pixel_left, pixel_right))
|
83
|
+
elif direction == _NORTH:
|
84
|
+
pixel_right = ne
|
85
|
+
pixel_left = nw
|
86
|
+
# print("Going North (%d,%d): %d vs %d." % (x, y, pixel_left, pixel_right))
|
87
|
+
elif direction == _SOUTH:
|
88
|
+
pixel_right = sw
|
89
|
+
pixel_left = se
|
90
|
+
# print("Going South (%d,%d): %d vs %d." % (x, y, pixel_left, pixel_right))
|
91
|
+
else: # WEST
|
92
|
+
pixel_right = nw
|
93
|
+
pixel_left = sw
|
94
|
+
# print("Going West (%d,%d): %d vs %d." % (y, x, pixel_left, pixel_right))
|
95
|
+
# print("%s %s\n%s %s" % (str(nw).ljust(4), str(ne).ljust(4), str(sw).ljust(4), str(se).ljust(4)))
|
96
|
+
|
97
|
+
if pixel_left and pixel_right:
|
98
|
+
direction += 1 # Turn right.
|
99
|
+
positions.append(x + y * 1j)
|
100
|
+
if not pixel_left and not pixel_right:
|
101
|
+
direction -= 1 # Turn Left
|
102
|
+
positions.append(x + y * 1j)
|
103
|
+
if pixel_left and not pixel_right:
|
104
|
+
pass # Pixel still on right.
|
105
|
+
if not pixel_left and pixel_right:
|
106
|
+
# Turn Policy Right-Only
|
107
|
+
direction += 1 # or direction -= 1
|
108
|
+
positions.append(x + y * 1j)
|
109
|
+
|
110
|
+
direction = (direction + 4) % 4
|
111
|
+
|
112
|
+
if direction == _EAST:
|
113
|
+
x += 1
|
114
|
+
elif direction == _NORTH:
|
115
|
+
y -= 1
|
116
|
+
scanpoints.append((x, y))
|
117
|
+
elif direction == _SOUTH:
|
118
|
+
scanpoints.append((x, y))
|
119
|
+
y += 1
|
120
|
+
else: # WEST
|
121
|
+
x -= 1
|
122
|
+
if start_y == y and start_x == x:
|
123
|
+
break
|
124
|
+
positions.append(x + y * 1j)
|
125
|
+
return scanpoints, positions
|
126
|
+
|
127
|
+
|
128
|
+
def _vectrace(pixels, width, height):
|
129
|
+
"""
|
130
|
+
Returns a list of points comprising the edge vectors of the image.
|
131
|
+
We're only dealing with grayscale images.
|
132
|
+
"""
|
133
|
+
for y in range(height):
|
134
|
+
for x in range(width):
|
135
|
+
if pixels[x, y] == 0:
|
136
|
+
scanpoints, positions = _trace(pixels, x, y, width, height)
|
137
|
+
scanpoints.sort(key=lambda p: p[1] * width + p[0])
|
138
|
+
for i in range(0, len(scanpoints), 2):
|
139
|
+
x0 = scanpoints[i][0]
|
140
|
+
x1 = scanpoints[i + 1][0]
|
141
|
+
y0 = scanpoints[i][1]
|
142
|
+
y1 = scanpoints[i + 1][1]
|
143
|
+
if y0 != y1:
|
144
|
+
raise ValueError
|
145
|
+
for xi in range(x0, x1):
|
146
|
+
pixels[xi, y0] = 0 if pixels[xi, y0] else 255
|
147
|
+
yield positions
|
meerk40t/extra/winsleep.py
CHANGED
@@ -1,83 +1,83 @@
|
|
1
|
-
import platform
|
2
|
-
|
3
|
-
"""
|
4
|
-
Winsleep is a internal standalone Windows-only plugin that works for sys.platform 'win32'.
|
5
|
-
The plugin does not register if the platform is not MSW.
|
6
|
-
|
7
|
-
If any signal origin gives a pipe;running signal of True, it will execute sleepmode_disable.
|
8
|
-
When all signals then give pipe;running signals of False, it will execute sleepmode_enable.
|
9
|
-
|
10
|
-
We also register sleepmode_disable and sleepmode_enable as hidden commands which flag
|
11
|
-
the ctypes windll kernel32 threadstate to be ES_SYSTEM_REQUIRED which disables sleeping
|
12
|
-
in windows.
|
13
|
-
"""
|
14
|
-
|
15
|
-
|
16
|
-
SLEEP_DISABLED = [None, dict(), False]
|
17
|
-
|
18
|
-
|
19
|
-
def on_usb_running(origin, value):
|
20
|
-
"""
|
21
|
-
Registered during the boot and unregistered during shutdown lifecycle.
|
22
|
-
|
23
|
-
On_usb_running listens for pipe;running signals and if any origin value is true
|
24
|
-
This calls sleepmode_disable.
|
25
|
-
"""
|
26
|
-
running = SLEEP_DISABLED[1]
|
27
|
-
running[origin] = value
|
28
|
-
any_origin_running = False
|
29
|
-
for v in running:
|
30
|
-
q = running[v]
|
31
|
-
if q:
|
32
|
-
any_origin_running = True
|
33
|
-
break
|
34
|
-
if any_origin_running != SLEEP_DISABLED[2]:
|
35
|
-
SLEEP_DISABLED[2] = any_origin_running
|
36
|
-
if any_origin_running:
|
37
|
-
# pylint: disable=E1102
|
38
|
-
SLEEP_DISABLED[0](".sleepmode_disable\n")
|
39
|
-
else:
|
40
|
-
# pylint: disable=E1102
|
41
|
-
SLEEP_DISABLED[0](".sleepmode_enable\n")
|
42
|
-
|
43
|
-
|
44
|
-
def plugin(kernel, lifecycle):
|
45
|
-
if lifecycle == "invalidate":
|
46
|
-
# Plugin only matters for MSW platform
|
47
|
-
return platform.system() != "Windows"
|
48
|
-
if lifecycle == "boot":
|
49
|
-
context = kernel.root
|
50
|
-
|
51
|
-
context.listen("pipe;running", on_usb_running)
|
52
|
-
elif lifecycle == "register":
|
53
|
-
context = kernel.root
|
54
|
-
SLEEP_DISABLED[0] = context
|
55
|
-
_ = kernel.translation
|
56
|
-
|
57
|
-
@context.console_command(
|
58
|
-
"sleepmode_disable", help=_("disables sleepmode"), hidden=True
|
59
|
-
)
|
60
|
-
def sleepmode_disable(**kwargs):
|
61
|
-
try:
|
62
|
-
import ctypes
|
63
|
-
|
64
|
-
# ES_CONTINUOUS, 0x80000000, # ES_SYSTEM_REQUIRED = 0x00000001
|
65
|
-
ctypes.windll.kernel32.SetThreadExecutionState(0x80000001)
|
66
|
-
except AttributeError:
|
67
|
-
pass
|
68
|
-
|
69
|
-
@context.console_command(
|
70
|
-
"sleepmode_enable", help=_("enables sleepmode"), hidden=True
|
71
|
-
)
|
72
|
-
def sleepmode_enable(**kwargs):
|
73
|
-
try:
|
74
|
-
import ctypes
|
75
|
-
|
76
|
-
# ES_CONTINUOUS, 0x80000000
|
77
|
-
ctypes.windll.kernel32.SetThreadExecutionState(0x80000000)
|
78
|
-
except AttributeError:
|
79
|
-
pass
|
80
|
-
|
81
|
-
elif lifecycle == "shutdown":
|
82
|
-
context = kernel.root
|
83
|
-
context.unlisten("pipe;running", on_usb_running)
|
1
|
+
import platform
|
2
|
+
|
3
|
+
"""
|
4
|
+
Winsleep is a internal standalone Windows-only plugin that works for sys.platform 'win32'.
|
5
|
+
The plugin does not register if the platform is not MSW.
|
6
|
+
|
7
|
+
If any signal origin gives a pipe;running signal of True, it will execute sleepmode_disable.
|
8
|
+
When all signals then give pipe;running signals of False, it will execute sleepmode_enable.
|
9
|
+
|
10
|
+
We also register sleepmode_disable and sleepmode_enable as hidden commands which flag
|
11
|
+
the ctypes windll kernel32 threadstate to be ES_SYSTEM_REQUIRED which disables sleeping
|
12
|
+
in windows.
|
13
|
+
"""
|
14
|
+
|
15
|
+
|
16
|
+
SLEEP_DISABLED = [None, dict(), False]
|
17
|
+
|
18
|
+
|
19
|
+
def on_usb_running(origin, value):
|
20
|
+
"""
|
21
|
+
Registered during the boot and unregistered during shutdown lifecycle.
|
22
|
+
|
23
|
+
On_usb_running listens for pipe;running signals and if any origin value is true
|
24
|
+
This calls sleepmode_disable.
|
25
|
+
"""
|
26
|
+
running = SLEEP_DISABLED[1]
|
27
|
+
running[origin] = value
|
28
|
+
any_origin_running = False
|
29
|
+
for v in running:
|
30
|
+
q = running[v]
|
31
|
+
if q:
|
32
|
+
any_origin_running = True
|
33
|
+
break
|
34
|
+
if any_origin_running != SLEEP_DISABLED[2]:
|
35
|
+
SLEEP_DISABLED[2] = any_origin_running
|
36
|
+
if any_origin_running:
|
37
|
+
# pylint: disable=E1102
|
38
|
+
SLEEP_DISABLED[0](".sleepmode_disable\n")
|
39
|
+
else:
|
40
|
+
# pylint: disable=E1102
|
41
|
+
SLEEP_DISABLED[0](".sleepmode_enable\n")
|
42
|
+
|
43
|
+
|
44
|
+
def plugin(kernel, lifecycle):
|
45
|
+
if lifecycle == "invalidate":
|
46
|
+
# Plugin only matters for MSW platform
|
47
|
+
return platform.system() != "Windows"
|
48
|
+
if lifecycle == "boot":
|
49
|
+
context = kernel.root
|
50
|
+
|
51
|
+
context.listen("pipe;running", on_usb_running)
|
52
|
+
elif lifecycle == "register":
|
53
|
+
context = kernel.root
|
54
|
+
SLEEP_DISABLED[0] = context
|
55
|
+
_ = kernel.translation
|
56
|
+
|
57
|
+
@context.console_command(
|
58
|
+
"sleepmode_disable", help=_("disables sleepmode"), hidden=True
|
59
|
+
)
|
60
|
+
def sleepmode_disable(**kwargs):
|
61
|
+
try:
|
62
|
+
import ctypes
|
63
|
+
|
64
|
+
# ES_CONTINUOUS, 0x80000000, # ES_SYSTEM_REQUIRED = 0x00000001
|
65
|
+
ctypes.windll.kernel32.SetThreadExecutionState(0x80000001)
|
66
|
+
except AttributeError:
|
67
|
+
pass
|
68
|
+
|
69
|
+
@context.console_command(
|
70
|
+
"sleepmode_enable", help=_("enables sleepmode"), hidden=True
|
71
|
+
)
|
72
|
+
def sleepmode_enable(**kwargs):
|
73
|
+
try:
|
74
|
+
import ctypes
|
75
|
+
|
76
|
+
# ES_CONTINUOUS, 0x80000000
|
77
|
+
ctypes.windll.kernel32.SetThreadExecutionState(0x80000000)
|
78
|
+
except AttributeError:
|
79
|
+
pass
|
80
|
+
|
81
|
+
elif lifecycle == "shutdown":
|
82
|
+
context = kernel.root
|
83
|
+
context.unlisten("pipe;running", on_usb_running)
|