hspylib-clitt 0.9.120__tar.gz → 0.9.121__tar.gz

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

Potentially problematic release.


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

Files changed (104) hide show
  1. {hspylib-clitt-0.9.120/hspylib_clitt.egg-info → hspylib_clitt-0.9.121}/PKG-INFO +2 -2
  2. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/README.md +1 -1
  3. hspylib_clitt-0.9.121/clitt/.version +1 -0
  4. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/__init__.py +2 -2
  5. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/__init__.py +2 -2
  6. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/__init__.py +2 -2
  7. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/__init__.py +2 -2
  8. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/widman/__init__.py +2 -2
  9. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/widman/widgets/__init__.py +2 -2
  10. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/__init__.py +2 -2
  11. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/exception/__init__.py +2 -2
  12. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/__init__.py +2 -2
  13. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/emojis/__init__.py +2 -2
  14. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/font_awesome/__init__.py +2 -2
  15. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/term/__init__.py +2 -2
  16. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/__init__.py +2 -2
  17. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/line_input/__init__.py +2 -2
  18. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/line_input/keyboard_input.py +70 -63
  19. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/mchoose/__init__.py +2 -2
  20. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/mdashboard/__init__.py +2 -2
  21. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/menu/__init__.py +2 -2
  22. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/minput/__init__.py +2 -2
  23. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/minput/menu_input.py +7 -15
  24. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/mselect/__init__.py +2 -2
  25. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/table/__init__.py +2 -2
  26. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/utils/__init__.py +2 -2
  27. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121/hspylib_clitt.egg-info}/PKG-INFO +2 -2
  28. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/hspylib_clitt.egg-info/top_level.txt +0 -1
  29. hspylib-clitt-0.9.120/clitt/.version +0 -1
  30. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/MANIFEST.in +0 -0
  31. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/__classpath__.py +0 -0
  32. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/__main__.py +0 -0
  33. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/appman.py +0 -0
  34. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/appman_enums.py +0 -0
  35. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/build.gradle.tpl +0 -0
  36. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/classpath.py.tpl +0 -0
  37. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/dependencies.hspd.tpl +0 -0
  38. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/gitignore.tpl +0 -0
  39. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/main.py.tpl +0 -0
  40. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/main_qt.py.tpl +0 -0
  41. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/main_qt_view.py.tpl +0 -0
  42. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/main_qt_view.ui.tpl +0 -0
  43. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/run.sh.tpl +0 -0
  44. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/test_main.py.tpl +0 -0
  45. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/usage.txt.tpl +0 -0
  46. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/appman/templates/widget.py.tpl +0 -0
  47. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/widman/widget.py +0 -0
  48. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/widman/widget_entry.py +0 -0
  49. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/widman/widgets/widget_free.py +0 -0
  50. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/widman/widgets/widget_punch.py +0 -0
  51. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/widman/widgets/widget_send_msg.py +0 -0
  52. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/widman/widgets/widget_time_calc.py +0 -0
  53. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/addons/widman/widman.py +0 -0
  54. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/exception/exceptions.py +0 -0
  55. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/emojis/emojis.py +0 -0
  56. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/emojis/face_smiling.py +0 -0
  57. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/font_awesome/app_icons.py +0 -0
  58. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/font_awesome/awesome.py +0 -0
  59. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/font_awesome/dashboard_icons.py +0 -0
  60. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/font_awesome/form_icons.py +0 -0
  61. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/font_awesome/game_icons.py +0 -0
  62. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/font_awesome/nav_icons.py +0 -0
  63. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/font_awesome/trickplay_icons.py +0 -0
  64. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/icons/font_awesome/widget_icons.py +0 -0
  65. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/preferences.py +0 -0
  66. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/term/commons.py +0 -0
  67. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/term/cursor.py +0 -0
  68. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/term/screen.py +0 -0
  69. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/term/terminal.py +0 -0
  70. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/line_input/line_input.py +0 -0
  71. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/mchoose/mchoose.py +0 -0
  72. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/mchoose/menu_choose.py +0 -0
  73. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/mdashboard/dashboard_builder.py +0 -0
  74. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/mdashboard/dashboard_item.py +0 -0
  75. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/mdashboard/mdashboard.py +0 -0
  76. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/mdashboard/menu_dashboard.py +0 -0
  77. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/menu/tui_menu.py +0 -0
  78. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/menu/tui_menu_action.py +0 -0
  79. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/menu/tui_menu_factory.py +0 -0
  80. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/menu/tui_menu_item.py +0 -0
  81. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/menu/tui_menu_ui.py +0 -0
  82. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/menu/tui_menu_view.py +0 -0
  83. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/minput/access_type.py +0 -0
  84. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/minput/field_builder.py +0 -0
  85. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/minput/form_builder.py +0 -0
  86. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/minput/form_field.py +0 -0
  87. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/minput/input_type.py +0 -0
  88. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/minput/input_validator.py +0 -0
  89. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/minput/minput.py +0 -0
  90. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/minput/minput_utils.py +0 -0
  91. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/mselect/menu_select.py +0 -0
  92. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/mselect/mselect.py +0 -0
  93. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/table/table_enums.py +0 -0
  94. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/table/table_renderer.py +0 -0
  95. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/tui_application.py +0 -0
  96. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/tui_component.py +0 -0
  97. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/core/tui/tui_preferences.py +0 -0
  98. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/utils/git_utils.py +0 -0
  99. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/clitt/welcome.txt +0 -0
  100. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/hspylib_clitt.egg-info/SOURCES.txt +0 -0
  101. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/hspylib_clitt.egg-info/dependency_links.txt +0 -0
  102. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/hspylib_clitt.egg-info/requires.txt +0 -0
  103. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/setup.cfg +0 -0
  104. {hspylib-clitt-0.9.120 → hspylib_clitt-0.9.121}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hspylib-clitt
