IS-Matrix-Forge 1.0.0.dev6__tar.gz → 1.0.0.dev8__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 (150) hide show
  1. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/PKG-INFO +1 -1
  2. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/designer_gui/main_window/__init__.py +1 -1
  3. is_matrix_forge-1.0.0.dev8/is_matrix_forge/led_matrix/Scripts/pixel_grid.py +27 -0
  4. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/controller/controller.py +20 -9
  5. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/animation.py +0 -1
  6. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/helpers/columns.py +9 -3
  7. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/patterns/built_in/__init__.py +1 -1
  8. is_matrix_forge-1.0.0.dev8/is_matrix_forge/led_matrix/display/patterns/built_in/stencils/__init__.py +69 -0
  9. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/pyproject.toml +2 -2
  10. is_matrix_forge-1.0.0.dev6/is_matrix_forge/led_matrix/display/patterns/built_in/stencils/__init__.py +0 -70
  11. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/LICENSE.md +0 -0
  12. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/README.md +0 -0
  13. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/__init__.py +0 -0
  14. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/__init__.py +0 -0
  15. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/audio/__init__.py +0 -0
  16. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/audio/files/__init__.py +0 -0
  17. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/audio/files/plugged.wav +0 -0
  18. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/audio/files/unplugged.wav +0 -0
  19. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/char_map.json +0 -0
  20. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/font_map.py +0 -0
  21. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/__init__.py +0 -0
  22. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/decorators/__init__.py +0 -0
  23. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/decorators/freeze_setter.py +0 -0
  24. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/dirs.py +0 -0
  25. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/helpers/__init__.py +0 -0
  26. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/helpers/github_api.py +0 -0
  27. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/designer_gui/__init__.py +0 -0
  28. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/designer_gui/main_window/layout/__init__.py +0 -0
  29. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/designer_gui/main_window/layout/button_grid/__init__.py +0 -0
  30. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/designer_gui/main_window/layout/button_grid/column.py +0 -0
  31. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/designer_gui/main_window/layout/button_grid/grid.py +0 -0
  32. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/designer_gui/main_window/streamlit_app.py +0 -0
  33. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/dev_tools/__init__.py +0 -0
  34. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/dev_tools/debug.py +0 -0
  35. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/dev_tools/presets.py +0 -0
  36. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/__init__.py +0 -0
  37. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/b1display.py +0 -0
  38. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/c1minimal.py +0 -0
  39. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/font.py +0 -0
  40. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/helpers/__init__.py +0 -0
  41. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/ledmatrix.py +0 -0
  42. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/Scripts/__init__.py +0 -0
  43. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/Scripts/battery_monitor.py +0 -0
  44. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/Scripts/identify_matrices.py +0 -0
  45. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/Scripts/install_presets/__init__.py +0 -0
  46. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/Scripts/install_presets/arguments.py +0 -0
  47. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/Scripts/install_presets/main.py +0 -0
  48. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/__init__.py +0 -0
  49. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/commands/__init__.py +0 -0
  50. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/commands/map.py +0 -0
  51. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/constants.py +0 -0
  52. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/controller/__init__.py +0 -0
  53. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/controller/helpers/__init__.py +0 -0
  54. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/controller/helpers/threading.py +0 -0
  55. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/controller/multiton.py +0 -0
  56. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/controller/threaded.py +0 -0
  57. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/__init__.py +0 -0
  58. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/__init__.py +0 -0
  59. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/audio_visualizer.py +0 -0
  60. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/effects/__init__.py +0 -0
  61. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/errors.py +0 -0
  62. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/font/__init__.py +0 -0
  63. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/font/font.py +0 -0
  64. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/font/map_builder.py +0 -0
  65. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/frame/__init__.py +0 -0
  66. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/frame/base.py +0 -0
  67. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/frame/helpers.py +0 -0
  68. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/keep_awake.py +0 -0
  69. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/plugged.py +0 -0
  70. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/animations/text_scroller.py +0 -0
  71. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/effects/__init__.py +0 -0
  72. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/effects/breather.py +0 -0
  73. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/effects/fade.py +0 -0
  74. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/effects/scroller/__init__.py +0 -0
  75. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/effects/scroller/base.py +0 -0
  76. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/effects/scroller/helpers.py +0 -0
  77. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/grid/__init__.py +0 -0
  78. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/grid/grid.py +0 -0
  79. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/grid/helpers.py +0 -0
  80. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/grid/presets/__init__.py +0 -0
  81. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/grid/presets/manifest.py +0 -0
  82. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/helpers/__init__.py +0 -0
  83. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/media.py +0 -0
  84. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/patterns/built_in/commands.py +0 -0
  85. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/patterns/built_in/constants.py +0 -0
  86. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/patterns/built_in/stencils/res.py +0 -0
  87. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/text/__init__.py +0 -0
  88. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/text/scroller.py +0 -0
  89. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/errors/__init__.py +0 -0
  90. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/errors/base.py +0 -0
  91. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/errors/grid.py +0 -0
  92. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/errors/matrix.py +0 -0
  93. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/errors/misc.py +0 -0
  94. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/fonts.py +0 -0
  95. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/hardware.py +0 -0
  96. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/helpers/__init__.py +0 -0
  97. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/helpers/core/__init__.py +0 -0
  98. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/helpers/core/lazy_mod_load.py +0 -0
  99. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/helpers/device.py +0 -0
  100. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/helpers/status_handler.py +0 -0
  101. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/helpers/stream/__init__.py +0 -0
  102. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/helpers/stream/errors.py +0 -0
  103. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/led_matrix.py +0 -0
  104. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/status.py +0 -0
  105. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/tools/__init__.py +0 -0
  106. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/tools/identify.py +0 -0
  107. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/utils/__init__.py +0 -0
  108. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/log_engine.py +0 -0
  109. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/__init__.py +0 -0
  110. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/errors.py +0 -0
  111. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/events.py +0 -0
  112. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/__init__.py +0 -0
  113. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/errors.py +0 -0
  114. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/event/__init__.py +0 -0
  115. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/event/collection.py +0 -0
  116. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/event/errors.py +0 -0
  117. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/event/event.py +0 -0
  118. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/layout/__init__.py +0 -0
  119. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/layout/base.py +0 -0
  120. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/metaclasses/__init__.py +0 -0
  121. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/windows/__init__.py +0 -0
  122. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/windows/base.py +0 -0
  123. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/windows/main/__init__.py +0 -0
  124. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/windows/main/layout.py +0 -0
  125. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/helpers.py +0 -0
  126. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/monitor.py +0 -0
  127. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/notify/__init__.py +0 -0
  128. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/notify/sounds/__init__.py +0 -0
  129. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/notify/sounds/base.py +0 -0
  130. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/progress.py +0 -0
  131. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/scripts/__init__.py +0 -0
  132. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/scripts/preset_installer.py +0 -0
  133. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/__init__.py +0 -0
  134. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/base/__init__.py +0 -0
  135. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/base/answer.py +0 -0
  136. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/base/message.py +0 -0
  137. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/base/request.py +0 -0
  138. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/exchange.py +0 -0
  139. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/blank.json +0 -0
  140. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/manifest.json +0 -0
  141. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/shock_face.json +0 -0
  142. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/test1.json +0 -0
  143. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/test2.json +0 -0
  144. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/test3.json +0 -0
  145. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/test4.json +0 -0
  146. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/test5.json +0 -0
  147. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/test6.json +0 -0
  148. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/test7.json +0 -0
  149. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/x_animation II.json +0 -0
  150. {is_matrix_forge-1.0.0.dev6 → is_matrix_forge-1.0.0.dev8}/presets/x_animation.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: IS-Matrix-Forge
