hspylib-clitt 0.9.116__py3-none-any.whl → 0.9.118__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 (360) 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/exception/exceptions.py +1 -0
  14. clitt/core/icons/__init__.py +3 -3
  15. clitt/core/icons/emojis/__init__.py +3 -3
  16. clitt/core/icons/font_awesome/__init__.py +3 -3
  17. clitt/core/term/__init__.py +3 -3
  18. clitt/core/term/commons.py +33 -8
  19. clitt/core/term/cursor.py +19 -4
  20. clitt/core/term/screen.py +16 -1
  21. clitt/core/term/terminal.py +16 -17
  22. clitt/core/tui/__init__.py +3 -3
  23. clitt/core/tui/line_input/__init__.py +3 -3
  24. clitt/core/tui/line_input/keyboard_input.py +36 -35
  25. clitt/core/tui/line_input/line_input.py +5 -17
  26. clitt/core/tui/mchoose/__init__.py +3 -3
  27. clitt/core/tui/mchoose/mchoose.py +2 -3
  28. clitt/core/tui/mchoose/menu_choose.py +6 -14
  29. clitt/core/tui/mdashboard/__init__.py +3 -3
  30. clitt/core/tui/mdashboard/menu_dashboard.py +2 -8
  31. clitt/core/tui/menu/__init__.py +3 -3
  32. clitt/core/tui/minput/__init__.py +3 -3
  33. clitt/core/tui/mselect/__init__.py +3 -3
  34. clitt/core/tui/mselect/menu_select.py +2 -3
  35. clitt/core/tui/table/__init__.py +3 -3
  36. clitt/core/tui/tui_application.py +8 -21
  37. clitt/core/tui/tui_component.py +4 -5
  38. clitt/core/tui/tui_preferences.py +1 -1
  39. clitt/utils/__init__.py +3 -3
  40. {hspylib_clitt-0.9.116.dist-info → hspylib_clitt-0.9.118.dist-info}/METADATA +2 -2
  41. hspylib_clitt-0.9.118.dist-info/RECORD +97 -0
  42. {hspylib_clitt-0.9.116.dist-info → hspylib_clitt-0.9.118.dist-info}/WHEEL +1 -1
  43. {hspylib_clitt-0.9.116.dist-info → hspylib_clitt-0.9.118.dist-info}/top_level.txt +0 -1
  44. build/lib/build/lib/build/lib/build/lib/clitt/__classpath__.py +0 -28
  45. build/lib/build/lib/build/lib/build/lib/clitt/__init__.py +0 -13
  46. build/lib/build/lib/build/lib/build/lib/clitt/__main__.py +0 -139
  47. build/lib/build/lib/build/lib/build/lib/clitt/addons/__init__.py +0 -12
  48. build/lib/build/lib/build/lib/build/lib/clitt/addons/appman/__init__.py +0 -13
  49. build/lib/build/lib/build/lib/build/lib/clitt/addons/appman/appman.py +0 -305
  50. build/lib/build/lib/build/lib/build/lib/clitt/addons/appman/appman_enums.py +0 -39
  51. build/lib/build/lib/build/lib/build/lib/clitt/addons/appman/templates/__init__.py +0 -11
  52. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/__init__.py +0 -14
  53. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widget.py +0 -70
  54. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widget_entry.py +0 -54
  55. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widgets/__init__.py +0 -14
  56. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_free.py +0 -110
  57. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_punch.py +0 -246
  58. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_send_msg.py +0 -272
  59. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_time_calc.py +0 -146
  60. build/lib/build/lib/build/lib/build/lib/clitt/addons/widman/widman.py +0 -123
  61. build/lib/build/lib/build/lib/build/lib/clitt/core/__init__.py +0 -15
  62. build/lib/build/lib/build/lib/build/lib/clitt/core/exception/__init__.py +0 -11
  63. build/lib/build/lib/build/lib/build/lib/clitt/core/exception/exceptions.py +0 -18
  64. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/__init__.py +0 -12
  65. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/emojis/__init__.py +0 -12
  66. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/emojis/emojis.py +0 -41
  67. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/emojis/face_smiling.py +0 -40
  68. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/__init__.py +0 -18
  69. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/app_icons.py +0 -55
  70. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/awesome.py +0 -76
  71. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/dashboard_icons.py +0 -93
  72. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/form_icons.py +0 -69
  73. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/game_icons.py +0 -59
  74. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/nav_icons.py +0 -42
  75. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/trickplay_icons.py +0 -39
  76. build/lib/build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/widget_icons.py +0 -37
  77. build/lib/build/lib/build/lib/build/lib/clitt/core/preferences.py +0 -87
  78. build/lib/build/lib/build/lib/build/lib/clitt/core/term/__init__.py +0 -14
  79. build/lib/build/lib/build/lib/build/lib/clitt/core/term/commons.py +0 -82
  80. build/lib/build/lib/build/lib/build/lib/clitt/core/term/cursor.py +0 -159
  81. build/lib/build/lib/build/lib/build/lib/clitt/core/term/screen.py +0 -91
  82. build/lib/build/lib/build/lib/build/lib/clitt/core/term/terminal.py +0 -203
  83. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/__init__.py +0 -20
  84. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/line_input/__init__.py +0 -12
  85. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/line_input/keyboard_input.py +0 -228
  86. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/line_input/line_input.py +0 -43
  87. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mchoose/__init__.py +0 -12
  88. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mchoose/mchoose.py +0 -44
  89. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mchoose/menu_choose.py +0 -200
  90. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/__init__.py +0 -14
  91. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_builder.py +0 -54
  92. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_item.py +0 -31
  93. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/mdashboard.py +0 -26
  94. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/menu_dashboard.py +0 -154
  95. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/__init__.py +0 -16
  96. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu.py +0 -111
  97. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_action.py +0 -47
  98. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_factory.py +0 -117
  99. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_item.py +0 -196
  100. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_ui.py +0 -98
  101. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_view.py +0 -57
  102. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/__init__.py +0 -19
  103. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/access_type.py +0 -26
  104. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/field_builder.py +0 -117
  105. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/form_builder.py +0 -72
  106. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/form_field.py +0 -180
  107. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/input_type.py +0 -30
  108. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/input_validator.py +0 -98
  109. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/menu_input.py +0 -292
  110. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/minput.py +0 -44
  111. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/minput/minput_utils.py +0 -156
  112. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mselect/__init__.py +0 -12
  113. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mselect/menu_select.py +0 -171
  114. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/mselect/mselect.py +0 -36
  115. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/table/__init__.py +0 -12
  116. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/table/table_enums.py +0 -47
  117. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/table/table_renderer.py +0 -339
  118. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/tui_application.py +0 -65
  119. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/tui_component.py +0 -155
  120. build/lib/build/lib/build/lib/build/lib/clitt/core/tui/tui_preferences.py +0 -103
  121. build/lib/build/lib/build/lib/build/lib/clitt/utils/__init__.py +0 -11
  122. build/lib/build/lib/build/lib/build/lib/clitt/utils/git_utils.py +0 -66
  123. build/lib/build/lib/build/lib/clitt/__classpath__.py +0 -28
  124. build/lib/build/lib/build/lib/clitt/__init__.py +0 -13
  125. build/lib/build/lib/build/lib/clitt/__main__.py +0 -139
  126. build/lib/build/lib/build/lib/clitt/addons/__init__.py +0 -12
  127. build/lib/build/lib/build/lib/clitt/addons/appman/__init__.py +0 -13
  128. build/lib/build/lib/build/lib/clitt/addons/appman/appman.py +0 -305
  129. build/lib/build/lib/build/lib/clitt/addons/appman/appman_enums.py +0 -39
  130. build/lib/build/lib/build/lib/clitt/addons/appman/templates/__init__.py +0 -11
  131. build/lib/build/lib/build/lib/clitt/addons/widman/__init__.py +0 -14
  132. build/lib/build/lib/build/lib/clitt/addons/widman/widget.py +0 -70
  133. build/lib/build/lib/build/lib/clitt/addons/widman/widget_entry.py +0 -54
  134. build/lib/build/lib/build/lib/clitt/addons/widman/widgets/__init__.py +0 -14
  135. build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_free.py +0 -110
  136. build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_punch.py +0 -246
  137. build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_send_msg.py +0 -272
  138. build/lib/build/lib/build/lib/clitt/addons/widman/widgets/widget_time_calc.py +0 -146
  139. build/lib/build/lib/build/lib/clitt/addons/widman/widman.py +0 -123
  140. build/lib/build/lib/build/lib/clitt/core/__init__.py +0 -15
  141. build/lib/build/lib/build/lib/clitt/core/exception/__init__.py +0 -11
  142. build/lib/build/lib/build/lib/clitt/core/exception/exceptions.py +0 -18
  143. build/lib/build/lib/build/lib/clitt/core/icons/__init__.py +0 -12
  144. build/lib/build/lib/build/lib/clitt/core/icons/emojis/__init__.py +0 -12
  145. build/lib/build/lib/build/lib/clitt/core/icons/emojis/emojis.py +0 -41
  146. build/lib/build/lib/build/lib/clitt/core/icons/emojis/face_smiling.py +0 -40
  147. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/__init__.py +0 -18
  148. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/app_icons.py +0 -55
  149. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/awesome.py +0 -76
  150. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/dashboard_icons.py +0 -93
  151. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/form_icons.py +0 -69
  152. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/game_icons.py +0 -59
  153. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/nav_icons.py +0 -42
  154. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/trickplay_icons.py +0 -39
  155. build/lib/build/lib/build/lib/clitt/core/icons/font_awesome/widget_icons.py +0 -37
  156. build/lib/build/lib/build/lib/clitt/core/preferences.py +0 -87
  157. build/lib/build/lib/build/lib/clitt/core/term/__init__.py +0 -14
  158. build/lib/build/lib/build/lib/clitt/core/term/commons.py +0 -82
  159. build/lib/build/lib/build/lib/clitt/core/term/cursor.py +0 -159
  160. build/lib/build/lib/build/lib/clitt/core/term/screen.py +0 -91
  161. build/lib/build/lib/build/lib/clitt/core/term/terminal.py +0 -203
  162. build/lib/build/lib/build/lib/clitt/core/tui/__init__.py +0 -20
  163. build/lib/build/lib/build/lib/clitt/core/tui/line_input/__init__.py +0 -12
  164. build/lib/build/lib/build/lib/clitt/core/tui/line_input/keyboard_input.py +0 -228
  165. build/lib/build/lib/build/lib/clitt/core/tui/line_input/line_input.py +0 -43
  166. build/lib/build/lib/build/lib/clitt/core/tui/mchoose/__init__.py +0 -12
  167. build/lib/build/lib/build/lib/clitt/core/tui/mchoose/mchoose.py +0 -44
  168. build/lib/build/lib/build/lib/clitt/core/tui/mchoose/menu_choose.py +0 -200
  169. build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/__init__.py +0 -14
  170. build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_builder.py +0 -54
  171. build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_item.py +0 -31
  172. build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/mdashboard.py +0 -26
  173. build/lib/build/lib/build/lib/clitt/core/tui/mdashboard/menu_dashboard.py +0 -154
  174. build/lib/build/lib/build/lib/clitt/core/tui/menu/__init__.py +0 -16
  175. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu.py +0 -111
  176. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_action.py +0 -47
  177. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_factory.py +0 -117
  178. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_item.py +0 -196
  179. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_ui.py +0 -98
  180. build/lib/build/lib/build/lib/clitt/core/tui/menu/tui_menu_view.py +0 -57
  181. build/lib/build/lib/build/lib/clitt/core/tui/minput/__init__.py +0 -19
  182. build/lib/build/lib/build/lib/clitt/core/tui/minput/access_type.py +0 -26
  183. build/lib/build/lib/build/lib/clitt/core/tui/minput/field_builder.py +0 -117
  184. build/lib/build/lib/build/lib/clitt/core/tui/minput/form_builder.py +0 -72
  185. build/lib/build/lib/build/lib/clitt/core/tui/minput/form_field.py +0 -180
  186. build/lib/build/lib/build/lib/clitt/core/tui/minput/input_type.py +0 -30
  187. build/lib/build/lib/build/lib/clitt/core/tui/minput/input_validator.py +0 -98
  188. build/lib/build/lib/build/lib/clitt/core/tui/minput/menu_input.py +0 -292
  189. build/lib/build/lib/build/lib/clitt/core/tui/minput/minput.py +0 -44
  190. build/lib/build/lib/build/lib/clitt/core/tui/minput/minput_utils.py +0 -156
  191. build/lib/build/lib/build/lib/clitt/core/tui/mselect/__init__.py +0 -12
  192. build/lib/build/lib/build/lib/clitt/core/tui/mselect/menu_select.py +0 -171
  193. build/lib/build/lib/build/lib/clitt/core/tui/mselect/mselect.py +0 -36
  194. build/lib/build/lib/build/lib/clitt/core/tui/table/__init__.py +0 -12
  195. build/lib/build/lib/build/lib/clitt/core/tui/table/table_enums.py +0 -47
  196. build/lib/build/lib/build/lib/clitt/core/tui/table/table_renderer.py +0 -339
  197. build/lib/build/lib/build/lib/clitt/core/tui/tui_application.py +0 -65
  198. build/lib/build/lib/build/lib/clitt/core/tui/tui_component.py +0 -155
  199. build/lib/build/lib/build/lib/clitt/core/tui/tui_preferences.py +0 -103
  200. build/lib/build/lib/build/lib/clitt/utils/__init__.py +0 -11
  201. build/lib/build/lib/build/lib/clitt/utils/git_utils.py +0 -66
  202. build/lib/build/lib/clitt/__classpath__.py +0 -28
  203. build/lib/build/lib/clitt/__init__.py +0 -13
  204. build/lib/build/lib/clitt/__main__.py +0 -139
  205. build/lib/build/lib/clitt/addons/__init__.py +0 -12
  206. build/lib/build/lib/clitt/addons/appman/__init__.py +0 -13
  207. build/lib/build/lib/clitt/addons/appman/appman.py +0 -305
  208. build/lib/build/lib/clitt/addons/appman/appman_enums.py +0 -39
  209. build/lib/build/lib/clitt/addons/appman/templates/__init__.py +0 -11
  210. build/lib/build/lib/clitt/addons/widman/__init__.py +0 -14
  211. build/lib/build/lib/clitt/addons/widman/widget.py +0 -70
  212. build/lib/build/lib/clitt/addons/widman/widget_entry.py +0 -54
  213. build/lib/build/lib/clitt/addons/widman/widgets/__init__.py +0 -14
  214. build/lib/build/lib/clitt/addons/widman/widgets/widget_free.py +0 -110
  215. build/lib/build/lib/clitt/addons/widman/widgets/widget_punch.py +0 -246
  216. build/lib/build/lib/clitt/addons/widman/widgets/widget_send_msg.py +0 -272
  217. build/lib/build/lib/clitt/addons/widman/widgets/widget_time_calc.py +0 -146
  218. build/lib/build/lib/clitt/addons/widman/widman.py +0 -123
  219. build/lib/build/lib/clitt/core/__init__.py +0 -15
  220. build/lib/build/lib/clitt/core/exception/__init__.py +0 -11
  221. build/lib/build/lib/clitt/core/exception/exceptions.py +0 -18
  222. build/lib/build/lib/clitt/core/icons/__init__.py +0 -12
  223. build/lib/build/lib/clitt/core/icons/emojis/__init__.py +0 -12
  224. build/lib/build/lib/clitt/core/icons/emojis/emojis.py +0 -41
  225. build/lib/build/lib/clitt/core/icons/emojis/face_smiling.py +0 -40
  226. build/lib/build/lib/clitt/core/icons/font_awesome/__init__.py +0 -18
  227. build/lib/build/lib/clitt/core/icons/font_awesome/app_icons.py +0 -55
  228. build/lib/build/lib/clitt/core/icons/font_awesome/awesome.py +0 -76
  229. build/lib/build/lib/clitt/core/icons/font_awesome/dashboard_icons.py +0 -93
  230. build/lib/build/lib/clitt/core/icons/font_awesome/form_icons.py +0 -69
  231. build/lib/build/lib/clitt/core/icons/font_awesome/game_icons.py +0 -59
  232. build/lib/build/lib/clitt/core/icons/font_awesome/nav_icons.py +0 -42
  233. build/lib/build/lib/clitt/core/icons/font_awesome/trickplay_icons.py +0 -39
  234. build/lib/build/lib/clitt/core/icons/font_awesome/widget_icons.py +0 -37
  235. build/lib/build/lib/clitt/core/preferences.py +0 -87
  236. build/lib/build/lib/clitt/core/term/__init__.py +0 -14
  237. build/lib/build/lib/clitt/core/term/commons.py +0 -82
  238. build/lib/build/lib/clitt/core/term/cursor.py +0 -159
  239. build/lib/build/lib/clitt/core/term/screen.py +0 -91
  240. build/lib/build/lib/clitt/core/term/terminal.py +0 -203
  241. build/lib/build/lib/clitt/core/tui/__init__.py +0 -20
  242. build/lib/build/lib/clitt/core/tui/line_input/__init__.py +0 -12
  243. build/lib/build/lib/clitt/core/tui/line_input/keyboard_input.py +0 -228
  244. build/lib/build/lib/clitt/core/tui/line_input/line_input.py +0 -43
  245. build/lib/build/lib/clitt/core/tui/mchoose/__init__.py +0 -12
  246. build/lib/build/lib/clitt/core/tui/mchoose/mchoose.py +0 -44
  247. build/lib/build/lib/clitt/core/tui/mchoose/menu_choose.py +0 -200
  248. build/lib/build/lib/clitt/core/tui/mdashboard/__init__.py +0 -14
  249. build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_builder.py +0 -54
  250. build/lib/build/lib/clitt/core/tui/mdashboard/dashboard_item.py +0 -31
  251. build/lib/build/lib/clitt/core/tui/mdashboard/mdashboard.py +0 -26
  252. build/lib/build/lib/clitt/core/tui/mdashboard/menu_dashboard.py +0 -154
  253. build/lib/build/lib/clitt/core/tui/menu/__init__.py +0 -16
  254. build/lib/build/lib/clitt/core/tui/menu/tui_menu.py +0 -111
  255. build/lib/build/lib/clitt/core/tui/menu/tui_menu_action.py +0 -47
  256. build/lib/build/lib/clitt/core/tui/menu/tui_menu_factory.py +0 -117
  257. build/lib/build/lib/clitt/core/tui/menu/tui_menu_item.py +0 -196
  258. build/lib/build/lib/clitt/core/tui/menu/tui_menu_ui.py +0 -98
  259. build/lib/build/lib/clitt/core/tui/menu/tui_menu_view.py +0 -57
  260. build/lib/build/lib/clitt/core/tui/minput/__init__.py +0 -19
  261. build/lib/build/lib/clitt/core/tui/minput/access_type.py +0 -26
  262. build/lib/build/lib/clitt/core/tui/minput/field_builder.py +0 -117
  263. build/lib/build/lib/clitt/core/tui/minput/form_builder.py +0 -72
  264. build/lib/build/lib/clitt/core/tui/minput/form_field.py +0 -180
  265. build/lib/build/lib/clitt/core/tui/minput/input_type.py +0 -30
  266. build/lib/build/lib/clitt/core/tui/minput/input_validator.py +0 -98
  267. build/lib/build/lib/clitt/core/tui/minput/menu_input.py +0 -292
  268. build/lib/build/lib/clitt/core/tui/minput/minput.py +0 -44
  269. build/lib/build/lib/clitt/core/tui/minput/minput_utils.py +0 -156
  270. build/lib/build/lib/clitt/core/tui/mselect/__init__.py +0 -12
  271. build/lib/build/lib/clitt/core/tui/mselect/menu_select.py +0 -171
  272. build/lib/build/lib/clitt/core/tui/mselect/mselect.py +0 -36
  273. build/lib/build/lib/clitt/core/tui/table/__init__.py +0 -12
  274. build/lib/build/lib/clitt/core/tui/table/table_enums.py +0 -47
  275. build/lib/build/lib/clitt/core/tui/table/table_renderer.py +0 -339
  276. build/lib/build/lib/clitt/core/tui/tui_application.py +0 -65
  277. build/lib/build/lib/clitt/core/tui/tui_component.py +0 -155
  278. build/lib/build/lib/clitt/core/tui/tui_preferences.py +0 -103
  279. build/lib/build/lib/clitt/utils/__init__.py +0 -11
  280. build/lib/build/lib/clitt/utils/git_utils.py +0 -66
  281. build/lib/clitt/__classpath__.py +0 -28
  282. build/lib/clitt/__init__.py +0 -13
  283. build/lib/clitt/__main__.py +0 -139
  284. build/lib/clitt/addons/__init__.py +0 -12
  285. build/lib/clitt/addons/appman/__init__.py +0 -13
  286. build/lib/clitt/addons/appman/appman.py +0 -305
  287. build/lib/clitt/addons/appman/appman_enums.py +0 -39
  288. build/lib/clitt/addons/appman/templates/__init__.py +0 -11
  289. build/lib/clitt/addons/widman/__init__.py +0 -14
  290. build/lib/clitt/addons/widman/widget.py +0 -70
  291. build/lib/clitt/addons/widman/widget_entry.py +0 -54
  292. build/lib/clitt/addons/widman/widgets/__init__.py +0 -14
  293. build/lib/clitt/addons/widman/widgets/widget_free.py +0 -110
  294. build/lib/clitt/addons/widman/widgets/widget_punch.py +0 -246
  295. build/lib/clitt/addons/widman/widgets/widget_send_msg.py +0 -272
  296. build/lib/clitt/addons/widman/widgets/widget_time_calc.py +0 -146
  297. build/lib/clitt/addons/widman/widman.py +0 -123
  298. build/lib/clitt/core/__init__.py +0 -15
  299. build/lib/clitt/core/exception/__init__.py +0 -11
  300. build/lib/clitt/core/exception/exceptions.py +0 -18
  301. build/lib/clitt/core/icons/__init__.py +0 -12
  302. build/lib/clitt/core/icons/emojis/__init__.py +0 -12
  303. build/lib/clitt/core/icons/emojis/emojis.py +0 -41
  304. build/lib/clitt/core/icons/emojis/face_smiling.py +0 -40
  305. build/lib/clitt/core/icons/font_awesome/__init__.py +0 -18
  306. build/lib/clitt/core/icons/font_awesome/app_icons.py +0 -55
  307. build/lib/clitt/core/icons/font_awesome/awesome.py +0 -76
  308. build/lib/clitt/core/icons/font_awesome/dashboard_icons.py +0 -93
  309. build/lib/clitt/core/icons/font_awesome/form_icons.py +0 -69
  310. build/lib/clitt/core/icons/font_awesome/game_icons.py +0 -59
  311. build/lib/clitt/core/icons/font_awesome/nav_icons.py +0 -42
  312. build/lib/clitt/core/icons/font_awesome/trickplay_icons.py +0 -39
  313. build/lib/clitt/core/icons/font_awesome/widget_icons.py +0 -37
  314. build/lib/clitt/core/preferences.py +0 -87
  315. build/lib/clitt/core/term/__init__.py +0 -14
  316. build/lib/clitt/core/term/commons.py +0 -82
  317. build/lib/clitt/core/term/cursor.py +0 -159
  318. build/lib/clitt/core/term/screen.py +0 -91
  319. build/lib/clitt/core/term/terminal.py +0 -203
  320. build/lib/clitt/core/tui/__init__.py +0 -20
  321. build/lib/clitt/core/tui/line_input/__init__.py +0 -12
  322. build/lib/clitt/core/tui/line_input/keyboard_input.py +0 -228
  323. build/lib/clitt/core/tui/line_input/line_input.py +0 -43
  324. build/lib/clitt/core/tui/mchoose/__init__.py +0 -12
  325. build/lib/clitt/core/tui/mchoose/mchoose.py +0 -44
  326. build/lib/clitt/core/tui/mchoose/menu_choose.py +0 -200
  327. build/lib/clitt/core/tui/mdashboard/__init__.py +0 -14
  328. build/lib/clitt/core/tui/mdashboard/dashboard_builder.py +0 -54
  329. build/lib/clitt/core/tui/mdashboard/dashboard_item.py +0 -31
  330. build/lib/clitt/core/tui/mdashboard/mdashboard.py +0 -26
  331. build/lib/clitt/core/tui/mdashboard/menu_dashboard.py +0 -154
  332. build/lib/clitt/core/tui/menu/__init__.py +0 -16
  333. build/lib/clitt/core/tui/menu/tui_menu.py +0 -111
  334. build/lib/clitt/core/tui/menu/tui_menu_action.py +0 -47
  335. build/lib/clitt/core/tui/menu/tui_menu_factory.py +0 -117
  336. build/lib/clitt/core/tui/menu/tui_menu_item.py +0 -196
  337. build/lib/clitt/core/tui/menu/tui_menu_ui.py +0 -98
  338. build/lib/clitt/core/tui/menu/tui_menu_view.py +0 -57
  339. build/lib/clitt/core/tui/minput/__init__.py +0 -19
  340. build/lib/clitt/core/tui/minput/access_type.py +0 -26
  341. build/lib/clitt/core/tui/minput/field_builder.py +0 -117
  342. build/lib/clitt/core/tui/minput/form_builder.py +0 -72
  343. build/lib/clitt/core/tui/minput/form_field.py +0 -180
  344. build/lib/clitt/core/tui/minput/input_type.py +0 -30
  345. build/lib/clitt/core/tui/minput/input_validator.py +0 -98
  346. build/lib/clitt/core/tui/minput/menu_input.py +0 -292
  347. build/lib/clitt/core/tui/minput/minput.py +0 -44
  348. build/lib/clitt/core/tui/minput/minput_utils.py +0 -156
  349. build/lib/clitt/core/tui/mselect/__init__.py +0 -12
  350. build/lib/clitt/core/tui/mselect/menu_select.py +0 -171
  351. build/lib/clitt/core/tui/mselect/mselect.py +0 -36
  352. build/lib/clitt/core/tui/table/__init__.py +0 -12
  353. build/lib/clitt/core/tui/table/table_enums.py +0 -47
  354. build/lib/clitt/core/tui/table/table_renderer.py +0 -339
  355. build/lib/clitt/core/tui/tui_application.py +0 -65
  356. build/lib/clitt/core/tui/tui_component.py +0 -155
  357. build/lib/clitt/core/tui/tui_preferences.py +0 -103
  358. build/lib/clitt/utils/__init__.py +0 -11
  359. build/lib/clitt/utils/git_utils.py +0 -66
  360. hspylib_clitt-0.9.116.dist-info/RECORD +0 -413