3
- Version: 0.9.120
3
+ Version: 0.9.121
4
4
  Summary: HsPyLib - CLI Terminal Tools
5
5
  Home-page: https://github.com/yorevs/hspylib
6
6
  Author: Hugo Saporetti Junior
@@ -35,7 +35,7 @@ Requires-Dist: urllib3<2.0.0
35
35
  ## Create professional CLI applications
36
36
 
37
37
  [![License](https://badgen.net/badge/license/MIT/gray)](LICENSE.md)
38
- [![Release](https://badgen.net/badge/release/v0.9.120/gray)](CHANGELOG.md#unreleased)
38
+ [![Release](https://badgen.net/badge/release/v0.9.121/gray)](CHANGELOG.md#unreleased)
39
39
  [![PyPi](https://badgen.net/badge/icon/python?icon=pypi&label)](https://pypi.org/project/hspylib-clitt)
40
40
  [![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/yorevs/hspylib)
41
41
  [![Gitter](https://badgen.net/badge/icon/gitter?icon=gitter&label)](https://gitter.im/hspylib/community)
@@ -3,7 +3,7 @@
3
3
  ## Create professional CLI applications
4
4
 
5
5
  [![License](https://badgen.net/badge/license/MIT/gray)](LICENSE.md)
6
- [![Release](https://badgen.net/badge/release/v0.9.120/gray)](CHANGELOG.md#unreleased)
6
+ [![Release](https://badgen.net/badge/release/v0.9.121/gray)](CHANGELOG.md#unreleased)
7
7
  [![PyPi](https://badgen.net/badge/icon/python?icon=pypi&label)](https://pypi.org/project/hspylib-clitt)
8
8
  [![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/yorevs/hspylib)
9
9
  [![Gitter](https://badgen.net/badge/icon/gitter?icon=gitter&label)](https://gitter.im/hspylib/community)
@@ -0,0 +1 @@
1
+ 0.9.121
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt
6
6
  """Package initialization."""
@@ -10,4 +10,4 @@ __all__ = [
10
10
  'core',
11
11
  'utils'
12
12
  ]
13
- __version__ = '0.9.120'
13
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.addons
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'appman',
10
10
  'widman'
11
11
  ]
12
- __version__ = '0.9.120'
12
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.addons.appman
6
6
  """Package initialization."""
@@ -10,4 +10,4 @@ __all__ = [
10
10
  'appman_enums',
11
11
  'templates'
12
12
  ]
13
- __version__ = '0.9.120'
13
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.addons.appman.templates
6
6
  """Package initialization."""
@@ -8,4 +8,4 @@
8
8
  __all__ = [
9
9
 
10
10
  ]
11
- __version__ = '0.9.120'
11
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.addons.widman
6
6
  """Package initialization."""
@@ -11,4 +11,4 @@ __all__ = [
11
11
  'widgets',
12
12
  'widman'
13
13
  ]
14
- __version__ = '0.9.120'
14
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.addons.widman.widgets
6
6
  """Package initialization."""
@@ -11,4 +11,4 @@ __all__ = [
11
11
  'widget_send_msg',
12
12
  'widget_time_calc'
13
13
  ]
14
- __version__ = '0.9.120'
14
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core
6
6
  """Package initialization."""
@@ -12,4 +12,4 @@ __all__ = [
12
12
  'term',
13
13
  'tui'
14
14
  ]
15
- __version__ = '0.9.120'
15
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.exception
6
6
  """Package initialization."""
@@ -8,4 +8,4 @@
8
8
  __all__ = [
9
9
  'exceptions'
10
10
  ]
11
- __version__ = '0.9.120'
11
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.icons
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'emojis',
10
10
  'font_awesome'
11
11
  ]
12
- __version__ = '0.9.120'
12
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.icons.emojis
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'emojis',
10
10
  'face_smiling'
11
11
  ]
12
- __version__ = '0.9.120'
12
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.icons.font_awesome
6
6
  """Package initialization."""
@@ -15,4 +15,4 @@ __all__ = [
15
15
  'trickplay_icons',
16
16
  'widget_icons'
17
17
  ]
18
- __version__ = '0.9.120'
18
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.term
6
6
  """Package initialization."""
@@ -11,4 +11,4 @@ __all__ = [
11
11
  'screen',
12
12
  'terminal'
13
13
  ]
14
- __version__ = '0.9.120'
14
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.tui
6
6
  """Package initialization."""
@@ -17,4 +17,4 @@ __all__ = [
17
17
  'tui_component',
18
18
  'tui_preferences'
19
19
  ]
20
- __version__ = '0.9.120'
20
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.tui.line_input
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'keyboard_input',
10
10
  'line_input'
11
11
  ]
12
- __version__ = '0.9.120'
12
+ __version__ = '0.9.121'
@@ -13,15 +13,14 @@
13
13
  Copyright·(c)·2024,·HSPyLib
14
14
  """
15
15
 
16
- from typing import Dict, List, Optional
17
-
18
- import pyperclip
19
- from hspylib.modules.cli.keyboard import Keyboard
20
- from hspylib.modules.cli.vt100.vt_color import VtColor
16
+ from typing import Optional
21
17
 
22
18
  from clitt.core.term.commons import Direction
23
19
  from clitt.core.term.terminal import Terminal
24
20
  from clitt.core.tui.tui_component import TUIComponent
21
+ from hspylib.core.tools.dict_tools import get_or_default
22
+ from hspylib.modules.cli.keyboard import Keyboard
23
+ from hspylib.modules.cli.vt100.vt_color import VtColor
25
24
 
26
25
 
27
26
  class KeyboardInput(TUIComponent):
@@ -31,56 +30,47 @@ class KeyboardInput(TUIComponent):
31
30
  _HIST_INDEX: int = 0
32
31
 
33
32
  # Dict containing all previously accepted inputs.
34
- _HISTORY: Dict[int, str] = {0: ""}
33
+ _HISTORY: list[str] = [""]
35
34
 
36
35
  # Stack containing current input changes.
37
- _UNDO_HISTORY: List[str] = []
36
+ _UNDO_HISTORY: list[str] = []
38
37
 
39
38
  # Stack containing current input reverts.
40
- _REDO_HISTORY: List[str] = []
39
+ _REDO_HISTORY: list[str] = []
41
40
 
42
- @staticmethod
43
- def preload_history(history: List[str]) -> None:
44
- """Preload the input with the provided dictionary."""
45
- for entry in history:
46
- KeyboardInput._add_history(entry)
47
- KeyboardInput._HIST_INDEX = 0
41
+ @classmethod
42
+ def preload_history(cls, history: list[str]) -> None:
43
+ """Preload the input with the provided dictionary.
44
+ :param history: The history keyboard inputs.
45
+ """
46
+ for entry in reversed(history):
47
+ cls._add_history(entry)
48
+ cls._HIST_INDEX = max(0, len(cls._HISTORY) - 1)
48
49
 
49
- @staticmethod
50
- def forget_history() -> None:
50
+ @classmethod
51
+ def forget_history(cls) -> None:
51
52
  """Forget all input history entries."""
52
- tmp: str = KeyboardInput._HISTORY[0]
53
- KeyboardInput._HISTORY.clear()
54
- KeyboardInput._HISTORY[0] = tmp
53
+ tmp: str = cls._HISTORY[-1]
54
+ cls._HISTORY.clear()
55
+ cls._HISTORY.append(tmp)
55
56
 
56
- @staticmethod
57
- def history() -> List[str]:
57
+ @classmethod
58
+ def history(cls) -> list[str]:
58
59
  """Return the actual input history."""
59
- return list(filter(lambda v: v, KeyboardInput._HISTORY.values()))
60
+ return list(filter(lambda v: v, cls._HISTORY))
60
61
 
61
- @staticmethod
62
- def _add_history(input_text: str) -> None:
62
+ @classmethod
63
+ def _add_history(cls, input_text: str) -> None:
63
64
  """Add the following input to the history set.
64
65
  :param input_text: The input text to add to the history.
65
66
  """
66
- if input_text and input_text not in list(KeyboardInput._HISTORY.values())[1:]:
67
- idx: int = max(1, len(KeyboardInput._HISTORY))
68
- KeyboardInput._HISTORY[idx] = input_text
69
- KeyboardInput._HIST_INDEX = idx
70
-
71
- @classmethod
72
- def _next_in_history(cls) -> Optional[str]:
73
- index = min(len(cls._HISTORY) - 1, cls._HIST_INDEX + 1)
74
- text = cls._HISTORY.get(index, "")
75
- cls._HIST_INDEX = index
76
- return text or cls._HISTORY[0]
77
-
78
- @classmethod
79
- def _prev_in_history(cls) -> Optional[str]:
80
- index = max(0, cls._HIST_INDEX - 1)
81
- text = cls._HISTORY.get(index, "")
82
- cls._HIST_INDEX = index
83
- return text or cls._HISTORY[0]
67
+ if input_text and input_text not in list(cls._HISTORY)[1:]:
68
+ idx: int = max(1, len(cls._HISTORY))
69
+ if input_text not in cls._HISTORY:
70
+ cls._HISTORY.insert(idx - 1, input_text)
71
+ else:
72
+ cls._HISTORY = cls._HISTORY[1:-1] + cls._HISTORY[:1] + cls._HISTORY[-1:]
73
+ cls._HIST_INDEX = idx
84
74
 
85
75
  @classmethod
86
76
  def _undo(cls) -> Optional[str]:
@@ -104,18 +94,19 @@ class KeyboardInput(TUIComponent):
104
94
  navbar_enable: bool = False,
105
95
  ):
106
96
  super().__init__(prompt)
107
- self._prompt_color = prompt_color
108
- self._text_color = text_color
109
- self._navbar_enable = navbar_enable
110
- self._input_index = 0
97
+ self._prompt_color: VtColor = prompt_color
98
+ self._text_color: VtColor = text_color
99
+ self._navbar_enable: bool = navbar_enable
100
+ self._input_index: int = 0
111
101
  self._input_text: str = ""
112
- self._HISTORY[0] = ""
102
+ self._HISTORY[-1] = ""
113
103
 
114
104
  @property
115
105
  def length(self) -> int:
116
106
  return len(self._input_text) if self._input_text else 0
117
107
 
118
108
  def _prepare_render(self, auto_wrap: bool = True, show_cursor: bool = True) -> None:
109
+ self.screen.add_watcher(self.invalidate)
119
110
  Terminal.set_auto_wrap(auto_wrap)
120
111
  Terminal.set_show_cursor(show_cursor)
121
112
  self.cursor.save()
@@ -125,7 +116,7 @@ class KeyboardInput(TUIComponent):
125
116
  keypress = self._loop() or Keyboard.VK_ESC
126
117
 
127
118
  if keypress.isEnter():
128
- self._add_history(self._input_text)
119
+ self._HISTORY.append('')
129
120
  self._UNDO_HISTORY.clear()
130
121
  self._REDO_HISTORY.clear()
131
122
  elif keypress == Keyboard.VK_ESC:
@@ -135,7 +126,12 @@ class KeyboardInput(TUIComponent):
135
126
 
136
127
  return self._input_text
137
128
 
138
- def _loop(self, break_keys: List[Keyboard] = None) -> Keyboard:
129
+ def reset(self) -> None:
130
+ """Reset the contents of the input."""
131
+ self._input_index = 0
132
+ self._update_input("")
133
+
134
+ def _loop(self, break_keys: list[Keyboard] = None) -> Keyboard:
139
135
  break_keys = break_keys or Keyboard.break_keys()
140
136
  keypress = Keyboard.VK_NONE
141
137
 
@@ -154,7 +150,7 @@ class KeyboardInput(TUIComponent):
154
150
  self.cursor.restore()
155
151
  self.write(f"{self._prompt_color.placeholder}{self.title}{self._text_color.placeholder}")
156
152
  self.write(self._input_text)
157
- self._terminal.cursor.erase(Direction.RIGHT)
153
+ self._terminal.cursor.erase(Direction.DOWN)
158
154
  self._re_render = False
159
155
  self._set_cursor_pos()
160
156
  Terminal.set_show_cursor()
@@ -175,26 +171,19 @@ class KeyboardInput(TUIComponent):
175
171
  self._update_input(
176
172
  self._input_text[: self._input_index] + self._input_text[1 + self._input_index :]
177
173
  )
178
- case Keyboard.VK_CTRL_F: # Forget history
174
+ case Keyboard.VK_CTRL_R:
175
+ self.reset()
176
+ case Keyboard.VK_CTRL_F:
179
177
  self.forget_history()
180
- case Keyboard.VK_CTRL_P: # Paste from clipboard
181
- text = (pyperclip.paste() or "").replace("\n", "↵")
182
- self._update_input(
183
- self._input_text[: self._input_index] + text + self._input_text[self._input_index :]
184
- )
185
- self._input_index += len(text)
186
- case Keyboard.VK_CTRL_R: # Reset contents
187
- self._input_index = 0
188
- self._update_input("")
189
178
  case Keyboard.VK_LEFT:
190
179
  self._input_index = max(0, self._input_index - 1)
191
180
  case Keyboard.VK_RIGHT:
192
181
  self._input_index = min(self.length, self._input_index + 1)
193
182
  case Keyboard.VK_UP:
194
- self._input_text = self._next_in_history()
183
+ self._input_text = self._prev_in_history()
195
184
  self._input_index = self.length
196
185
  case Keyboard.VK_DOWN:
197
- self._input_text = self._prev_in_history()
186
+ self._input_text = self._next_in_history()
198
187
  self._input_index = self.length
199
188
  case Keyboard.VK_HOME:
200
189
  self._input_index = 0
@@ -224,6 +213,24 @@ class KeyboardInput(TUIComponent):
224
213
  :param text: The text to be set.
225
214
  """
226
215
  self._UNDO_HISTORY.append(self._input_text)
227
- self._HISTORY[0] = text if text not in self._HISTORY else self._input_text
216
+ self._HISTORY[-1] = text if text not in self._HISTORY else self._input_text
228
217
  self._input_text = text
229
218
  return text
219
+
220
+ def _next_in_history(self) -> str:
221
+ """Return the next input in history."""
222
+ edt_text: str = self._HISTORY[-1]
223
+ filtered: list[str] = list(filter(lambda h: h.startswith(edt_text), self._HISTORY))
224
+ index = min(len(filtered) - 1, self._HIST_INDEX + 1)
225
+ text = get_or_default(filtered, index, "")
226
+ self._HIST_INDEX = index
227
+ return text or filtered[-1]
228
+
229
+ def _prev_in_history(self) -> str:
230
+ """Return the previous input in history."""
231
+ edt_text: str = self._HISTORY[-1]
232
+ filtered: list[str] = list(filter(lambda h: h.lower().startswith(edt_text.lower()), self._HISTORY))
233
+ index = max(0, min(len(filtered) - 2, self._HIST_INDEX - 1))
234
+ text = get_or_default(filtered, index, "")
235
+ self._HIST_INDEX = index
236
+ return text or filtered[-1]
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.tui.mchoose
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'mchoose',
10
10
  'menu_choose'
11
11
  ]
12
- __version__ = '0.9.120'
12
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.tui.mdashboard
6
6
  """Package initialization."""
@@ -11,4 +11,4 @@ __all__ = [
11
11
  'mdashboard',
12
12
  'menu_dashboard'
13
13
  ]
14
- __version__ = '0.9.120'
14
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.tui.menu
6
6
  """Package initialization."""
@@ -13,4 +13,4 @@ __all__ = [
13
13
  'tui_menu_ui',
14
14
  'tui_menu_view'
15
15
  ]
16
- __version__ = '0.9.120'
16
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.tui.minput
6
6
  """Package initialization."""
@@ -16,4 +16,4 @@ __all__ = [
16
16
  'minput',
17
17
  'minput_utils'
18
18
  ]
19
- __version__ = '0.9.120'
19
+ __version__ = '0.9.121'
@@ -12,6 +12,12 @@
12
12
 
13
13
  Copyright·(c)·2024,·HSPyLib
14
14
  """
15
+ import re
16
+ from functools import reduce
17
+ from operator import add
18
+ from time import sleep
19
+ from typing import List, Optional
20
+
15
21
  from clitt.core.icons.font_awesome.form_icons import FormIcons
16
22
  from clitt.core.icons.font_awesome.nav_icons import NavIcons
17
23
  from clitt.core.term.commons import Direction, get_cursor_position
@@ -22,17 +28,10 @@ from clitt.core.tui.minput.form_field import FormField
22
28
  from clitt.core.tui.minput.input_type import InputType
23
29
  from clitt.core.tui.minput.minput_utils import MASK_SYMBOLS, VALUE_SEPARATORS
24
30
  from clitt.core.tui.tui_component import TUIComponent
25
- from functools import reduce
26
31
  from hspylib.core.exception.exceptions import InvalidInputError, InvalidStateError
27
32
  from hspylib.core.namespace import Namespace
28
33
  from hspylib.core.tools.text_tools import xstr
29
34
  from hspylib.modules.cli.keyboard import Keyboard
30
- from operator import add
31
- from time import sleep
32
- from typing import List, Optional
33
-
34
- import pyperclip
35
- import re
36
35
 
37
36
 
38
37
  class MenuInput(TUIComponent):
@@ -100,7 +99,7 @@ class MenuInput(TUIComponent):
100
99
  f"%EOL%{NavIcons.POINTER} %GREEN%{self.cur_field.tooltip or f'the {self.cur_field.label.lower()}'}%NC%"
101
100
  f"%EOL%{self.prefs.navbar_color.placeholder}%EOL%"
102
101
  f"[Enter] Submit [{self.NAV_ICONS}] "
103
- f"Navigate [{NavIcons.TAB}] Next [Space] Toggle [^P] Paste [Esc] Quit %NC%"
102
+ f"Navigate [{NavIcons.TAB}] Next [Space] Toggle [Esc] Quit %NC%"
104
103
  )
105
104
 
106
105
  def handle_keypress(self) -> Keyboard:
@@ -119,8 +118,6 @@ class MenuInput(TUIComponent):
119
118
  self._display_error("This field is read only !")
120
119
  else:
121
120
  self._handle_backspace()
122
- case Keyboard.VK_CTRL_P:
123
- self._handle_ctrl_p()
124
121
  case Keyboard.VK_ENTER:
125
122
  return self._handle_enter()
126
123
  case _ as key if key.isalnum() or key.ispunct() or key == Keyboard.VK_SPACE:
@@ -201,11 +198,6 @@ class MenuInput(TUIComponent):
201
198
  elif not self.cur_field.can_write():
202
199
  self._display_error("This field is read only !")
203
200
 
204
- def _handle_ctrl_p(self) -> None:
205
- """Handle 'ctrl + p' press. Paste content from clipboard."""
206
- for c in pyperclip.paste():
207
- self._handle_input(Keyboard.of_value(c))
208
-
209
201
  def _set_cursor_pos(self) -> None:
210
202
  """Set the cursor at the right position according to the ATB index."""
211
203
  pos = self.positions[self.tab_index]
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.tui.mselect
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'menu_select',
10
10
  'mselect'
11
11
  ]
12
- __version__ = '0.9.120'
12
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.core.tui.table
6
6
  """Package initialization."""
@@ -9,4 +9,4 @@ __all__ = [
9
9
  'table_enums',
10
10
  'table_renderer'
11
11
  ]
12
- __version__ = '0.9.120'
12
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.120
3
+ # hspylib-clitt v0.9.121
4
4
  #
5
5
  # Package: main.clitt.utils
6
6
  """Package initialization."""
@@ -8,4 +8,4 @@
8
8
  __all__ = [
9
9
  'git_utils'
10
10
  ]
11
- __version__ = '0.9.120'
11
+ __version__ = '0.9.121'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hspylib-clitt
3
- Version: 0.9.120
3
+ Version: 0.9.121
4
4
  Summary: HsPyLib - CLI Terminal Tools
5
5
  Home-page: https://github.com/yorevs/hspylib
6
6
  Author: Hugo Saporetti Junior
@@ -35,7 +35,7 @@ Requires-Dist: urllib3<2.0.0
35
35
  ## Create professional CLI applications
36
36
 
37
37
  [![License](https://badgen.net/badge/license/MIT/gray)](LICENSE.md)
38
- [![Release](https://badgen.net/badge/release/v0.9.120/gray)](CHANGELOG.md#unreleased)
38
+ [![Release](https://badgen.net/badge/release/v0.9.121/gray)](CHANGELOG.md#unreleased)
39
39
  [![PyPi](https://badgen.net/badge/icon/python?icon=pypi&label)](https://pypi.org/project/hspylib-clitt)
40
40
  [![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/yorevs/hspylib)
41
41
  [![Gitter](https://badgen.net/badge/icon/gitter?icon=gitter&label)](https://gitter.im/hspylib/community)
@@ -1 +0,0 @@
1
- 0.9.120