hspylib-clitt 0.9.105__tar.gz → 0.9.106__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 (101) hide show
  1. {hspylib-clitt-0.9.105/hspylib_clitt.egg-info → hspylib-clitt-0.9.106}/PKG-INFO +2 -2
  2. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/README.md +1 -1
  3. hspylib-clitt-0.9.106/clitt/.version +1 -0
  4. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/__init__.py +2 -2
  5. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/__init__.py +2 -2
  6. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/__init__.py +2 -2
  7. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/__init__.py +2 -2
  8. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/widman/__init__.py +2 -2
  9. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/widman/widgets/__init__.py +2 -2
  10. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/__init__.py +2 -2
  11. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/exception/__init__.py +2 -2
  12. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/__init__.py +2 -2
  13. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/emojis/__init__.py +2 -2
  14. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/font_awesome/__init__.py +2 -2
  15. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/term/__init__.py +2 -2
  16. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/term/cursor.py +8 -3
  17. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/__init__.py +2 -2
  18. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/mchoose/__init__.py +2 -2
  19. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/mchoose/mchoose.py +6 -2
  20. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/mchoose/menu_choose.py +21 -14
  21. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/mdashboard/__init__.py +2 -2
  22. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/mdashboard/menu_dashboard.py +10 -2
  23. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/menu/__init__.py +2 -2
  24. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/minput/__init__.py +2 -2
  25. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/minput/field_builder.py +2 -2
  26. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/minput/menu_input.py +3 -1
  27. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/mselect/__init__.py +2 -2
  28. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/mselect/menu_select.py +6 -10
  29. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/table/__init__.py +2 -2
  30. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/tui_component.py +11 -7
  31. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/utils/__init__.py +2 -2
  32. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106/hspylib_clitt.egg-info}/PKG-INFO +2 -2
  33. hspylib-clitt-0.9.105/clitt/.version +0 -1
  34. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/MANIFEST.in +0 -0
  35. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/__classpath__.py +0 -0
  36. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/__main__.py +0 -0
  37. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/appman.py +0 -0
  38. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/appman_enums.py +0 -0
  39. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/build.gradle.tpl +0 -0
  40. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/classpath.py.tpl +0 -0
  41. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/dependencies.hspd.tpl +0 -0
  42. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/gitignore.tpl +0 -0
  43. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/main.py.tpl +0 -0
  44. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/main_qt.py.tpl +0 -0
  45. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/main_qt_view.py.tpl +0 -0
  46. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/main_qt_view.ui.tpl +0 -0
  47. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/run.sh.tpl +0 -0
  48. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/test_main.py.tpl +0 -0
  49. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/usage.txt.tpl +0 -0
  50. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/appman/templates/widget.py.tpl +0 -0
  51. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/widman/widget.py +0 -0
  52. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/widman/widget_entry.py +0 -0
  53. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/widman/widgets/widget_free.py +0 -0
  54. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/widman/widgets/widget_punch.py +0 -0
  55. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/widman/widgets/widget_send_msg.py +0 -0
  56. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/widman/widgets/widget_time_calc.py +0 -0
  57. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/addons/widman/widman.py +0 -0
  58. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/exception/exceptions.py +0 -0
  59. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/emojis/emojis.py +0 -0
  60. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/emojis/face_smiling.py +0 -0
  61. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/font_awesome/app_icons.py +0 -0
  62. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/font_awesome/awesome.py +0 -0
  63. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/font_awesome/dashboard_icons.py +0 -0
  64. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/font_awesome/form_icons.py +0 -0
  65. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/font_awesome/game_icons.py +0 -0
  66. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/font_awesome/nav_icons.py +0 -0
  67. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/font_awesome/trickplay_icons.py +0 -0
  68. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/icons/font_awesome/widget_icons.py +0 -0
  69. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/preferences.py +0 -0
  70. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/term/commons.py +0 -0
  71. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/term/screen.py +0 -0
  72. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/term/terminal.py +0 -0
  73. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/mdashboard/dashboard_builder.py +0 -0
  74. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/mdashboard/dashboard_item.py +0 -0
  75. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/mdashboard/mdashboard.py +0 -0
  76. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/menu/tui_menu.py +0 -0
  77. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/menu/tui_menu_action.py +0 -0
  78. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/menu/tui_menu_factory.py +0 -0
  79. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/menu/tui_menu_item.py +0 -0
  80. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/menu/tui_menu_ui.py +0 -0
  81. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/menu/tui_menu_view.py +0 -0
  82. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/minput/access_type.py +0 -0
  83. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/minput/form_builder.py +0 -0
  84. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/minput/form_field.py +0 -0
  85. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/minput/input_type.py +0 -0
  86. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/minput/input_validator.py +0 -0
  87. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/minput/minput.py +0 -0
  88. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/minput/minput_utils.py +0 -0
  89. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/mselect/mselect.py +0 -0
  90. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/table/table_enums.py +0 -0
  91. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/table/table_renderer.py +0 -0
  92. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/tui_application.py +0 -0
  93. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/core/tui/tui_preferences.py +0 -0
  94. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/utils/git_utils.py +0 -0
  95. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/clitt/welcome.txt +0 -0
  96. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/hspylib_clitt.egg-info/SOURCES.txt +0 -0
  97. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/hspylib_clitt.egg-info/dependency_links.txt +0 -0
  98. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/hspylib_clitt.egg-info/requires.txt +0 -0
  99. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/hspylib_clitt.egg-info/top_level.txt +0 -0
  100. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/setup.cfg +0 -0
  101. {hspylib-clitt-0.9.105 → hspylib-clitt-0.9.106}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hspylib-clitt