3
- Version: 1.0.0.dev6
3
+ Version: 1.0.0.dev8
4
4
  Summary:
5
5
  License: MIT
6
6
  Keywords: led,matrix,framework,hardware
@@ -46,7 +46,7 @@ class PixelGrid:
46
46
  self.preferred_device = None
47
47
 
48
48
  layout = PixelGridLayout(self.width, self.height).build()
49
- self.window = sg.Window('Pixel Grid', layout, finalize=True)
49
+ self.window = sg.Window('Pixel Grid', layout, finalize=True, resizable=True)
50
50
  self._init_button_colors()
51
51
  self._update_frame_indicator()
52
52
 
@@ -0,0 +1,27 @@
1
+ """
2
+ Author:
3
+ Inspyre Softworks
4
+
5
+ Project:
6
+ IS-Matrix-Forge
7
+
8
+ File:
9
+ is_matrix_forge/led_matrix/Scripts/pixel_grid.py
10
+
11
+
12
+ Description:
13
+ Entry point for the pixel grid designer GUI.
14
+ """
15
+ from is_matrix_forge.designer_gui.main_window import PixelGrid
16
+
17
+
18
+ def main():
19
+ """
20
+ Entry point for the pixel grid designer GUI.
21
+ """
22
+ PixelGrid().run()
23
+
24
+
25
+ if __name__ == "__main__":
26
+ main()
27
+
@@ -21,6 +21,8 @@ import threading
21
21
  from time import sleep
