IS-Matrix-Forge 1.0.0.dev7__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.dev7 → is_matrix_forge-1.0.0.dev8}/PKG-INFO +1 -1
  2. {is_matrix_forge-1.0.0.dev7 → 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.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/controller/controller.py +16 -7
  5. {is_matrix_forge-1.0.0.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → is_matrix_forge-1.0.0.dev8}/pyproject.toml +2 -2
  10. is_matrix_forge-1.0.0.dev7/is_matrix_forge/led_matrix/display/patterns/built_in/stencils/__init__.py +0 -70
  11. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/LICENSE.md +0 -0
  12. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/README.md +0 -0
  13. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/__init__.py +0 -0
  14. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/__init__.py +0 -0
  15. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/audio/__init__.py +0 -0
  16. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/audio/files/__init__.py +0 -0
  17. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/audio/files/plugged.wav +0 -0
  18. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/audio/files/unplugged.wav +0 -0
  19. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/char_map.json +0 -0
  20. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/assets/font_map.py +0 -0
  21. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/__init__.py +0 -0
  22. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/decorators/__init__.py +0 -0
  23. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/decorators/freeze_setter.py +0 -0
  24. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/dirs.py +0 -0
  25. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/helpers/__init__.py +0 -0
  26. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/common/helpers/github_api.py +0 -0
  27. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/designer_gui/__init__.py +0 -0
  28. {is_matrix_forge-1.0.0.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/dev_tools/__init__.py +0 -0
  34. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/dev_tools/debug.py +0 -0
  35. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/dev_tools/presets.py +0 -0
  36. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/__init__.py +0 -0
  37. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/b1display.py +0 -0
  38. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/c1minimal.py +0 -0
  39. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/font.py +0 -0
  40. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/helpers/__init__.py +0 -0
  41. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/inputmodule/ledmatrix.py +0 -0
  42. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/Scripts/__init__.py +0 -0
  43. {is_matrix_forge-1.0.0.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/__init__.py +0 -0
  49. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/commands/__init__.py +0 -0
  50. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/commands/map.py +0 -0
  51. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/constants.py +0 -0
  52. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/controller/__init__.py +0 -0
  53. {is_matrix_forge-1.0.0.dev7 → 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.dev7 → 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.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/controller/multiton.py +0 -0
  56. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/controller/threaded.py +0 -0
  57. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/__init__.py +0 -0
  58. {is_matrix_forge-1.0.0.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/display/media.py +0 -0
  84. {is_matrix_forge-1.0.0.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/errors/__init__.py +0 -0
  90. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/errors/base.py +0 -0
  91. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/errors/grid.py +0 -0
  92. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/errors/matrix.py +0 -0
  93. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/errors/misc.py +0 -0
  94. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/fonts.py +0 -0
  95. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/hardware.py +0 -0
  96. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/helpers/__init__.py +0 -0
  97. {is_matrix_forge-1.0.0.dev7 → 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.dev7 → 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.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/helpers/device.py +0 -0
  100. {is_matrix_forge-1.0.0.dev7 → 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.dev7 → 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.dev7 → 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.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/led_matrix.py +0 -0
  104. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/status.py +0 -0
  105. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/tools/__init__.py +0 -0
  106. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/tools/identify.py +0 -0
  107. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/led_matrix/utils/__init__.py +0 -0
  108. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/log_engine.py +0 -0
  109. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/__init__.py +0 -0
  110. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/errors.py +0 -0
  111. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/events.py +0 -0
  112. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/__init__.py +0 -0
  113. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/errors.py +0 -0
  114. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/event/__init__.py +0 -0
  115. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/event/collection.py +0 -0
  116. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/event/errors.py +0 -0
  117. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/event/event.py +0 -0
  118. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/layout/__init__.py +0 -0
  119. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/layout/base.py +0 -0
  120. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/metaclasses/__init__.py +0 -0
  121. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/windows/__init__.py +0 -0
  122. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/gui/windows/base.py +0 -0
  123. {is_matrix_forge-1.0.0.dev7 → 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.dev7 → 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.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/helpers.py +0 -0
  126. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/monitor/monitor.py +0 -0
  127. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/notify/__init__.py +0 -0
  128. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/notify/sounds/__init__.py +0 -0
  129. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/notify/sounds/base.py +0 -0
  130. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/progress.py +0 -0
  131. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/scripts/__init__.py +0 -0
  132. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/scripts/preset_installer.py +0 -0
  133. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/__init__.py +0 -0
  134. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/base/__init__.py +0 -0
  135. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/base/answer.py +0 -0
  136. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/base/message.py +0 -0
  137. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/base/request.py +0 -0
  138. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/is_matrix_forge/serial_com/exchange.py +0 -0
  139. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/presets/blank.json +0 -0
  140. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/presets/manifest.json +0 -0
  141. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/presets/shock_face.json +0 -0
  142. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/presets/test1.json +0 -0
  143. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/presets/test2.json +0 -0
  144. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/presets/test3.json +0 -0
  145. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/presets/test4.json +0 -0
  146. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/presets/test5.json +0 -0
  147. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/presets/test6.json +0 -0
  148. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/presets/test7.json +0 -0
  149. {is_matrix_forge-1.0.0.dev7 → is_matrix_forge-1.0.0.dev8}/presets/x_animation II.json +0 -0
  150. {is_matrix_forge-1.0.0.dev7 → 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.dev7
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
 
@@ -619,9 +631,6 @@ class LEDMatrixController(metaclass=AliasMeta):
619
631
  if not skip_clear:
620
632
  self.clear()
621
633
 
622
- @property
623
- def is_animating(self):
624
- return self.animating
625
634
 
626
635
  def jump_to_bootloader(self):
627
636
  """
@@ -634,7 +643,7 @@ class LEDMatrixController(metaclass=AliasMeta):
634
643
  bootloader_jump(self.device)
635
644
 
636
645
  def list_patterns(self):
637
- print
646
+ print(', '.join(self.get_built_in_pattern_names()))
638
647
 
639
648
  @synchronized
640
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.7"
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)