3
- Version: 0.9.105
3
+ Version: 0.9.106
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.105/gray)](CHANGELOG.md#unreleased)
38
+ [![Release](https://badgen.net/badge/release/v0.9.106/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.105/gray)](CHANGELOG.md#unreleased)
6
+ [![Release](https://badgen.net/badge/release/v0.9.106/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.106
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
13
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
12
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
13
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
11
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
14
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
14
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
15
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
11
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
12
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
12
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
18
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
14
+ __version__ = '0.9.106'
@@ -1,4 +1,4 @@
1
- from clitt.core.term.commons import Direction, EraseDirection, get_cursor_position, MoveDirection, Position
1
+ import os
2
2
  from hspylib.core.metaclass.singleton import Singleton
3
3
  from hspylib.core.tools.commons import sysout
4
4
  from hspylib.core.tools.text_tools import last_index_of
@@ -7,7 +7,7 @@ from hspylib.modules.cli.vt100.vt_code import VtCode
7
7
  from hspylib.modules.cli.vt100.vt_color import VtColor
8
8
  from typing import Any
9
9
 
10
- import os
10
+ from clitt.core.term.commons import Direction, EraseDirection, get_cursor_position, MoveDirection, Position
11
11
 
12
12
 
13
13
  class Cursor(metaclass=Singleton):
@@ -110,7 +110,7 @@ class Cursor(metaclass=Singleton):
110
110
  sysout(obj, end=end)
111
111
  text = (str(obj) + end).replace("%EOL%", os.linesep)
112
112
  text = VtColor.strip_colors(VtCode.strip_codes(text))
113
- text_offset = len(text[max(0, last_index_of(text, os.linesep)) :])
113
+ text_offset = len(text[max(0, last_index_of(text, os.linesep)):])
114
114
  self.position = self.position[0] + text.count(os.linesep), text_offset + (
115
115
  self.position[1] if text.count(os.linesep) == 0 else 0
116
116
  )
@@ -139,3 +139,8 @@ class Cursor(metaclass=Singleton):
139
139
  self._position = self._saved_attrs[0]
140
140
  self._bottom = self._saved_attrs[1]
141
141
  return self.position
142
+
143
+ def reset_mode(self, end="") -> Position:
144
+ """Reset cursor modifiers."""
145
+ sysout(Vt100.mode(0), end=end)
146
+ return self.position
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
4
4
  #
5
5
  # Package: main.clitt.core.tui
6
6
  """Package initialization."""
@@ -16,4 +16,4 @@ __all__ = [
16
16
  'tui_component',
17
17
  'tui_preferences'
18
18
  ]
19
- __version__ = '0.9.105'
19
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
12
+ __version__ = '0.9.106'
@@ -12,15 +12,19 @@
12
12
 
13
13
  Copyright 2023, HsPyLib team
14
14
  """
15
- from clitt.core.tui.mchoose.menu_choose import MenuChoose
16
15
  from hspylib.core.enums.charset import Charset
17
16
  from typing import List, Optional, TypeVar
18
17
 
18
+ from clitt.core.tui.mchoose.menu_choose import MenuChoose
19
+
19
20
  T = TypeVar("T")
20
21
 
21
22
 
22
23
  def mchoose(
23
- items: List[T], checked: bool = True, title: str = "Please choose among the options", output: str = None
24
+ items: List[T],
25
+ checked: bool | List[bool] = False,
26
+ title: str = "Please choose among the options",
27
+ output: str = None
24
28
  ) -> Optional[List[T]]:
25
29
  """
26
30
  Terminal UI menu choose input method.
@@ -12,12 +12,14 @@
12
12
 
13
13
  Copyright 2023, HsPyLib team
14
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
+
15
20
  from clitt.core.icons.font_awesome.nav_icons import NavIcons
16
21
  from clitt.core.term.commons import Direction, Portion
17
22
  from clitt.core.tui.tui_component import TUIComponent
18
- from functools import cached_property
19
- from hspylib.modules.cli.keyboard import Keyboard
20
- from typing import List, Optional, TypeAlias, TypeVar
21
23
 
22
24
  T = TypeVar("T")
23
25
 
@@ -33,19 +35,25 @@ class MenuChoose(TUIComponent):
33
35
 
34
36
  MIN_ROWS = 3
35
37
 
36
- def __init__(self, title: str, items: MChooseItems, checked: bool):
38
+ def __init__(
39
+ self,
40
+ title: str,
41
+ items: MChooseItems,
42
+ checked: bool | List[bool] = False):
43
+
37
44
  super().__init__(title)
38
45
  self.items = items
39
46
  self.show_from = 0
40
47
  self.show_to = self._max_rows()
41
48
  self.diff_index = self.show_to - self.show_from
42
49
  self.sel_index = 0
43
- self.sel_options = [1 if checked else 0 for _ in range(len(items))] # Initialize all options
44
50
  self.max_line_length = max(len(str(item)) for item in items)
45
-
46
- @cached_property
47
- def digits(self) -> List[Keyboard]:
48
- return Keyboard.digits()
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))]
49
57
 
50
58
  def execute(self) -> Optional[MChooseItems]:
51
59
  if len(self.items) == 0:
@@ -56,8 +64,7 @@ class MenuChoose(TUIComponent):
56
64
 
57
65
  return (
58
66
  [op for idx, op in enumerate(self.items) if self.sel_options[idx]]
59
- if keypress == Keyboard.VK_ENTER
60
- else None
67
+ if keypress.isEnter() else None
61
68
  )
62
69
 
63
70
  def render(self) -> None:
@@ -73,7 +80,7 @@ class MenuChoose(TUIComponent):
73
80
  self.cursor.erase(Portion.LINE)
74
81
  # Print the selector if the index is currently selected
75
82
  selector = self.draw_selector(idx == self.sel_index)
76
- mark = self.prefs.checked_icon if self.sel_options[idx] == 1 else self.prefs.unchecked_icon
83
+ mark = self.prefs.checked_icon if to_bool(self.sel_options[idx]) else self.prefs.unchecked_icon
77
84
  # fmt: off
78
85
  line_fmt = (
79
86
  " {:>" + f"{len(str(length))}" + "} "
@@ -97,7 +104,7 @@ class MenuChoose(TUIComponent):
97
104
  def handle_keypress(self) -> Keyboard:
98
105
  if keypress := Keyboard.wait_keystroke():
99
106
  match keypress:
100
- case _ as key if key in [Keyboard.VK_ESC, Keyboard.VK_ENTER]:
107
+ case _ as key if key in Keyboard.break_keys():
101
108
  self._done = True
102
109
  case Keyboard.VK_UP:
103
110
  self._handle_key_up()
@@ -111,7 +118,7 @@ class MenuChoose(TUIComponent):
111
118
  self._handle_space()
112
119
  case _ as key if key in [Keyboard.VK_i, Keyboard.VK_I]:
113
120
  self._handle_key_i()
114
- case _ as key if key in self.digits:
121
+ case _ as key if key in Keyboard.digits():
115
122
  self._handle_digit(keypress)
116
123
 
117
124
  return keypress
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
14
+ __version__ = '0.9.106'
@@ -82,7 +82,7 @@ class MenuDashBoard(TUIComponent):
82
82
  self.writeln(f"{self.prefs.title_color.placeholder}{self.title}%EOL%%NC%")
83
83
 
84
84
  for idx, item in enumerate(self._items):
85
- self._print_item(
85
+ self._draw_item(
86
86
  idx, item, MenuDashBoard.CELL_TPL if self._tab_index != idx else MenuDashBoard.SEL_CELL_TPL
87
87
  )
88
88
 
@@ -117,13 +117,19 @@ class MenuDashBoard(TUIComponent):
117
117
 
118
118
  return keypress
119
119
 
120
- def _print_item(self, item_idx: int, item: DashboardItem, cell_template: DashboardMatrix) -> None:
120
+ def _draw_item(
121
+ self,
122
+ item_idx: int,
123
+ item: DashboardItem,
124
+ cell_template: DashboardMatrix) -> None:
121
125
  """Print the specified dashboard item at the given index.
122
126
  :param item_idx: the item index.
123
127
  :param item: the dashboard item.
124
128
  :param cell_template: the template of the dashboard cell (selected or unselected).
125
129
  """
130
+
126
131
  num_cols, num_rows = len(cell_template[0]), len(cell_template)
132
+
127
133
  for row in range(0, num_rows):
128
134
  for col in range(0, num_cols):
129
135
  cur_cell = cell_template[row][col]
@@ -132,6 +138,7 @@ class MenuDashBoard(TUIComponent):
132
138
  # Move to the next the next row
133
139
  self.cursor.move(1, Direction.DOWN)
134
140
  self.cursor.move(num_cols, Direction.LEFT)
141
+
135
142
  if item_idx > 0 and (item_idx + 1) % self._items_per_line() == 0:
136
143
  # Break the line
137
144
  self.cursor.move(1, Direction.DOWN)
@@ -142,5 +149,6 @@ class MenuDashBoard(TUIComponent):
142
149
  self.cursor.move(num_cols, Direction.RIGHT)
143
150
 
144
151
  def _items_per_line(self) -> int:
152
+ """TODO"""
145
153
  screen_columns = self.screen.columns - self.COLUMN_OFFSET
146
154
  return max(self.MIN_COLUMNS, min(self.prefs.items_per_line, screen_columns))
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
16
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
19
+ __version__ = '0.9.106'
@@ -19,7 +19,7 @@ from clitt.core.tui.minput.input_validator import InputValidator
19
19
  from clitt.core.tui.minput.minput_utils import get_selected, MASK_SYMBOLS, unpack_masked, VALUE_SEPARATORS
20
20
  from functools import reduce
21
21
  from hspylib.core.preconditions import check_argument
22
- from hspylib.core.tools.commons import str_to_bool
22
+ from hspylib.core.tools.commons import to_bool
23
23
  from hspylib.core.tools.text_tools import snakecase
24
24
  from operator import add
25
25
  from typing import Any
@@ -91,7 +91,7 @@ class FieldBuilder:
91
91
 
92
92
  def build(self) -> Any:
93
93
  if self._itype == InputType.CHECKBOX:
94
- self._value = str_to_bool(str(self._value))
94
+ self._value = to_bool(str(self._value))
95
95
  elif self._itype == InputType.SELECT:
96
96
  parts = re.split(VALUE_SEPARATORS, re.sub("[<>]", "", str(self._value or "")))
97
97
  self._min_max_length = len(min(parts, key=len)), len(max(parts, key=len))
@@ -70,6 +70,7 @@ class MenuInput(TUIComponent):
70
70
  return None
71
71
 
72
72
  def render(self) -> None:
73
+
73
74
  Terminal.set_show_cursor(False)
74
75
  self.cursor.restore()
75
76
  self.writeln(f"{self.prefs.title_color.placeholder}{self.title}%EOL%%NC%")
@@ -89,11 +90,12 @@ class MenuInput(TUIComponent):
89
90
 
90
91
  self.cursor.erase(Direction.DOWN)
91
92
  self.draw_navbar(self.navbar())
92
- self._re_render = False
93
93
  self._set_cursor_pos()
94
+ self._re_render = False
94
95
  Terminal.set_show_cursor()
95
96
 
96
97
  def navbar(self, **kwargs) -> str:
98
+
97
99
  return (
98
100
  f"%EOL%{NavIcons.POINTER} %GREEN%{self.cur_field.tooltip or f'the {self.cur_field.label.lower()}'}%NC%"
99
101
  f"%EOL%{self.prefs.navbar_color.placeholder}%EOL%"
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
12
+ __version__ = '0.9.106'
@@ -12,12 +12,12 @@
12
12
 
13
13
  Copyright 2023, HsPyLib team
14
14
  """
15
+ from hspylib.modules.cli.keyboard import Keyboard
16
+ from typing import List, Optional, TypeAlias, TypeVar
17
+
15
18
  from clitt.core.icons.font_awesome.nav_icons import NavIcons
16
19
  from clitt.core.term.commons import Direction, Portion
17
20
  from clitt.core.tui.tui_component import TUIComponent
18
- from functools import cached_property
19
- from hspylib.modules.cli.keyboard import Keyboard
20
- from typing import List, Optional, TypeAlias, TypeVar
21
21
 
22
22
  T = TypeVar("T")
23
23
 
@@ -42,10 +42,6 @@ class MenuSelect(TUIComponent):
42
42
  self._sel_index = 0
43
43
  self._max_line_length = max(len(str(item)) for item in items)
44
44
 
45
- @cached_property
46
- def digits(self) -> List[Keyboard]:
47
- return Keyboard.digits()
48
-
49
45
  def execute(self) -> Optional[T]:
50
46
  """Execute the component's main flow."""
51
47
 
@@ -57,7 +53,7 @@ class MenuSelect(TUIComponent):
57
53
  self._prepare_render()
58
54
  keypress = self._loop()
59
55
 
60
- return self._items[self._sel_index] if keypress == Keyboard.VK_ENTER else None
56
+ return self._items[self._sel_index] if keypress.isEnter() else None
61
57
 
62
58
  def render(self) -> None:
63
59
  """Renders the TUI component."""
@@ -96,7 +92,7 @@ class MenuSelect(TUIComponent):
96
92
  def handle_keypress(self) -> Keyboard:
97
93
  if keypress := Keyboard.wait_keystroke():
98
94
  match keypress:
99
- case _ as key if key in [Keyboard.VK_ESC, Keyboard.VK_ENTER]:
95
+ case _ as key if key in Keyboard.break_keys():
100
96
  self._done = True
101
97
  case Keyboard.VK_UP:
102
98
  self._handle_key_up()
@@ -106,7 +102,7 @@ class MenuSelect(TUIComponent):
106
102
  self._handle_tab()
107
103
  case Keyboard.VK_SHIFT_TAB:
108
104
  self._handle_shift_tab()
109
- case _ as key if key in self.digits:
105
+ case _ as key if key in Keyboard.digits():
110
106
  self._handle_digit(keypress)
111
107
 
112
108
  return keypress
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
12
+ __version__ = '0.9.106'
@@ -13,14 +13,16 @@
13
13
  Copyright 2023, HsPyLib team
14
14
  """
15
15
  from abc import ABC, abstractmethod
16
+ from hspylib.core.tools.text_tools import elide_text
17
+ from hspylib.modules.cli.keyboard import Keyboard
18
+ from typing import Any, List, Optional, TypeVar
19
+
16
20
  from clitt.core.icons.font_awesome.awesome import Awesome
21
+ from clitt.core.term.commons import Direction
17
22
  from clitt.core.term.cursor import Cursor
18
23
  from clitt.core.term.screen import Screen
19
24
  from clitt.core.term.terminal import Terminal
20
25
  from clitt.core.tui.tui_preferences import TUIPreferences
21
- from hspylib.core.tools.text_tools import elide_text
22
- from hspylib.modules.cli.keyboard import Keyboard
23
- from typing import Any, List, Optional, TypeVar
24
26
 
25
27
  T = TypeVar("T", bound=Any)
26
28
 
@@ -71,22 +73,24 @@ class TUIComponent(ABC):
71
73
  self.cursor.save()
72
74
 
73
75
  def _loop(self, break_keys: List[Keyboard] = None) -> Keyboard:
74
- """Loop and await for a keypress. Render the component if required."""
76
+ """Loop and wait for a keypress. Render the component if required."""
75
77
 
76
- break_keys = break_keys or [Keyboard.VK_ESC, Keyboard.VK_ENTER]
78
+ break_keys = break_keys or Keyboard.break_keys()
77
79
  keypress = Keyboard.VK_NONE
78
80
 
79
81
  # Wait for user interaction
80
82
  while not self._done and keypress not in break_keys:
83
+
81
84
  # Menu Renderization
82
85
  if self._re_render:
83
86
  self.render()
84
-
85
87
  # Navigation input
86
88
  keypress = self.handle_keypress()
87
89
 
88
90
  self.cursor.end()
89
- self.writeln("%MOD(0)%%EOL%")
91
+ self.cursor.erase(Direction.DOWN)
92
+ self.cursor.reset_mode()
93
+ self.cursor.writeln('\n')
90
94
 
91
95
  return keypress
92
96
 
@@ -1,6 +1,6 @@
1
1
  # _*_ coding: utf-8 _*_
2
2
  #
3
- # hspylib-clitt v0.9.105
3
+ # hspylib-clitt v0.9.106
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.105'
11
+ __version__ = '0.9.106'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hspylib-clitt
3
- Version: 0.9.105
3
+ Version: 0.9.106
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.105/gray)](CHANGELOG.md#unreleased)
38
+ [![Release](https://badgen.net/badge/release/v0.9.106/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.105