22
22
  from typing import Optional, Dict, Any, Union, List
23
23
 
24
+ from is_matrix_forge.log_engine import ROOT_LOGGER, Loggable
25
+
24
26
  from inspyre_toolbox.syntactic_sweets.classes import validate_type
25
27
  from inspyre_toolbox.syntactic_sweets.classes.decorators.aliases import add_aliases, method_alias
26
28
  from serial.tools.list_ports_common import ListPortInfo
@@ -38,8 +40,10 @@ from is_matrix_forge.led_matrix.display.text import show_string
38
40
 
39
41
  COMMANDS = CommandVals
40
42
 
43
+ MOD_LOGGER = ROOT_LOGGER.get_child('led_matrix.controller.controller')
44
+
41
45
 
42
- class LEDMatrixController(metaclass=AliasMeta):
46
+ class LEDMatrixController(Loggable, metaclass=AliasMeta):
43
47
  """
44
48
  Controller class for LED Matrix devices.
45
49
 
@@ -237,10 +241,13 @@ class LEDMatrixController(metaclass=AliasMeta):
237
241
  return
238
242
  else:
239
243
  self._thread_safe = True
244
+ self._cmd_lock = threading.RLock()
240
245
 
241
246
  return
242
247
 
248
+
243
249
  @property
250
+ @alias('is_animating')
244
251
  def animating(self) -> bool:
245
252
  """
246
253
  Check if the device is currently animating.
@@ -248,7 +255,12 @@ class LEDMatrixController(metaclass=AliasMeta):
248
255
  Returns:
249
256
  bool: True if the device is animating, False otherwise.
250
257
  """
251
- return bool(send_command(self.device, COMMANDS.Animate, with_response=True)[0])
258
+ log = self.method_logger
259
+ try:
260
+ return bool(send_command(self.device, COMMANDS.Animate, with_response=True)[0])
261
+ except TypeError as e:
262
+ log.error('Received null response')
263
+
252
264
 
253
265
  @property
254
266
  def breather(self) -> Breather:
@@ -356,8 +368,8 @@ class LEDMatrixController(metaclass=AliasMeta):
356
368
  """
357
369
  return self.__keep_image
358
370
 
359
- @validate_type(bool)
360
371
  @keep_image.setter
372
+ @validate_type(bool)
361
373
  def keep_image(self, new):
362
374
  self.__keep_image = new
363
375
 
@@ -384,6 +396,7 @@ class LEDMatrixController(metaclass=AliasMeta):
384
396
  return self.location['abbrev']
385
397
 
386
398
  @property
399
+ @alias('serial_port', 'port_name')
387
400
  def name(self) -> str:
388
401
  if self.__name is None:
389
402
  self.__name = self.device.name
@@ -468,8 +481,8 @@ class LEDMatrixController(metaclass=AliasMeta):
468
481
  # The animate function also sets the status to 'animate' when enabled
469
482
  animate(self.device, enable)
470
483
 
484
+ @alias('clear')
471
485
  @synchronized
472
- @method_alias('clear')
473
486
  def clear_matrix(self) -> None:
474
487
  """
475
488
  Clear the LED matrix display.
@@ -502,8 +515,8 @@ class LEDMatrixController(metaclass=AliasMeta):
502
515
  grid = Grid(init_grid=grid)
503
516
  render_matrix(self.device, grid.grid)
504
517
 
505
- @synchronized
506
518
  @alias('pattern', 'show_pattern')
519
+ @synchronized
507
520
  def draw_pattern(self, pattern: str) -> None:
508
521
  """
509
522
  Draw a pattern on the LED matrix.
@@ -519,6 +532,7 @@ class LEDMatrixController(metaclass=AliasMeta):
519
532
  pattern_pen = BuiltInPatterns(self)
520
533
  pattern_pen.render(pattern)
521
534
 
535
+ @alias('display_percentage', 'show_percentage')
522
536
  @synchronized
