meerk40t 0.9.2000__tar.gz → 0.9.3001__tar.gz

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.
Files changed (452) hide show
  1. meerk40t-0.9.3001/LICENSE +21 -0
  2. meerk40t-0.9.3001/PKG-INFO +139 -0
  3. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/README.md +19 -12
  4. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/balor_params.py +1 -43
  5. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/controller.py +1 -41
  6. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/device.py +16 -22
  7. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/driver.py +4 -4
  8. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/gui/balorconfig.py +2 -2
  9. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/gui/balorcontroller.py +13 -5
  10. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/gui/baloroperationproperties.py +0 -46
  11. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/gui/gui.py +17 -17
  12. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/gui/camerapanel.py +18 -11
  13. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/rastercut.py +3 -1
  14. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutplan.py +145 -14
  15. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/clipboard.py +18 -9
  16. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/element_treeops.py +320 -180
  17. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/element_types.py +7 -2
  18. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/elements.py +53 -27
  19. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/geometry.py +8 -0
  20. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/offset_clpr.py +129 -4
  21. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/offset_mk.py +3 -1
  22. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/shapes.py +28 -25
  23. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/laserjob.py +7 -0
  24. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/bootstrap.py +4 -0
  25. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/effect_hatch.py +85 -96
  26. meerk40t-0.9.3001/meerk40t/core/node/effect_wobble.py +309 -0
  27. meerk40t-0.9.3001/meerk40t/core/node/elem_image.py +801 -0
  28. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_line.py +60 -0
  29. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_rect.py +5 -3
  30. meerk40t-0.9.2000/meerk40t/core/node/elem_image.py → meerk40t-0.9.3001/meerk40t/core/node/image_processed.py +19 -24
  31. meerk40t-0.9.3001/meerk40t/core/node/image_raster.py +113 -0
  32. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/node.py +120 -1
  33. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/op_cut.py +2 -8
  34. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/op_dots.py +0 -8
  35. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/op_engrave.py +2 -18
  36. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/op_image.py +22 -35
  37. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/op_raster.py +0 -9
  38. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/planner.py +32 -2
  39. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/svg_io.py +699 -461
  40. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/treeop.py +191 -0
  41. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/undos.py +15 -1
  42. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/units.py +14 -4
  43. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/dummydevice.py +3 -2
  44. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/gui/defaultactions.py +43 -55
  45. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/gui/formatterpanel.py +58 -49
  46. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/gui/warningpanel.py +12 -12
  47. meerk40t-0.9.3001/meerk40t/device/mixins.py +13 -0
  48. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/dxf/dxf_io.py +9 -5
  49. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/ezd.py +28 -26
  50. meerk40t-0.9.3001/meerk40t/extra/imageactions.py +316 -0
  51. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/lbrn.py +19 -2
  52. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/fill/fills.py +6 -6
  53. meerk40t-0.9.3001/meerk40t/fill/patternfill.py +1061 -0
  54. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/fill/patterns.py +2 -6
  55. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/controller.py +168 -52
  56. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/device.py +23 -18
  57. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/driver.py +39 -0
  58. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/emulator.py +79 -19
  59. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/gcodejob.py +10 -0
  60. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/gui/grblconfiguration.py +2 -2
  61. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/gui/grblcontroller.py +24 -8
  62. meerk40t-0.9.3001/meerk40t/grbl/gui/grblhardwareconfig.py +153 -0
  63. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/gui/gui.py +17 -14
  64. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/mock_connection.py +15 -34
  65. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/plugin.py +0 -4
  66. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/serial_connection.py +2 -1
  67. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/about.py +8 -5
  68. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/alignment.py +10 -6
  69. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/basicops.py +27 -17
  70. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/bufferview.py +2 -2
  71. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/choicepropertypanel.py +101 -13
  72. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/consolepanel.py +12 -9
  73. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/devicepanel.py +38 -25
  74. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/executejob.py +6 -4
  75. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/help_assets/help_assets.py +13 -10
  76. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/hersheymanager.py +8 -6
  77. meerk40t-0.9.3001/meerk40t/gui/icons.py +2747 -0
  78. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/imagesplitter.py +14 -7
  79. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/keymap.py +3 -3
  80. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/laserpanel.py +151 -84
  81. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/laserrender.py +61 -70
  82. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/lasertoolpanel.py +8 -7
  83. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/materialtest.py +3 -3
  84. meerk40t-0.9.3001/meerk40t/gui/mkdebug.py +359 -0
  85. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/navigationpanels.py +321 -180
  86. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/notes.py +3 -3
  87. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/opassignment.py +12 -12
  88. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/operation_info.py +13 -13
  89. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/plugin.py +5 -0
  90. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/position.py +20 -18
  91. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/preferences.py +21 -6
  92. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/attributes.py +70 -22
  93. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/blobproperty.py +2 -2
  94. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/consoleproperty.py +2 -2
  95. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/groupproperties.py +3 -3
  96. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/hatchproperty.py +11 -18
  97. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/imageproperty.py +4 -3
  98. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/opbranchproperties.py +1 -1
  99. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/pathproperty.py +2 -2
  100. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/pointproperty.py +2 -2
  101. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/propertywindow.py +4 -4
  102. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/textproperty.py +3 -3
  103. meerk40t-0.9.3001/meerk40t/gui/propertypanels/wobbleproperty.py +204 -0
  104. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/ribbon.py +367 -259
  105. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/scene.py +31 -5
  106. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/elementswidget.py +12 -4
  107. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/gridwidget.py +2 -2
  108. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/laserpathwidget.py +7 -2
  109. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/machineoriginwidget.py +6 -2
  110. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/relocatewidget.py +1 -1
  111. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/reticlewidget.py +9 -0
  112. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/selectionwidget.py +12 -7
  113. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/simpleui.py +95 -8
  114. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/simulation.py +44 -36
  115. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/spoolerpanel.py +124 -26
  116. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/defaultoperations.py +18 -6
  117. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/infowidget.py +2 -2
  118. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/opassignwidget.py +12 -12
  119. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/shapepropwidget.py +45 -18
  120. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/statusbar.py +11 -4
  121. meerk40t-0.9.3001/meerk40t/gui/themes.py +78 -0
  122. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolcircle.py +2 -1
  123. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolellipse.py +2 -1
  124. meerk40t-0.9.3001/meerk40t/gui/toolwidgets/toolimagecut.py +132 -0
  125. meerk40t-0.9.3001/meerk40t/gui/toolwidgets/toolline.py +144 -0
  126. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolnodeedit.py +72 -145
  127. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolpoint.py +1 -1
  128. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolpolygon.py +8 -55
  129. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolrect.py +2 -1
  130. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/usbconnect.py +2 -2
  131. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/cyclocycloidwidget.py +2 -2
  132. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/harmonograph.py +7 -7
  133. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/scalewidget.py +1 -1
  134. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wordlisteditor.py +33 -18
  135. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxmeerk40t.py +166 -66
  136. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxmmain.py +236 -157
  137. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxmribbon.py +49 -25
  138. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxmscene.py +49 -38
  139. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxmtree.py +216 -85
  140. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxutils.py +62 -4
  141. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/image/imagetools.py +443 -15
  142. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/internal_plugins.py +2 -10
  143. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/kernel.py +12 -4
  144. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/controller.py +7 -7
  145. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/device.py +3 -1
  146. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/driver.py +3 -0
  147. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/gui.py +8 -8
  148. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/lhyaccelgui.py +2 -2
  149. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/lhycontrollergui.py +73 -27
  150. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/lhydrivergui.py +2 -2
  151. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/tcpcontroller.py +22 -9
  152. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/main.py +6 -1
  153. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/controller.py +5 -5
  154. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/device.py +5 -2
  155. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/driver.py +4 -0
  156. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/gui/gui.py +8 -8
  157. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/gui/moshicontrollergui.py +24 -8
  158. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/gui/moshidrivergui.py +2 -2
  159. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/controller.py +2 -0
  160. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/device.py +9 -2
  161. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/driver.py +4 -0
  162. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/gui/gui.py +16 -17
  163. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/gui/newlyconfig.py +2 -2
  164. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/gui/newlycontroller.py +13 -5
  165. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/rotary/gui/gui.py +2 -2
  166. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/rotary/gui/rotarysettings.py +2 -2
  167. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/device.py +3 -0
  168. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/driver.py +4 -0
  169. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/gui/gui.py +6 -6
  170. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/gui/ruidaconfig.py +2 -2
  171. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/gui/ruidacontroller.py +13 -5
  172. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/svgelements.py +9 -9
  173. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/geomstr.py +849 -153
  174. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/kerftest.py +8 -4
  175. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/livinghinges.py +15 -8
  176. meerk40t-0.9.3001/meerk40t.egg-info/PKG-INFO +139 -0
  177. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/SOURCES.txt +415 -2
  178. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/entry_points.txt +0 -1
  179. meerk40t-0.9.3001/pyproject.toml +649 -0
  180. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/setup.cfg +1 -1
  181. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_core_elements.py +8 -24
  182. meerk40t-0.9.3001/test/test_file_svg.py +176 -0
  183. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_fill.py +9 -9
  184. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_geomstr.py +258 -8
  185. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_kernel.py +4 -0
  186. meerk40t-0.9.3001/test/test_tools_rasterplotter.py +29 -0
  187. meerk40t-0.9.2000/PKG-INFO +0 -120
  188. meerk40t-0.9.2000/meerk40t/extra/embroider.py +0 -56
  189. meerk40t-0.9.2000/meerk40t/extra/imageactions.py +0 -324
  190. meerk40t-0.9.2000/meerk40t/extra/pathoptimize.py +0 -249
  191. meerk40t-0.9.2000/meerk40t/fill/patternfill.py +0 -1061
  192. meerk40t-0.9.2000/meerk40t/gui/icons.py +0 -3861
  193. meerk40t-0.9.2000/meerk40t/gui/mkdebug.py +0 -106
  194. meerk40t-0.9.2000/meerk40t.egg-info/PKG-INFO +0 -120
  195. meerk40t-0.9.2000/test/test_file_svg.py +0 -88
  196. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/__init__.py +0 -0
  197. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/__init__.py +0 -0
  198. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/clone_loader.py +0 -0
  199. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/elementlightjob.py +0 -0
  200. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/gui/__init__.py +0 -0
  201. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/livelightjob.py +0 -0
  202. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/mock_connection.py +0 -0
  203. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/plugin.py +0 -0
  204. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/usb_connection.py +0 -0
  205. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/__init__.py +0 -0
  206. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/camera.py +0 -0
  207. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/gui/__init__.py +0 -0
  208. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/gui/gui.py +0 -0
  209. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/plugin.py +0 -0
  210. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ch341/__init__.py +0 -0
  211. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ch341/ch341device.py +0 -0
  212. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ch341/libusb.py +0 -0
  213. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ch341/mock.py +0 -0
  214. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ch341/windriver.py +0 -0
  215. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/__init__.py +0 -0
  216. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/bindalias.py +0 -0
  217. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/core.py +0 -0
  218. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/__init__.py +0 -0
  219. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/cubiccut.py +0 -0
  220. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/cutcode.py +0 -0
  221. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/cutgroup.py +0 -0
  222. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/cutobject.py +0 -0
  223. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/dwellcut.py +0 -0
  224. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/gotocut.py +0 -0
  225. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/homecut.py +0 -0
  226. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/inputcut.py +0 -0
  227. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/linecut.py +0 -0
  228. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/outputcut.py +0 -0
  229. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/plotcut.py +0 -0
  230. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/quadcut.py +0 -0
  231. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/waitcut.py +0 -0
  232. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/drivers.py +0 -0
  233. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/element_commands.py +0 -0
  234. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/__init__.py +0 -0
  235. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/align.py +0 -0
  236. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/branches.py +0 -0
  237. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/files.py +0 -0
  238. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/grid.py +0 -0
  239. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/materials.py +0 -0
  240. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/notes.py +0 -0
  241. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/penbox.py +0 -0
  242. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/placements.py +0 -0
  243. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/render.py +0 -0
  244. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/trace.py +0 -0
  245. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/tree_commands.py +0 -0
  246. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/undo_redo.py +0 -0
  247. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/wordlist.py +0 -0
  248. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/exceptions.py +0 -0
  249. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/logging.py +0 -0
  250. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/__init__.py +0 -0
  251. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/blobnode.py +0 -0
  252. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/branch_elems.py +0 -0
  253. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/branch_ops.py +0 -0
  254. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/branch_regmark.py +0 -0
  255. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/cutnode.py +0 -0
  256. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_ellipse.py +0 -0
  257. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_path.py +0 -0
  258. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_point.py +0 -0
  259. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_polyline.py +0 -0
  260. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_text.py +0 -0
  261. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/filenode.py +0 -0
  262. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/groupnode.py +0 -0
  263. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/layernode.py +0 -0
  264. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/mixins.py +0 -0
  265. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/nutils.py +0 -0
  266. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/place_current.py +0 -0
  267. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/place_point.py +0 -0
  268. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/refnode.py +0 -0
  269. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/rootnode.py +0 -0
  270. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_console.py +0 -0
  271. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_goto.py +0 -0
  272. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_home.py +0 -0
  273. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_input.py +0 -0
  274. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_output.py +0 -0
  275. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_wait.py +0 -0
  276. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/parameters.py +0 -0
  277. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/plotplanner.py +0 -0
  278. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/space.py +0 -0
  279. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/spoolers.py +0 -0
  280. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/view.py +0 -0
  281. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/webhelp.py +0 -0
  282. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/wordlist.py +0 -0
  283. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/__init__.py +0 -0
  284. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/basedevice.py +0 -0
  285. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/gui/__init__.py +0 -0
  286. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/dxf/__init__.py +0 -0
  287. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/dxf/plugin.py +0 -0
  288. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/external_plugins.py +0 -0
  289. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/external_plugins_build.py +0 -0
  290. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/__init__.py +0 -0
  291. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/cag.py +0 -0
  292. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/hershey.py +0 -0
  293. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/inkscape.py +0 -0
  294. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/param_functions.py +0 -0
  295. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/potrace.py +0 -0
  296. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/updater.py +0 -0
  297. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/vectrace.py +0 -0
  298. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/winsleep.py +0 -0
  299. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/fill/__init__.py +0 -0
  300. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/__init__.py +0 -0
  301. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/control.py +0 -0
  302. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/gui/__init__.py +0 -0
  303. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/interpreter.py +0 -0
  304. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/loader.py +0 -0
  305. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/tcp_connection.py +0 -0
  306. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/__init__.py +0 -0
  307. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/busy.py +0 -0
  308. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/dialogoptions.py +0 -0
  309. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/fonts.py +0 -0
  310. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/guicolors.py +0 -0
  311. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/help_assets/__init__.py +0 -0
  312. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/mwindow.py +0 -0
  313. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/__init__.py +0 -0
  314. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/inputproperty.py +0 -0
  315. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/operationpropertymain.py +0 -0
  316. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/outputproperty.py +0 -0
  317. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/placementproperty.py +0 -0
  318. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/rasterwizardpanels.py +0 -0
  319. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/waitproperty.py +0 -0
  320. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/__init__.py +0 -0
  321. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/sceneconst.py +0 -0
  322. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/scenepanel.py +0 -0
  323. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/scenespacewidget.py +0 -0
  324. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/widget.py +0 -0
  325. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/__init__.py +0 -0
  326. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/affinemover.py +0 -0
  327. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/attractionwidget.py +0 -0
  328. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/bedwidget.py +0 -0
  329. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/guidewidget.py +0 -0
  330. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/nodeselector.py +0 -0
  331. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/rectselectwidget.py +0 -0
  332. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/snapoptions.py +0 -0
  333. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/__init__.py +0 -0
  334. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/selectionwidget.py +0 -0
  335. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/statusbarwidget.py +0 -0
  336. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/strokewidget.py +0 -0
  337. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/__init__.py +0 -0
  338. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/circlebrush.py +0 -0
  339. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolcontainer.py +0 -0
  340. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/tooldraw.py +0 -0
  341. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toollinetext.py +0 -0
  342. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolmeasure.py +0 -0
  343. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolnodemove.py +0 -0
  344. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolparameter.py +0 -0
  345. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolplacement.py +0 -0
  346. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolpolyline.py +0 -0
  347. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolrelocate.py +0 -0
  348. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolribbon.py +0 -0
  349. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/tooltext.py +0 -0
  350. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolvector.py +0 -0
  351. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolwidget.py +0 -0
  352. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/__init__.py +0 -0
  353. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/buttonwidget.py +0 -0
  354. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/checkboxwidget.py +0 -0
  355. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/controlwidget.py +0 -0
  356. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/handlewidget.py +0 -0
  357. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/openclosewidget.py +0 -0
  358. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/rotationwidget.py +0 -0
  359. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/seekbarwidget.py +0 -0
  360. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/togglewidget.py +0 -0
  361. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/toolbarwidget.py +0 -0
  362. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/zmatrix.py +0 -0
  363. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/image/__init__.py +0 -0
  364. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/__init__.py +0 -0
  365. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/channel.py +0 -0
  366. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/context.py +0 -0
  367. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/exceptions.py +0 -0
  368. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/functions.py +0 -0
  369. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/jobs.py +0 -0
  370. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/lifecycles.py +0 -0
  371. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/module.py +0 -0
  372. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/service.py +0 -0
  373. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/settings.py +0 -0
  374. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/states.py +0 -0
  375. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/__init__.py +0 -0
  376. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/__init__.py +0 -0
  377. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/lhyoperationproperties.py +0 -0
  378. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/interpreter.py +0 -0
  379. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/laserspeed.py +0 -0
  380. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/loader.py +0 -0
  381. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/parser.py +0 -0
  382. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/plugin.py +0 -0
  383. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/tcp_connection.py +0 -0
  384. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/__init__.py +0 -0
  385. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/builder.py +0 -0
  386. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/gui/__init__.py +0 -0
  387. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/plugin.py +0 -0
  388. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/network/__init__.py +0 -0
  389. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/network/console_server.py +0 -0
  390. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/network/kernelserver.py +0 -0
  391. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/network/tcp_server.py +0 -0
  392. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/network/udp_server.py +0 -0
  393. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/__init__.py +0 -0
  394. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/gui/__init__.py +0 -0
  395. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/gui/operationproperties.py +0 -0
  396. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/mock_connection.py +0 -0
  397. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/newly_params.py +0 -0
  398. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/plugin.py +0 -0
  399. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/usb_connection.py +0 -0
  400. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/rotary/__init__.py +0 -0
  401. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/rotary/gui/__init__.py +0 -0
  402. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/rotary/rotary.py +0 -0
  403. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/__init__.py +0 -0
  404. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/control.py +0 -0
  405. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/controller.py +0 -0
  406. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/emulator.py +0 -0
  407. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/exceptions.py +0 -0
  408. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/gui/__init__.py +0 -0
  409. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/gui/ruidaoperationproperties.py +0 -0
  410. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/loader.py +0 -0
  411. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/mock_connection.py +0 -0
  412. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/plugin.py +0 -0
  413. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/rdjob.py +0 -0
  414. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/__init__.py +0 -0
  415. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/driver_to_path.py +0 -0
  416. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/jhfparser.py +0 -0
  417. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/pathtools.py +0 -0
  418. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/pointfinder.py +0 -0
  419. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/polybool.py +0 -0
  420. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/rasterplotter.py +0 -0
  421. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/shxparser.py +0 -0
  422. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/ttfparser.py +0 -0
  423. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/zinglplotter.py +0 -0
  424. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/dependency_links.txt +0 -0
  425. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/requires.txt +0 -0
  426. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/top_level.txt +0 -0
  427. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/zip-safe +0 -0
  428. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/setup.py +0 -0
  429. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/__init__.py +0 -0
  430. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/bootstrap.py +0 -0
  431. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_cli.py +0 -0
  432. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_core_cutcode.py +0 -0
  433. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_core_plotplanner.py +0 -0
  434. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_core_viewports.py +0 -0
  435. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_drivers_grbl.py +0 -0
  436. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_drivers_lihuiyu.py +0 -0
  437. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_drivers_newly.py +0 -0
  438. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_element_degenerate_points.py +0 -0
  439. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_elements_classify.py +0 -0
  440. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_elements_penbox.py +0 -0
  441. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_geomstr_nodes.py +0 -0
  442. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_imagetools_actualize.py +0 -0
  443. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_imagetools_wizard.py +0 -0
  444. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_laser_speeds.py +0 -0
  445. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_length.py +0 -0
  446. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_lifecycle.py +0 -0
  447. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_operations.py +0 -0
  448. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_operations_hatch.py +0 -0
  449. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_ruida.py +0 -0
  450. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_spooler.py +0 -0
  451. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_wobble.py +0 -0
  452. {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_zingl.py +0 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 meerk40t
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,139 @@
1
+ Metadata-Version: 2.1
2
+ Name: meerk40t
3
+ Version: 0.9.3001
4
+ Summary: MeerK40t LaserCutter Software
5
+ Home-page: https://github.com/meerk40t/meerk40t
6
+ Author: Tatarize
7
+ Author-email: tatarize@gmail.com
8
+ License: MIT
9
+ Keywords: lasercutter,laser,vector,parser
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python
14
+ Classifier: Programming Language :: Python :: 3.6
15
+ Classifier: Programming Language :: Python :: 3.7
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Topic :: Multimedia :: Graphics
20
+ Classifier: Topic :: Multimedia :: Graphics :: Editors :: Vector-Based
21
+ Classifier: Topic :: Utilities
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: pyusb>=1.0.0
25
+ Requires-Dist: pyserial
26
+ Requires-Dist: numpy
27
+ Provides-Extra: all
28
+ Requires-Dist: wxPython>=4.0.0; extra == "all"
29
+ Requires-Dist: Pillow>=7.0.0; extra == "all"
30
+ Requires-Dist: opencv-python-headless>=3.4.0.0; extra == "all"
31
+ Requires-Dist: ezdxf>=0.14.0; extra == "all"
32
+ Provides-Extra: gui
33
+ Requires-Dist: wxPython>=4.0.0; extra == "gui"
34
+ Requires-Dist: Pillow>=7.0.0; extra == "gui"
35
+ Provides-Extra: cam
36
+ Requires-Dist: opencv-python-headless>=3.4.0.0; extra == "cam"
37
+ Provides-Extra: dxf
38
+ Requires-Dist: ezdxf>=0.14.0; extra == "dxf"
39
+ Provides-Extra: camhead
40
+ Requires-Dist: opencv-python>=3.4.0.0; extra == "camhead"
41
+
42
+ # MeerK40t
43
+ MeerK40t (pronounced MeerKat) is a built-from-the-ground-up MIT licensed open-source laser cutting software.
44
+
45
+ ## Primary Goals
46
+ * Provide users with high quality laser control software.
47
+ * Provide developers with a highly extensible platform to help further their own ideas, and provide novel work to the laser community at large.
48
+
49
+ ## Running
50
+ MeerK40t is written in Python and precompiled versions are [available for download](https://github.com/meerk40t/meerk40t/releases) for Windows, Mac OSX, Linux and Raspberry Pi (more infos below). Due note this sometimes will give false postitives for various viruses (especially since Meerk40t isn't signed).
51
+
52
+ ### Source
53
+
54
+ Alternatively you can run MeerK40t directly from Python. `pip install meerk40t[all]` with python installed will usually be sufficient. Then merely run `meerk40t` at the command line.
55
+
56
+ See [Install: Source wiki page](https://github.com/meerk40t/meerk40t/wiki/Install:-Source)
57
+
58
+ ### GUI
59
+ ![meerk40t8](https://user-images.githubusercontent.com/3302478/196283699-745d0616-5e74-49b3-ba95-f4902061584b.png)
60
+
61
+ The wxMeerK40t is the GUI and is written in wxPython. We use AUI to allow to have a very highly configurable UI. We can easily add panes and tools and there are quite a few available already.
62
+
63
+ ### Command Line Interface
64
+
65
+ Meerk40t has an advanced internal console system allowing access to most parts of the code with various commands. It also provides a command line interface which should allow you to automate any processes.
66
+
67
+ ## Drivers
68
+
69
+ Meerk40t provides a variety of drivers with an extensible framework to provide support for other new laser devices. The code was written with the myriad of possibilities for different software in mind. For example, it may be essential that GRBL be able to reset an alarm or notify the user of particular error codes. The configuration for GRBL is not the same for the configuration of other laser control drivers. With this in mind, Meerk40t can radically change how and when it works
70
+
71
+
72
+ ### Supported devices
73
+ * Lihuiyu M2/M3-Nano
74
+ * GRBL
75
+ * Ezcad2-compatible JCZ controllers galvo lasers
76
+ * Moshiboard
77
+ * NewlyDraw System 8.1 Lasers
78
+ * Ruida-Emulation (Middleman between Lightburn and K40)
79
+
80
+ ### Lihuiyu M2-Nano
81
+ For the Lihuiyu (stock driver), Meerk40t supports both the windows and libusb connection methods, making it compatible with Whisperer and with the original Chinese software. So MeerK40t can usually run alongside these other pieces of software interchangeably.
82
+
83
+ ### GRBL
84
+
85
+ GRBL is itself open source and the various interfaces with the board should be quite well understood.
86
+
87
+ ### EZCAD2-Compatible Galvo LMC
88
+
89
+ Meerk40t supports controlling galvo as well as gantry lasers with open source support.
90
+
91
+ ### Moshiboard
92
+
93
+ The support for old moshiboards makes meerk40t the only known opensource software that controls moshiboards.
94
+
95
+ ### System 8.1 Lasers (NewlyDraw)
96
+
97
+ HPGL-modified laser systems produced under many different company names
98
+
99
+ ## Support
100
+ The primary source for help and documentation is the [MeerK40t Wiki - please click here](https://github.com/meerk40t/meerk40t/wiki).
101
+
102
+ If you have a bug, feature request, or other issue raise it here. These are likely to be resolved. Squeaky wheels get the grease.
103
+ https://github.com/meerk40t/meerk40t/issues
104
+
105
+ If you need additional support, please research/ask on:
106
+
107
+ * [Facebook](https://www.facebook.com/groups/716000085655097/)
108
+ * [Maker Forums](https://forum.makerforums.info/t/about-the-meerk40t-category/79660)
109
+ * [YouTube - David Olsen's channel](https://www.youtube.com/channel/UCsAUV23O2FyKxC0HN7nkAQQ)
110
+ * [YouTube - Some instruction videos](https://www.youtube.com/channel/UCMN9gGvpacxZINPZCSOecaQ)
111
+ * [Discord](https://discord.gg/vkDD3HdQq6)
112
+
113
+ ## Assisting the Project
114
+
115
+ Open source projects live and die with their support. There are a lots of ways to help the project. There are also a lot of ways the project should help you.
116
+ * Code
117
+ * Provide Translations in other languages.
118
+ * Design ( Good design instincts, smooth out the rough edges)
119
+ * Compile/Testers
120
+ * Beta testers
121
+ * Make helpful support content
122
+ * Make guides ("How to setup cameras?", etc)
123
+ * Bounce ideas around
124
+
125
+ ## Download
126
+ You can find and download all current and historical versions in the [Releases](https://github.com/meerk40t/meerk40t/releases) section.
127
+
128
+ Currently, primary branches:
129
+ * 0.9 - Active - New features and some underlying architectural changes. Try the latest released version: [0.9.2](https://github.com/meerk40t/meerk40t/releases#latest)
130
+ * 0.8 - Maintenance - may receive critical bugfixes but no more new features, latest version: [0.8.12](https://github.com/meerk40t/meerk40t/releases/tag/0.8.12000) (Oct 17, 2023)
131
+ * 0.7 - Discontinued - K40 support only (including ruidacontrol emulator for 3rd party lasersoftware integration), latest version [0.7.10](https://github.com/meerk40t/meerk40t/releases/tag/0.7.10000) (June 13, 2023)
132
+ * 0.6 - Discontinued - K40 support only, latest version: [0.6.24](https://github.com/meerk40t/meerk40t/releases/tag/0.6.24) (Oct 11, 2021)
133
+
134
+ Just download one of the files for Windows, Mac OSX, Linux and Raspberry Pi.
135
+
136
+ ## Lightburn integration
137
+ Meerk40t allows to act as an intermediary between your K40 laser and software that supports Ruida-controlled laser equipment - [Lightburn](https://lightburnsoftware.com/) is a relevant example of such a software product. You just need to issue the command ``ruidacontrol`` in MeerK40ts console window and you will then be able to add an emulated Ruida Laser inside Lightburn™. Laser jobs that are created inside Lightburn™ and sent to this laser will be picked up by MeerK40t and sent to your K40. See some more detailed instructions in this [video](https://www.youtube.com/watch?v=LUUfLf5Agu0). Please note `ruidacontrol` will require the DSP version of Lightburn™. (Present in all versions since 0.7)
138
+
139
+ With 0.9 another way of interacting with Lightburn was introduced, which will work as well with the standard version of LB: You just need to issue the command ``grblcontrol`` in MeerK40ts console window, and you will then be able to add an emulated remote GBRL-LPC laser inside Lightburn or any TCP GRBL control software.
@@ -29,16 +29,21 @@ Meerk40t provides a variety of drivers with an extensible framework to provide s
29
29
 
30
30
 
31
31
  ### Supported devices
32
- * M2-Nano
33
- * Moshiboard
32
+ * Lihuiyu M2/M3-Nano
34
33
  * GRBL
35
- * Fibre Lasers based on the JCZ controllers (still experimental)
34
+ * Ezcad2-compatible JCZ controllers galvo lasers
35
+ * Moshiboard
36
+ * NewlyDraw System 8.1 Lasers
36
37
  * Ruida-Emulation (Middleman between Lightburn and K40)
37
38
 
38
39
  ### Lihuiyu M2-Nano
39
40
  For the Lihuiyu (stock driver), Meerk40t supports both the windows and libusb connection methods, making it compatible with Whisperer and with the original Chinese software. So MeerK40t can usually run alongside these other pieces of software interchangeably.
40
41
 
41
- ### Galvo LMC
42
+ ### GRBL
43
+
44
+ GRBL is itself open source and the various interfaces with the board should be quite well understood.
45
+
46
+ ### EZCAD2-Compatible Galvo LMC
42
47
 
43
48
  Meerk40t supports controlling galvo as well as gantry lasers with open source support.
44
49
 
@@ -46,9 +51,9 @@ Meerk40t supports controlling galvo as well as gantry lasers with open source su
46
51
 
47
52
  The support for old moshiboards makes meerk40t the only known opensource software that controls moshiboards.
48
53
 
49
- ### GRBL
54
+ ### System 8.1 Lasers (NewlyDraw)
50
55
 
51
- GRBL is itself open source and the various interfaces with the board should be quite well understood.
56
+ HPGL-modified laser systems produced under many different company names
52
57
 
53
58
  ## Support
54
59
  The primary source for help and documentation is the [MeerK40t Wiki - please click here](https://github.com/meerk40t/meerk40t/wiki).
@@ -78,14 +83,16 @@ Open source projects live and die with their support. There are a lots of ways t
78
83
 
79
84
  ## Download
80
85
  You can find and download all current and historical versions in the [Releases](https://github.com/meerk40t/meerk40t/releases) section.
81
- Currently there are three relevant branches:
82
- * 0.7 - K40 support only (including ruidacontrol emulator for 3rd party lasersoftware integration) - no longer supported, still good enough for 3rd party integration, latest version [0.7.10](https://github.com/meerk40t/meerk40t/releases/tag/0.7.10000)
83
- * 0.8 - Multi laser support - receives critical bugfixes but no more new features, latest version: [0.8.11](https://github.com/meerk40t/meerk40t/releases/tag/0.8.11001)
84
- * 0.9 - Active development branch with new features and some underlying architectural changes. Still a bit green behind the ears, but good enough for daily use. If you feel brave, try the latest released version: [0.9.1](https://github.com/meerk40t/meerk40t/releases#latest)
86
+
87
+ Currently, primary branches:
88
+ * 0.9 - Active - New features and some underlying architectural changes. Try the latest released version: [0.9.2](https://github.com/meerk40t/meerk40t/releases#latest)
89
+ * 0.8 - Maintenance - may receive critical bugfixes but no more new features, latest version: [0.8.12](https://github.com/meerk40t/meerk40t/releases/tag/0.8.12000) (Oct 17, 2023)
90
+ * 0.7 - Discontinued - K40 support only (including ruidacontrol emulator for 3rd party lasersoftware integration), latest version [0.7.10](https://github.com/meerk40t/meerk40t/releases/tag/0.7.10000) (June 13, 2023)
91
+ * 0.6 - Discontinued - K40 support only, latest version: [0.6.24](https://github.com/meerk40t/meerk40t/releases/tag/0.6.24) (Oct 11, 2021)
85
92
 
86
93
  Just download one of the files for Windows, Mac OSX, Linux and Raspberry Pi.
87
94
 
88
95
  ## Lightburn integration
89
- Meerk40t allows to act as an intermediator between your K40 laser and software that supports Ruida-controlled laser equipment - [Lightburn](https://lightburnsoftware.com/) is a relevant example of such a software product. You just need to issue the command ``ruidacontrol`` in MeerK40ts console window and you will then be able to add an emulated Ruida Laser inside Lightburn. Laser jobs that are created inside Lightburn and sent to this laser will be picked up by MeerK40t and sent to your K40. See some more detailled instructions in this [video](https://www.youtube.com/watch?v=LUUfLf5Agu0). Please note this will require the DSP version of Light burn. (Present in all versions since 0.7)
96
+ Meerk40t allows to act as an intermediary between your K40 laser and software that supports Ruida-controlled laser equipment - [Lightburn](https://lightburnsoftware.com/) is a relevant example of such a software product. You just need to issue the command ``ruidacontrol`` in MeerK40ts console window and you will then be able to add an emulated Ruida Laser inside Lightburn™. Laser jobs that are created inside Lightburn and sent to this laser will be picked up by MeerK40t and sent to your K40. See some more detailed instructions in this [video](https://www.youtube.com/watch?v=LUUfLf5Agu0). Please note `ruidacontrol` will require the DSP version of Lightburn™. (Present in all versions since 0.7)
90
97
 
91
- With 0.9 another way of interacting with Lightburn was introduced, which will work as well with the standard version of LB: You just need to issue the command ``grblcontrol`` in MeerK40ts console window and you will then be able to add an emulated remote GBRL-LPC laser inside Lightburn.
98
+ With 0.9 another way of interacting with Lightburn was introduced, which will work as well with the standard version of LB: You just need to issue the command ``grblcontrol`` in MeerK40ts console window, and you will then be able to add an emulated remote GBRL-LPC laser inside Lightburn or any TCP GRBL control software.
@@ -13,19 +13,17 @@ FLOAT_PARAMETERS = (
13
13
  "delay_laser_on",
14
14
  "delay_laser_off",
15
15
  "delay_polygon",
16
- "wobble_speed",
17
16
  )
18
17
  INT_PARAMETERS = ("pulse_width",)
19
18
 
20
19
  BOOL_PARAMETERS = (
21
- "wobble_enabled",
22
20
  "timing_enabled",
23
21
  "rapid_enabled",
24
22
  "pulse_width_enabled",
25
23
  )
26
24
 
27
25
 
28
- STRING_PARAMETERS = ("wobble_type", "wobble_radius", "wobble_interval")
26
+ STRING_PARAMETERS = ()
29
27
 
30
28
 
31
29
  class Parameters:
@@ -96,46 +94,6 @@ class Parameters:
96
94
  def timing_enabled(self, value):
97
95
  self.settings["timing_enabled"] = value
98
96
 
99
- @property
100
- def wobble_enabled(self):
101
- return self.settings.get("wobble_enabled", False)
102
-
103
- @wobble_enabled.setter
104
- def wobble_enabled(self, value):
105
- self.settings["wobble_enabled"] = value
106
-
107
- @property
108
- def wobble_radius(self):
109
- return self.settings.get("wobble_radius", "1.5mm")
110
-
111
- @wobble_radius.setter
112
- def wobble_radius(self, value):
113
- self.settings["wobble_radius"] = value
114
-
115
- @property
116
- def wobble_speed(self):
117
- return self.settings.get("wobble_speed", 50.0)
118
-
119
- @wobble_speed.setter
120
- def wobble_speed(self, value):
121
- self.settings["wobble_speed"] = value
122
-
123
- @property
124
- def wobble_interval(self):
125
- return self.settings.get("wobble_interval", "0.3mm")
126
-
127
- @wobble_interval.setter
128
- def wobble_interval(self, value):
129
- self.settings["wobble_interval"] = value
130
-
131
- @property
132
- def wobble_type(self):
133
- return self.settings.get("wobble_type", "circle")
134
-
135
- @wobble_type.setter
136
- def wobble_type(self, value):
137
- self.settings["wobble_type"] = value
138
-
139
97
  @property
140
98
  def speed(self):
141
99
  return self.settings.get("speed", 100.0)
@@ -12,7 +12,6 @@ from copy import copy
12
12
 
13
13
  from meerk40t.balormk.mock_connection import MockConnection
14
14
  from meerk40t.balormk.usb_connection import USBConnection
15
- from meerk40t.fill.fills import Wobble
16
15
 
17
16
  DRIVER_STATE_RAPID = 0
18
17
  DRIVER_STATE_LIGHT = 1
@@ -273,7 +272,6 @@ class GalvoController:
273
272
  self._delay_poly = None
274
273
  self._delay_end = None
275
274
 
276
- self._wobble = None
277
275
  self._port_bits = 0
278
276
  self._machine_index = 0
279
277
 
@@ -627,40 +625,6 @@ class GalvoController:
627
625
  self.list_laser_off_delay(self.service.delay_laser_off)
628
626
  self.list_polygon_delay(self.service.delay_polygon)
629
627
 
630
- def set_wobble(self, settings):
631
- """
632
- Set the wobble parameters and mark modifications routines.
633
-
634
- @param settings: The dict setting to extract parameters from.
635
- @return:
636
- """
637
- if settings is None:
638
- self._wobble = None
639
- return
640
- wobble_enabled = str(settings.get("wobble_enabled", False)).lower() == "true"
641
- if not wobble_enabled:
642
- self._wobble = None
643
- return
644
- wobble_radius = settings.get("wobble_radius", "1.5mm")
645
- wobble_r, _ = self.service.view.position(wobble_radius, 0, vector=True)
646
- wobble_interval = settings.get("wobble_interval", "0.3mm")
647
- wobble_speed = settings.get("wobble_speed", 50.0)
648
- wobble_type = settings.get("wobble_type", "circle")
649
- wobble_interval, _ = self.service.view.position(wobble_interval, 0, vector=True)
650
- algorithm = self.service.lookup(f"wobble/{wobble_type}")
651
- if self._wobble is None:
652
- self._wobble = Wobble(
653
- algorithm=algorithm,
654
- radius=wobble_r,
655
- speed=wobble_speed,
656
- interval=wobble_interval,
657
- )
658
- else:
659
- # set our parameterizations
660
- self._wobble.algorithm = algorithm
661
- self._wobble.radius = wobble_r
662
- self._wobble.speed = wobble_speed
663
-
664
628
  #######################
665
629
  # PLOTLIKE SHORTCUTS
666
630
  #######################
@@ -673,11 +637,7 @@ class GalvoController:
673
637
  return
674
638
  if self._mark_speed is not None:
675
639
  self.list_mark_speed(self._mark_speed)
676
- if self._wobble:
677
- for wx, wy in self._wobble(self._last_x, self._last_y, x, y):
678
- self.list_mark(wx, wy)
679
- else:
680
- self.list_mark(x, y)
640
+ self.list_mark(x, y)
681
641
 
682
642
  def goto(self, x, y, long=None, short=None, distance_limit=None):
683
643
  if x == self._last_x and y == self._last_y:
@@ -15,12 +15,13 @@ from meerk40t.core.laserjob import LaserJob
15
15
  from meerk40t.core.spoolers import Spooler
16
16
  from meerk40t.core.units import Angle, Length
17
17
  from meerk40t.core.view import View
18
+ from meerk40t.device.mixins import Status
18
19
  from meerk40t.kernel import CommandSyntaxError, Service, signal_listener
19
20
  from meerk40t.svgelements import Path, Point
20
21
  from meerk40t.tools.geomstr import Geomstr
21
22
 
22
23
 
23
- class BalorDevice(Service):
24
+ class BalorDevice(Service, Status):
24
25
  """
25
26
  The BalorDevice is a MeerK40t service for the device type. It should be the main method of interacting with
26
27
  the rest of meerk40t. It defines how the scene should look and contains a spooler which meerk40t will give jobs
@@ -29,6 +30,7 @@ class BalorDevice(Service):
29
30
 
30
31
  def __init__(self, kernel, path, *args, choices=None, **kwargs):
31
32
  Service.__init__(self, kernel, path)
33
+ Status.__init__(self)
32
34
  self.name = "balor"
33
35
  self.extension = "lmc"
34
36
  self.job = None
@@ -1791,35 +1793,27 @@ class BalorDevice(Service):
1791
1793
  """
1792
1794
  if data is None:
1793
1795
  data = list(self.elements.elems(emphasized=True))
1794
- pts = []
1796
+ g = Geomstr()
1795
1797
  for e in data:
1796
- if e.type == "elem image":
1798
+ if hasattr(e, "as_image"):
1797
1799
  bounds = e.bounds
1798
- pts += [
1799
- (bounds[0], bounds[1]),
1800
- (bounds[0], bounds[3]),
1801
- (bounds[2], bounds[1]),
1802
- (bounds[2], bounds[3]),
1803
- ]
1800
+ g.append(
1801
+ Geomstr.rect(
1802
+ bounds[0],
1803
+ bounds[1],
1804
+ bounds[2] - bounds[0],
1805
+ bounds[3] - bounds[1],
1806
+ )
1807
+ )
1804
1808
  elif e.type == "elem text":
1805
1809
  continue # We can't outline text.
1806
1810
  else:
1807
- try:
1808
- path = abs(Path(e.shape))
1809
- except AttributeError:
1810
- try:
1811
- path = abs(e.path)
1812
- except AttributeError:
1813
- continue
1814
- pts += [q for q in path.as_points()]
1815
- hull = [p for p in Point.convex_hull(pts)]
1811
+ g.append(e.as_geometry())
1812
+ hull = Geomstr.hull(g)
1816
1813
  if len(hull) == 0:
1817
1814
  channel(_("No elements bounds to trace."))
1818
1815
  return
1819
- hull.append(hull[0]) # loop
1820
- hull = list(map(complex, hull))
1821
- geometry = Geomstr.lines(*hull)
1822
- return "geometry", geometry
1816
+ return "geometry", hull
1823
1817
 
1824
1818
  def ant_points(points, steps):
1825
1819
  points = list(points)
@@ -102,7 +102,7 @@ class BalorDriver:
102
102
  """
103
103
  Required.
104
104
 
105
- Sets a laser parameter this could be speed, power, wobble, number_of_unicorns, or any unknown parameters for
105
+ Sets a laser parameter this could be speed, power, number_of_unicorns, or any unknown parameters for
106
106
  yet to be written drivers.
107
107
 
108
108
  @param key:
@@ -186,7 +186,6 @@ class BalorDriver:
186
186
  con.program_mode()
187
187
  self._list_bits = con._port_bits
188
188
  last_on = None
189
- con.set_wobble(None)
190
189
  queue = self.queue
191
190
  self.queue = list()
192
191
  for q in queue:
@@ -198,7 +197,6 @@ class BalorDriver:
198
197
  except KeyError:
199
198
  self.value_penbox = None
200
199
  con.set_settings(settings)
201
- con.set_wobble(settings)
202
200
  # LOOP CHECKS
203
201
  if self._aborting:
204
202
  con.abort()
@@ -323,7 +321,6 @@ class BalorDriver:
323
321
  except KeyError:
324
322
  self.value_penbox = None
325
323
  con.set_settings(settings)
326
- con.set_wobble(settings)
327
324
  elif on & (
328
325
  PLOT_RAPID | PLOT_JOG
329
326
  ): # Plot planner requests position change.
@@ -533,6 +530,7 @@ class BalorDriver:
533
530
  return
534
531
  self.paused = True
535
532
  self.connection.pause()
533
+ self.service.signal("pause")
536
534
 
537
535
  def resume(self):
538
536
  """
@@ -545,6 +543,7 @@ class BalorDriver:
545
543
  """
546
544
  self.paused = False
547
545
  self.connection.resume()
546
+ self.service.signal("pause")
548
547
 
549
548
  def reset(self):
550
549
  """
@@ -554,6 +553,7 @@ class BalorDriver:
554
553
  """
555
554
  self.paused = False
556
555
  self.connection.abort()
556
+ self.service.signal("pause")
557
557
 
558
558
  def dwell(self, time_in_ms):
559
559
  """
@@ -4,7 +4,7 @@ from meerk40t.device.gui.defaultactions import DefaultActionPanel
4
4
  from meerk40t.device.gui.formatterpanel import FormatterPanel
5
5
  from meerk40t.device.gui.warningpanel import WarningPanel
6
6
  from meerk40t.gui.choicepropertypanel import ChoicePropertyPanel
7
- from meerk40t.gui.icons import icons8_administrative_tools_50
7
+ from meerk40t.gui.icons import icons8_administrative_tools
8
8
  from meerk40t.gui.mwindow import MWindow
9
9
  from meerk40t.kernel import signal_listener
10
10
 
@@ -16,7 +16,7 @@ class BalorConfiguration(MWindow):
16
16
  super().__init__(420, 570, *args, **kwds)
17
17
  self.context = self.context.device
18
18
  _icon = wx.NullIcon
19
- _icon.CopyFromBitmap(icons8_administrative_tools_50.GetBitmap())
19
+ _icon.CopyFromBitmap(icons8_administrative_tools.GetBitmap())
20
20
  self.SetIcon(_icon)
21
21
  self.SetTitle(_(_("Balor-Configuration")))
22
22
 
@@ -2,7 +2,11 @@ import threading
2
2
 
3
3
  import wx
4
4
 
5
- from meerk40t.gui.icons import icons8_connected_50, icons8_disconnected_50
5
+ from meerk40t.gui.icons import (
6
+ get_default_icon_size,
7
+ icons8_connected,
8
+ icons8_disconnected,
9
+ )
6
10
  from meerk40t.gui.mwindow import MWindow
7
11
  from meerk40t.gui.wxutils import dip_size
8
12
  from meerk40t.kernel import signal_listener
@@ -58,7 +62,9 @@ class BalorControllerPanel(wx.ScrolledWindow):
58
62
  _("Force connection/disconnection from the device.")
59
63
  )
60
64
  self.button_device_connect.SetBitmap(
61
- icons8_disconnected_50.GetBitmap(use_theme=False)
65
+ icons8_disconnected.GetBitmap(
66
+ use_theme=False, resize=get_default_icon_size()
67
+ )
62
68
  )
63
69
  # end wxGlade
64
70
 
@@ -89,14 +95,16 @@ class BalorControllerPanel(wx.ScrolledWindow):
89
95
  def set_button_connected(self):
90
96
  self.button_device_connect.SetBackgroundColour("#00ff00")
91
97
  self.button_device_connect.SetBitmap(
92
- icons8_connected_50.GetBitmap(use_theme=False)
98
+ icons8_connected.GetBitmap(use_theme=False, resize=get_default_icon_size())
93
99
  )
94
100
  self.button_device_connect.Enable()
95
101
 
96
102
  def set_button_disconnected(self):
97
103
  self.button_device_connect.SetBackgroundColour("#dfdf00")
98
104
  self.button_device_connect.SetBitmap(
99
- icons8_disconnected_50.GetBitmap(use_theme=False)
105
+ icons8_disconnected.GetBitmap(
106
+ use_theme=False, resize=get_default_icon_size()
107
+ )
100
108
  )
101
109
  self.button_device_connect.Enable()
102
110
 
@@ -161,7 +169,7 @@ class BalorController(MWindow):
161
169
  self.add_module_delegate(self.panel)
162
170
  self.SetTitle(_("Balor-Controller"))
163
171
  _icon = wx.NullIcon
164
- _icon.CopyFromBitmap(icons8_connected_50.GetBitmap())
172
+ _icon.CopyFromBitmap(icons8_connected.GetBitmap())
165
173
  self.SetIcon(_icon)
166
174
  self.Layout()
167
175
 
@@ -92,52 +92,6 @@ class BalorOperationPanel(ScrolledPanel):
92
92
  "label": _("Polygon Delay"),
93
93
  "tip": _("Delay amount between different points in the path travel."),
94
94
  },
95
- {
96
- "attr": "wobble_enabled",
97
- "object": params,
98
- "default": False,
99
- "type": bool,
100
- "label": _("Enable Wobble"),
101
- "tip": _("Enable wobble for this particular cut"),
102
- },
103
- {
104
- "attr": "wobble_radius",
105
- "object": params,
106
- "default": "1.5mm",
107
- "type": Length,
108
- "conditional": (params, "wobble_enabled"),
109
- "label": _("Radius of wobble"),
110
- "tip": _("Radius of the wobble for this cut, if wobble is enabled."),
111
- },
112
- {
113
- "attr": "wobble_interval",
114
- "object": params,
115
- "default": "0.2mm",
116
- "type": Length,
117
- "conditional": (params, "wobble_enabled"),
118
- "label": _("Wobble Sampling Interval"),
119
- "tip": _("Sample interval for the wobble of this cut"),
120
- },
121
- {
122
- "attr": "wobble_speed",
123
- "object": params,
124
- "default": 50.0,
125
- "type": float,
126
- "conditional": (params, "wobble_enabled"),
127
- "label": _("Wobble Speed Multiplier"),
128
- "tip": _("Wobble rotation speed multiplier"),
129
- },
130
- {
131
- "attr": "wobble_type",
132
- "object": params,
133
- "default": "circle",
134
- "type": str,
135
- "style": "combo",
136
- "choices": list(self.context.match("wobble", suffix=True)),
137
- "conditional": (params, "wobble_enabled"),
138
- "label": _("Wobble Pattern Type"),
139
- "tip": _("Pattern type for the given wobble."),
140
- },
141
95
  ]
142
96
 
143
97
  self.panel = ChoicePropertyPanel(