@@ -1,203 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- @project: HsPyLib
6
- @package: hspylib.modules.cli.vt100
7
- @file: terminal.py
8
- @created: Tue, 11 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
- import atexit
16
- import logging as log
17
- import os
18
- import platform
19
- import select
20
- import shlex
21
- import signal
22
- import sys
23
- from subprocess import CalledProcessError, Popen, PIPE
24
- from typing import Any, Optional, Tuple, List, Iterable
25
-
26
- from hspylib.core.enums.charset import Charset
27
- from hspylib.core.metaclass.singleton import Singleton
28
- from hspylib.core.tools.commons import sysout
29
- from hspylib.modules.application.exit_status import ExitStatus
30
- from hspylib.modules.cli.keyboard import Keyboard
31
- from hspylib.modules.cli.vt100.vt_100 import Vt100
32
-
33
- from clitt.core.exception.exceptions import NotATerminalError
34
- from clitt.core.term.cursor import Cursor
35
- from clitt.core.term.screen import Screen
36
-
37
-
38
- class Terminal(metaclass=Singleton):
39
- """Utility class to provide terminal features."""
40
-
41
- INSTANCE = None
42
-
43
- @staticmethod
44
- def is_a_tty() -> bool:
45
- return sys.stdout.isatty()
46
-
47
- @staticmethod
48
- def _chain_pipes(cmd_list: Iterable, **kwargs) -> Popen:
49
- """Run commands in PIPE, return the last process in chain.
50
- :param cmd_list: the command list to be executed.
51
- """
52
- if "stdout" in kwargs:
53
- del kwargs["stdout"]
54
- if "stderr" in kwargs:
55
- del kwargs["stderr"]
56
- if "stdin" in kwargs:
57
- del kwargs["stdin"]
58
- commands = map(shlex.split, cmd_list) if 'shell' not in kwargs else cmd_list
59
- first_cmd, *rest_cmds = commands
60
- if len(rest_cmds) > 0:
61
- procs: List[Popen] = [Popen(first_cmd, stdout=PIPE, stderr=PIPE, **kwargs)]
62
- for cmd in rest_cmds:
63
- last_stdout = procs[-1].stdout
64
- procs.append(Popen(cmd, stdin=last_stdout, stdout=PIPE, stderr=PIPE, **kwargs))
65
- return procs[-1]
66
- return Popen(first_cmd, stdout=PIPE, stderr=PIPE, **kwargs)
67
-
68
- @staticmethod
69
- def shell_exec(cmd_line: str, **kwargs) -> Tuple[Optional[str], ExitStatus]:
70
- """Execute command with arguments and return it's run status.
71
- :param cmd_line: the command line to be executed.
72
- """
73
- proc = Terminal._chain_pipes(cmd_line.split("|"), **kwargs)
74
- log.info("Executing shell command: %s", cmd_line)
75
- output, err_out = proc.communicate()
76
- ret_code = ExitStatus.FAILED if err_out else ExitStatus.SUCCESS
77
- log.info("Execution result: %s", ret_code)
78
- return output.decode(Charset.UTF_8.val) if output else err_out.decode(Charset.UTF_8.val), ret_code
79
-
80
- @staticmethod
81
- def shell_poll(cmd_line: str, **kwargs) -> None:
82
- """Execute command with arguments and continuously poll it's output.
83
- :param cmd_line: the command line to be executed.
84
- """
85
- if "stdout" in kwargs:
86
- del kwargs["stdout"] # Deleted because it's forbidden
87
- if "stderr" in kwargs:
88
- del kwargs["stderr"] # Deleted because it's forbidden
89
- if "shell" in kwargs:
90
- del kwargs["shell"] # Deleted because we don't want to use it
91
- try:
92
- log.info("Polling shell command: %s", cmd_line)
93
- cmd_args = list(filter(None, shlex.split(cmd_line)))
94
- with Popen(cmd_args, stdout=PIPE, stderr=PIPE, **kwargs) as proc:
95
- process = select.poll()
96
- process.register(proc.stdout)
97
- process.register(proc.stderr)
98
- while not Keyboard.kbhit():
99
- if poll_obj := process.poll(0.5):
100
- line = proc.stdout.readline()
101
- sysout(line.decode(Charset.UTF_8.val) if isinstance(line, bytes) else line.strip(), end="")
102
- log.debug("Polling returned: %s", str(poll_obj))
103
- os.killpg(os.getpgid(proc.pid), signal.SIGTERM)
104
- except (InterruptedError, KeyboardInterrupt):
105
- log.warning("Polling process has been interrupted command='%s'", cmd_line)
106
- except CalledProcessError as err:
107
- log.error("Command failed: %s => %s", cmd_line, err)
108
-
109
- @staticmethod
110
- def open(filename: str) -> None:
111
- """Open the specified file using the default editor."""
112
- my_os = os.environ.get("HHS_MY_OS", platform.system())
113
- if "Darwin" == my_os:
114
- Terminal.shell_exec(f"open {filename}")
115
- elif "Linux" == my_os:
116
- Terminal.shell_exec(f"xdg-open {filename}")
117
- else:
118
- raise NotImplementedError(f"OS '{my_os}' is not supported")
119
-
120
- @classmethod
121
- def restore(cls) -> None:
122
- """Clear the terminal and restore default attributes [wrap,cursor,echo]."""
123
- cls.set_attributes(show_cursor=True, auto_wrap=True, enable_echo=True)
124
- cls.alternate_screen(False)
125
- sysout("%MOD(0)%", end="")
126
-
127
- @classmethod
128
- def set_enable_echo(cls, enabled: bool = True) -> None:
129
- """Enable echo in the terminal.
130
- :param enabled: whether is enabled or not.
131
- """
132
- if not cls.is_a_tty():
133
- log.warning(NotATerminalError("set_enable_echo:: Requires a terminal (TTY)"))
134
- return
135
-
136
- os.popen(f"stty {'echo -raw' if enabled else 'raw -echo min 0'}").read()
137
-
138
- @classmethod
139
- def set_auto_wrap(cls, auto_wrap: bool = True) -> None:
140
- """Set auto-wrap mode in the terminal.
141
- :param auto_wrap: whether auto_wrap is set or not.
142
- """
143
- if not cls.is_a_tty():
144
- log.warning(NotATerminalError("set_auto_wrap:: Requires a terminal (TTY)"))
145
- return
146
-
147
- sysout(Vt100.set_auto_wrap(auto_wrap), end="")
148
-
149
- @classmethod
150
- def set_show_cursor(cls, show_cursor: bool = True) -> None:
151
- """Show or hide cursor in the terminal.
152
- :param show_cursor: whether to show or hide he cursor.
153
- """
154
- if not cls.is_a_tty():
155
- log.warning(NotATerminalError("set_show_cursor:: Requires a terminal (TTY)"))
156
- return
157
-
158
- sysout(Vt100.set_show_cursor(show_cursor), end="")
159
-
160
- @classmethod
161
- def set_attributes(cls, **attrs) -> None:
162
- """Wrapper to set all terminal attributes at once."""
163
- # fmt: off
164
- enable_echo = attrs['enable_echo']
165
- auto_wrap = attrs['auto_wrap']
166
- show_cursor = attrs['show_cursor']
167
- # fmt: on
168
- if enable_echo is not None:
169
- cls.set_enable_echo(enable_echo)
170
- if auto_wrap is not None:
171
- cls.set_auto_wrap(auto_wrap)
172
- if show_cursor is not None:
173
- cls.set_show_cursor(show_cursor)
174
-
175
- @classmethod
176
- def clear(cls) -> None:
177
- """Clear terminal and move the cursor to HOME position (0, 0)."""
178
- cls.INSTANCE.screen.clear()
179
-
180
- @classmethod
181
- def echo(cls, obj: Any, end: str = os.linesep) -> None:
182
- """Write the string representation of the object to the screen."""
183
- cls.INSTANCE.screen.cursor.write(obj, end=end)
184
-
185
- @classmethod
186
- def alternate_screen(cls, enable: bool) -> None:
187
- """Switch to the alternate screen buffer on/off."""
188
- cls.INSTANCE.screen.alternate = enable
189
-
190
- def __init__(self):
191
- self._screen = Screen.INSTANCE or Screen()
192
- atexit.register(self.restore)
193
-
194
- @property
195
- def screen(self) -> Screen:
196
- return self._screen
197
-
198
- @property
199
- def cursor(self) -> Cursor:
200
- return self.screen.cursor
201
-
202
-
203
- assert Terminal().INSTANCE is not None, "Failed to create Terminal instance"
@@ -1,20 +0,0 @@
1
- # _*_ coding: utf-8 _*_
2
- #
3
- # hspylib-clitt v0.9.116
4
- #
5
- # Package: main.build.lib.build.lib.clitt.core.tui
6
- """Package initialization."""
7
-
8
- __all__ = [
9
- 'line_input',
10
- 'mchoose',
11
- 'mdashboard',
12
- 'menu',
13
- 'minput',
14
- 'mselect',
15
- 'table',
16
- 'tui_application',
17
- 'tui_component',
18
- 'tui_preferences'
19
- ]
20
- __version__ = '0.9.116'
@@ -1,12 +0,0 @@
1
- # _*_ coding: utf-8 _*_
2
- #
3
- # hspylib-clitt v0.9.116
4
- #
5
- # Package: main.build.lib.build.lib.clitt.core.tui.line_input
6
- """Package initialization."""
7
-
8
- __all__ = [
9
- 'keyboard_input',
10
- 'line_input'
11
- ]
12
- __version__ = '0.9.116'
@@ -1,228 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- @project: HsPyLib-AskAI
6
- @package: main.clitt.core.tui.line_input
7
- @file: keyboard_input.py
8
- @created: Wed, 17 Jan 2024
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
- import pyperclip
17
- from hspylib.modules.cli.keyboard import Keyboard
18
- from hspylib.modules.cli.vt100.vt_color import VtColor
19
- from typing import Optional, List, Dict
20
-
21
- from clitt.core.term.commons import Direction, Portion
22
- from clitt.core.term.terminal import Terminal
23
- from clitt.core.tui.tui_component import TUIComponent
24
-
25
-
26
- class KeyboardInput(TUIComponent):
27
- """Provides a keyboard input for terminal UIs with undo and history."""
28
-
29
- # Current history index.
30
- _HIST_INDEX: int = 0
31
-
32
- # Dict containing all previously accepted inputs.
33
- _HISTORY: Dict[int, str] = {0: ""}
34
-
35
- # Stack containing current input changes.
36
- _UNDO_HISTORY: List[str] = []
37
-
38
- # Stack containing current input reverts.
39
- _REDO_HISTORY: List[str] = []
40
-
41
- @staticmethod
42
- def preload_history(history: List[str]) -> None:
43
- """Preload the input with the provided dictionary."""
44
- for entry in history:
45
- KeyboardInput._add_history(entry)
46
-
47
- @staticmethod
48
- def forget_history() -> None:
49
- """Forget all input history entries."""
50
- tmp: str = KeyboardInput._HISTORY[0]
51
- KeyboardInput._HISTORY.clear()
52
- KeyboardInput._HISTORY[0] = tmp
53
-
54
- @staticmethod
55
- def history() -> List[str]:
56
- """Return the actual input history."""
57
- return list(filter(lambda v: v, KeyboardInput._HISTORY.values()))
58
-
59
- @staticmethod
60
- def _add_history(input_text: str) -> None:
61
- """Add the following input to the history set.
62
- :param input_text: The input text to add to the history.
63
- """
64
- if input_text and input_text not in list(KeyboardInput._HISTORY.values())[1:]:
65
- KeyboardInput._HISTORY[max(1, len(KeyboardInput._HISTORY))] = input_text
66
- KeyboardInput._HIST_INDEX += 1
67
-
68
- @classmethod
69
- def _next_in_history(cls) -> Optional[str]:
70
- index = min(len(cls._HISTORY), cls._HIST_INDEX + 1)
71
- text = cls._HISTORY.get(index, "")
72
- cls._HIST_INDEX = min(len(cls._HISTORY) - 1, index)
73
- return text or cls._HISTORY[0]
74
-
75
- @classmethod
76
- def _prev_in_history(cls) -> Optional[str]:
77
- index = max(1, cls._HIST_INDEX)
78
- text = cls._HISTORY.get(index, "")
79
- cls._HIST_INDEX = max(1, index - 1)
80
- return text
81
-
82
- @classmethod
83
- def _undo(cls) -> Optional[str]:
84
- text = cls._UNDO_HISTORY.pop() if cls._UNDO_HISTORY else None
85
- if cls._HISTORY[0] not in cls._REDO_HISTORY:
86
- cls._REDO_HISTORY.append(cls._HISTORY[0])
87
- return text
88
-
89
- @classmethod
90
- def _redo(cls) -> Optional[str]:
91
- text = cls._REDO_HISTORY.pop() if cls._REDO_HISTORY else None
92
- if cls._HISTORY[0] not in cls._UNDO_HISTORY:
93
- cls._UNDO_HISTORY.append(cls._HISTORY[0])
94
- return text
95
-
96
- def __init__(self, prompt: str = "", prompt_color: VtColor = VtColor.NC):
97
- super().__init__(prompt)
98
- self._prompt_color = prompt_color
99
- self._input_index = 0
100
- self._input_text: str = ""
101
- self._HISTORY[0] = ""
102
-
103
- @property
104
- def length(self) -> int:
105
- return len(self._input_text) if self._input_text else 0
106
-
107
- def _prepare_render(self, auto_wrap: bool = True, show_cursor: bool = True) -> None:
108
- Terminal.set_auto_wrap(auto_wrap)
109
- Terminal.set_show_cursor(show_cursor)
110
- self.cursor.save()
111
-
112
- def _loop(self, break_keys: List[Keyboard] = None) -> Keyboard:
113
- break_keys = break_keys or Keyboard.break_keys()
114
- keypress = Keyboard.VK_NONE
115
-
116
- # Wait for user interaction
117
- while not self._done and keypress not in break_keys:
118
- # Menu Renderization
119
- if self._re_render:
120
- self.render()
121
- # Navigation input
122
- keypress = self.handle_keypress()
123
-
124
- return keypress
125
-
126
- def execute(self) -> Optional[str | Keyboard]:
127
- self._prepare_render()
128
- keypress = self._loop()
129
-
130
- if keypress.isEnter():
131
- self._add_history(self._input_text)
132
- self._UNDO_HISTORY.clear()
133
- self._REDO_HISTORY.clear()
134
- elif keypress == Keyboard.VK_ESC:
135
- self._input_text = None
136
-
137
- self.writeln("")
138
-
139
- return self._input_text
140
-
141
- def render(self) -> None:
142
- Terminal.set_show_cursor(False)
143
- self.cursor.restore()
144
- self._terminal.cursor.erase(Portion.LINE)
145
- self.write(f"{self._prompt_color.placeholder}{self.title}%NC%")
146
- self.write(self._input_text)
147
- self._re_render = False
148
- self._set_cursor_pos()
149
- Terminal.set_show_cursor()
150
-
151
- def navbar(self, **kwargs) -> str:
152
- pass
153
-
154
- def handle_keypress(self) -> Keyboard:
155
- if keypress := Keyboard.wait_keystroke():
156
- match keypress:
157
- case Keyboard.VK_BACKSPACE:
158
- if self._input_index > 0:
159
- self._input_index = max(0, self._input_index - 1)
160
- self._update_input(
161
- self._input_text[: self._input_index] + self._input_text[1 + self._input_index :]
162
- )
163
- case Keyboard.VK_DELETE:
164
- self._update_input(
165
- self._input_text[: self._input_index] + self._input_text[1 + self._input_index :]
166
- )
167
- case Keyboard.VK_CTRL_F:
168
- self.forget_history()
169
- case Keyboard.VK_CTRL_P:
170
- text = (pyperclip.paste() or '').replace("\n", "↵")
171
- self._update_input(
172
- self._input_text[: self._input_index] + text + self._input_text[self._input_index :]
173
- )
174
- self._input_index += len(text)
175
- case Keyboard.VK_CTRL_R:
176
- self._input_index = 0
177
- self._update_input("")
178
- case Keyboard.VK_CTRL_U: # Undo
179
- undo_text = self._undo()
180
- self._input_text = undo_text
181
- self._input_index = self.length
182
- self._HISTORY[0] = self._input_text
183
- case Keyboard.VK_CTRL_K: # redo
184
- redo_text = self._redo()
185
- self._input_text = redo_text if redo_text else self._input_text
186
- self._input_index = self.length
187
- self._HISTORY[0] = self._input_text
188
- case Keyboard.VK_LEFT:
189
- self._input_index = max(0, self._input_index - 1)
190
- case Keyboard.VK_RIGHT:
191
- self._input_index = min(self.length, self._input_index + 1)
192
- case Keyboard.VK_UP:
193
- self._input_text = self._prev_in_history()
194
- self._input_index = self.length
195
- case Keyboard.VK_DOWN:
196
- self._input_text = self._next_in_history()
197
- self._input_index = self.length
198
- case Keyboard.VK_HOME:
199
- self._input_index = 0
200
- case Keyboard.VK_END:
201
- self._input_index = self.length
202
- case _ as key if key.val.isprintable():
203
- self._update_input(
204
- self._input_text[: self._input_index] + key.val + self._input_text[self._input_index :]
205
- )
206
- self._input_index += 1
207
- case _ as key if key in Keyboard.break_keys():
208
- self._done = True
209
- case _:
210
- self._input_text = keypress
211
- self._done = True
212
- self._re_render = True
213
-
214
- return keypress
215
-
216
- def _set_cursor_pos(self):
217
- """Set the cursor position on the input."""
218
- index_offset = max(0, self.length - self._input_index)
219
- self.screen.cursor.move(index_offset, Direction.LEFT)
220
-
221
- def _update_input(self, text: str) -> str:
222
- """Update the value of the input.
223
- :param text: The text to be set.
224
- """
225
- self._UNDO_HISTORY.append(self._input_text)
226
- self._HISTORY[0] = text if text not in self._HISTORY else self._input_text
227
- self._input_text = text
228
- return text
@@ -1,43 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- @project: HsPyLib-AskAI
6
- @package: main.clitt.core.tui.line_input
7
- @file: line_input.py
8
- @created: Wed, 17 Jan 2024
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.modules.cli.vt100.vt_color import VtColor
17
- from typing import Optional
18
-
19
- from clitt.core.tui.line_input.keyboard_input import KeyboardInput
20
-
21
-
22
- def line_input(
23
- prompt: str = "",
24
- prompt_color: VtColor = VtColor.NC,
25
- ) -> Optional[str | Keyboard]:
26
- """Read a string from standard input.
27
- :param prompt: The message to be displayed to the user.
28
- :param prompt_color: The color of the prompt text.
29
- """
30
- ptt = KeyboardInput(prompt, prompt_color)
31
- return ptt.execute()
32
-
33
-
34
- if __name__ == "__main__":
35
- hist = ["Hugo", "Joao", "Koko", "Hugo"]
36
- KeyboardInput.preload_history(hist)
37
- print("-=" * 30)
38
- while (i := line_input("What is it? ")) not in ["bye", ""]:
39
- if isinstance(i, Keyboard):
40
- print(i)
41
- else:
42
- print("Input:", i)
43
- print(KeyboardInput.history())
@@ -1,12 +0,0 @@
1
- # _*_ coding: utf-8 _*_
2
- #
3
- # hspylib-clitt v0.9.116
4
- #
5
- # Package: main.build.lib.build.lib.clitt.core.tui.mchoose
6
- """Package initialization."""
7
-
8
- __all__ = [
9
- 'mchoose',
10
- 'menu_choose'
11
- ]
12
- __version__ = '0.9.116'
@@ -1,44 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
-
4
- """
5
- @project: HsPyLib
6
- @package: clitt.core.tui.mchoose
7
- @file: mchoose.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 hspylib.core.enums.charset import Charset
16
- from typing import List, Optional, TypeVar
17
-
18
- from clitt.core.tui.mchoose.menu_choose import MenuChoose
19
-
20
- T = TypeVar("T")
21
-
22
-
23
- def mchoose(
24
- items: List[T],
25
- checked: bool | List[bool] = False,
26
- title: str = "Please choose among the options",
27
- output: str = None
28
- ) -> Optional[List[T]]:
29
- """
30
- Terminal UI menu choose input method.
31
- :param items: the provided items to choose from.
32
- :param checked: whether all items ate initially marked or not.
33
- :param title: the title to be displayed before the options.
34
- :param output: optional output file containing the marked items.
35
- :return: the list of marked items.
36
- """
37
-
38
- result = MenuChoose(title, items, checked).execute()
39
-
40
- if result and output:
41
- with open(output, "w", encoding=Charset.UTF_8.val) as f_out:
42
- f_out.write(" ".join(result))
43
-
44
- return result