listpick 0.1.15.7__tar.gz → 0.1.15.8__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 listpick might be problematic. Click here for more details.
- {listpick-0.1.15.7 → listpick-0.1.15.8}/CHANGELOG.md +3 -0
- {listpick-0.1.15.7/src/listpick.egg-info → listpick-0.1.15.8}/PKG-INFO +1 -1
- {listpick-0.1.15.7 → listpick-0.1.15.8}/setup.py +1 -1
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/listpick_app.py +96 -54
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/pane/pane_functions.py +23 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/ui/build_help.py +2 -1
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/ui/keys.py +1 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/ui/picker_colours.py +1 -1
- {listpick-0.1.15.7 → listpick-0.1.15.8/src/listpick.egg-info}/PKG-INFO +1 -1
- {listpick-0.1.15.7 → listpick-0.1.15.8}/.gitignore +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/LICENSE.txt +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/README.md +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/TODO.md +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/assets/aria2tui_screenshot.png +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/assets/file_compare.png +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/assets/lpfman.png +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/examples/data_generation/list_files.toml +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/examples/data_generation/list_files_empty.toml +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/examples/data_generation/video_duplicates.toml +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/examples/data_generation/video_mediainfo.toml +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/examples/input_files/polynomials.tsv +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/examples/input_guides/gnuplot_graph.md +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/examples/picker/auxiallary_files/2024-25_Premier_League.pkl +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/examples/picker/footer_string_example.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/examples/picker/picker_example.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/examples/picker/template.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/examples/picker/wikipedia_table.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/listpick.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/requirements.txt +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/setup.cfg +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/__init__.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/__main__.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/pane/__init__.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/pane/get_data.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/pane/pane_utils.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/ui/__init__.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/ui/footer.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/ui/help_screen.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/ui/input_field.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/__init__.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/clipboard_operations.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/config.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/dump.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/filtering.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/generate_data.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/graphing.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/keycodes.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/options_selectors.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/paste_operations.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/picker_log.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/search_and_filter_utils.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/searching.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/sorting.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/table_to_list_of_lists.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/user_input.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick/utils/utils.py +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick.egg-info/SOURCES.txt +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick.egg-info/dependency_links.txt +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick.egg-info/entry_points.txt +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick.egg-info/requires.txt +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/src/listpick.egg-info/top_level.txt +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/tests/kitty_control.sh +0 -0
- {listpick-0.1.15.7 → listpick-0.1.15.8}/tests/sorting_dates.csv +0 -0
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# CHANGELOG.md
|
|
2
2
|
Note that the changes between 0.1.11.0 and 1.1.12.0 are listed under 0.1.11
|
|
3
3
|
|
|
4
|
+
## [0.1.15.7] 2025-07-29
|
|
5
|
+
- We can now have multiple right panes which can be cycled through by pressing ".
|
|
6
|
+
|
|
4
7
|
## [0.1.15.7] 2025-07-28
|
|
5
8
|
- Fixed header column alignment problems which popped up with some datasets.
|
|
6
9
|
|
|
@@ -16,7 +16,7 @@ with open("README.md", "r", encoding = "utf-8") as fh:
|
|
|
16
16
|
|
|
17
17
|
setuptools.setup(
|
|
18
18
|
name = "listpick",
|
|
19
|
-
version = "0.1.15.
|
|
19
|
+
version = "0.1.15.8",
|
|
20
20
|
author = "Grim",
|
|
21
21
|
author_email = "grimandgreedy@protonmail.com",
|
|
22
22
|
description = "Listpick is a powerful TUI data tool for creating TUI apps or viewing/comparing tabulated data.",
|
|
@@ -23,6 +23,7 @@ import logging
|
|
|
23
23
|
import tty
|
|
24
24
|
import select
|
|
25
25
|
|
|
26
|
+
from listpick.pane.pane_utils import get_file_attributes
|
|
26
27
|
from listpick.ui.picker_colours import get_colours, get_help_colours, get_notification_colours, get_theme_count, get_fallback_colours
|
|
27
28
|
from listpick.utils.options_selectors import default_option_input, output_file_option_selector, default_option_selector
|
|
28
29
|
from listpick.utils.table_to_list_of_lists import *
|
|
@@ -191,16 +192,8 @@ class Picker:
|
|
|
191
192
|
sheet_states: list = [{}],
|
|
192
193
|
|
|
193
194
|
split_right: bool = False,
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
split_right_auto_refresh: bool = False,
|
|
197
|
-
split_right_refresh_data: Callable = lambda old_data, arg_dict: [],
|
|
198
|
-
split_right_refresh_data_timer: float = 1.0,
|
|
199
|
-
split_right_data: list = [],
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
195
|
+
right_panes: list = [],
|
|
196
|
+
right_pane_index: int = 0,
|
|
204
197
|
):
|
|
205
198
|
self.stdscr = stdscr
|
|
206
199
|
self.items = items
|
|
@@ -350,13 +343,8 @@ class Picker:
|
|
|
350
343
|
self.sheets = sheets
|
|
351
344
|
|
|
352
345
|
self.split_right = split_right
|
|
353
|
-
self.
|
|
354
|
-
self.
|
|
355
|
-
self.split_right_auto_refresh = split_right_auto_refresh
|
|
356
|
-
self.split_right_refresh_data = split_right_refresh_data
|
|
357
|
-
self.split_right_refresh_data_timer = split_right_refresh_data_timer
|
|
358
|
-
self.split_right_data = split_right_data
|
|
359
|
-
|
|
346
|
+
self.right_panes = right_panes
|
|
347
|
+
self.right_pane_index = right_pane_index
|
|
360
348
|
self.initialise_picker_state(reset_colours=self.reset_colours)
|
|
361
349
|
|
|
362
350
|
# Note: We have to set the footer after initialising the picker state so that the footer can use the get_function_data method
|
|
@@ -426,8 +414,9 @@ class Picker:
|
|
|
426
414
|
## self.top_space
|
|
427
415
|
h, w = self.stdscr.getmaxyx()
|
|
428
416
|
self.term_h, self.term_w = self.stdscr.getmaxyx()
|
|
429
|
-
if self.split_right and
|
|
430
|
-
|
|
417
|
+
if self.split_right and len(self.right_panes):
|
|
418
|
+
proportion = self.right_panes[self.right_pane_index]["proportion"]
|
|
419
|
+
self.rows_w, self.rows_h = int(self.term_w*proportion), self.term_h
|
|
431
420
|
else:
|
|
432
421
|
self.rows_w, self.rows_h = self.term_w, self.term_h
|
|
433
422
|
|
|
@@ -787,8 +776,9 @@ class Picker:
|
|
|
787
776
|
|
|
788
777
|
h, w = self.stdscr.getmaxyx()
|
|
789
778
|
self.term_h, self.term_w = self.stdscr.getmaxyx()
|
|
790
|
-
if self.split_right and
|
|
791
|
-
|
|
779
|
+
if self.split_right and len(self.right_panes):
|
|
780
|
+
proportion = self.right_panes[self.right_pane_index]["proportion"]
|
|
781
|
+
self.rows_w, self.rows_h = int(self.term_w*proportion), self.term_h
|
|
792
782
|
else:
|
|
793
783
|
self.rows_w, self.rows_h = self.term_w, self.term_h
|
|
794
784
|
|
|
@@ -1189,8 +1179,10 @@ class Picker:
|
|
|
1189
1179
|
self.stdscr.addstr(self.term_h - 1, self.term_w-footer_string_width-1, " "*footer_string_width, curses.color_pair(self.colours_start+24))
|
|
1190
1180
|
self.stdscr.addstr(self.term_h - 1, self.term_w-footer_string_width-1, f"{disp_string}", curses.color_pair(self.colours_start+24))
|
|
1191
1181
|
|
|
1192
|
-
if self.split_right and
|
|
1193
|
-
self.
|
|
1182
|
+
if self.split_right and len(self.right_panes):
|
|
1183
|
+
draw_pane = self.right_panes[self.right_pane_index]["display"]
|
|
1184
|
+
data = self.right_panes[self.right_pane_index]["data"]
|
|
1185
|
+
draw_pane(
|
|
1194
1186
|
self.stdscr,
|
|
1195
1187
|
x = self.rows_w,
|
|
1196
1188
|
y = self.top_space - int(bool(self.show_header and self.header)),
|
|
@@ -1199,7 +1191,7 @@ class Picker:
|
|
|
1199
1191
|
state = self.get_function_data(),
|
|
1200
1192
|
row = self.indexed_items[self.cursor_pos] if self.indexed_items else [],
|
|
1201
1193
|
cell = self.indexed_items[self.cursor_pos][1][self.selected_column] if self.indexed_items else "",
|
|
1202
|
-
data=
|
|
1194
|
+
data=data,
|
|
1203
1195
|
)
|
|
1204
1196
|
|
|
1205
1197
|
self.stdscr.refresh()
|
|
@@ -1363,12 +1355,9 @@ class Picker:
|
|
|
1363
1355
|
"sheet_name": self.sheet_name,
|
|
1364
1356
|
"sheet_states": self.sheet_states,
|
|
1365
1357
|
"split_right": self.split_right,
|
|
1366
|
-
"
|
|
1367
|
-
"
|
|
1368
|
-
|
|
1369
|
-
"split_right_refresh_data_timer": self.split_right_refresh_data_timer,
|
|
1370
|
-
"split_right_refresh_data": self.split_right_refresh_data,
|
|
1371
|
-
"split_right_data": self.split_right_data,
|
|
1358
|
+
"right_panes": self.right_panes,
|
|
1359
|
+
"right_pane_index": self.right_pane_index,
|
|
1360
|
+
|
|
1372
1361
|
}
|
|
1373
1362
|
return function_data
|
|
1374
1363
|
|
|
@@ -1404,8 +1393,6 @@ class Picker:
|
|
|
1404
1393
|
"centre_in_cols",
|
|
1405
1394
|
"centre_in_terminal",
|
|
1406
1395
|
"split_right",
|
|
1407
|
-
"split_right_proportion",
|
|
1408
|
-
"split_right_function",
|
|
1409
1396
|
]
|
|
1410
1397
|
|
|
1411
1398
|
for var in variables:
|
|
@@ -1499,6 +1486,7 @@ class Picker:
|
|
|
1499
1486
|
"number_columns": False,
|
|
1500
1487
|
"reset_colours": False,
|
|
1501
1488
|
"split_right": False,
|
|
1489
|
+
"cell_cursor": False,
|
|
1502
1490
|
}
|
|
1503
1491
|
while True:
|
|
1504
1492
|
h, w = stdscr.getmaxyx()
|
|
@@ -1530,6 +1518,8 @@ class Picker:
|
|
|
1530
1518
|
|
|
1531
1519
|
if not message: message = "!!"
|
|
1532
1520
|
submenu_items = [" "+message[i*message_width:(i+1)*message_width] for i in range(len(message)//message_width+1)]
|
|
1521
|
+
for i in range(len(submenu_items)):
|
|
1522
|
+
submenu_items[i] = f"{submenu_items[i]:^{message_width}}"
|
|
1533
1523
|
|
|
1534
1524
|
notification_remap_keys = {
|
|
1535
1525
|
curses.KEY_RESIZE: curses.KEY_F5,
|
|
@@ -1555,6 +1545,7 @@ class Picker:
|
|
|
1555
1545
|
"cancel_is_back": True,
|
|
1556
1546
|
"reset_colours": False,
|
|
1557
1547
|
"split_right": False,
|
|
1548
|
+
"cell_cursor": False,
|
|
1558
1549
|
|
|
1559
1550
|
}
|
|
1560
1551
|
OptionPicker = Picker(submenu_win, **notification_data)
|
|
@@ -1695,6 +1686,9 @@ class Picker:
|
|
|
1695
1686
|
elif setting == "pane":
|
|
1696
1687
|
self.toggle_right_pane()
|
|
1697
1688
|
|
|
1689
|
+
elif setting == "pane_cycle":
|
|
1690
|
+
self.cycle_right_pane()
|
|
1691
|
+
|
|
1698
1692
|
elif setting.startswith("cwd="):
|
|
1699
1693
|
os.chdir(os.path.expandvars(os.path.expanduser(setting[len("cwd="):])))
|
|
1700
1694
|
elif setting.startswith("hl"):
|
|
@@ -2313,10 +2307,16 @@ class Picker:
|
|
|
2313
2307
|
self.load_sheet(self.loaded_file, sheet_number=self.sheet_index)
|
|
2314
2308
|
|
|
2315
2309
|
def toggle_right_pane(self):
|
|
2316
|
-
if
|
|
2310
|
+
if len(self.right_panes):
|
|
2317
2311
|
self.split_right = not self.split_right
|
|
2312
|
+
if self.right_panes[self.right_pane_index]["data"] in [[], None, {}]:
|
|
2313
|
+
self.right_panes[self.right_pane_index]["data"] = self.right_panes[self.right_pane_index]["get_data"](self.right_panes[self.right_pane_index]["data"], self.get_function_data())
|
|
2318
2314
|
|
|
2319
2315
|
|
|
2316
|
+
def cycle_right_pane(self, increment=1):
|
|
2317
|
+
if len(self.right_panes) > 1:
|
|
2318
|
+
self.right_pane_index = (self.right_pane_index+1)%len(self.right_panes)
|
|
2319
|
+
|
|
2320
2320
|
def run(self) -> Tuple[list[int], str, dict]:
|
|
2321
2321
|
""" Run the picker. """
|
|
2322
2322
|
self.logger.info(f"function: run()")
|
|
@@ -2330,7 +2330,7 @@ class Picker:
|
|
|
2330
2330
|
|
|
2331
2331
|
initial_time = time.time()
|
|
2332
2332
|
initial_time_footer = time.time()-self.footer_timer
|
|
2333
|
-
initial_split_time = time.time()-
|
|
2333
|
+
initial_split_time = time.time()-200
|
|
2334
2334
|
|
|
2335
2335
|
if self.startup_notification:
|
|
2336
2336
|
self.notification(self.stdscr, message=self.startup_notification)
|
|
@@ -2366,8 +2366,9 @@ class Picker:
|
|
|
2366
2366
|
|
|
2367
2367
|
h, w = self.stdscr.getmaxyx()
|
|
2368
2368
|
self.term_h, self.term_w = self.stdscr.getmaxyx()
|
|
2369
|
-
if self.split_right and
|
|
2370
|
-
|
|
2369
|
+
if self.split_right and len(self.right_panes):
|
|
2370
|
+
proportion = self.right_panes[self.right_pane_index]["proportion"]
|
|
2371
|
+
self.rows_w, self.rows_h = int(self.term_w*proportion), self.term_h
|
|
2371
2372
|
else:
|
|
2372
2373
|
self.rows_w, self.rows_h = self.term_w, self.term_h
|
|
2373
2374
|
def terminal_resized(old_w, old_h) -> bool:
|
|
@@ -2391,8 +2392,10 @@ class Picker:
|
|
|
2391
2392
|
|
|
2392
2393
|
h, w = self.stdscr.getmaxyx()
|
|
2393
2394
|
self.term_h, self.term_w = self.stdscr.getmaxyx()
|
|
2394
|
-
|
|
2395
|
-
|
|
2395
|
+
|
|
2396
|
+
if self.split_right and len(self.right_panes):
|
|
2397
|
+
proportion = self.right_panes[self.right_pane_index]["proportion"]
|
|
2398
|
+
self.rows_w, self.rows_h = int(self.term_w*proportion), self.term_h
|
|
2396
2399
|
else:
|
|
2397
2400
|
self.rows_w, self.rows_h = self.term_w, self.term_h
|
|
2398
2401
|
|
|
@@ -2447,8 +2450,10 @@ class Picker:
|
|
|
2447
2450
|
initial_time_footer = time.time()
|
|
2448
2451
|
self.draw_screen(self.indexed_items, self.highlights)
|
|
2449
2452
|
|
|
2450
|
-
if self.split_right and self.
|
|
2451
|
-
|
|
2453
|
+
if self.split_right and len(self.right_panes) and self.right_panes[self.right_pane_index]["auto_refresh"] and ((time.time() - initial_split_time) > self.right_panes[self.right_pane_index]["refresh_time"]):
|
|
2454
|
+
get_data = self.right_panes[self.right_pane_index]["get_data"]
|
|
2455
|
+
data = self.right_panes[self.right_pane_index]["data"]
|
|
2456
|
+
self.right_panes[self.right_pane_index]["data"] = get_data(data, self.get_function_data())
|
|
2452
2457
|
initial_split_time = time.time()
|
|
2453
2458
|
|
|
2454
2459
|
if self.check_key("help", key, self.keys_dict):
|
|
@@ -3316,6 +3321,9 @@ class Picker:
|
|
|
3316
3321
|
elif self.check_key("toggle_right_pane", key, self.keys_dict):
|
|
3317
3322
|
self.toggle_right_pane()
|
|
3318
3323
|
|
|
3324
|
+
elif self.check_key("cycle_right_pane", key, self.keys_dict):
|
|
3325
|
+
self.cycle_right_pane()
|
|
3326
|
+
|
|
3319
3327
|
elif self.check_key("pipe_input", key, self.keys_dict):
|
|
3320
3328
|
self.logger.info(f"key_function pipe_input")
|
|
3321
3329
|
# usrtxt = "xargs -d '\n' -I{} "
|
|
@@ -3839,20 +3847,54 @@ def main() -> None:
|
|
|
3839
3847
|
# function_data["debug"] = True
|
|
3840
3848
|
# function_data["debug_level"] = 1
|
|
3841
3849
|
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
3849
|
-
|
|
3850
|
-
|
|
3851
|
-
|
|
3852
|
-
|
|
3853
|
-
|
|
3854
|
-
|
|
3855
|
-
|
|
3850
|
+
function_data["split_right"] = False
|
|
3851
|
+
function_data["right_panes"] = [
|
|
3852
|
+
# Graph or random numbers generated each second
|
|
3853
|
+
{
|
|
3854
|
+
"proportion": 2/3,
|
|
3855
|
+
"auto_refresh": True,
|
|
3856
|
+
"get_data": data_refresh_randint,
|
|
3857
|
+
"display": right_split_graph,
|
|
3858
|
+
"data": [],
|
|
3859
|
+
"refresh_time": 1.0,
|
|
3860
|
+
},
|
|
3861
|
+
# list of numbers
|
|
3862
|
+
{
|
|
3863
|
+
"proportion": 2/3,
|
|
3864
|
+
"auto_refresh": False,
|
|
3865
|
+
"get_data": data_refresh_randint_title,
|
|
3866
|
+
"display": right_split_display_list,
|
|
3867
|
+
"data": ["Files", [str(x) for x in range(100)]],
|
|
3868
|
+
"refresh_time": 1.0,
|
|
3869
|
+
},
|
|
3870
|
+
# File attribures
|
|
3871
|
+
{
|
|
3872
|
+
"proportion": 2/3,
|
|
3873
|
+
"auto_refresh": False,
|
|
3874
|
+
"get_data": lambda data, state: [],
|
|
3875
|
+
"display": right_split_file_attributes,
|
|
3876
|
+
"data": ["Files", [str(x) for x in range(100)]],
|
|
3877
|
+
"refresh_time": 1.0,
|
|
3878
|
+
},
|
|
3879
|
+
# List of random numbers generated each second
|
|
3880
|
+
{
|
|
3881
|
+
"proportion": 1/2,
|
|
3882
|
+
"auto_refresh": True,
|
|
3883
|
+
"get_data": data_refresh_randint_title,
|
|
3884
|
+
"display": right_split_display_list,
|
|
3885
|
+
"data": ["Files", []],
|
|
3886
|
+
"refresh_time": 0.1,
|
|
3887
|
+
},
|
|
3888
|
+
# Nopane
|
|
3889
|
+
{
|
|
3890
|
+
"proportion": 1/3,
|
|
3891
|
+
"auto_refresh": False,
|
|
3892
|
+
"get_data": lambda data, state: [],
|
|
3893
|
+
"display": lambda scr, x, y, w, h, state, row, cell, data: [],
|
|
3894
|
+
"data": ["Files", []],
|
|
3895
|
+
"refresh_time": 0.1,
|
|
3896
|
+
},
|
|
3897
|
+
]
|
|
3856
3898
|
|
|
3857
3899
|
stdscr = start_curses()
|
|
3858
3900
|
try:
|
|
@@ -29,6 +29,12 @@ def right_split_file_attributes(stdscr, x, y, w, h, state, row, cell, past_data:
|
|
|
29
29
|
for j in range(h):
|
|
30
30
|
stdscr.addstr(j+y, x, ' ', curses.color_pair(state["colours_start"]+16))
|
|
31
31
|
|
|
32
|
+
# Display pane count
|
|
33
|
+
pane_count = len(state["right_panes"])
|
|
34
|
+
pane_index = state["right_pane_index"]
|
|
35
|
+
if pane_count > 1:
|
|
36
|
+
s = f" {pane_index+1}/{pane_count} "
|
|
37
|
+
stdscr.addstr(y+h-1, x+w-len(s)-1, s, curses.color_pair(state["colours_start"]+20))
|
|
32
38
|
|
|
33
39
|
# Filename/cursor cell value
|
|
34
40
|
stdscr.addstr(y+2, x+2, cell[:w-3])
|
|
@@ -58,6 +64,14 @@ def right_split_graph(stdscr, x, y, w, h, state, row, cell, past_data: list = []
|
|
|
58
64
|
for j in range(h):
|
|
59
65
|
stdscr.addstr(j+y, x, ' ', curses.color_pair(state["colours_start"]+16))
|
|
60
66
|
|
|
67
|
+
|
|
68
|
+
# Display pane count
|
|
69
|
+
pane_count = len(state["right_panes"])
|
|
70
|
+
pane_index = state["right_pane_index"]
|
|
71
|
+
if pane_count > 1:
|
|
72
|
+
s = f" {pane_index+1}/{pane_count} "
|
|
73
|
+
stdscr.addstr(y+h-1, x+w-len(s)-1, s, curses.color_pair(state["colours_start"]+20))
|
|
74
|
+
|
|
61
75
|
try:
|
|
62
76
|
import plotille as plt
|
|
63
77
|
except:
|
|
@@ -66,6 +80,7 @@ def right_split_graph(stdscr, x, y, w, h, state, row, cell, past_data: list = []
|
|
|
66
80
|
return None
|
|
67
81
|
|
|
68
82
|
|
|
83
|
+
|
|
69
84
|
# x_vals, y_vals = list(range(100)), [x**2 for x in range(100)]
|
|
70
85
|
if data in [[], {}, None]:
|
|
71
86
|
return None
|
|
@@ -96,6 +111,14 @@ def right_split_display_list(stdscr, x, y, w, h, state, row, cell, past_data: li
|
|
|
96
111
|
for j in range(h):
|
|
97
112
|
stdscr.addstr(j+y, x, ' ', curses.color_pair(state["colours_start"]+16))
|
|
98
113
|
|
|
114
|
+
|
|
115
|
+
# Display pane count
|
|
116
|
+
pane_count = len(state["right_panes"])
|
|
117
|
+
pane_index = state["right_pane_index"]
|
|
118
|
+
if pane_count > 1:
|
|
119
|
+
s = f" {pane_index+1}/{pane_count} "
|
|
120
|
+
stdscr.addstr(y+h-1, x+w-len(s)-1, s, curses.color_pair(state["colours_start"]+20))
|
|
121
|
+
|
|
99
122
|
if data in [[], {}, None]:
|
|
100
123
|
return None
|
|
101
124
|
|
|
@@ -143,11 +143,12 @@ def build_help_rows(keys_dict: dict, debug: bool = False) -> list[list[str]]:
|
|
|
143
143
|
"sheet_next": "Go to the next sheet.",
|
|
144
144
|
"sheet_prev": "Go to the previous sheet.",
|
|
145
145
|
"toggle_right_pane": "Toggle the right pane",
|
|
146
|
+
"cycle_right_pane": "Cycle through right panes",
|
|
146
147
|
}
|
|
147
148
|
sections = {
|
|
148
149
|
"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" ],
|
|
149
150
|
"Selection:": [ "toggle_select", "select_all", "select_none", "visual_selection_toggle", "visual_deselection_toggle", "enter" ],
|
|
150
|
-
"UI:": [ "toggle_footer", "redraw_screen", "decrease_lines_per_page", "increase_lines_per_page", "increase_column_width", "decrease_column_width", "notification_toggle", "toggle_right_pane"],
|
|
151
|
+
"UI:": [ "toggle_footer", "redraw_screen", "decrease_lines_per_page", "increase_lines_per_page", "increase_column_width", "decrease_column_width", "notification_toggle", "toggle_right_pane", "cycle_right_pane"],
|
|
151
152
|
"Sort:": [ "cycle_sort_method", "cycle_sort_method_reverse", "cycle_sort_order", ] ,
|
|
152
153
|
"Data manipulation:": [ "delete", "delete_column", "edit", "edit_picker", "edit_ipython", "add_column_before", "add_column_after", "add_row_before", "add_row_after"],
|
|
153
154
|
"Filter and sort:": [ "filter_input", "search_input", "continue_search_forward", "continue_search_backward", ] ,
|
|
@@ -340,7 +340,7 @@ def get_notification_colours(pick:int=0) -> Dict[str, int]:
|
|
|
340
340
|
else:
|
|
341
341
|
colours['background'] = 237
|
|
342
342
|
colours['unselected_bg'] = 237
|
|
343
|
-
colours['cursor_bg'] =
|
|
343
|
+
colours['cursor_bg'] = 238
|
|
344
344
|
colours['selected_bg'] = 237
|
|
345
345
|
|
|
346
346
|
return colours
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{listpick-0.1.15.7 → listpick-0.1.15.8}/examples/picker/auxiallary_files/2024-25_Premier_League.pkl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|