523
537
  def draw_percentage(self, percentage: int, clear_first: bool = False):
524
538
  from is_matrix_forge.led_matrix.hardware import percentage as _show_percentage_raw
@@ -617,9 +631,6 @@ class LEDMatrixController(metaclass=AliasMeta):
617
631
  if not skip_clear:
618
632
  self.clear()
619
633
 
620
- @property
621
- def is_animating(self):
622
- return self.animating
623
634
 
624
635
  def jump_to_bootloader(self):
625
636
  """
@@ -632,7 +643,7 @@ class LEDMatrixController(metaclass=AliasMeta):
632
643
  bootloader_jump(self.device)
633
644
 
634
645
  def list_patterns(self):
635
- print
646
+ print(', '.join(self.get_built_in_pattern_names()))
636
647
 
637
648
  @synchronized
638
649
  def set_brightness(self, brightness: Union[int, float], __from_setter=False) -> None:
@@ -415,7 +415,6 @@ class Animation:
415
415
  print('Received keyboard interrupt!')
416
416
  return
417
417
 
418
-
419
418
  def resume(self) -> None:
420
419
  """Resumes playback from paused state."""
421
420
  if not self.is_thread_safe:
@@ -17,13 +17,19 @@ Description:
17
17
  """
18
18
  from is_matrix_forge.led_matrix.commands.map import CommandVals
19
19
  from is_matrix_forge.led_matrix.constants import FWK_MAGIC
20
- from is_matrix_forge.led_matrix.hardware import send_serial
20
+ from is_matrix_forge.led_matrix.hardware import send_serial, send_command
21
+ from is_matrix_forge.log_engine import ROOT_LOGGER
21
22
 
22
23
 
23
- def send_col(dev, s, x, vals):
24
+ MOD_LOGGER = ROOT_LOGGER.get_child('led_matrix.display.helpers.columns')
25
+
26
+
27
+ def send_col(dev, x, vals):
28
+ log = MOD_LOGGER.get_child('send_col')
24
29
  """Stage greyscale values for a single column. Must be committed with commit_cols()"""
25
30
  command = FWK_MAGIC + [CommandVals.StageGreyCol, x] + vals
26
- send_serial(dev, s, command)
31
+ log.debug(f'Sending command: {command}')
32
+ send_command(dev, *command)
27
33
 
28
34
 
29
35
  def commit_cols(dev, s):
@@ -1,7 +1,7 @@
1
1
  import difflib
2
2
  from typing import Any
3
3
 
4
- from .stencils.res import PATTERN_MAP
4
+ from is_matrix_forge.led_matrix.display.patterns.built_in.stencils.res import PATTERN_MAP
5
5
 
6
6
 
7
7
  class BuiltInPatterns:
@@ -0,0 +1,69 @@
1
+ """
2
+
3
+
4
+ Author:
5
+ Inspyre Softworks
6
+
7
+ Project:
8
+ led-matrix-battery
9
+
10
+ File:
11
+ ${DIR_PATH}/${FILE_NAME}
12
+
13
+
14
+ Description:
15
+ $DESCRIPTION
16
+
17
+ """
18
+ import serial
19
+
20
+ from is_matrix_forge.led_matrix.constants import WIDTH, HEIGHT
21
+ from is_matrix_forge.led_matrix.display.helpers.columns import send_col, commit_cols
22
+ from is_matrix_forge.led_matrix.hardware import send_command
23
+ from is_matrix_forge.led_matrix.hardware import CommandVals
24
+
25
+
26
+ def all_brightnesses(dev):
27
+ """Increase the brightness with each pixel.
28
+ Only 0-255 available, so it can't fill all 306 LEDs"""
29
+ with serial.Serial(dev.device, 115200) as s:
30
+ for x in range(0, WIDTH):
31
+ vals = [0 for _ in range(HEIGHT)]
32
+
33
+ for y in range(HEIGHT):
34
+ brightness = x + WIDTH * y
35
+ if brightness > 255:
36
+ vals[y] = 0
37
+ else:
38
+ vals[y] = brightness
39
+
40
+ send_col(dev, s, x, vals)
41
+ commit_cols(dev, s)
42
+
43
+
44
+
45
+ def every_nth_row(dev, n):
46
+ for x in range(0, WIDTH):
47
+ vals = [(0xFF if y % n == 0 else 0) for y in range(HEIGHT)]
48
+
49
+ send_command(dev, CommandVals.StageGreyCol, [x] + vals)
50
+ send_command(dev, CommandVals.DrawGreyColBuffer, [])
51
+
52
+
53
+ def every_nth_col(dev, n):
54
+ for x in range(0, WIDTH):
55
+ vals = [(0xFF if x % n == 0 else 0) for _ in range(HEIGHT)]
56
+
57
+ send_command(dev, CommandVals.StageGreyCol, [x] + vals)
58
+ send_command(dev, CommandVals.DrawGreyColBuffer, [])
59
+
60
+
61
+ def checkerboard(dev, n):
62
+ for x in range(WIDTH):
63
+ vals = (([0xFF] * n) + ([0x00] * n)) * (HEIGHT // (2 * n))
64
+ if x % (2 * n) < n:
65
+ vals = vals[n:] + vals[:n]
66
+ # Build and send frame command via helper
67
+ send_command(dev, CommandVals.StageGreyCol, [x] + vals)
68
+ # After loop:
69
+ send_command(dev, CommandVals.DrawGreyColBuffer, [])
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "IS-Matrix-Forge"
3
- version = "1.0.0-dev.6"
3
+ version = "1.0.0-dev.8"
4
4
  description = ""
5
5
  authors = ["Taylor B. <t.blackstone@inspyre.tech>"]
6
6
  readme = "README.md"
@@ -47,7 +47,7 @@ ipyboost = { version = "1.0.0.a3", source = "testpypi" }
47
47
  python-path = "Scripts.python_path:main"
48
48
  led-matrix-identify = "is_matrix_forge.led_matrix.Scripts.identify_matrices:main"
49
49
  install-presets = "is_matrix_forge.led_matrix.Scripts.install_presets.main:main"
50
- pixel-grid = "is_matrix_forge.designer_gui.main_window:main"
50
+ pixel-grid = "is_matrix_forge.led_matrix.Scripts.pixel_grid:main"
51
51
 
52
52
  [[tool.poetry.include]]
53
53
  path = "presets/**"
@@ -1,70 +0,0 @@
1
- """
2
-
3
-
4
- Author:
5
- Inspyre Softworks
6
-
7
- Project:
8
- led-matrix-battery
9
-
10
- File:
11
- ${DIR_PATH}/${FILE_NAME}
12
-
13
-
14
- Description:
15
- $DESCRIPTION
16
-
17
- """
18
- import serial
19
-
20
- from is_matrix_forge.led_matrix.constants import WIDTH, HEIGHT
21
- from is_matrix_forge.led_matrix.display.helpers.columns import send_col, commit_cols
22
-
23
-
24
- def all_brightnesses(dev):
25
- """Increase the brightness with each pixel.
26
- Only 0-255 available, so it can't fill all 306 LEDs"""
27
- with serial.Serial(dev.device, 115200) as s:
28
- for x in range(0, WIDTH):
29
- vals = [0 for _ in range(HEIGHT)]
30
-
31
- for y in range(HEIGHT):
32
- brightness = x + WIDTH * y
33
- if brightness > 255:
34
- vals[y] = 0
35
- else:
36
- vals[y] = brightness
37
-
38
- send_col(dev, s, x, vals)
39
- commit_cols(dev, s)
40
-
41
-
42
-
43
- def every_nth_row(dev, n):
44
- with serial.Serial(dev.device, 115200) as s:
45
- for x in range(0, WIDTH):
46
- vals = [(0xFF if y % n == 0 else 0) for y in range(HEIGHT)]
47
-
48
- send_col(dev, s, x, vals)
49
- commit_cols(dev, s)
50
-
51
-
52
- def every_nth_col(dev, n):
53
- with serial.Serial(dev.device, 115200) as s:
54
- for x in range(0, WIDTH):
55
- vals = [(0xFF if x % n == 0 else 0) for _ in range(HEIGHT)]
56
-
57
- send_col(dev, s, x, vals)
58
- commit_cols(dev, s)
59
-
60
-
61
- def checkerboard(dev, n):
62
- with serial.Serial(dev.device, 115200) as s:
63
- for x in range(0, WIDTH):
64
- vals = (([0xFF] * n) + ([0x00] * n)) * int(HEIGHT / 2)
65
- if x % (n * 2) < n:
66
- # Rotate once
67
- vals = vals[n:] + vals[:n]
68
-
69
- send_col(dev, s, x, vals)
70
- commit_cols(dev, s)