hspylib-clitt 0.9.116__py3-none-any.whl → 0.9.117__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of hspylib-clitt might be problematic. Click here for more details.

Files changed (353) hide show
  1. clitt/.version +1 -1
  2. clitt/__classpath__.py +2 -2
  3. clitt/__init__.py +3 -3
  4. clitt/__main__.py +3 -3
  5. clitt/addons/__init__.py +3 -3
  6. clitt/addons/appman/__init__.py +3 -3
  7. clitt/addons/appman/templates/__init__.py +3 -3
  8. clitt/addons/appman/templates/main_qt_view.py.tpl +1 -1
  9. clitt/addons/widman/__init__.py +3 -3
  10. clitt/addons/widman/widgets/__init__.py +3 -3
  11. clitt/core/__init__.py +3 -3
  12. clitt/core/exception/__init__.py +3 -3
  13. clitt/core/icons/__init__.py +3 -3
  14. clitt/core/icons/emojis/__init__.py +3 -3
  15. clitt/core/icons/font_awesome/__init__.py +3 -3
  16. clitt/core/term/__init__.py +3 -3
  17. clitt/core/term/cursor.py +1 -1
  18. clitt/core/term/screen.py +1 -1
  19. clitt/core/term/terminal.py +1 -1
  20. clitt/core/tui/__init__.py +3 -3
  21. clitt/core/tui/line_input/__init__.py +3 -3
  22. clitt/core/tui/line_input/keyboard_input.py +34 -34
  23. clitt/core/tui/line_input/line_input.py +5 -13
  24. clitt/core/tui/mchoose/__init__.py +3 -3
  25. clitt/core/tui/mdashboard/__init__.py +3 -3
  26. clitt/core/tui/menu/__init__.py +3 -3
  27. clitt/core/tui/minput/__init__.py +3 -3
  28. clitt/core/tui/mselect/__init__.py +3 -3
  29. clitt/core/tui/table/__init__.py +3 -3
  30. clitt/core/tui/tui_application.py +11 -23
  31. clitt/core/tui/tui_preferences.py +1 -1
  32. clitt/utils/__init__.py +3 -3
  33. {hspylib_clitt-0.9.116.dist-info → hspylib_clitt-0.9.117.dist-info}/METADATA +2 -2
  34. hspylib_clitt-0.9.117.dist-info/RECORD +97 -0
  35. {hspylib_clitt-0.9.116.dist-info → hspylib_clitt-0.9.117.dist-info}/WHEEL +1 -1
  36. {hspylib_clitt-0.9.116.dist-info → hspylib_clitt-0.9.117.dist-info}/top_level.txt +0 -1
  37. build/lib/build/lib/build/lib/build/lib/clitt/__classpath__.py +0 -28
  38. build/lib/build/lib/build/lib/build/lib/clitt/__init__.py +0 -13
  39. build/lib/build/lib/build/lib/build/lib/clitt/__main__.py +0 -139
  40. build/lib/build/lib/build/lib/build/lib/clitt/addons/__init__.py +0 -12
  41. build/lib/build/lib/build/lib/build/lib/clitt/addons/appman/__init__.py +0 -13
  42. build/lib/build/lib/build/lib/build/lib/clitt/addons/appman/appman.py +0 -305
  43. build/lib/build/lib/build/lib/build/lib/clitt/addons/appman/appman_enums.py +0 -39
  44. build/lib/build/lib/build/lib/build/lib/clitt/addons/appman/templates/__init__.py +0 -11
  45. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/__init__.py +0 -14
  46. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widget.py +0 -70
  47. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widget_entry.py +0 -54
  48. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widgets/__init__.py +0 -14
  49. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_free.py +0 -110
  50. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_punch.py +0 -246
  51. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_send_msg.py +0 -272
  52. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_time_calc.py +0 -146
  53. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widman.py +0 -123
  54. build/lib/build/lib/build/lib/build/lib/clitt/core/__init__.py +0 -15
  55. build/lib/build/lib/build/lib/build/lib/clitt/core/exception/__init__.py +0 -11
  56. build/lib/build/lib/build/lib/build/lib/clitt/core/exception/exceptions.py +0 -18
  57. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/__init__.py +0 -12
  58. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/emojis/__init__.py +0 -12
  59. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/emojis/emojis.py +0 -41
  60. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/emojis/face_smiling.py +0 -40
  61. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/__init__.py +0 -18
  62. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/app_icons.py +0 -55
  63. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/awesome.py +0 -76
  64. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/dashboard_icons.py +0 -93
  65. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/form_icons.py +0 -69
  66. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/game_icons.py +0 -59
  67. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/nav_icons.py +0 -42
  68. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/trickplay_icons.py +0 -39
  69. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/widget_icons.py +0 -37
  70. build/lib/build/lib/build/lib/build/lib/clitt/core/preferences.py +0 -87
  71. build/lib/build/lib/build/lib/build/lib/clitt/core/term/__init__.py +0 -14
  72. build/lib/build/lib/build/lib/build/lib/clitt/core/term/commons.py +0 -82
  73. build/lib/build/lib/build/lib/build/lib/clitt/core/term/cursor.py +0 -159
  74. build/lib/build/lib/build/lib/build/lib/clitt/core/term/screen.py +0 -91
  75. build/lib/build/lib/build/lib/build/lib/clitt/core/term/terminal.py +0 -203
  76. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/__init__.py +0 -20
  77. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/line_input/__init__.py +0 -12
  78. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/line_input/keyboard_input.py +0 -228
  79. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/line_input/line_input.py +0 -43
  80. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mchoose/__init__.py +0 -12
  81. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mchoose/mchoose.py +0 -44
  82. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mchoose/menu_choose.py +0 -200
  83. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/__init__.py +0 -14
  84. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_builder.py +0 -54
  85. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_item.py +0 -31
  86. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/mdashboard.py +0 -26
  87. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/menu_dashboard.py +0 -154
  88. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/__init__.py +0 -16
  89. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu.py +0 -111
  90. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_action.py +0 -47
  91. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_factory.py +0 -117
  92. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_item.py +0 -196
  93. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_ui.py +0 -98
  94. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_view.py +0 -57
  95. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/__init__.py +0 -19
  96. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/access_type.py +0 -26
  97. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/field_builder.py +0 -117
  98. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/form_builder.py +0 -72
  99. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/form_field.py +0 -180
  100. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/input_type.py +0 -30
  101. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/input_validator.py +0 -98
  102. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/menu_input.py +0 -292
  103. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/minput.py +0 -44
  104. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/minput_utils.py +0 -156
  105. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mselect/__init__.py +0 -12
  106. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mselect/menu_select.py +0 -171
  107. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mselect/mselect.py +0 -36
  108. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/table/__init__.py +0 -12
  109. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/table/table_enums.py +0 -47
  110. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/table/table_renderer.py +0 -339
  111. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/tui_application.py +0 -65
  112. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/tui_component.py +0 -155
  113. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/tui_preferences.py +0 -103
  114. build/lib/build/lib/build/lib/build/lib/clitt/utils/__init__.py +0 -11
  115. build/lib/build/lib/build/lib/build/lib/clitt/utils/git_utils.py +0 -66
  116. build/lib/build/lib/build/lib/clitt/__classpath__.py +0 -28
  117. build/lib/build/lib/build/lib/clitt/__init__.py +0 -13
  118. build/lib/build/lib/build/lib/clitt/__main__.py +0 -139
  119. build/lib/build/lib/build/lib/clitt/addons/__init__.py +0 -12
  120. build/lib/build/lib/build/lib/clitt/addons/appman/__init__.py +0 -13
  121. build/lib/build/lib/build/lib/clitt/addons/appman/appman.py +0 -305
  122. build/lib/build/lib/build/lib/clitt/addons/appman/appman_enums.py +0 -39
  123. build/lib/build/lib/build/lib/clitt/addons/appman/templates/__init__.py +0 -11
  124. build/lib/build/lib/build/lib/clitt/addons/widman/__init__.py +0 -14
  125. build/lib/build/lib/build/lib/clitt/addons/widman/widget.py +0 -70
  126. build/lib/build/lib/build/lib/clitt/addons/widman/widget_entry.py +0 -54
  127. build/lib/build/lib/build/lib/clitt/addons/widman/widgets/__init__.py +0 -14
  128. build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_free.py +0 -110
  129. build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_punch.py +0 -246
  130. build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_send_msg.py +0 -272
  131. build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_time_calc.py +0 -146
  132. build/lib/build/lib/build/lib/clitt/addons/widman/widman.py +0 -123
  133. build/lib/build/lib/build/lib/clitt/core/__init__.py +0 -15
  134. build/lib/build/lib/build/lib/clitt/core/exception/__init__.py +0 -11
  135. build/lib/build/lib/build/lib/clitt/core/exception/exceptions.py +0 -18
  136. build/lib/build/lib/build/lib/clitt/core/icons/__init__.py +0 -12
  137. build/lib/build/lib/build/lib/clitt/core/icons/emojis/__init__.py +0 -12
  138. build/lib/build/lib/build/lib/clitt/core/icons/emojis/emojis.py +0 -41
  139. build/lib/build/lib/build/lib/clitt/core/icons/emojis/face_smiling.py +0 -40
  140. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/__init__.py +0 -18
  141. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/app_icons.py +0 -55
  142. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/awesome.py +0 -76
  143. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/dashboard_icons.py +0 -93
  144. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/form_icons.py +0 -69
  145. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/game_icons.py +0 -59
  146. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/nav_icons.py +0 -42
  147. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/trickplay_icons.py +0 -39
  148. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/widget_icons.py +0 -37
  149. build/lib/build/lib/build/lib/clitt/core/preferences.py +0 -87
  150. build/lib/build/lib/build/lib/clitt/core/term/__init__.py +0 -14
  151. build/lib/build/lib/build/lib/clitt/core/term/commons.py +0 -82
  152. build/lib/build/lib/build/lib/clitt/core/term/cursor.py +0 -159
  153. build/lib/build/lib/build/lib/clitt/core/term/screen.py +0 -91
  154. build/lib/build/lib/build/lib/clitt/core/term/terminal.py +0 -203
  155. build/lib/build/lib/build/lib/clitt/core/tui/__init__.py +0 -20
  156. build/lib/build/lib/build/lib/clitt/core/tui/line_input/__init__.py +0 -12
  157. build/lib/build/lib/build/lib/clitt/core/tui/line_input/keyboard_input.py +0 -228
  158. build/lib/build/lib/build/lib/clitt/core/tui/line_input/line_input.py +0 -43
  159. build/lib/build/lib/build/lib/clitt/core/tui/mchoose/__init__.py +0 -12
  160. build/lib/build/lib/build/lib/clitt/core/tui/mchoose/mchoose.py +0 -44
  161. build/lib/build/lib/build/lib/clitt/core/tui/mchoose/menu_choose.py +0 -200
  162. build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/__init__.py +0 -14
  163. build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_builder.py +0 -54
  164. build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_item.py +0 -31
  165. build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/mdashboard.py +0 -26
  166. build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/menu_dashboard.py +0 -154
  167. build/lib/build/lib/build/lib/clitt/core/tui/menu/__init__.py +0 -16
  168. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu.py +0 -111
  169. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_action.py +0 -47
  170. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_factory.py +0 -117
  171. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_item.py +0 -196
  172. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_ui.py +0 -98
  173. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_view.py +0 -57
  174. build/lib/build/lib/build/lib/clitt/core/tui/minput/__init__.py +0 -19
  175. build/lib/build/lib/build/lib/clitt/core/tui/minput/access_type.py +0 -26
  176. build/lib/build/lib/build/lib/clitt/core/tui/minput/field_builder.py +0 -117
  177. build/lib/build/lib/build/lib/clitt/core/tui/minput/form_builder.py +0 -72
  178. build/lib/build/lib/build/lib/clitt/core/tui/minput/form_field.py +0 -180
  179. build/lib/build/lib/build/lib/clitt/core/tui/minput/input_type.py +0 -30
  180. build/lib/build/lib/build/lib/clitt/core/tui/minput/input_validator.py +0 -98
  181. build/lib/build/lib/build/lib/clitt/core/tui/minput/menu_input.py +0 -292
  182. build/lib/build/lib/build/lib/clitt/core/tui/minput/minput.py +0 -44
  183. build/lib/build/lib/build/lib/clitt/core/tui/minput/minput_utils.py +0 -156
  184. build/lib/build/lib/build/lib/clitt/core/tui/mselect/__init__.py +0 -12
  185. build/lib/build/lib/build/lib/clitt/core/tui/mselect/menu_select.py +0 -171
  186. build/lib/build/lib/build/lib/clitt/core/tui/mselect/mselect.py +0 -36
  187. build/lib/build/lib/build/lib/clitt/core/tui/table/__init__.py +0 -12
  188. build/lib/build/lib/build/lib/clitt/core/tui/table/table_enums.py +0 -47
  189. build/lib/build/lib/build/lib/clitt/core/tui/table/table_renderer.py +0 -339
  190. build/lib/build/lib/build/lib/clitt/core/tui/tui_application.py +0 -65
  191. build/lib/build/lib/build/lib/clitt/core/tui/tui_component.py +0 -155
  192. build/lib/build/lib/build/lib/clitt/core/tui/tui_preferences.py +0 -103
  193. build/lib/build/lib/build/lib/clitt/utils/__init__.py +0 -11
  194. build/lib/build/lib/build/lib/clitt/utils/git_utils.py +0 -66
  195. build/lib/build/lib/clitt/__classpath__.py +0 -28
  196. build/lib/build/lib/clitt/__init__.py +0 -13
  197. build/lib/build/lib/clitt/__main__.py +0 -139
  198. build/lib/build/lib/clitt/addons/__init__.py +0 -12
  199. build/lib/build/lib/clitt/addons/appman/__init__.py +0 -13
  200. build/lib/build/lib/clitt/addons/appman/appman.py +0 -305
  201. build/lib/build/lib/clitt/addons/appman/appman_enums.py +0 -39
  202. build/lib/build/lib/clitt/addons/appman/templates/__init__.py +0 -11
  203. build/lib/build/lib/clitt/addons/widman/__init__.py +0 -14
  204. build/lib/build/lib/clitt/addons/widman/widget.py +0 -70
  205. build/lib/build/lib/clitt/addons/widman/widget_entry.py +0 -54
  206. build/lib/build/lib/clitt/addons/widman/widgets/__init__.py +0 -14
  207. build/lib/build/lib/clitt/addons/widman/widgets/widget_free.py +0 -110
  208. build/lib/build/lib/clitt/addons/widman/widgets/widget_punch.py +0 -246
  209. build/lib/build/lib/clitt/addons/widman/widgets/widget_send_msg.py +0 -272
  210. build/lib/build/lib/clitt/addons/widman/widgets/widget_time_calc.py +0 -146
  211. build/lib/build/lib/clitt/addons/widman/widman.py +0 -123
  212. build/lib/build/lib/clitt/core/__init__.py +0 -15
  213. build/lib/build/lib/clitt/core/exception/__init__.py +0 -11
  214. build/lib/build/lib/clitt/core/exception/exceptions.py +0 -18
  215. build/lib/build/lib/clitt/core/icons/__init__.py +0 -12
  216. build/lib/build/lib/clitt/core/icons/emojis/__init__.py +0 -12
  217. build/lib/build/lib/clitt/core/icons/emojis/emojis.py +0 -41
  218. build/lib/build/lib/clitt/core/icons/emojis/face_smiling.py +0 -40
  219. build/lib/build/lib/clitt/core/icons/font_awesome/__init__.py +0 -18
  220. build/lib/build/lib/clitt/core/icons/font_awesome/app_icons.py +0 -55
  221. build/lib/build/lib/clitt/core/icons/font_awesome/awesome.py +0 -76
  222. build/lib/build/lib/clitt/core/icons/font_awesome/dashboard_icons.py +0 -93
  223. build/lib/build/lib/clitt/core/icons/font_awesome/form_icons.py +0 -69
  224. build/lib/build/lib/clitt/core/icons/font_awesome/game_icons.py +0 -59
  225. build/lib/build/lib/clitt/core/icons/font_awesome/nav_icons.py +0 -42
  226. build/lib/build/lib/clitt/core/icons/font_awesome/trickplay_icons.py +0 -39
  227. build/lib/build/lib/clitt/core/icons/font_awesome/widget_icons.py +0 -37
  228. build/lib/build/lib/clitt/core/preferences.py +0 -87
  229. build/lib/build/lib/clitt/core/term/__init__.py +0 -14
  230. build/lib/build/lib/clitt/core/term/commons.py +0 -82
  231. build/lib/build/lib/clitt/core/term/cursor.py +0 -159
  232. build/lib/build/lib/clitt/core/term/screen.py +0 -91
  233. build/lib/build/lib/clitt/core/term/terminal.py +0 -203
  234. build/lib/build/lib/clitt/core/tui/__init__.py +0 -20
  235. build/lib/build/lib/clitt/core/tui/line_input/__init__.py +0 -12
  236. build/lib/build/lib/clitt/core/tui/line_input/keyboard_input.py +0 -228
  237. build/lib/build/lib/clitt/core/tui/line_input/line_input.py +0 -43
  238. build/lib/build/lib/clitt/core/tui/mchoose/__init__.py +0 -12
  239. build/lib/build/lib/clitt/core/tui/mchoose/mchoose.py +0 -44
  240. build/lib/build/lib/clitt/core/tui/mchoose/menu_choose.py +0 -200
  241. build/lib/build/lib/clitt/core/tui/mdashboard/__init__.py +0 -14
  242. build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_builder.py +0 -54
  243. build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_item.py +0 -31
  244. build/lib/build/lib/clitt/core/tui/mdashboard/mdashboard.py +0 -26
  245. build/lib/build/lib/clitt/core/tui/mdashboard/menu_dashboard.py +0 -154
  246. build/lib/build/lib/clitt/core/tui/menu/__init__.py +0 -16
  247. build/lib/build/lib/clitt/core/tui/menu/tui_menu.py +0 -111
  248. build/lib/build/lib/clitt/core/tui/menu/tui_menu_action.py +0 -47
  249. build/lib/build/lib/clitt/core/tui/menu/tui_menu_factory.py +0 -117
  250. build/lib/build/lib/clitt/core/tui/menu/tui_menu_item.py +0 -196
  251. build/lib/build/lib/clitt/core/tui/menu/tui_menu_ui.py +0 -98
  252. build/lib/build/lib/clitt/core/tui/menu/tui_menu_view.py +0 -57
  253. build/lib/build/lib/clitt/core/tui/minput/__init__.py +0 -19
  254. build/lib/build/lib/clitt/core/tui/minput/access_type.py +0 -26
  255. build/lib/build/lib/clitt/core/tui/minput/field_builder.py +0 -117
  256. build/lib/build/lib/clitt/core/tui/minput/form_builder.py +0 -72
  257. build/lib/build/lib/clitt/core/tui/minput/form_field.py +0 -180
  258. build/lib/build/lib/clitt/core/tui/minput/input_type.py +0 -30
  259. build/lib/build/lib/clitt/core/tui/minput/input_validator.py +0 -98
  260. build/lib/build/lib/clitt/core/tui/minput/menu_input.py +0 -292
  261. build/lib/build/lib/clitt/core/tui/minput/minput.py +0 -44
  262. build/lib/build/lib/clitt/core/tui/minput/minput_utils.py +0 -156
  263. build/lib/build/lib/clitt/core/tui/mselect/__init__.py +0 -12
  264. build/lib/build/lib/clitt/core/tui/mselect/menu_select.py +0 -171
  265. build/lib/build/lib/clitt/core/tui/mselect/mselect.py +0 -36
  266. build/lib/build/lib/clitt/core/tui/table/__init__.py +0 -12
  267. build/lib/build/lib/clitt/core/tui/table/table_enums.py +0 -47
  268. build/lib/build/lib/clitt/core/tui/table/table_renderer.py +0 -339
  269. build/lib/build/lib/clitt/core/tui/tui_application.py +0 -65
  270. build/lib/build/lib/clitt/core/tui/tui_component.py +0 -155
  271. build/lib/build/lib/clitt/core/tui/tui_preferences.py +0 -103
  272. build/lib/build/lib/clitt/utils/__init__.py +0 -11
  273. build/lib/build/lib/clitt/utils/git_utils.py +0 -66
  274. build/lib/clitt/__classpath__.py +0 -28
  275. build/lib/clitt/__init__.py +0 -13
  276. build/lib/clitt/__main__.py +0 -139
  277. build/lib/clitt/addons/__init__.py +0 -12
  278. build/lib/clitt/addons/appman/__init__.py +0 -13
  279. build/lib/clitt/addons/appman/appman.py +0 -305
  280. build/lib/clitt/addons/appman/appman_enums.py +0 -39
  281. build/lib/clitt/addons/appman/templates/__init__.py +0 -11
  282. build/lib/clitt/addons/widman/__init__.py +0 -14
  283. build/lib/clitt/addons/widman/widget.py +0 -70
  284. build/lib/clitt/addons/widman/widget_entry.py +0 -54
  285. build/lib/clitt/addons/widman/widgets/__init__.py +0 -14
  286. build/lib/clitt/addons/widman/widgets/widget_free.py +0 -110
  287. build/lib/clitt/addons/widman/widgets/widget_punch.py +0 -246
  288. build/lib/clitt/addons/widman/widgets/widget_send_msg.py +0 -272
  289. build/lib/clitt/addons/widman/widgets/widget_time_calc.py +0 -146
  290. build/lib/clitt/addons/widman/widman.py +0 -123
  291. build/lib/clitt/core/__init__.py +0 -15
  292. build/lib/clitt/core/exception/__init__.py +0 -11
  293. build/lib/clitt/core/exception/exceptions.py +0 -18
  294. build/lib/clitt/core/icons/__init__.py +0 -12
  295. build/lib/clitt/core/icons/emojis/__init__.py +0 -12
  296. build/lib/clitt/core/icons/emojis/emojis.py +0 -41
  297. build/lib/clitt/core/icons/emojis/face_smiling.py +0 -40
  298. build/lib/clitt/core/icons/font_awesome/__init__.py +0 -18
  299. build/lib/clitt/core/icons/font_awesome/app_icons.py +0 -55
  300. build/lib/clitt/core/icons/font_awesome/awesome.py +0 -76
  301. build/lib/clitt/core/icons/font_awesome/dashboard_icons.py +0 -93
  302. build/lib/clitt/core/icons/font_awesome/form_icons.py +0 -69
  303. build/lib/clitt/core/icons/font_awesome/game_icons.py +0 -59
  304. build/lib/clitt/core/icons/font_awesome/nav_icons.py +0 -42
  305. build/lib/clitt/core/icons/font_awesome/trickplay_icons.py +0 -39
  306. build/lib/clitt/core/icons/font_awesome/widget_icons.py +0 -37
  307. build/lib/clitt/core/preferences.py +0 -87
  308. build/lib/clitt/core/term/__init__.py +0 -14
  309. build/lib/clitt/core/term/commons.py +0 -82
  310. build/lib/clitt/core/term/cursor.py +0 -159
  311. build/lib/clitt/core/term/screen.py +0 -91
  312. build/lib/clitt/core/term/terminal.py +0 -203
  313. build/lib/clitt/core/tui/__init__.py +0 -20
  314. build/lib/clitt/core/tui/line_input/__init__.py +0 -12
  315. build/lib/clitt/core/tui/line_input/keyboard_input.py +0 -228
  316. build/lib/clitt/core/tui/line_input/line_input.py +0 -43
  317. build/lib/clitt/core/tui/mchoose/__init__.py +0 -12
  318. build/lib/clitt/core/tui/mchoose/mchoose.py +0 -44
  319. build/lib/clitt/core/tui/mchoose/menu_choose.py +0 -200
  320. build/lib/clitt/core/tui/mdashboard/__init__.py +0 -14
  321. build/lib/clitt/core/tui/mdashboard/dashboard_builder.py +0 -54
  322. build/lib/clitt/core/tui/mdashboard/dashboard_item.py +0 -31
  323. build/lib/clitt/core/tui/mdashboard/mdashboard.py +0 -26
  324. build/lib/clitt/core/tui/mdashboard/menu_dashboard.py +0 -154
  325. build/lib/clitt/core/tui/menu/__init__.py +0 -16
  326. build/lib/clitt/core/tui/menu/tui_menu.py +0 -111
  327. build/lib/clitt/core/tui/menu/tui_menu_action.py +0 -47
  328. build/lib/clitt/core/tui/menu/tui_menu_factory.py +0 -117
  329. build/lib/clitt/core/tui/menu/tui_menu_item.py +0 -196
  330. build/lib/clitt/core/tui/menu/tui_menu_ui.py +0 -98
  331. build/lib/clitt/core/tui/menu/tui_menu_view.py +0 -57
  332. build/lib/clitt/core/tui/minput/__init__.py +0 -19
  333. build/lib/clitt/core/tui/minput/access_type.py +0 -26
  334. build/lib/clitt/core/tui/minput/field_builder.py +0 -117
  335. build/lib/clitt/core/tui/minput/form_builder.py +0 -72
  336. build/lib/clitt/core/tui/minput/form_field.py +0 -180
  337. build/lib/clitt/core/tui/minput/input_type.py +0 -30
  338. build/lib/clitt/core/tui/minput/input_validator.py +0 -98
  339. build/lib/clitt/core/tui/minput/menu_input.py +0 -292
  340. build/lib/clitt/core/tui/minput/minput.py +0 -44
  341. build/lib/clitt/core/tui/minput/minput_utils.py +0 -156
  342. build/lib/clitt/core/tui/mselect/__init__.py +0 -12
  343. build/lib/clitt/core/tui/mselect/menu_select.py +0 -171
  344. build/lib/clitt/core/tui/mselect/mselect.py +0 -36
  345. build/lib/clitt/core/tui/table/__init__.py +0 -12
  346. build/lib/clitt/core/tui/table/table_enums.py +0 -47
  347. build/lib/clitt/core/tui/table/table_renderer.py +0 -339
  348. build/lib/clitt/core/tui/tui_application.py +0 -65
  349. build/lib/clitt/core/tui/tui_component.py +0 -155
  350. build/lib/clitt/core/tui/tui_preferences.py +0 -103
  351. build/lib/clitt/utils/__init__.py +0 -11
  352. build/lib/clitt/utils/git_utils.py +0 -66
  353. hspylib_clitt-0.9.116.dist-info/RECORD +0 -413
