listpick 0.1.14.10__py3-none-any.whl → 0.1.14.11__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 listpick might be problematic. Click here for more details.

listpick/listpick_app.py CHANGED
@@ -188,7 +188,6 @@ class Picker:
188
188
  sheet_index = 0,
189
189
  sheet_states = [{}],
190
190
 
191
- redraw_screen_accessory: Callable = lambda : None,
192
191
 
193
192
  ):
194
193
  self.stdscr = stdscr
@@ -338,7 +337,6 @@ class Picker:
338
337
  self.sheet_states = sheet_states
339
338
  self.sheets = sheets
340
339
 
341
- self.redraw_screen_accessory = redraw_screen_accessory
342
340
  self.initialise_picker_state(reset_colours=self.reset_colours)
343
341
 
344
342
  # Note: We have to set the footer after initialising the picker state so that the footer can use the get_function_data method
@@ -752,7 +750,6 @@ class Picker:
752
750
  def draw_screen_(self, indexed_items: list[Tuple[int, list[str]]], highlights: list[dict] = [{}], clear: bool = True) -> None:
753
751
  """ Draw Picker screen. """
754
752
 
755
- self.redraw_screen_accessory()
756
753
  self.logger.debug("Draw screen.")
757
754
 
758
755
  if clear:
@@ -1242,7 +1239,6 @@ class Picker:
1242
1239
  "sheets": self.sheets,
1243
1240
  "sheet_name": self.sheet_name,
1244
1241
  "sheet_states": self.sheet_states,
1245
- "redraw_screen_accessory": self.redraw_screen_accessory,
1246
1242
  }
1247
1243
  return function_data
1248
1244
 
@@ -1277,7 +1273,6 @@ class Picker:
1277
1273
  "centre_in_terminal_vertical",
1278
1274
  "centre_in_cols",
1279
1275
  "centre_in_terminal",
1280
- "redraw_screen_accessory",
1281
1276
  ]
1282
1277
 
1283
1278
  for var in variables:
listpick/ui/build_help.py CHANGED
@@ -7,16 +7,18 @@ Author: GrimAndGreedy
7
7
  License: MIT
