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/kernel/lifecycles.py
CHANGED
@@ -1,71 +1,71 @@
|
|
1
|
-
LIFECYCLE_KERNEL_INIT = 0
|
2
|
-
LIFECYCLE_KERNEL_PRECLI = 20
|
3
|
-
LIFECYCLE_KERNEL_CLI = 25
|
4
|
-
LIFECYCLE_KERNEL_INVALIDATE = 50
|
5
|
-
LIFECYCLE_KERNEL_PREREGISTER = 100
|
6
|
-
LIFECYCLE_KERNEL_REGISTER = 101
|
7
|
-
LIFECYCLE_KERNEL_CONFIGURE = 102
|
8
|
-
LIFECYCLE_KERNEL_PREBOOT = 200
|
9
|
-
LIFECYCLE_KERNEL_BOOT = 201
|
10
|
-
LIFECYCLE_KERNEL_POSTBOOT = 202
|
11
|
-
LIFECYCLE_KERNEL_PRESTART = 300
|
12
|
-
LIFECYCLE_KERNEL_START = 301
|
13
|
-
LIFECYCLE_KERNEL_POSTSTART = 302
|
14
|
-
LIFECYCLE_KERNEL_READY = 303
|
15
|
-
LIFECYCLE_KERNEL_FINISHED = 304
|
16
|
-
LIFECYCLE_KERNEL_PREMAIN = 400
|
17
|
-
LIFECYCLE_KERNEL_MAINLOOP = 401
|
18
|
-
LIFECYCLE_KERNEL_POSTMAIN = 402
|
19
|
-
LIFECYCLE_KERNEL_PRESHUTDOWN = 900
|
20
|
-
LIFECYCLE_KERNEL_SHUTDOWN = 1000
|
21
|
-
|
22
|
-
LIFECYCLE_SERVICE_INIT = 0
|
23
|
-
LIFECYCLE_SERVICE_ADDED = 50
|
24
|
-
LIFECYCLE_SERVICE_ATTACHED = 100
|
25
|
-
LIFECYCLE_SERVICE_ASSIGNED = 101
|
26
|
-
LIFECYCLE_SERVICE_DETACHED = 200
|
27
|
-
LIFECYCLE_SERVICE_SHUTDOWN = 1000
|
28
|
-
|
29
|
-
LIFECYCLE_MODULE_OPENED = 100
|
30
|
-
LIFECYCLE_MODULE_CLOSED = 200
|
31
|
-
|
32
|
-
KERNEL_LIFECYCLE_NAMES = {
|
33
|
-
LIFECYCLE_KERNEL_INIT: "init",
|
34
|
-
LIFECYCLE_KERNEL_PRECLI: "precli",
|
35
|
-
LIFECYCLE_KERNEL_CLI: "cli",
|
36
|
-
LIFECYCLE_KERNEL_INVALIDATE: "invalidate",
|
37
|
-
LIFECYCLE_KERNEL_PREREGISTER: "preregister",
|
38
|
-
LIFECYCLE_KERNEL_REGISTER: "register",
|
39
|
-
LIFECYCLE_KERNEL_CONFIGURE: "configure",
|
40
|
-
LIFECYCLE_KERNEL_PREBOOT: "preboot",
|
41
|
-
LIFECYCLE_KERNEL_BOOT: "boot",
|
42
|
-
LIFECYCLE_KERNEL_POSTBOOT: "postboot",
|
43
|
-
LIFECYCLE_KERNEL_PRESTART: "prestart",
|
44
|
-
LIFECYCLE_KERNEL_START: "start",
|
45
|
-
LIFECYCLE_KERNEL_POSTSTART: "poststart",
|
46
|
-
LIFECYCLE_KERNEL_READY: "ready",
|
47
|
-
LIFECYCLE_KERNEL_FINISHED: "finished",
|
48
|
-
LIFECYCLE_KERNEL_PREMAIN: "premain",
|
49
|
-
LIFECYCLE_KERNEL_MAINLOOP: "mainloop",
|
50
|
-
LIFECYCLE_KERNEL_POSTMAIN: "postmain",
|
51
|
-
LIFECYCLE_KERNEL_PRESHUTDOWN: "preshutdown",
|
52
|
-
LIFECYCLE_KERNEL_SHUTDOWN: "shutdown",
|
53
|
-
}
|
54
|
-
|
55
|
-
|
56
|
-
def kernel_lifecycle_name(lifecycle):
|
57
|
-
return KERNEL_LIFECYCLE_NAMES[lifecycle]
|
58
|
-
|
59
|
-
|
60
|
-
SERVICE_LIFECYCLE_NAMES = {
|
61
|
-
LIFECYCLE_SERVICE_INIT: "init",
|
62
|
-
LIFECYCLE_SERVICE_ADDED: "added",
|
63
|
-
LIFECYCLE_SERVICE_ATTACHED: "attached",
|
64
|
-
LIFECYCLE_SERVICE_ASSIGNED: "assigned",
|
65
|
-
LIFECYCLE_SERVICE_DETACHED: "detached",
|
66
|
-
LIFECYCLE_SERVICE_SHUTDOWN: "shutdown",
|
67
|
-
}
|
68
|
-
|
69
|
-
|
70
|
-
def service_lifecycle_name(lifecycle):
|
71
|
-
return SERVICE_LIFECYCLE_NAMES[lifecycle]
|
1
|
+
LIFECYCLE_KERNEL_INIT = 0
|
2
|
+
LIFECYCLE_KERNEL_PRECLI = 20
|
3
|
+
LIFECYCLE_KERNEL_CLI = 25
|
4
|
+
LIFECYCLE_KERNEL_INVALIDATE = 50
|
5
|
+
LIFECYCLE_KERNEL_PREREGISTER = 100
|
6
|
+
LIFECYCLE_KERNEL_REGISTER = 101
|
7
|
+
LIFECYCLE_KERNEL_CONFIGURE = 102
|
8
|
+
LIFECYCLE_KERNEL_PREBOOT = 200
|
9
|
+
LIFECYCLE_KERNEL_BOOT = 201
|
10
|
+
LIFECYCLE_KERNEL_POSTBOOT = 202
|
11
|
+
LIFECYCLE_KERNEL_PRESTART = 300
|
12
|
+
LIFECYCLE_KERNEL_START = 301
|
13
|
+
LIFECYCLE_KERNEL_POSTSTART = 302
|
14
|
+
LIFECYCLE_KERNEL_READY = 303
|
15
|
+
LIFECYCLE_KERNEL_FINISHED = 304
|
16
|
+
LIFECYCLE_KERNEL_PREMAIN = 400
|
17
|
+
LIFECYCLE_KERNEL_MAINLOOP = 401
|
18
|
+
LIFECYCLE_KERNEL_POSTMAIN = 402
|
19
|
+
LIFECYCLE_KERNEL_PRESHUTDOWN = 900
|
20
|
+
LIFECYCLE_KERNEL_SHUTDOWN = 1000
|
21
|
+
|
22
|
+
LIFECYCLE_SERVICE_INIT = 0
|
23
|
+
LIFECYCLE_SERVICE_ADDED = 50
|
24
|
+
LIFECYCLE_SERVICE_ATTACHED = 100
|
25
|
+
LIFECYCLE_SERVICE_ASSIGNED = 101
|
26
|
+
LIFECYCLE_SERVICE_DETACHED = 200
|
27
|
+
LIFECYCLE_SERVICE_SHUTDOWN = 1000
|
28
|
+
|
29
|
+
LIFECYCLE_MODULE_OPENED = 100
|
30
|
+
LIFECYCLE_MODULE_CLOSED = 200
|
31
|
+
|
32
|
+
KERNEL_LIFECYCLE_NAMES = {
|
33
|
+
LIFECYCLE_KERNEL_INIT: "init",
|
34
|
+
LIFECYCLE_KERNEL_PRECLI: "precli",
|
35
|
+
LIFECYCLE_KERNEL_CLI: "cli",
|
36
|
+
LIFECYCLE_KERNEL_INVALIDATE: "invalidate",
|
37
|
+
LIFECYCLE_KERNEL_PREREGISTER: "preregister",
|
38
|
+
LIFECYCLE_KERNEL_REGISTER: "register",
|
39
|
+
LIFECYCLE_KERNEL_CONFIGURE: "configure",
|
40
|
+
LIFECYCLE_KERNEL_PREBOOT: "preboot",
|
41
|
+
LIFECYCLE_KERNEL_BOOT: "boot",
|
42
|
+
LIFECYCLE_KERNEL_POSTBOOT: "postboot",
|
43
|
+
LIFECYCLE_KERNEL_PRESTART: "prestart",
|
44
|
+
LIFECYCLE_KERNEL_START: "start",
|
45
|
+
LIFECYCLE_KERNEL_POSTSTART: "poststart",
|
46
|
+
LIFECYCLE_KERNEL_READY: "ready",
|
47
|
+
LIFECYCLE_KERNEL_FINISHED: "finished",
|
48
|
+
LIFECYCLE_KERNEL_PREMAIN: "premain",
|
49
|
+
LIFECYCLE_KERNEL_MAINLOOP: "mainloop",
|
50
|
+
LIFECYCLE_KERNEL_POSTMAIN: "postmain",
|
51
|
+
LIFECYCLE_KERNEL_PRESHUTDOWN: "preshutdown",
|
52
|
+
LIFECYCLE_KERNEL_SHUTDOWN: "shutdown",
|
53
|
+
}
|
54
|
+
|
55
|
+
|
56
|
+
def kernel_lifecycle_name(lifecycle):
|
57
|
+
return KERNEL_LIFECYCLE_NAMES[lifecycle]
|
58
|
+
|
59
|
+
|
60
|
+
SERVICE_LIFECYCLE_NAMES = {
|
61
|
+
LIFECYCLE_SERVICE_INIT: "init",
|
62
|
+
LIFECYCLE_SERVICE_ADDED: "added",
|
63
|
+
LIFECYCLE_SERVICE_ATTACHED: "attached",
|
64
|
+
LIFECYCLE_SERVICE_ASSIGNED: "assigned",
|
65
|
+
LIFECYCLE_SERVICE_DETACHED: "detached",
|
66
|
+
LIFECYCLE_SERVICE_SHUTDOWN: "shutdown",
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
def service_lifecycle_name(lifecycle):
|
71
|
+
return SERVICE_LIFECYCLE_NAMES[lifecycle]
|
meerk40t/kernel/module.py
CHANGED
@@ -1,49 +1,49 @@
|
|
1
|
-
class Module:
|
2
|
-
"""
|
3
|
-
Modules are a generic lifecycle object. These are registered in the kernel as modules and when open() is called for
|
4
|
-
a context. When close() is called on the context, it will close and delete references to the opened module and call
|
5
|
-
module_close().
|
6
|
-
|
7
|
-
If an opened module tries to open() a second time in a context with the same name, and was not closed, the
|
8
|
-
restore() function is called for the module, with the same args and kwargs that would have been called on
|
9
|
-
__init__().
|
10
|
-
|
11
|
-
Multiple instances of a module can be opened but this requires a different initialization name.
|
12
|
-
"""
|
13
|
-
|
14
|
-
def __init__(
|
15
|
-
self,
|
16
|
-
context: "Context",
|
17
|
-
name: str = None,
|
18
|
-
registered_path: str = None,
|
19
|
-
*args,
|
20
|
-
**kwargs,
|
21
|
-
):
|
22
|
-
self.context = context
|
23
|
-
self.name = name
|
24
|
-
self.registered_path = registered_path
|
25
|
-
self.state = "init"
|
26
|
-
|
27
|
-
def __repr__(self):
|
28
|
-
return f'{self.__class__.__name__}({repr(self.context)}, name="{self.name}")'
|
29
|
-
|
30
|
-
def restore(self, *args, **kwargs):
|
31
|
-
"""Called with the same values of __init()__ on an attempt to reopen of a module with the same name at the
|
32
|
-
same context."""
|
33
|
-
pass
|
34
|
-
|
35
|
-
def module_open(self, *args, **kwargs):
|
36
|
-
"""Initialize() is called after open() to set up the module and allow it to register various hooks into the
|
37
|
-
kernelspace."""
|
38
|
-
pass
|
39
|
-
|
40
|
-
def module_close(self, *args, **kwargs):
|
41
|
-
"""Finalize is called after close() to unhook various kernelspace hooks. This will happen if kernel is being
|
42
|
-
shutdown or if this individual module is being closed on its own."""
|
43
|
-
pass
|
44
|
-
|
45
|
-
def add_module_delegate(self, delegate):
|
46
|
-
self.context.kernel.add_delegate(delegate, self)
|
47
|
-
|
48
|
-
def remove_module_delegate(self, delegate):
|
49
|
-
self.context.kernel.remove_delegate(delegate, self)
|
1
|
+
class Module:
|
2
|
+
"""
|
3
|
+
Modules are a generic lifecycle object. These are registered in the kernel as modules and when open() is called for
|
4
|
+
a context. When close() is called on the context, it will close and delete references to the opened module and call
|
5
|
+
module_close().
|
6
|
+
|
7
|
+
If an opened module tries to open() a second time in a context with the same name, and was not closed, the
|
8
|
+
restore() function is called for the module, with the same args and kwargs that would have been called on
|
9
|
+
__init__().
|
10
|
+
|
11
|
+
Multiple instances of a module can be opened but this requires a different initialization name.
|
12
|
+
"""
|
13
|
+
|
14
|
+
def __init__(
|
15
|
+
self,
|
16
|
+
context: "Context",
|
17
|
+
name: str = None,
|
18
|
+
registered_path: str = None,
|
19
|
+
*args,
|
20
|
+
**kwargs,
|
21
|
+
):
|
22
|
+
self.context = context
|
23
|
+
self.name = name
|
24
|
+
self.registered_path = registered_path
|
25
|
+
self.state = "init"
|
26
|
+
|
27
|
+
def __repr__(self):
|
28
|
+
return f'{self.__class__.__name__}({repr(self.context)}, name="{self.name}")'
|
29
|
+
|
30
|
+
def restore(self, *args, **kwargs):
|
31
|
+
"""Called with the same values of __init()__ on an attempt to reopen of a module with the same name at the
|
32
|
+
same context."""
|
33
|
+
pass
|
34
|
+
|
35
|
+
def module_open(self, *args, **kwargs):
|
36
|
+
"""Initialize() is called after open() to set up the module and allow it to register various hooks into the
|
37
|
+
kernelspace."""
|
38
|
+
pass
|
39
|
+
|
40
|
+
def module_close(self, *args, **kwargs):
|
41
|
+
"""Finalize is called after close() to unhook various kernelspace hooks. This will happen if kernel is being
|
42
|
+
shutdown or if this individual module is being closed on its own."""
|
43
|
+
pass
|
44
|
+
|
45
|
+
def add_module_delegate(self, delegate):
|
46
|
+
self.context.kernel.add_delegate(delegate, self)
|
47
|
+
|
48
|
+
def remove_module_delegate(self, delegate):
|
49
|
+
self.context.kernel.remove_delegate(delegate, self)
|
meerk40t/kernel/service.py
CHANGED
@@ -1,147 +1,147 @@
|
|
1
|
-
from typing import Any, Callable
|
2
|
-
|
3
|
-
from .context import Context
|
4
|
-
from .functions import (
|
5
|
-
console_argument,
|
6
|
-
console_command,
|
7
|
-
console_command_remove,
|
8
|
-
console_option,
|
9
|
-
)
|
10
|
-
from .lifecycles import *
|
11
|
-
|
12
|
-
|
13
|
-
class Service(Context):
|
14
|
-
"""
|
15
|
-
A service is a context that with additional capabilities. These get registered by a domain in the kernel as a
|
16
|
-
particular aspect. For example, .device or .gui could be a service and this service would be found at that attribute
|
17
|
-
at for any context. As a type of context, services have a path for saving settings. The path is the saving/loading
|
18
|
-
location for persistent settings. As a service, these contexts may exist at .<domain> relative to any context.
|
19
|
-
This also allows several services to be registered for the same domain. These are swapped with the activate_service
|
20
|
-
commands in the kernel.
|
21
|
-
|
22
|
-
Each service has its own registered lookup of data. This extends the lookup of the kernel but only for those
|
23
|
-
services which are currently active. This extends to various data types that are registered in the kernel such
|
24
|
-
as choices and console commands. The currently active service can modify these simply by being activated. A command
|
25
|
-
registered in a deactivated service cannot be executed from the console, only the activated service's command is
|
26
|
-
executed in that case.
|
27
|
-
|
28
|
-
Unlike contexts which should be derived or gotten at a particular path. Services can be directly instanced.
|
29
|
-
"""
|
30
|
-
|
31
|
-
def __init__(self, kernel: "Kernel", path: str, registered_path: str = None):
|
32
|
-
super().__init__(kernel, path)
|
33
|
-
kernel.register_as_context(self)
|
34
|
-
self.registered_path = registered_path
|
35
|
-
self._registered = {}
|
36
|
-
|
37
|
-
def __str__(self):
|
38
|
-
if hasattr(self, "label"):
|
39
|
-
return self.label
|
40
|
-
return f"Service('{self._path}', {self.registered_path})"
|
41
|
-
|
42
|
-
def service_attach(self, *args, **kwargs):
|
43
|
-
pass
|
44
|
-
|
45
|
-
def service_detach(self, *args, **kwargs):
|
46
|
-
pass
|
47
|
-
|
48
|
-
def shutdown(self, *args, **kwargs):
|
49
|
-
"""
|
50
|
-
Called by kernel during shutdown process for all services.
|
51
|
-
@param args:
|
52
|
-
@param kwargs:
|
53
|
-
@return:
|
54
|
-
"""
|
55
|
-
pass
|
56
|
-
|
57
|
-
def register(self, path: str, obj: Any) -> None:
|
58
|
-
"""
|
59
|
-
Registers an element within this service.
|
60
|
-
|
61
|
-
@param path:
|
62
|
-
@param obj:
|
63
|
-
@return:
|
64
|
-
"""
|
65
|
-
self._registered[path] = obj
|
66
|
-
try:
|
67
|
-
obj.sub_register(self)
|
68
|
-
except AttributeError:
|
69
|
-
pass
|
70
|
-
self._kernel.lookup_change(path)
|
71
|
-
|
72
|
-
def unregister(self, path: str) -> None:
|
73
|
-
"""
|
74
|
-
Unregister an element within this service.
|
75
|
-
|
76
|
-
@param path: Path to unregister
|
77
|
-
@return:
|
78
|
-
"""
|
79
|
-
del self._registered[path]
|
80
|
-
self._kernel.lookup_change(path)
|
81
|
-
|
82
|
-
def console_argument(self, *args, **kwargs) -> Callable:
|
83
|
-
"""
|
84
|
-
Delegate to Kernel
|
85
|
-
|
86
|
-
Uses current context to be passed to the console_argument being registered.
|
87
|
-
"""
|
88
|
-
return console_argument(*args, **kwargs)
|
89
|
-
|
90
|
-
def console_option(self, *args, **kwargs) -> Callable:
|
91
|
-
"""
|
92
|
-
Delegate to Kernel
|
93
|
-
|
94
|
-
Uses current context to be passed to the console_option being registered.
|
95
|
-
"""
|
96
|
-
return console_option(*args, **kwargs)
|
97
|
-
|
98
|
-
def console_command(self, *args, **kwargs) -> Callable:
|
99
|
-
"""
|
100
|
-
Service console command registration.
|
101
|
-
|
102
|
-
Uses the current registration to register the given command.
|
103
|
-
"""
|
104
|
-
return console_command(self, *args, **kwargs)
|
105
|
-
|
106
|
-
def console_command_remove(self, *args, **kwargs) -> None:
|
107
|
-
"""
|
108
|
-
Delegate to Kernel
|
109
|
-
|
110
|
-
Uses current context to be passed to the console_command being removed.
|
111
|
-
"""
|
112
|
-
return console_command_remove(self, *args, **kwargs)
|
113
|
-
|
114
|
-
def destroy(self):
|
115
|
-
self.kernel.set_service_lifecycle(self, LIFECYCLE_SERVICE_SHUTDOWN)
|
116
|
-
self.clear_persistent()
|
117
|
-
self.close_subpaths()
|
118
|
-
|
119
|
-
def register_choices(self, sheet, choices):
|
120
|
-
"""
|
121
|
-
Registers choices to a given sheet. If the sheet already exists then the new choices
|
122
|
-
are appended to the given sheet.
|
123
|
-
|
124
|
-
If these choices are registered to an object of Context type we then set the given
|
125
|
-
default values.
|
126
|
-
|
127
|
-
Service register choices command registration.
|
128
|
-
|
129
|
-
Uses the current registration to register the choices.
|
130
|
-
@param sheet: Name of choices being registered
|
131
|
-
@param choices: list of choices
|
132
|
-
@return:
|
133
|
-
"""
|
134
|
-
key = f"choices/{sheet}"
|
135
|
-
if key in self._registered:
|
136
|
-
others = self._registered[key]
|
137
|
-
others.extend(choices)
|
138
|
-
self.register(key, others) # Reregister to trigger lookup change
|
139
|
-
else:
|
140
|
-
self.register(key, choices)
|
141
|
-
for c in choices:
|
142
|
-
obj = c["object"]
|
143
|
-
if isinstance(obj, Context):
|
144
|
-
obj.setting(c["type"], c["attr"], c["default"])
|
145
|
-
|
146
|
-
def add_service_delegate(self, delegate):
|
147
|
-
self.kernel.add_delegate(delegate, self)
|
1
|
+
from typing import Any, Callable
|
2
|
+
|
3
|
+
from .context import Context
|
4
|
+
from .functions import (
|
5
|
+
console_argument,
|
6
|
+
console_command,
|
7
|
+
console_command_remove,
|
8
|
+
console_option,
|
9
|
+
)
|
10
|
+
from .lifecycles import *
|
11
|
+
|
12
|
+
|
13
|
+
class Service(Context):
|
14
|
+
"""
|
15
|
+
A service is a context that with additional capabilities. These get registered by a domain in the kernel as a
|
16
|
+
particular aspect. For example, .device or .gui could be a service and this service would be found at that attribute
|
17
|
+
at for any context. As a type of context, services have a path for saving settings. The path is the saving/loading
|
18
|
+
location for persistent settings. As a service, these contexts may exist at .<domain> relative to any context.
|
19
|
+
This also allows several services to be registered for the same domain. These are swapped with the activate_service
|
20
|
+
commands in the kernel.
|
21
|
+
|
22
|
+
Each service has its own registered lookup of data. This extends the lookup of the kernel but only for those
|
23
|
+
services which are currently active. This extends to various data types that are registered in the kernel such
|
24
|
+
as choices and console commands. The currently active service can modify these simply by being activated. A command
|
25
|
+
registered in a deactivated service cannot be executed from the console, only the activated service's command is
|
26
|
+
executed in that case.
|
27
|
+
|
28
|
+
Unlike contexts which should be derived or gotten at a particular path. Services can be directly instanced.
|
29
|
+
"""
|
30
|
+
|
31
|
+
def __init__(self, kernel: "Kernel", path: str, registered_path: str = None):
|
32
|
+
super().__init__(kernel, path)
|
33
|
+
kernel.register_as_context(self)
|
34
|
+
self.registered_path = registered_path
|
35
|
+
self._registered = {}
|
36
|
+
|
37
|
+
def __str__(self):
|
38
|
+
if hasattr(self, "label"):
|
39
|
+
return self.label
|
40
|
+
return f"Service('{self._path}', {self.registered_path})"
|
41
|
+
|
42
|
+
def service_attach(self, *args, **kwargs):
|
43
|
+
pass
|
44
|
+
|
45
|
+
def service_detach(self, *args, **kwargs):
|
46
|
+
pass
|
47
|
+
|
48
|
+
def shutdown(self, *args, **kwargs):
|
49
|
+
"""
|
50
|
+
Called by kernel during shutdown process for all services.
|
51
|
+
@param args:
|
52
|
+
@param kwargs:
|
53
|
+
@return:
|
54
|
+
"""
|
55
|
+
pass
|
56
|
+
|
57
|
+
def register(self, path: str, obj: Any) -> None:
|
58
|
+
"""
|
59
|
+
Registers an element within this service.
|
60
|
+
|
61
|
+
@param path:
|
62
|
+
@param obj:
|
63
|
+
@return:
|
64
|
+
"""
|
65
|
+
self._registered[path] = obj
|
66
|
+
try:
|
67
|
+
obj.sub_register(self)
|
68
|
+
except AttributeError:
|
69
|
+
pass
|
70
|
+
self._kernel.lookup_change(path)
|
71
|
+
|
72
|
+
def unregister(self, path: str) -> None:
|
73
|
+
"""
|
74
|
+
Unregister an element within this service.
|
75
|
+
|
76
|
+
@param path: Path to unregister
|
77
|
+
@return:
|
78
|
+
"""
|
79
|
+
del self._registered[path]
|
80
|
+
self._kernel.lookup_change(path)
|
81
|
+
|
82
|
+
def console_argument(self, *args, **kwargs) -> Callable:
|
83
|
+
"""
|
84
|
+
Delegate to Kernel
|
85
|
+
|
86
|
+
Uses current context to be passed to the console_argument being registered.
|
87
|
+
"""
|
88
|
+
return console_argument(*args, **kwargs)
|
89
|
+
|
90
|
+
def console_option(self, *args, **kwargs) -> Callable:
|
91
|
+
"""
|
92
|
+
Delegate to Kernel
|
93
|
+
|
94
|
+
Uses current context to be passed to the console_option being registered.
|
95
|
+
"""
|
96
|
+
return console_option(*args, **kwargs)
|
97
|
+
|
98
|
+
def console_command(self, *args, **kwargs) -> Callable:
|
99
|
+
"""
|
100
|
+
Service console command registration.
|
101
|
+
|
102
|
+
Uses the current registration to register the given command.
|
103
|
+
"""
|
104
|
+
return console_command(self, *args, **kwargs)
|
105
|
+
|
106
|
+
def console_command_remove(self, *args, **kwargs) -> None:
|
107
|
+
"""
|
108
|
+
Delegate to Kernel
|
109
|
+
|
110
|
+
Uses current context to be passed to the console_command being removed.
|
111
|
+
"""
|
112
|
+
return console_command_remove(self, *args, **kwargs)
|
113
|
+
|
114
|
+
def destroy(self):
|
115
|
+
self.kernel.set_service_lifecycle(self, LIFECYCLE_SERVICE_SHUTDOWN)
|
116
|
+
self.clear_persistent()
|
117
|
+
self.close_subpaths()
|
118
|
+
|
119
|
+
def register_choices(self, sheet, choices):
|
120
|
+
"""
|
121
|
+
Registers choices to a given sheet. If the sheet already exists then the new choices
|
122
|
+
are appended to the given sheet.
|
123
|
+
|
124
|
+
If these choices are registered to an object of Context type we then set the given
|
125
|
+
default values.
|
126
|
+
|
127
|
+
Service register choices command registration.
|
128
|
+
|
129
|
+
Uses the current registration to register the choices.
|
130
|
+
@param sheet: Name of choices being registered
|
131
|
+
@param choices: list of choices
|
132
|
+
@return:
|
133
|
+
"""
|
134
|
+
key = f"choices/{sheet}"
|
135
|
+
if key in self._registered:
|
136
|
+
others = self._registered[key]
|
137
|
+
others.extend(choices)
|
138
|
+
self.register(key, others) # Reregister to trigger lookup change
|
139
|
+
else:
|
140
|
+
self.register(key, choices)
|
141
|
+
for c in choices:
|
142
|
+
obj = c["object"]
|
143
|
+
if isinstance(obj, Context):
|
144
|
+
obj.setting(c["type"], c["attr"], c["default"])
|
145
|
+
|
146
|
+
def add_service_delegate(self, delegate):
|
147
|
+
self.kernel.add_delegate(delegate, self)
|