@@ -1,200 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- @project: HsPyLib
6
- @package: clitt.core.tui.mchoose
7
- @file: menu_choose.py
8
- @created: Wed, 17 May 2023
9
- @author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior"
10
- @site: https://github.com/yorevs/hspylib
11
- @license: MIT - Please refer to <https://opensource.org/licenses/MIT>
12
-
13
- Copyright·(c)·2024,·HSPyLib
14
- """
15
- from hspylib.modules.cli.keyboard import Keyboard
16
- from hspylib.core.tools.commons import to_bool
17
- from hspylib.core.tools.dict_tools import get_or_default
18
- from typing import List, Optional, TypeAlias, TypeVar
19
-
20
- from clitt.core.icons.font_awesome.nav_icons import NavIcons
21
- from clitt.core.term.commons import Direction, Portion
22
- from clitt.core.tui.tui_component import TUIComponent
23
-
24
- T = TypeVar("T")
25
-
26
- MChooseItems: TypeAlias = List[T]
27
-
28
-
29
- class MenuChoose(TUIComponent):
30
- """Terminal UI menu choose input method."""
31
-
32
- NAV_ICONS = NavIcons.compose(NavIcons.UP, NavIcons.DOWN)
33
-
34
- ROW_OFFSET = 5
35
-
36
- MIN_ROWS = 3
37
-
38
- def __init__(
39
- self,
40
- title: str,
41
- items: MChooseItems,
42
- checked: bool | List[bool] = False):
43
-
44
- super().__init__(title)
45
- self.items = items
46
- self.show_from = 0
47
- self.show_to = self._max_rows()
48
- self.diff_index = self.show_to - self.show_from
49
- self.sel_index = 0
50
- self.max_line_length = max(len(str(item)) for item in items)
51
- # Initialize all options
52
- if isinstance(checked, bool):
53
- self.sel_options = [checked for _ in range(len(items))]
54
- else:
55
- # Check both sizes
56
- self.sel_options = [get_or_default(checked, i, 0) for i in range(len(items))]
57
-
58
- def execute(self) -> Optional[MChooseItems]:
59
- if len(self.items) == 0:
60
- return None
61
-
62
- self._prepare_render()
63
- keypress = self._loop()
64
-
65
- return (
66
- [op for idx, op in enumerate(self.items) if self.sel_options[idx]]
67
- if keypress.isEnter() else None
68
- )
69
-
70
- def render(self) -> None:
71
- length = len(self.items)
72
- self.cursor.restore()
73
- self.writeln(f"{self.prefs.title_color.placeholder}{self.title}%EOL%%NC%")
74
-
75
- for idx in range(self.show_from, self.show_to):
76
- if idx >= length:
77
- break # When the index is greater than the number of items, stop rendering
78
-
79
- option_line = str(self.items[idx])
80
- self.cursor.erase(Portion.LINE)
81
- # Print the selector if the index is currently selected
82
- selector = self.draw_selector(idx == self.sel_index)
83
- mark = self.prefs.checked_icon if to_bool(self.sel_options[idx]) else self.prefs.unchecked_icon
84
- # fmt: off
85
- line_fmt = (
86
- " {:>" + f"{len(str(length))}" + "} "
87
- + "{:>" + f"{len(selector)}" + "} "
88
- + "{:>" + f"{len(str(mark))}" + "} "
89
- + "{:<" + f"{self.max_line_length}" + "} "
90
- )
91
- # fmt: on
92
- self.draw_line(line_fmt, idx + 1, selector, mark, option_line)
93
-
94
- self.draw_navbar(self.navbar(to=length))
95
- self._re_render = False
96
-
97
- def navbar(self, **kwargs) -> str:
98
- return (
99
- f"%EOL%{self.prefs.navbar_color.placeholder}"
100
- f"[Enter] Accept [{self.NAV_ICONS}] "
101
- f"Navigate [Space] Mark [I] Invert [Esc] Quit [1..{kwargs['to']}] Goto: %NC%"
102
- )
103
-
104
- def handle_keypress(self) -> Keyboard:
105
- if keypress := Keyboard.wait_keystroke():
106
- match keypress:
107
- case _ as key if key in Keyboard.break_keys():
108
- self._done = True
109
- case Keyboard.VK_UP:
110
- self._handle_key_up()
111
- case Keyboard.VK_DOWN:
112
- self._handle_key_down()
113
- case Keyboard.VK_TAB:
114
- self._handle_tab()
115
- case Keyboard.VK_SHIFT_TAB:
116
- self._handle_shift_tab()
117
- case Keyboard.VK_SPACE:
118
- self._handle_space()
119
- case _ as key if key in [Keyboard.VK_i, Keyboard.VK_I]:
120
- self._handle_key_i()
121
- case _ as key if key in Keyboard.digits():
122
- self._handle_digit(keypress)
123
-
124
- return keypress
125
-
126
- def _handle_digit(self, digit: Keyboard) -> None:
127
- """TODO"""
128
- length = len(self.items)
129
- typed_index = digit.value
130
- self.write(f"{digit.value}") # echo the digit typed
131
- index_len = 1
132
- while len(typed_index) < len(str(length)):
133
- keystroke = Keyboard.wait_keystroke()
134
- if not keystroke or not keystroke.isdigit():
135
- typed_index = None if keystroke != Keyboard.VK_ENTER else typed_index
136
- break
137
- typed_index = f"{typed_index}{keystroke.value if keystroke else ''}"
138
- self.write(f"{keystroke.value if keystroke else ''}")
139
- index_len += 1
140
- # Erase the index typed by the user
141
- self.cursor.move(index_len, Direction.LEFT)
142
- self.cursor.erase(Direction.RIGHT)
143
- if typed_index and 1 <= int(typed_index) <= length:
144
- self.show_to = max(int(typed_index), self.diff_index)
145
- self.show_from = self.show_to - self.diff_index
146
- self.sel_index = int(typed_index) - 1
147
- self._re_render = True
148
-
149
- def _handle_key_up(self) -> None:
150
- """TODO"""
151
- if self.sel_index == self.show_from and self.show_from > 0:
152
- self.show_from -= 1
153
- self.show_to -= 1
154
- if self.sel_index - 1 >= 0:
155
- self.sel_index -= 1
156
- self._re_render = True
157
-
158
- def _handle_key_down(self) -> None:
159
- """TODO"""
160
- length = len(self.items)
161
- if self.sel_index + 1 == self.show_to and self.show_to < length:
162
- self.show_from += 1
163
- self.show_to += 1
164
- if self.sel_index + 1 < length:
165
- self.sel_index += 1
166
- self._re_render = True
167
-
168
- def _handle_tab(self) -> None:
169
- """TODO"""
170
- length = len(self.items)
171
- page_index = min(self.show_to + self.diff_index, length)
172
- self.show_to = max(page_index, self.diff_index)
173
- self.show_from = self.show_to - self.diff_index
174
- self.sel_index = self.show_from
175
- self._re_render = True
176
-
177
- def _handle_shift_tab(self) -> None:
178
- """TODO"""
179
- page_index = max(self.show_from - self.diff_index, 0)
180
- self.show_from = min(page_index, self.diff_index)
181
- self.show_to = self.show_from + self.diff_index
182
- self.sel_index = self.show_from
183
- self._re_render = True
184
-
185
- def _handle_space(self) -> None:
186
- """TODO"""
187
- if self.sel_options[self.sel_index] == 0:
188
- self.sel_options[self.sel_index] = 1
189
- else:
190
- self.sel_options[self.sel_index] = 0
191
- self._re_render = True
192
-
193
- def _handle_key_i(self) -> None:
194
- """TODO"""
195
- self.sel_options = [(0 if op == 1 else 1) for op in self.sel_options]
196
- self._re_render = True
197
-
198
- def _max_rows(self) -> int:
199
- screen_lines = self.screen.lines - self.ROW_OFFSET
200
- return min(self.prefs.max_rows, screen_lines)
@@ -1,14 +0,0 @@
1
- # _*_ coding: utf-8 _*_
2
- #
3
- # hspylib-clitt v0.9.116
4
- #
5
- # Package: main.build.lib.build.lib.build.lib.build.lib.clitt.core.tui.mdashboard
6
- """Package initialization."""
7
-
8
- __all__ = [
9
- 'dashboard_builder',
10
- 'dashboard_item',
11
- 'mdashboard',
12
- 'menu_dashboard'
13
- ]
14
- __version__ = '0.9.116'
@@ -1,54 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- @project: HsPyLib
6
- @package: clitt.core.tui.mdashboard
7
- @file: dashboard_builder.py
8
- @created: Thu, 20 May 2021
9
- @author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior"
10
- @site: https://github.com/yorevs/hspylib
11
- @license: MIT - Please refer to <https://opensource.org/licenses/MIT>
12
-
13
- Copyright·(c)·2024,·HSPyLib
14
- """
15
- from clitt.core.icons.font_awesome.awesome import Awesome
16
- from clitt.core.tui.mdashboard.dashboard_item import DashboardItem
17
- from typing import Callable, List, Optional
18
-
19
-
20
- class DashboardBuilder:
21
- """Dashboard builder."""
22
-
23
- @staticmethod
24
- class DashboardItemBuilder:
25
- """Dashboard item builder."""
26
-
27
- def __init__(self, parent: "DashboardBuilder"):
28
- self._parent = parent
29
- self._item = DashboardItem()
30
-
31
- def icon(self, icon: Awesome) -> "DashboardBuilder.DashboardItemBuilder":
32
- self._item.icon = icon
33
- return self
34
-
35
- def tooltip(self, tooltip: str) -> "DashboardBuilder.DashboardItemBuilder":
36
- self._item.tooltip = tooltip
37
- return self
38
-
39
- def on_trigger(self, on_trigger: Callable) -> Optional["DashboardBuilder.DashboardItemBuilder"]:
40
- self._item.on_trigger = on_trigger
41
- return self
42
-
43
- def build(self) -> "DashboardBuilder":
44
- self._parent.items.append(self._item)
45
- return self._parent
46
-
47
- def __init__(self):
48
- self.items = []
49
-
50
- def item(self) -> DashboardItemBuilder:
51
- return DashboardBuilder.DashboardItemBuilder(self)
52
-
53
- def build(self) -> List[DashboardItem]:
54
- return self.items
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- @project: HsPyLib
6
- @package: clitt.core.tui.mdashboard
7
- @file: dashboard_item.py
8
- @created: Thu, 20 May 2021
9
- @author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior"
10
- @site: https://github.com/yorevs/hspylib
11
- @license: MIT - Please refer to <https://opensource.org/licenses/MIT>
12
-
13
- Copyright·(c)·2024,·HSPyLib
14
- """
15
- from clitt.core.icons.font_awesome.awesome import Awesome
16
- from typing import Callable, Optional
17
-
18
-
19
- class DashboardItem:
20
- """Represent a dashboard item."""
21
-
22
- def __init__(self, icon: Awesome = None, tooltip: str = None, on_trigger: Optional[Callable] = None):
23
- self.icon = icon
24
- self.tooltip = tooltip
25
- self.on_trigger = on_trigger
26
-
27
- def __str__(self):
28
- return f'{self.icon} "{self.tooltip}" -> {self.on_trigger}'
29
-
30
- def __repr__(self):
31
- return str(self)
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- @project: HsPyLib
6
- @package: clitt.core.tui.mdashboard
7
- @file: mdashboard.py
8
- @created: Tue, 4 May 2021
9
- @author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior"
10
- @site: https://github.com/yorevs/hspylib
11
- @license: MIT - Please refer to <https://opensource.org/licenses/MIT>
12
-
13
- Copyright·(c)·2024,·HSPyLib
14
- """
15
- from clitt.core.tui.mdashboard.dashboard_item import DashboardItem
16
- from clitt.core.tui.mdashboard.menu_dashboard import MenuDashBoard
17
- from typing import List, Optional
18
-
19
-
20
- def mdashboard(items: List[DashboardItem], title: str = "Please select one item") -> Optional[DashboardItem]:
21
- """
22
- Wrapper for the Menu Dashboard.
23
- :param items: the provided dashboard items to select from.
24
- :param title: the title to be displayed before the options.
25
- """
26
- return MenuDashBoard(title, items).execute()
@@ -1,154 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- @project: HsPyLib
6
- @package: clitt.core.tui.mdashboard
7
- @file: menu_dashboard.py
8
- @created: Tue, 4 May 2021
9
- @author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior"
10
- @site: https://github.com/yorevs/hspylib
11
- @license: MIT - Please refer to <https://opensource.org/licenses/MIT>
12
-
13
- Copyright·(c)·2024,·HSPyLib
14
- """
15
- from clitt.core.icons.font_awesome.nav_icons import NavIcons
16
- from clitt.core.term.commons import Direction, Portion
17
- from clitt.core.tui.mdashboard.dashboard_builder import DashboardBuilder
18
- from clitt.core.tui.mdashboard.dashboard_item import DashboardItem
19
- from clitt.core.tui.tui_component import TUIComponent
20
- from hspylib.core.preconditions import check_state
21
- from hspylib.modules.cli.keyboard import Keyboard
22
- from typing import List, Optional, TypeAlias
23
-
24
- DashboardMatrix: TypeAlias = List[List[str]]
25
-
26
-
27
- class MenuDashBoard(TUIComponent):
28
- """A dashboard is a type of graphical user interface which provides at-a-glance views."""
29
-
30
- # fmt: off
31
- ICN = "x" # x mars the spot if the icon.
32
-
33
- # Selected cell template.
34
- CELL_TPL = [
35
- [" ", " ", " ", " ", " ", " ", " "],
36
- [" ", " ", " ", ICN, " ", " ", " "],
37
- [" ", " ", " ", " ", " ", " ", " "],
38
- ]
39
-
40
- # Unselected cell template.
41
- SEL_CELL_TPL = [
42
- [" ", "╭", " ", " ", " ", "╮", " "],
43
- [" ", " ", " ", ICN, " ", " ", " "],
44
- [" ", "╰", " ", " ", " ", "╯", " "],
45
- ]
46
- # fmt: on
47
-
48
- NAV_ICONS = NavIcons.compose(NavIcons.LEFT, NavIcons.DOWN, NavIcons.UP, NavIcons.RIGHT)
49
-
50
- COLUMN_OFFSET = 10
51
-
52
- MIN_COLUMNS = 2
53
-
54
- @classmethod
55
- def builder(cls) -> DashboardBuilder:
56
- return DashboardBuilder()
57
-
58
- def __init__(self, title: str, items: List[DashboardItem]):
59
- super().__init__(title)
60
- self._items = items
61
- self._tab_index = 0
62
- check_state(
63
- len(self.CELL_TPL) == len(self.SEL_CELL_TPL) and len(self.CELL_TPL[0]) == len(self.SEL_CELL_TPL[0]),
64
- "Invalid CELL definitions. Selected and Unselected matrices should have the same lengths.",
65
- )
66
-
67
- def execute(self) -> Optional[DashboardItem]:
68
- if (len(self._items)) == 0:
69
- return None
70
-
71
- self._prepare_render()
72
- keypress = self._loop()
73
- selected = self._items[self._tab_index] if keypress == Keyboard.VK_ENTER else None
74
-
75
- if selected and selected.on_trigger:
76
- selected.on_trigger()
77
-
78
- return selected
79
-
80
- def render(self) -> None:
81
- self.cursor.restore()
82
- self.writeln(f"{self.prefs.title_color.placeholder}{self.title}%EOL%%NC%")
83
-
84
- for idx, item in enumerate(self._items):
85
- self._draw_item(
86
- idx, item, MenuDashBoard.CELL_TPL if self._tab_index != idx else MenuDashBoard.SEL_CELL_TPL
87
- )
88
-
89
- self.cursor.erase(Portion.LINE)
90
- self.cursor.move_to(column=1)
91
- self.draw_navbar(self.navbar())
92
- self._re_render = False
93
-
94
- def navbar(self, **kwargs) -> str:
95
- return (
96
- f"{NavIcons.POINTER} %GREEN%{self._items[self._tab_index].tooltip}%NC%"
97
- f"%EOL%{self.prefs.navbar_color.placeholder}%EOL%"
98
- f"[Enter] Select Navigate {self.NAV_ICONS} Next [Tab] [Esc] Quit %NC%"
99
- )
100
-
101
- def handle_keypress(self) -> Keyboard:
102
- length = len(self._items)
103
- if keypress := Keyboard.wait_keystroke():
104
- match keypress:
105
- case _ as key if key in [Keyboard.VK_ESC, Keyboard.VK_ENTER]:
106
- self._done = True
107
- case Keyboard.VK_UP:
108
- self._tab_index = max(0, self._tab_index - self._items_per_line())
109
- case Keyboard.VK_DOWN:
110
- self._tab_index = min(length - 1, self._tab_index + self._items_per_line())
111
- case _ as key if key in [Keyboard.VK_LEFT, Keyboard.VK_SHIFT_TAB]:
112
- self._tab_index = max(0, self._tab_index - 1)
113
- case _ as key if key in [Keyboard.VK_RIGHT, Keyboard.VK_TAB]:
114
- self._tab_index = min(length - 1, self._tab_index + 1)
115
-
116
- self._re_render = True
117
-
118
- return keypress
119
-
120
- def _draw_item(
121
- self,
122
- item_idx: int,
123
- item: DashboardItem,
124
- cell_template: DashboardMatrix) -> None:
125
- """Print the specified dashboard item at the given index.
126
- :param item_idx: the item index.
127
- :param item: the dashboard item.
128
- :param cell_template: the template of the dashboard cell (selected or unselected).
129
- """
130
-
131
- num_cols, num_rows = len(cell_template[0]), len(cell_template)
132
-
133
- for row in range(0, num_rows):
134
- for col in range(0, num_cols):
135
- cur_cell = cell_template[row][col]
136
- # Print current cell
137
- self.write(f"{item.icon if cur_cell == self.ICN else cur_cell}")
138
- # Move to the next the next row
139
- self.cursor.move(1, Direction.DOWN)
140
- self.cursor.move(num_cols, Direction.LEFT)
141
-
142
- if item_idx > 0 and (item_idx + 1) % self._items_per_line() == 0:
143
- # Break the line
144
- self.cursor.move(1, Direction.DOWN)
145
- self.cursor.move(num_cols * self._items_per_line(), Direction.LEFT)
146
- elif item_idx + 1 < len(self._items):
147
- # Continue on the same line
148
- self.cursor.move(num_rows, Direction.UP)
149
- self.cursor.move(num_cols, Direction.RIGHT)
150
-
151
- def _items_per_line(self) -> int:
152
- """TODO"""
153
- screen_columns = self.screen.columns - self.COLUMN_OFFSET
154
- return max(self.MIN_COLUMNS, min(self.prefs.items_per_line, screen_columns))
@@ -1,16 +0,0 @@
1
- # _*_ coding: utf-8 _*_
2
- #
3
- # hspylib-clitt v0.9.116
4
- #
5
- # Package: main.build.lib.build.lib.build.lib.build.lib.clitt.core.tui.menu
6
- """Package initialization."""
7
-
8
- __all__ = [
9
- 'tui_menu',
10
- 'tui_menu_action',
11
- 'tui_menu_factory',
12
- 'tui_menu_item',
13
- 'tui_menu_ui',
14
- 'tui_menu_view'
15
- ]
16
- __version__ = '0.9.116'
@@ -1,111 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- @project: HsPyLib
6
- @package: clitt.core.tui.menu
7
- @file: tui_menu.py
8
- @created: Tue, 4 May 2021
9
- @author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior"
10
- @site: https://github.com/yorevs/hspylib
11
- @license: MIT - Please refer to <https://opensource.org/licenses/MIT>
12
-
13
- Copyright·(c)·2024,·HSPyLib
14
- """
15
-
16
- from abc import ABC
17
- from clitt.core.icons.font_awesome.nav_icons import NavIcons
18
- from clitt.core.tui.minput.input_validator import InputValidator
19
- from clitt.core.tui.minput.menu_input import MenuInput
20
- from clitt.core.tui.minput.minput import minput
21
- from clitt.core.tui.tui_component import TUIComponent
22
- from hspylib.core.namespace import Namespace
23
- from hspylib.modules.cli.keyboard import Keyboard
24
- from typing import Callable, Optional, TypeAlias
25
-
26
- OnTrigger_Cb: TypeAlias = Callable[["TUIMenu"], Optional["TUIMenu"]]
27
-
28
-
29
- class TUIMenu(TUIComponent, ABC):
30
- """Provide a base class for terminal UI menus."""
31
-
32
- @staticmethod
33
- def prompt(
34
- label: str, dest: str = None, min_length: int = 1, max_length: int = 32, validator: InputValidator = None
35
- ) -> Optional[Namespace]:
36
- # fmt: off
37
- form_fields = (
38
- MenuInput.builder()
39
- .field()
40
- .label(label)
41
- .dest(dest or label)
42
- .validator(validator or InputValidator.words())
43
- .min_max_length(min_length, max_length)
44
- .build()
45
- .build()
46
- )
47
- # fmt: on
48
-
49
- return minput(form_fields)
50
-
51
- def __init__(
52
- self,
53
- parent: Optional["TUIMenu"] = None,
54
- title: str = "",
55
- tooltip: str = "",
56
- default_on_trigger_cb: OnTrigger_Cb = None,
57
- ):
58
- super().__init__(title)
59
- self._tooltip = tooltip
60
- self._parent = parent
61
- self._on_trigger = default_on_trigger_cb or self._default_trigger_cb
62
-
63
- def __str__(self) -> str:
64
- return self._title
65
-
66
- def __repr__(self) -> str:
67
- return str(self)
68
-
69
- @property
70
- def parent(self) -> Optional["TUIMenu"]:
71
- return self._parent
72
-
73
- @property
74
- def tooltip(self) -> str:
75
- return self._tooltip
76
-
77
- def handle_keypress(self) -> Keyboard:
78
- if keypress := Keyboard.wait_keystroke():
79
- match keypress:
80
- case Keyboard.VK_ENTER | Keyboard.VK_ESC:
81
- self._done = True
82
-
83
- return keypress
84
-
85
- def navbar(self, **kwargs) -> str:
86
- return (
87
- f"%EOL%{self.breadcrumb()}%ED0%"
88
- f"%EOL%{self.prefs.navbar_color.placeholder}%EOL%"
89
- f"[Enter] Back [Esc] Quit %EL0%%EOL%%EOL%%NC%"
90
- )
91
-
92
- def breadcrumb(self) -> str:
93
- """Provide a breadcrumb of menus for navigation purposes."""
94
- return (
95
- f"{self.prefs.breadcrumb_color.placeholder}"
96
- f" {NavIcons.BREADCRUMB} {self.title} %NC%"
97
- f"{self.prefs.tooltip_color.placeholder}"
98
- )
99
-
100
- def wait_keystroke(self, wait_message: str = "%YELLOW%%EOL%Press any key to continue%EOL%%NC%") -> None:
101
- """Wait for a keypress (blocking).
102
- :param wait_message: the message to present to the user.
103
- """
104
- self.writeln(wait_message)
105
- Keyboard.wait_keystroke()
106
-
107
- def _default_trigger_cb(self, source: Optional["TUIMenu"]) -> Optional["TUIMenu"]:
108
- """Provide a default trigger callback when a menu is activated. Provided a source menu, returns it's parent.
109
- :param source: the source which invoked this menu.
110
- """
111
- return self.parent
@@ -1,47 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- @project: HsPyLib
6
- @package: clitt.core.tui.menu
7
- @file: tui_menu_action.py
8
- @created: Tue, 4 May 2021
9
- @author: <B>H</B>ugo <B>S</B>aporetti <B>J</B>unior"
10
- @site: https://github.com/yorevs/hspylib
11
- @license: MIT - Please refer to <https://opensource.org/licenses/MIT>
12
-
13
- Copyright·(c)·2024,·HSPyLib
14
- """
15
- from clitt.core.tui.menu.tui_menu import OnTrigger_Cb, TUIMenu
16
- from clitt.core.tui.menu.tui_menu_ui import TUIMenuUi
17
- from typing import Optional
18
-
19
-
20
- class TUIMenuAction(TUIMenu):
21
- """Represent a menu item action. Each action trigger a callback function."""
22
-
23
- def execute(self) -> Optional[TUIMenu]:
24
- self.render()
25
- ret_menu = self._on_trigger(self._parent)
26
- if not ret_menu:
27
- self.wait_keystroke()
28
- return ret_menu if ret_menu else self._default_trigger_cb(self)
29
-
30
- def render(self) -> None:
31
- self.screen.cursor.restore()
32
- TUIMenuUi.render_app_title()
33
-
34
- def __init__(
35
- self,
36
- parent: TUIMenu,
37
- title: Optional[str] = None,
38
- tooltip: Optional[str] = None,
39
- on_trigger: OnTrigger_Cb = None,
40
- ):
41
- super().__init__(parent, title, tooltip)
42
- self._parent = parent
43
- self._on_trigger: OnTrigger_Cb = on_trigger or super()._default_trigger_cb
44
-
45
- def on_trigger(self, cb_on_trigger: OnTrigger_Cb) -> None:
46
- """Setter for the on_trigger callback. It is called when a menu item is triggered."""
47
- self._on_trigger = cb_on_trigger