8
8
  """
9
9
 
10
- from listpick.ui.keys import picker_keys
10
+ from listpick.ui.keys import picker_keys, notification_keys
11
11
  import curses
12
12
  import logging
13
+ from listpick.utils import keycodes
13
14
 
14
15
  logger = logging.getLogger('picker_log')
15
16
 
16
- def build_help_rows(keys_dict: dict) -> list[list[str]]:
17
+ def build_help_rows(keys_dict: dict, debug: bool = False) -> list[list[str]]:
17
18
  """ Build help rows based on the keys_dict. """
18
19
 
19
20
  logger.info(f"function: build_help_rows() (build_help.py)")
21
+
20
22
  ## Key names
21
23
  special_keys = {
22
24
 
@@ -35,16 +37,35 @@ def build_help_rows(keys_dict: dict) -> list[list[str]]:
35
37
  ord('\n'): "\n",
36
38
  curses.KEY_DC: "Delete",
37
39
  383: "Shift+Delete",
40
+ ord("\t"): "Tab",
41
+ curses.KEY_BACKSPACE: "Backspace",
42
+ keycodes.META_BS: "Alt+Backspace",
38
43
  }
39
44
 
40
45
  # Ctrl + [a-z]
41
46
  for i in range(26):
42
47
  special_keys[i+1] = f"Ctrl+{chr(ord('a')+i)}"
48
+ if i == 8:
49
+ special_keys[i+1] = f"Tab/Ctrl+{chr(ord('a')+i)}"
50
+
43
51
 
44
52
  # F1-F12
45
53
  for i in range(12):
46
54
  special_keys[curses.KEY_F1+i] = f"F{i+1}"
47
55
 
56
+ # Alt+[a-z]
57
+ for i in range(26):
58
+ special_keys[keycodes.META_a +i] = f"Alt+{chr(ord('a')+i)}"
59
+
60
+ # Alt+[A-Z]
61
+ for i in range(26):
62
+ special_keys[keycodes.META_A +i] = f"Alt+{chr(ord('A')+i)}"
63
+
64
+ # Alt+[0-9]
65
+ for i in range(10):
66
+ special_keys[keycodes.META_0] = f"Alt+{i}"
67
+
68
+
48
69
  ## Key descriptions
49
70
  help_descriptions = {
50
71
  "refresh": "Refresh the screen.",
@@ -119,14 +140,16 @@ def build_help_rows(keys_dict: dict) -> list[list[str]]:
119
140
  "info": "Display info screen.",
120
141
  "file_next": "Go to the next open file.",
121
142
  "file_prev": "Go to the previous open file.",
143
+ "sheet_next": "Go to the next sheet.",
144
+ "sheet_prev": "Go to the previous sheet.",
122
145
  }
123
146
  sections = {
124
147
  "Navigation:": [ "cursor_down", "cursor_up", "half_page_up", "half_page_down", "page_up", "page_down", "cursor_bottom", "cursor_top", "five_up", "five_down", "scroll_right", "scroll_left", "scroll_far_right", "scroll_far_left" ],
125
148
  "Selection:": [ "toggle_select", "select_all", "select_none", "visual_selection_toggle", "visual_deselection_toggle", "enter" ],
126
149
  "UI:": [ "toggle_footer", "redraw_screen", "decrease_lines_per_page", "increase_lines_per_page", "increase_column_width", "decrease_column_width", "notification_toggle" ],
127
150
  "Sort:": [ "cycle_sort_method", "cycle_sort_method_reverse", "cycle_sort_order", ] ,
128
- "Data manipulation:": [ "delete", "delete_column", "edit", "edit_picker", "edit_ipython", "add_column", "add_row" ],
129
- "Filter and sort:": [ "filter_input", "search_input", "continue_search_forward", "continue_search_backward", ] ,
151
+ "Data manipulation:": [ "delete", "delete_column", "edit", "edit_picker", "edit_ipython", "add_column_before", "add_column_after", "add_row_before", "add_row_after"],
152
+ "Filter and sort:": [ "filter_input", "x", "search_input", "continue_search_forward", "continue_search_backward", ] ,
130
153
  "Settings:": [ "settings_input", "settings_options" ],
131
154
  "Cancel:": [ "opts_input", "opts_select", "mode_next", "mode_prev", "pipe_input", "reset_opts", "col_select", "col_select_next", "col_select_prev", "col_hide" ],
132
155
  "Save, load, copy and paste:": [ "save", "load", "open", "copy", "paste" ],
@@ -148,36 +171,48 @@ def build_help_rows(keys_dict: dict) -> list[list[str]]:
148
171
  section_rows = []
149
172
 
150
173
  for operation in section_operations:
151
- try:
152
- keys = [chr(int(key)) if key not in special_keys else special_keys[key] for key in keys_dict[operation]]
174
+ keys = []
175
+ if operation in keys_dict:
176
+ for key in keys_dict[operation]:
177
+ if key in special_keys:
178
+ keys.append(special_keys[key])
179
+ else:
180
+ try:
181
+ keys.append(chr(int(key)))
182
+ except Exception as e:
183
+ keys.append(f"keycode={key}")
184
+ if debug: print(f"Error chr({key}): {e}")
185
+ else:
186
+ if debug: print(f"Note that {operation} is not in the keys_dict")
187
+ continue
188
+
189
+
190
+
191
+ if operation in help_descriptions:
153
192
  description = help_descriptions[operation]
154
- row = [f" {str(keys)[1:-1]}", description]
155
- section_rows.append(row)
156
- except:
157
- pass
193
+ else:
194
+ if debug: print(f"Operation={operation} has no description.")
195
+ description = "..."
196
+
197
+ row = [f" {str(keys)[1:-1]}", description]
198
+ section_rows.append(row)
158
199
  if section_rows:
159
200
  items.append([section_name, ""])
160
201
  items += section_rows
161
202
  items.append(["",""])
162
203
 
163
- # [[key_name, key_function_description], ...]
164
- # for val, keys in keys_dict.items():
165
- # try:
166
- # row = [[chr(int(key)) if key not in special_keys else special_keys[key] for key in keys], help_descriptions[val]]
167
- # items.append(row)
168
- # except:
169
- # pass
170
-
171
204
  return items
172
205
 
173
206
  if __name__ == "__main__":
174
- from listpick.listpick_app import Picker, start_curses, close_curses
175
- items = build_help_rows(picker_keys)
176
- stdscr = start_curses()
177
- x = Picker(
178
- stdscr,
179
- items=items
180
- )
181
- x.run()
182
-
183
- close_curses(stdscr)
207
+ items = build_help_rows(picker_keys, debug=True)
208
+ items = build_help_rows(notification_keys, debug=True)
209
+
210
+ # from listpick.listpick_app import Picker, start_curses, close_curses
211
+ # stdscr = start_curses()
212
+ # x = Picker(
213
+ # stdscr,
214
+ # items=items
215
+ # )
216
+ # x.run()
217
+ #
218
+ # close_curses(stdscr)
listpick/ui/footer.py CHANGED
@@ -85,6 +85,9 @@ class StandardFooter(Footer):
85
85
  self.sheets_y -= 1
86
86
 
87
87
  self.files_y = h-1
88
+ if state["search_query"] and self.height < 3:
89
+ self.height = 3
90
+
88
91
 
89
92
  def draw(self, h, w):
90
93
  state = self.get_state()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: listpick
3
- Version: 0.1.14.10
3
+ Version: 0.1.14.11
4
4
  Summary: Listpick is a powerful TUI data tool for creating TUI apps or viewing/comparing tabulated data.
5
5
  Home-page: https://github.com/grimandgreedy/listpick
6
6
  Author: Grim
@@ -1,9 +1,9 @@
1
1
  listpick/__init__.py,sha256=ExXc97-bibodH--wlwpQivl0zCNR5D1hvpvrf7OBofU,154
2
2
  listpick/__main__.py,sha256=wkCjDdqw093W27yWwnlC3nG_sMRKaIad7hHHWy0RBgY,193
3
- listpick/listpick_app.py,sha256=SL9lgTIoTYHi3fcs01HFKBoCnxEUMHPkZHxW_nuCFxI,187280
3
+ listpick/listpick_app.py,sha256=C17ql0WrRDuNhJs8EitiwR86dxM4uSsy8jof0nBtLU4,187002
4
4
  listpick/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- listpick/ui/build_help.py,sha256=8QtsRosIE2IMagRc_remzmwSWpCurFgLenLL7w1ly94,8949
6
- listpick/ui/footer.py,sha256=ZM5OWCxOZqy5RG6tFTe1ipvu9PRu6Gh3JCA8KXBR_Wc,15004
5
+ listpick/ui/build_help.py,sha256=3cgthxOOBl9evsgea5gVtIacuwbL68_FmtyWyJK6Re8,10142
6
+ listpick/ui/footer.py,sha256=9oJm95pOCxMEoS7Y-77G3D3dPGK4NnsqPMEAtaOpJco,15087
7
7
  listpick/ui/help_screen.py,sha256=zbfGIgb-IXtATpl4_Sx7nPbsnRXZ7eiMYlCKGS9EFmw,5608
8
8
  listpick/ui/input_field.py,sha256=ylf3fiLXdAD4pueHWfzIrlwaRb9f5zm8f1UGkEPBxgM,30539
9
9
  listpick/ui/keys.py,sha256=7ZhJfsSatpk-jwfXj_FvzgQsQdUoF7JkD5Mniu9XZ0o,13328
@@ -25,9 +25,9 @@ listpick/utils/sorting.py,sha256=WZZiVlVA3Zkcpwji3U5SNFlQ14zVEk3cZJtQirBkecQ,532
25
25
  listpick/utils/table_to_list_of_lists.py,sha256=XBj7eGBDF15BRME-swnoXyOfZWxXCxrXp0pzsBfcJ5g,12224
26
26
  listpick/utils/user_input.py,sha256=oyJZPAwA7UGAclPhdPL44tKnPIVNHWhX-tZEnCdBKC0,4318
27
27
  listpick/utils/utils.py,sha256=McOl9uT3jh7l4TIWeSd8ZGjK_e7r0YZF0Gl20yI6fl0,13873
28
- listpick-0.1.14.10.dist-info/licenses/LICENSE.txt,sha256=2mP-MRHJptADDNE9VInMNg1tE-C6Qv93Z4CCQKrpg9w,1061
29
- listpick-0.1.14.10.dist-info/METADATA,sha256=JBhvFd-3BZN7u_19PRPeNos_bXLzEdpAwp5tbUH0_Q8,8091
30
- listpick-0.1.14.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
31
- listpick-0.1.14.10.dist-info/entry_points.txt,sha256=-QCf_BKIkUz35Y9nkYpjZWs2Qg0KfRna2PAs5DnF6BE,43
32
- listpick-0.1.14.10.dist-info/top_level.txt,sha256=5mtsGEz86rz3qQDe0D463gGjAfSp6A3EWg4J4AGYr-Q,9
33
- listpick-0.1.14.10.dist-info/RECORD,,
28
+ listpick-0.1.14.11.dist-info/licenses/LICENSE.txt,sha256=2mP-MRHJptADDNE9VInMNg1tE-C6Qv93Z4CCQKrpg9w,1061
29
+ listpick-0.1.14.11.dist-info/METADATA,sha256=WOGtBxUJ_yXOIssu5d6EiT6NQVOga-EuXFBsmYY9Y9I,8091
30
+ listpick-0.1.14.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
31
+ listpick-0.1.14.11.dist-info/entry_points.txt,sha256=-QCf_BKIkUz35Y9nkYpjZWs2Qg0KfRna2PAs5DnF6BE,43
32
+ listpick-0.1.14.11.dist-info/top_level.txt,sha256=5mtsGEz86rz3qQDe0D463gGjAfSp6A3EWg4J4AGYr-Q,9
33
+ listpick-0.1.14.11.dist-info/RECORD,,