tksheet 7.4.4__py3-none-any.whl → 7.4.5__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.
- tksheet/__init__.py +1 -1
- tksheet/column_headers.py +56 -58
- tksheet/constants.py +2 -2
- tksheet/formatters.py +20 -36
- tksheet/functions.py +13 -23
- tksheet/main_table.py +185 -334
- tksheet/other_classes.py +10 -16
- tksheet/row_index.py +87 -65
- tksheet/sheet.py +99 -105
- tksheet/sorting.py +4 -4
- tksheet/text_editor.py +9 -3
- tksheet/top_left_rectangle.py +5 -6
- {tksheet-7.4.4.dist-info → tksheet-7.4.5.dist-info}/METADATA +4 -2
- tksheet-7.4.5.dist-info/RECORD +22 -0
- {tksheet-7.4.4.dist-info → tksheet-7.4.5.dist-info}/WHEEL +1 -1
- tksheet-7.4.4.dist-info/RECORD +0 -22
- {tksheet-7.4.4.dist-info → tksheet-7.4.5.dist-info}/LICENSE.txt +0 -0
- {tksheet-7.4.4.dist-info → tksheet-7.4.5.dist-info}/top_level.txt +0 -0
tksheet/main_table.py
CHANGED
@@ -122,7 +122,7 @@ class MainTable(tk.Canvas):
|
|
122
122
|
self.PAR_height = 0
|
123
123
|
self.cells_cache = None
|
124
124
|
self.table_txt_height, self.index_txt_height, self.header_txt_height = 0, 0, 0
|
125
|
-
self.scrollregion =
|
125
|
+
self.scrollregion = ()
|
126
126
|
self.current_cursor = ""
|
127
127
|
self.ctrl_b1_pressed = False
|
128
128
|
self.b1_pressed_loc = None
|
@@ -164,7 +164,7 @@ class MainTable(tk.Canvas):
|
|
164
164
|
self.hidd_boxes = set()
|
165
165
|
|
166
166
|
self.selection_boxes = {}
|
167
|
-
self.selected =
|
167
|
+
self.selected = ()
|
168
168
|
self.named_spans = {}
|
169
169
|
self.reset_tags()
|
170
170
|
self.cell_options = {}
|
@@ -305,14 +305,13 @@ class MainTable(tk.Canvas):
|
|
305
305
|
self.data = kwargs["data_reference"]
|
306
306
|
else:
|
307
307
|
self.data = []
|
308
|
-
if not self.data
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
)
|
315
|
-
self.data = [list(repeat("", kwargs["total_cols"])) for i in range(kwargs["total_rows"])]
|
308
|
+
if not self.data and (
|
309
|
+
isinstance(kwargs["total_rows"], int)
|
310
|
+
and isinstance(kwargs["total_cols"], int)
|
311
|
+
and kwargs["total_rows"] > 0
|
312
|
+
and kwargs["total_cols"] > 0
|
313
|
+
):
|
314
|
+
self.data = [list(repeat("", kwargs["total_cols"])) for i in range(kwargs["total_rows"])]
|
316
315
|
_header = kwargs["header"] if kwargs["header"] is not None else kwargs["headers"]
|
317
316
|
if isinstance(_header, int):
|
318
317
|
self._headers = _header
|
@@ -336,14 +335,14 @@ class MainTable(tk.Canvas):
|
|
336
335
|
self.set_col_positions(itr=[])
|
337
336
|
self.set_row_positions(itr=[])
|
338
337
|
self.display_rows(
|
339
|
-
rows=kwargs["displayed_rows"],
|
338
|
+
rows=kwargs["displayed_rows"] if isinstance(kwargs["displayed_rows"], list) else [],
|
340
339
|
all_rows_displayed=kwargs["all_rows_displayed"],
|
341
340
|
reset_row_positions=False,
|
342
341
|
deselect_all=False,
|
343
342
|
)
|
344
343
|
self.reset_row_positions()
|
345
344
|
self.display_columns(
|
346
|
-
columns=kwargs["displayed_columns"],
|
345
|
+
columns=kwargs["displayed_columns"] if isinstance(kwargs["displayed_columns"], list) else [],
|
347
346
|
all_columns_displayed=kwargs["all_columns_displayed"],
|
348
347
|
reset_col_positions=False,
|
349
348
|
deselect_all=False,
|
@@ -551,15 +550,7 @@ class MainTable(tk.Canvas):
|
|
551
550
|
self.set_currently_selected(row, column, item=item)
|
552
551
|
else:
|
553
552
|
self.select_cell(row, column, redraw=False)
|
554
|
-
if not self.see(
|
555
|
-
row,
|
556
|
-
column,
|
557
|
-
keep_yscroll=False,
|
558
|
-
keep_xscroll=False,
|
559
|
-
bottom_right_corner=False,
|
560
|
-
check_cell_visibility=True,
|
561
|
-
redraw=True,
|
562
|
-
):
|
553
|
+
if not self.see(row, column):
|
563
554
|
self.refresh()
|
564
555
|
return coords
|
565
556
|
|
@@ -817,7 +808,7 @@ class MainTable(tk.Canvas):
|
|
817
808
|
if self.selected.type_ in ("cells", "columns"):
|
818
809
|
for rn in range(maxrows):
|
819
810
|
row = []
|
820
|
-
for r1, c1,
|
811
|
+
for r1, c1, _, c2 in boxes:
|
821
812
|
datarn = (r1 + rn) if self.all_rows_displayed else self.displayed_rows[r1 + rn]
|
822
813
|
for c in range(c1, c2):
|
823
814
|
datacn = self.datacn(c)
|
@@ -1043,23 +1034,21 @@ class MainTable(tk.Canvas):
|
|
1043
1034
|
added_rows = 0
|
1044
1035
|
added_cols = 0
|
1045
1036
|
total_data_cols = None
|
1046
|
-
if self.PAR.ops.paste_can_expand_x:
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
)
|
1054
|
-
|
1055
|
-
|
1056
|
-
if
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
):
|
1062
|
-
added_rows = self.PAR.ops.paste_insert_row_limit - len(self.row_positions) - 1
|
1037
|
+
if self.PAR.ops.paste_can_expand_x and selected_c + new_data_numcols > len(self.col_positions) - 1:
|
1038
|
+
total_data_cols = self.equalize_data_row_lengths()
|
1039
|
+
added_cols = selected_c + new_data_numcols - len(self.col_positions) + 1
|
1040
|
+
if (
|
1041
|
+
isinstance(self.PAR.ops.paste_insert_column_limit, int)
|
1042
|
+
and self.PAR.ops.paste_insert_column_limit < len(self.col_positions) - 1 + added_cols
|
1043
|
+
):
|
1044
|
+
added_cols = self.PAR.ops.paste_insert_column_limit - len(self.col_positions) - 1
|
1045
|
+
if self.PAR.ops.paste_can_expand_y and selected_r + new_data_numrows > len(self.row_positions) - 1:
|
1046
|
+
added_rows = selected_r + new_data_numrows - len(self.row_positions) + 1
|
1047
|
+
if (
|
1048
|
+
isinstance(self.PAR.ops.paste_insert_row_limit, int)
|
1049
|
+
and self.PAR.ops.paste_insert_row_limit < len(self.row_positions) - 1 + added_rows
|
1050
|
+
):
|
1051
|
+
added_rows = self.PAR.ops.paste_insert_row_limit - len(self.row_positions) - 1
|
1063
1052
|
if selected_c + new_data_numcols > len(self.col_positions) - 1:
|
1064
1053
|
adjusted_new_data_numcols = len(self.col_positions) - 1 - selected_c
|
1065
1054
|
else:
|
@@ -1202,14 +1191,8 @@ class MainTable(tk.Canvas):
|
|
1202
1191
|
event_data=event_data,
|
1203
1192
|
mod_event_boxes=False,
|
1204
1193
|
)
|
1205
|
-
if added_rows
|
1206
|
-
|
1207
|
-
else:
|
1208
|
-
selboxr = selected_r_adjusted_new_data_numrows
|
1209
|
-
if added_cols:
|
1210
|
-
selboxc = selected_c + new_data_numcols
|
1211
|
-
else:
|
1212
|
-
selboxc = selected_c_adjusted_new_data_numcols
|
1194
|
+
selboxr = selected_r + new_data_numrows if added_rows else selected_r_adjusted_new_data_numrows
|
1195
|
+
selboxc = selected_c + new_data_numcols if added_cols else selected_c_adjusted_new_data_numcols
|
1213
1196
|
self.deselect("all", redraw=False)
|
1214
1197
|
self.set_currently_selected(
|
1215
1198
|
*curr_coords,
|
@@ -1225,15 +1208,7 @@ class MainTable(tk.Canvas):
|
|
1225
1208
|
)
|
1226
1209
|
event_data["selection_boxes"] = self.get_boxes()
|
1227
1210
|
event_data["selected"] = self.selected
|
1228
|
-
self.see(
|
1229
|
-
r=selected_r,
|
1230
|
-
c=selected_c,
|
1231
|
-
keep_yscroll=False,
|
1232
|
-
keep_xscroll=False,
|
1233
|
-
bottom_right_corner=False,
|
1234
|
-
check_cell_visibility=True,
|
1235
|
-
redraw=False,
|
1236
|
-
)
|
1211
|
+
self.see(selected_r, selected_c, redraw=False)
|
1237
1212
|
self.refresh()
|
1238
1213
|
if event_data["cells"]["table"] or event_data["added"]["rows"] or event_data["added"]["columns"]:
|
1239
1214
|
self.undo_stack.append(stored_event_dict(event_data))
|
@@ -1421,7 +1396,7 @@ class MainTable(tk.Canvas):
|
|
1421
1396
|
"c",
|
1422
1397
|
)
|
1423
1398
|
# add cell/col kwargs for columns that are new to the span
|
1424
|
-
old_span_idxs =
|
1399
|
+
old_span_idxs = {full_new_idxs[k] for k in range(span["from_c"], oldupto_colrange)}
|
1425
1400
|
for k in range(newfrom, newupto_colrange):
|
1426
1401
|
if k not in old_span_idxs:
|
1427
1402
|
oldidx = full_old_idxs[k]
|
@@ -1659,7 +1634,7 @@ class MainTable(tk.Canvas):
|
|
1659
1634
|
"r",
|
1660
1635
|
)
|
1661
1636
|
# add cell/row kwargs for rows that are new to the span
|
1662
|
-
old_span_idxs =
|
1637
|
+
old_span_idxs = {full_new_idxs[k] for k in range(span["from_r"], oldupto_rowrange)}
|
1663
1638
|
for k in range(newfrom, newupto_rowrange):
|
1664
1639
|
if k not in old_span_idxs:
|
1665
1640
|
oldidx = full_old_idxs[k]
|
@@ -1742,7 +1717,7 @@ class MainTable(tk.Canvas):
|
|
1742
1717
|
# finally, change the span coords
|
1743
1718
|
span["from_r"], span["upto_r"] = newfrom, newupto
|
1744
1719
|
|
1745
|
-
if move_heights and disp_new_idxs:
|
1720
|
+
if (not self.PAR.ops.treeview or not undo_modification) and (move_heights and disp_new_idxs):
|
1746
1721
|
self.set_row_positions(
|
1747
1722
|
itr=move_elements_by_mapping_gen(
|
1748
1723
|
self.get_row_heights(),
|
@@ -2048,15 +2023,7 @@ class MainTable(tk.Canvas):
|
|
2048
2023
|
)
|
2049
2024
|
|
2050
2025
|
if self.selected:
|
2051
|
-
self.see(
|
2052
|
-
r=self.selected.row,
|
2053
|
-
c=self.selected.column,
|
2054
|
-
keep_yscroll=False,
|
2055
|
-
keep_xscroll=False,
|
2056
|
-
bottom_right_corner=False,
|
2057
|
-
check_cell_visibility=True,
|
2058
|
-
redraw=False,
|
2059
|
-
)
|
2026
|
+
self.see(self.selected.row, self.selected.column, redraw=False)
|
2060
2027
|
|
2061
2028
|
self.refresh()
|
2062
2029
|
return event_data
|
@@ -2067,18 +2034,27 @@ class MainTable(tk.Canvas):
|
|
2067
2034
|
c: int | None = None,
|
2068
2035
|
keep_yscroll: bool = False,
|
2069
2036
|
keep_xscroll: bool = False,
|
2070
|
-
bottom_right_corner: bool =
|
2037
|
+
bottom_right_corner: bool | None = None,
|
2071
2038
|
check_cell_visibility: bool = True,
|
2072
2039
|
redraw: bool = True,
|
2073
2040
|
r_pc: float = 0.0,
|
2074
2041
|
c_pc: float = 0.0,
|
2075
2042
|
) -> bool:
|
2076
2043
|
need_redraw = False
|
2077
|
-
|
2078
|
-
|
2079
|
-
|
2080
|
-
|
2081
|
-
|
2044
|
+
vis_info = self.cell_visibility_info(r, c)
|
2045
|
+
yvis, xvis = vis_info["yvis"], vis_info["xvis"]
|
2046
|
+
top_left_x, top_left_y, bottom_right_x, bottom_right_y = vis_info["visible_region"]
|
2047
|
+
x1, y1, x2, y2 = vis_info["cell_coords"]
|
2048
|
+
# y scroll
|
2049
|
+
if not check_cell_visibility or (check_cell_visibility and not yvis) and len(self.row_positions) > 1:
|
2050
|
+
if bottom_right_corner is None:
|
2051
|
+
both_above = y1 < top_left_y and y2 < top_left_y
|
2052
|
+
y1_above_y2_below = y1 < top_left_y and y2 > bottom_right_y
|
2053
|
+
y1_above_y2_visible = y1 < top_left_y and top_left_y <= y2 <= bottom_right_y
|
2054
|
+
brc = not (both_above or y1_above_y2_below or y1_above_y2_visible)
|
2055
|
+
else:
|
2056
|
+
brc = bottom_right_corner
|
2057
|
+
if brc:
|
2082
2058
|
if r is not None and not keep_yscroll:
|
2083
2059
|
winfo_height = self.winfo_height()
|
2084
2060
|
if self.row_positions[r + 1] - self.row_positions[r] > winfo_height:
|
@@ -2104,8 +2080,16 @@ class MainTable(tk.Canvas):
|
|
2104
2080
|
]
|
2105
2081
|
self.set_yviews(*args, redraw=False)
|
2106
2082
|
need_redraw = True
|
2107
|
-
|
2108
|
-
|
2083
|
+
# x scroll
|
2084
|
+
if not check_cell_visibility or (check_cell_visibility and not xvis) and len(self.col_positions) > 1:
|
2085
|
+
if bottom_right_corner is None:
|
2086
|
+
both_left = x1 < top_left_x and x2 < top_left_x
|
2087
|
+
x1_left_x2_right = x1 < top_left_x and x2 > bottom_right_x
|
2088
|
+
x1_left_x2_visible = x1 < top_left_x and top_left_x <= x2 <= bottom_right_x
|
2089
|
+
brc = not (both_left or x1_left_x2_right or x1_left_x2_visible)
|
2090
|
+
else:
|
2091
|
+
brc = bottom_right_corner
|
2092
|
+
if brc:
|
2109
2093
|
if c is not None and not keep_xscroll:
|
2110
2094
|
winfo_width = self.winfo_width()
|
2111
2095
|
if self.col_positions[c + 1] - self.col_positions[c] > winfo_width:
|
@@ -2144,17 +2128,24 @@ class MainTable(tk.Canvas):
|
|
2144
2128
|
0 if not r else self.row_positions[r + 1],
|
2145
2129
|
)
|
2146
2130
|
|
2147
|
-
def cell_completely_visible(
|
2131
|
+
def cell_completely_visible(self, r: int | None = 0, c: int | None = 0) -> bool:
|
2132
|
+
cx1, cy1, cx2, cy2 = self.get_canvas_visible_area()
|
2133
|
+
x1, y1, x2, y2 = self.get_cell_coords(r, c)
|
2134
|
+
return cy1 <= y1 and cy2 >= y2 and cx1 <= x1 and cx2 >= x2
|
2135
|
+
|
2136
|
+
def cell_visibility_info(
|
2148
2137
|
self,
|
2149
|
-
r: int
|
2150
|
-
c: int
|
2151
|
-
|
2152
|
-
) -> bool | tuple[bool, bool]:
|
2138
|
+
r: int,
|
2139
|
+
c: int,
|
2140
|
+
) -> dict[Literal["yvis", "xvis", "visible_region", "cell_coords"], bool | tuple[int, int, int, int]]:
|
2153
2141
|
cx1, cy1, cx2, cy2 = self.get_canvas_visible_area()
|
2154
2142
|
x1, y1, x2, y2 = self.get_cell_coords(r, c)
|
2155
|
-
|
2156
|
-
|
2157
|
-
|
2143
|
+
return {
|
2144
|
+
"yvis": cy1 <= y1 and cy2 >= y2,
|
2145
|
+
"xvis": cx1 <= x1 and cx2 >= x2,
|
2146
|
+
"visible_region": (cx1, cy1, cx2, cy2),
|
2147
|
+
"cell_coords": (x1, y1, x2, y2),
|
2148
|
+
}
|
2158
2149
|
|
2159
2150
|
def cell_visible(self, r: int = 0, c: int = 0) -> bool:
|
2160
2151
|
cx1, cy1, cx2, cy2 = self.get_canvas_visible_area()
|
@@ -2301,10 +2292,10 @@ class MainTable(tk.Canvas):
|
|
2301
2292
|
curr_box = self.selected.fill_iid
|
2302
2293
|
if r == "all" or (r is None and c is None and cell is None):
|
2303
2294
|
self.hide_dropdown_editor_all_canvases()
|
2304
|
-
for item,
|
2295
|
+
for item, _ in self.get_selection_items():
|
2305
2296
|
self.hide_selection_box(item)
|
2306
2297
|
elif r in ("allrows", "allcols"):
|
2307
|
-
for item,
|
2298
|
+
for item, _ in self.get_selection_items(
|
2308
2299
|
columns=r == "allcols",
|
2309
2300
|
rows=r == "allrows",
|
2310
2301
|
cells=False,
|
@@ -2529,156 +2520,76 @@ class MainTable(tk.Canvas):
|
|
2529
2520
|
def arrowkey_UP(self, event: object = None) -> None:
|
2530
2521
|
if not self.selected:
|
2531
2522
|
return
|
2532
|
-
|
2533
|
-
|
2534
|
-
|
2535
|
-
|
2536
|
-
|
2537
|
-
|
2538
|
-
|
2539
|
-
|
2540
|
-
elif self.selected.type_ in ("cells", "columns"):
|
2541
|
-
r = self.selected.row
|
2542
|
-
c = self.selected.column
|
2543
|
-
if not r and self.CH.col_selection_enabled and not self.cell_completely_visible(r=r, c=c):
|
2544
|
-
self.see(r, c, check_cell_visibility=False)
|
2545
|
-
elif r and (self.single_selection_enabled or self.toggle_selection_enabled):
|
2546
|
-
if self.cell_completely_visible(r=r - 1, c=c):
|
2547
|
-
self.select_cell(r - 1, c, redraw=True)
|
2548
|
-
else:
|
2549
|
-
self.select_cell(r - 1, c)
|
2550
|
-
self.see(r - 1, c, keep_xscroll=True, check_cell_visibility=False)
|
2523
|
+
r = self.selected.row
|
2524
|
+
c = self.selected.column
|
2525
|
+
if not r:
|
2526
|
+
self.see(r, c)
|
2527
|
+
else:
|
2528
|
+
self.see(r - 1, c, redraw=False)
|
2529
|
+
if self.selected.type_ == "rows" and self.RI.row_selection_enabled:
|
2530
|
+
self.RI.select_row(r - 1, redraw=True)
|
2551
2531
|
|
2552
|
-
|
2532
|
+
elif self.selected.type_ in ("cells", "columns") and (
|
2533
|
+
self.single_selection_enabled or self.toggle_selection_enabled
|
2534
|
+
):
|
2535
|
+
self.select_cell(r - 1, c, redraw=True)
|
2536
|
+
|
2537
|
+
def arrowkey_LEFT(self, event: object = None) -> None:
|
2553
2538
|
if not self.selected:
|
2554
2539
|
return
|
2555
|
-
|
2556
|
-
|
2557
|
-
|
2558
|
-
|
2559
|
-
self.RI.select_row(r + 1, redraw=True)
|
2560
|
-
else:
|
2561
|
-
self.RI.select_row(r + 1)
|
2562
|
-
self.see(
|
2563
|
-
r + 1,
|
2564
|
-
0,
|
2565
|
-
keep_xscroll=True,
|
2566
|
-
bottom_right_corner=False if self.PAR.ops.arrow_key_down_right_scroll_page else True,
|
2567
|
-
check_cell_visibility=False,
|
2568
|
-
)
|
2569
|
-
|
2570
|
-
elif self.selected.type_ == "columns":
|
2571
|
-
c = self.selected.column
|
2572
|
-
if self.single_selection_enabled or self.toggle_selection_enabled:
|
2573
|
-
if self.selected.row == len(self.row_positions) - 2:
|
2574
|
-
r = self.selected.row
|
2575
|
-
else:
|
2576
|
-
r = self.selected.row + 1
|
2577
|
-
if self.cell_completely_visible(r=r, c=c):
|
2578
|
-
self.select_cell(r, c, redraw=True)
|
2579
|
-
else:
|
2580
|
-
self.select_cell(r, c)
|
2581
|
-
self.see(
|
2582
|
-
r,
|
2583
|
-
c,
|
2584
|
-
check_cell_visibility=False,
|
2585
|
-
)
|
2540
|
+
r = self.selected.row
|
2541
|
+
c = self.selected.column
|
2542
|
+
if not c:
|
2543
|
+
self.see(r, c)
|
2586
2544
|
else:
|
2587
|
-
r =
|
2588
|
-
|
2589
|
-
|
2590
|
-
if self.cell_completely_visible(r=r + 1, c=c):
|
2591
|
-
self.select_cell(r + 1, c, redraw=True)
|
2592
|
-
else:
|
2593
|
-
self.select_cell(r + 1, c)
|
2594
|
-
self.see(
|
2595
|
-
r + 1,
|
2596
|
-
c,
|
2597
|
-
keep_xscroll=True,
|
2598
|
-
bottom_right_corner=False if self.PAR.ops.arrow_key_down_right_scroll_page else True,
|
2599
|
-
check_cell_visibility=False,
|
2600
|
-
)
|
2545
|
+
self.see(r, c - 1, redraw=False)
|
2546
|
+
if self.selected.type_ == "columns":
|
2547
|
+
self.CH.select_col(c - 1, redraw=True)
|
2601
2548
|
|
2602
|
-
|
2549
|
+
elif self.selected.type_ in ("cells", "rows"):
|
2550
|
+
self.select_cell(r, c - 1, redraw=True)
|
2551
|
+
|
2552
|
+
def arrowkey_DOWN(self, event: object = None) -> None:
|
2603
2553
|
if not self.selected:
|
2604
2554
|
return
|
2605
|
-
|
2606
|
-
|
2607
|
-
|
2608
|
-
|
2609
|
-
|
2610
|
-
|
2611
|
-
|
2612
|
-
|
2613
|
-
|
2614
|
-
|
2615
|
-
|
2616
|
-
|
2617
|
-
|
2618
|
-
|
2619
|
-
|
2620
|
-
|
2621
|
-
|
2622
|
-
elif self.selected.type_ == "cells":
|
2623
|
-
r = self.selected.row
|
2624
|
-
c = self.selected.column
|
2625
|
-
if not c and not self.cell_completely_visible(r=r, c=c):
|
2626
|
-
self.see(r, c, keep_yscroll=True, check_cell_visibility=False)
|
2627
|
-
elif c and (self.single_selection_enabled or self.toggle_selection_enabled):
|
2628
|
-
if self.cell_completely_visible(r=r, c=c - 1):
|
2629
|
-
self.select_cell(r, c - 1, redraw=True)
|
2630
|
-
else:
|
2631
|
-
self.select_cell(r, c - 1)
|
2632
|
-
self.see(r, c - 1, keep_yscroll=True, check_cell_visibility=False)
|
2555
|
+
r = self.selected.row
|
2556
|
+
c = self.selected.column
|
2557
|
+
if self.selected.row == len(self.row_positions) - 2:
|
2558
|
+
self.see(r, c)
|
2559
|
+
else:
|
2560
|
+
brc = False if self.PAR.ops.arrow_key_down_right_scroll_page else None
|
2561
|
+
self.see(
|
2562
|
+
r + 1,
|
2563
|
+
c,
|
2564
|
+
bottom_right_corner=brc,
|
2565
|
+
redraw=False,
|
2566
|
+
)
|
2567
|
+
if self.selected.type_ == "rows":
|
2568
|
+
self.RI.select_row(r + 1, redraw=True)
|
2569
|
+
|
2570
|
+
elif self.selected.type_ in ("cells", "columns"):
|
2571
|
+
self.select_cell(r + 1, c, redraw=True)
|
2633
2572
|
|
2634
2573
|
def arrowkey_RIGHT(self, event: object = None) -> None:
|
2635
2574
|
if not self.selected:
|
2636
2575
|
return
|
2637
|
-
|
2638
|
-
|
2639
|
-
|
2640
|
-
|
2641
|
-
c = self.selected.column
|
2642
|
-
else:
|
2643
|
-
c = self.selected.column + 1
|
2644
|
-
if self.cell_completely_visible(r=r, c=c):
|
2645
|
-
self.select_cell(r, c, redraw=True)
|
2646
|
-
else:
|
2647
|
-
self.select_cell(r, c)
|
2648
|
-
self.see(
|
2649
|
-
r,
|
2650
|
-
c,
|
2651
|
-
check_cell_visibility=False,
|
2652
|
-
)
|
2653
|
-
elif self.selected.type_ == "columns":
|
2654
|
-
c = self.selected.column
|
2655
|
-
if c < len(self.col_positions) - 2 and self.CH.col_selection_enabled:
|
2656
|
-
if self.cell_completely_visible(r=0, c=c + 1):
|
2657
|
-
self.CH.select_col(c + 1, redraw=True)
|
2658
|
-
else:
|
2659
|
-
self.CH.select_col(c + 1)
|
2660
|
-
self.see(
|
2661
|
-
0,
|
2662
|
-
c + 1,
|
2663
|
-
keep_yscroll=True,
|
2664
|
-
bottom_right_corner=False if self.PAR.ops.arrow_key_down_right_scroll_page else True,
|
2665
|
-
check_cell_visibility=False,
|
2666
|
-
)
|
2576
|
+
r = self.selected.row
|
2577
|
+
c = self.selected.column
|
2578
|
+
if self.selected.column == len(self.col_positions) - 2:
|
2579
|
+
self.see(r, c)
|
2667
2580
|
else:
|
2668
|
-
|
2669
|
-
|
2670
|
-
|
2671
|
-
|
2672
|
-
|
2673
|
-
|
2674
|
-
|
2675
|
-
|
2676
|
-
|
2677
|
-
|
2678
|
-
|
2679
|
-
|
2680
|
-
check_cell_visibility=False,
|
2681
|
-
)
|
2581
|
+
brc = False if self.PAR.ops.arrow_key_down_right_scroll_page else None
|
2582
|
+
self.see(
|
2583
|
+
r,
|
2584
|
+
c + 1,
|
2585
|
+
bottom_right_corner=brc,
|
2586
|
+
redraw=False,
|
2587
|
+
)
|
2588
|
+
if self.selected.type_ == "columns":
|
2589
|
+
self.CH.select_col(c + 1, redraw=True)
|
2590
|
+
|
2591
|
+
elif self.selected.type_ in ("cells", "rows"):
|
2592
|
+
self.select_cell(r, c + 1, redraw=True)
|
2682
2593
|
|
2683
2594
|
def shift_arrowkey_select_box(
|
2684
2595
|
self,
|
@@ -4375,14 +4286,8 @@ class MainTable(tk.Canvas):
|
|
4375
4286
|
qfont = self.PAR.ops.table_font
|
4376
4287
|
numrows = self.total_data_rows()
|
4377
4288
|
numcols = self.total_data_cols()
|
4378
|
-
if self.all_columns_displayed
|
4379
|
-
|
4380
|
-
else:
|
4381
|
-
itercols = self.displayed_columns
|
4382
|
-
if self.all_rows_displayed:
|
4383
|
-
iterrows = range(numrows)
|
4384
|
-
else:
|
4385
|
-
iterrows = self.displayed_rows
|
4289
|
+
itercols = range(numcols) if self.all_columns_displayed else self.displayed_columns
|
4290
|
+
iterrows = range(numrows) if self.all_rows_displayed else self.displayed_rows
|
4386
4291
|
if is_iterable(self._row_index):
|
4387
4292
|
for datarn in iterrows:
|
4388
4293
|
w_, h = self.RI.get_cell_dimensions(datarn)
|
@@ -4395,10 +4300,7 @@ class MainTable(tk.Canvas):
|
|
4395
4300
|
added_w_space = 1 if slim else 7
|
4396
4301
|
for datacn in itercols:
|
4397
4302
|
w = min_column_width if width is None else width
|
4398
|
-
if (hw := self.CH.get_cell_dimensions(datacn)[0]) > w
|
4399
|
-
w = hw
|
4400
|
-
else:
|
4401
|
-
w = min_column_width
|
4303
|
+
w = hw if (hw := self.CH.get_cell_dimensions(datacn)[0]) > w else min_column_width
|
4402
4304
|
for datarn in iterrows:
|
4403
4305
|
if txt := self.get_valid_cell_data_as_str(datarn, datacn, get_displayed=True):
|
4404
4306
|
qconf(qtxtm, text=txt, font=qfont)
|
@@ -5190,12 +5092,9 @@ class MainTable(tk.Canvas):
|
|
5190
5092
|
for datacn in reversed(range(data_ins_col, data_ins_col + numcols))
|
5191
5093
|
}
|
5192
5094
|
else:
|
5193
|
-
if headers
|
5194
|
-
start = 1
|
5195
|
-
else:
|
5196
|
-
start = 0
|
5095
|
+
start = 1 if headers else 0
|
5197
5096
|
columns = {
|
5198
|
-
datacn:
|
5097
|
+
datacn: dict(enumerate(islice(column, start, None)))
|
5199
5098
|
for datacn, column in zip(reversed(range(data_ins_col, data_ins_col + numcols)), reversed(columns))
|
5200
5099
|
}
|
5201
5100
|
if widths is None:
|
@@ -5204,10 +5103,7 @@ class MainTable(tk.Canvas):
|
|
5204
5103
|
for c in reversed(range(displayed_ins_col, displayed_ins_col + numcols))
|
5205
5104
|
}
|
5206
5105
|
else:
|
5207
|
-
widths =
|
5208
|
-
c: width
|
5209
|
-
for c, width in zip(reversed(range(displayed_ins_col, displayed_ins_col + numcols)), reversed(widths))
|
5210
|
-
}
|
5106
|
+
widths = dict(zip(reversed(range(displayed_ins_col, displayed_ins_col + numcols)), reversed(widths)))
|
5211
5107
|
return columns, header_data, widths
|
5212
5108
|
|
5213
5109
|
def get_args_for_add_rows(
|
@@ -5245,10 +5141,7 @@ class MainTable(tk.Canvas):
|
|
5245
5141
|
for datarn in reversed(range(data_ins_row, data_ins_row + numrows))
|
5246
5142
|
}
|
5247
5143
|
else:
|
5248
|
-
if row_index
|
5249
|
-
start = 1
|
5250
|
-
else:
|
5251
|
-
start = 0
|
5144
|
+
start = 1 if row_index else 0
|
5252
5145
|
rows = {
|
5253
5146
|
datarn: v[start:] if start and v else v
|
5254
5147
|
for datarn, v in zip(reversed(range(data_ins_row, data_ins_row + numrows)), reversed(rows))
|
@@ -5257,10 +5150,7 @@ class MainTable(tk.Canvas):
|
|
5257
5150
|
default_row_height = self.get_default_row_height()
|
5258
5151
|
heights = {r: default_row_height for r in reversed(range(displayed_ins_row, displayed_ins_row + numrows))}
|
5259
5152
|
else:
|
5260
|
-
heights =
|
5261
|
-
r: height
|
5262
|
-
for r, height in zip(reversed(range(displayed_ins_row, displayed_ins_row + numrows)), reversed(heights))
|
5263
|
-
}
|
5153
|
+
heights = dict(zip(reversed(range(displayed_ins_row, displayed_ins_row + numrows)), reversed(heights)))
|
5264
5154
|
return rows, index_data, heights
|
5265
5155
|
|
5266
5156
|
def copy_options(self) -> dict:
|
@@ -5352,9 +5242,8 @@ class MainTable(tk.Canvas):
|
|
5352
5242
|
emit_event: bool = True,
|
5353
5243
|
) -> EventDataDict:
|
5354
5244
|
event_data = self.new_event_dict("delete_columns", state=True)
|
5355
|
-
if not columns:
|
5356
|
-
|
5357
|
-
return event_data
|
5245
|
+
if not columns and not (columns := sorted(self.get_selected_cols())):
|
5246
|
+
return event_data
|
5358
5247
|
if not try_binding(self.extra_begin_del_cols_rc_func, event_data, "begin_delete_columns"):
|
5359
5248
|
return
|
5360
5249
|
if self.all_columns_displayed:
|
@@ -5437,11 +5326,10 @@ class MainTable(tk.Canvas):
|
|
5437
5326
|
data_indexes: bool = False,
|
5438
5327
|
undo: bool = True,
|
5439
5328
|
emit_event: bool = True,
|
5440
|
-
) -> EventDataDict:
|
5329
|
+
) -> None | EventDataDict:
|
5441
5330
|
event_data = self.new_event_dict("delete_rows", state=True)
|
5442
|
-
if not rows:
|
5443
|
-
|
5444
|
-
return
|
5331
|
+
if not rows and not (rows := sorted(self.get_selected_rows())):
|
5332
|
+
return
|
5445
5333
|
if not try_binding(self.extra_begin_del_rows_rc_func, event_data, "begin_delete_rows"):
|
5446
5334
|
return
|
5447
5335
|
if self.all_rows_displayed:
|
@@ -5589,13 +5477,13 @@ class MainTable(tk.Canvas):
|
|
5589
5477
|
elif not isinstance(newheaders, (list, tuple, int)) and index is None:
|
5590
5478
|
try:
|
5591
5479
|
self._headers = list(newheaders)
|
5592
|
-
except
|
5480
|
+
except ValueError as error:
|
5593
5481
|
raise ValueError(
|
5594
5482
|
"""
|
5595
5483
|
New header must be iterable or int \
|
5596
5484
|
(use int to use a row as the header
|
5597
5485
|
"""
|
5598
|
-
)
|
5486
|
+
) from error
|
5599
5487
|
if reset_col_positions:
|
5600
5488
|
self.reset_col_positions()
|
5601
5489
|
elif (
|
@@ -5638,13 +5526,13 @@ class MainTable(tk.Canvas):
|
|
5638
5526
|
elif not isinstance(newindex, (list, tuple, int)) and index is None:
|
5639
5527
|
try:
|
5640
5528
|
self._row_index = list(newindex)
|
5641
|
-
except
|
5529
|
+
except ValueError as error:
|
5642
5530
|
raise ValueError(
|
5643
5531
|
"""
|
5644
5532
|
New index must be iterable or int \
|
5645
5533
|
(use int to use a column as the index
|
5646
5534
|
"""
|
5647
|
-
)
|
5535
|
+
) from error
|
5648
5536
|
if reset_row_positions:
|
5649
5537
|
self.reset_row_positions()
|
5650
5538
|
elif (
|
@@ -6038,7 +5926,7 @@ class MainTable(tk.Canvas):
|
|
6038
5926
|
widths[i] = min_column_width
|
6039
5927
|
if diffs and len(diffs) < len(widths):
|
6040
5928
|
change = sum(diffs.values()) / (len(widths) - len(diffs))
|
6041
|
-
for i
|
5929
|
+
for i in range(len(widths)):
|
6042
5930
|
if i not in diffs:
|
6043
5931
|
widths[i] -= change
|
6044
5932
|
self.col_positions = list(accumulate(chain([0], widths)))
|
@@ -6065,7 +5953,7 @@ class MainTable(tk.Canvas):
|
|
6065
5953
|
heights[i] = min_row_height
|
6066
5954
|
if diffs and len(diffs) < len(heights):
|
6067
5955
|
change = sum(diffs.values()) / (len(heights) - len(diffs))
|
6068
|
-
for i
|
5956
|
+
for i in range(len(heights)):
|
6069
5957
|
if i not in diffs:
|
6070
5958
|
heights[i] -= change
|
6071
5959
|
self.row_positions = list(accumulate(chain([0], heights)))
|
@@ -6252,10 +6140,7 @@ class MainTable(tk.Canvas):
|
|
6252
6140
|
if self.PAR.ops.horizontal_grid_to_end_of_window:
|
6253
6141
|
x_grid_stop = scrollpos_right + can_width
|
6254
6142
|
else:
|
6255
|
-
if last_col_line_pos > scrollpos_right
|
6256
|
-
x_grid_stop = x_stop + 1
|
6257
|
-
else:
|
6258
|
-
x_grid_stop = x_stop - 1
|
6143
|
+
x_grid_stop = x_stop + 1 if last_col_line_pos > scrollpos_right else x_stop - 1
|
6259
6144
|
self.redraw_gridline(
|
6260
6145
|
points=tuple(
|
6261
6146
|
chain.from_iterable(
|
@@ -6278,10 +6163,7 @@ class MainTable(tk.Canvas):
|
|
6278
6163
|
if self.PAR.ops.vertical_grid_to_end_of_window:
|
6279
6164
|
y_grid_stop = scrollpos_bot + can_height
|
6280
6165
|
else:
|
6281
|
-
if last_row_line_pos > scrollpos_bot
|
6282
|
-
y_grid_stop = y_stop + 1
|
6283
|
-
else:
|
6284
|
-
y_grid_stop = y_stop - 1
|
6166
|
+
y_grid_stop = y_stop + 1 if last_row_line_pos > scrollpos_bot else y_stop - 1
|
6285
6167
|
self.redraw_gridline(
|
6286
6168
|
points=tuple(
|
6287
6169
|
chain.from_iterable(
|
@@ -6305,10 +6187,7 @@ class MainTable(tk.Canvas):
|
|
6305
6187
|
sel_cells_bg = color_tup(self.PAR.ops.table_selected_cells_bg)
|
6306
6188
|
sel_cols_bg = color_tup(self.PAR.ops.table_selected_columns_bg)
|
6307
6189
|
sel_rows_bg = color_tup(self.PAR.ops.table_selected_rows_bg)
|
6308
|
-
if self.selected
|
6309
|
-
current_loc = (self.selected.row, self.selected.column)
|
6310
|
-
else:
|
6311
|
-
current_loc = tuple()
|
6190
|
+
current_loc = (self.selected.row, self.selected.column) if self.selected else ()
|
6312
6191
|
if self.PAR.ops.alternate_color:
|
6313
6192
|
alternate_color = Highlight(
|
6314
6193
|
bg=self.PAR.ops.alternate_color,
|
@@ -6318,10 +6197,10 @@ class MainTable(tk.Canvas):
|
|
6318
6197
|
if self.selected and box_is_single_cell(*self.selected.box) and self.PAR.ops.show_selected_cells_border:
|
6319
6198
|
dont_blend = current_loc
|
6320
6199
|
else:
|
6321
|
-
dont_blend =
|
6200
|
+
dont_blend = ()
|
6322
6201
|
else:
|
6323
6202
|
alternate_color = None
|
6324
|
-
dont_blend =
|
6203
|
+
dont_blend = ()
|
6325
6204
|
if not self.PAR.ops.show_selected_cells_border:
|
6326
6205
|
override = (
|
6327
6206
|
color_tup(self.PAR.ops.table_selected_cells_fg),
|
@@ -6329,7 +6208,7 @@ class MainTable(tk.Canvas):
|
|
6329
6208
|
color_tup(self.PAR.ops.table_selected_rows_fg),
|
6330
6209
|
)
|
6331
6210
|
else:
|
6332
|
-
override =
|
6211
|
+
override = ()
|
6333
6212
|
allow_overflow = self.PAR.ops.allow_cell_overflow
|
6334
6213
|
wrap = self.PAR.ops.table_wrap
|
6335
6214
|
cells = self._redraw_precache_cells(
|
@@ -6526,7 +6405,7 @@ class MainTable(tk.Canvas):
|
|
6526
6405
|
self.itemconfig(iid, state="hidden")
|
6527
6406
|
dct[iid] = False
|
6528
6407
|
if self.PAR.ops.show_selected_cells_border:
|
6529
|
-
for
|
6408
|
+
for _, box in self.selection_boxes.items():
|
6530
6409
|
if box.bd_iid:
|
6531
6410
|
self.tag_raise(box.bd_iid)
|
6532
6411
|
if self.selected:
|
@@ -6588,7 +6467,7 @@ class MainTable(tk.Canvas):
|
|
6588
6467
|
def reselect_from_get_boxes(
|
6589
6468
|
self,
|
6590
6469
|
boxes: dict,
|
6591
|
-
selected: tuple =
|
6470
|
+
selected: tuple = (),
|
6592
6471
|
) -> None:
|
6593
6472
|
for (r1, c1, r2, c2), v in boxes.items():
|
6594
6473
|
if r2 < len(self.row_positions) and c2 < len(self.col_positions):
|
@@ -6622,14 +6501,15 @@ class MainTable(tk.Canvas):
|
|
6622
6501
|
|
6623
6502
|
# set current to any existing selection box with coordinates: box
|
6624
6503
|
if isinstance(box, tuple):
|
6625
|
-
for
|
6626
|
-
if box == selection_box.coords
|
6627
|
-
|
6628
|
-
|
6504
|
+
for _, selection_box in self.get_selection_items(reverse=True):
|
6505
|
+
if box == selection_box.coords and box_created(
|
6506
|
+
box[0] if r is None else r, box[1] if c is None else c, selection_box
|
6507
|
+
):
|
6508
|
+
return
|
6629
6509
|
|
6630
6510
|
# set current to a coordinate, find the top most box there
|
6631
6511
|
if isinstance(r, int) and isinstance(c, int):
|
6632
|
-
for
|
6512
|
+
for _, selection_box in self.get_selection_items(reverse=True):
|
6633
6513
|
if box_created(r, c, selection_box):
|
6634
6514
|
return
|
6635
6515
|
|
@@ -6648,15 +6528,15 @@ class MainTable(tk.Canvas):
|
|
6648
6528
|
def coords_and_type(self, item: int) -> tuple:
|
6649
6529
|
if item in self.selection_boxes:
|
6650
6530
|
return Box_t(*(self.selection_boxes[item].coords + (self.selection_boxes[item].type_,)))
|
6651
|
-
return
|
6531
|
+
return ()
|
6652
6532
|
|
6653
6533
|
def get_selected_box_bg_fg(self, type_: str) -> tuple:
|
6654
|
-
|
6655
|
-
|
6656
|
-
|
6657
|
-
|
6658
|
-
|
6659
|
-
|
6534
|
+
type_map = {
|
6535
|
+
"cells": (self.PAR.ops.table_selected_cells_bg, self.PAR.ops.table_selected_box_cells_fg),
|
6536
|
+
"rows": (self.PAR.ops.table_selected_rows_bg, self.PAR.ops.table_selected_box_rows_fg),
|
6537
|
+
"columns": (self.PAR.ops.table_selected_columns_bg, self.PAR.ops.table_selected_box_columns_fg),
|
6538
|
+
}
|
6539
|
+
return type_map[type_]
|
6660
6540
|
|
6661
6541
|
def create_currently_selected_box(
|
6662
6542
|
self,
|
@@ -6713,10 +6593,7 @@ class MainTable(tk.Canvas):
|
|
6713
6593
|
width: int,
|
6714
6594
|
iid: None | int = None,
|
6715
6595
|
) -> int:
|
6716
|
-
if not self.PAR.ops.rounded_boxes or not x2 - x1 or not y2 - y1
|
6717
|
-
radius = 0
|
6718
|
-
else:
|
6719
|
-
radius = 5
|
6596
|
+
radius = 0 if not self.PAR.ops.rounded_boxes or not x2 - x1 or not y2 - y1 else 5
|
6720
6597
|
coords = rounded_box_coords(
|
6721
6598
|
x1,
|
6722
6599
|
y1,
|
@@ -6773,7 +6650,7 @@ class MainTable(tk.Canvas):
|
|
6773
6650
|
def hide_selected(self) -> None:
|
6774
6651
|
if self.selected:
|
6775
6652
|
self.hide_box(self.selected.iid)
|
6776
|
-
self.selected =
|
6653
|
+
self.selected = ()
|
6777
6654
|
|
6778
6655
|
def create_selection_box(
|
6779
6656
|
self,
|
@@ -7283,7 +7160,7 @@ class MainTable(tk.Canvas):
|
|
7283
7160
|
self.text_editor.window.set_text(self.text_editor.get() + "" if not isinstance(text, str) else text)
|
7284
7161
|
return False
|
7285
7162
|
self.hide_text_editor()
|
7286
|
-
if not self.see(r
|
7163
|
+
if not self.see(r, c):
|
7287
7164
|
self.main_table_redraw_grid_and_text(True, True)
|
7288
7165
|
x = self.col_positions[c]
|
7289
7166
|
y = self.row_positions[r]
|
@@ -7517,13 +7394,7 @@ class MainTable(tk.Canvas):
|
|
7517
7394
|
new_r, new_c = None, None
|
7518
7395
|
if isinstance(new_r, int):
|
7519
7396
|
self.set_currently_selected(new_r, new_c, item=self.selected.fill_iid)
|
7520
|
-
self.see(
|
7521
|
-
new_r,
|
7522
|
-
new_c,
|
7523
|
-
keep_xscroll=False,
|
7524
|
-
bottom_right_corner=True,
|
7525
|
-
check_cell_visibility=True,
|
7526
|
-
)
|
7397
|
+
self.see(new_r, new_c)
|
7527
7398
|
self.recreate_all_selection_boxes()
|
7528
7399
|
self.hide_text_editor_and_dropdown()
|
7529
7400
|
if event.keysym != "FocusOut":
|
@@ -7536,17 +7407,11 @@ class MainTable(tk.Canvas):
|
|
7536
7407
|
r,
|
7537
7408
|
c + 1 if c < len(self.col_positions) - 2 else c,
|
7538
7409
|
bottom_right_corner=True,
|
7539
|
-
check_cell_visibility=True,
|
7540
7410
|
)
|
7541
7411
|
|
7542
7412
|
def select_down(self, r: int, c: int) -> None:
|
7543
7413
|
self.select_cell(r + 1 if r < len(self.row_positions) - 2 else r, c)
|
7544
|
-
self.see(
|
7545
|
-
r + 1 if r < len(self.row_positions) - 2 else r,
|
7546
|
-
c,
|
7547
|
-
bottom_right_corner=True,
|
7548
|
-
check_cell_visibility=True,
|
7549
|
-
)
|
7414
|
+
self.see(r + 1 if r < len(self.row_positions) - 2 else r, c)
|
7550
7415
|
|
7551
7416
|
def tab_key(self, event: object = None) -> str:
|
7552
7417
|
if not self.selected:
|
@@ -7562,13 +7427,7 @@ class MainTable(tk.Canvas):
|
|
7562
7427
|
else:
|
7563
7428
|
new_r, new_c = cell_right_within_box(r, c, r1, c1, r2, c2, numrows, numcols)
|
7564
7429
|
self.set_currently_selected(new_r, new_c, item=self.selected.fill_iid)
|
7565
|
-
self.see(
|
7566
|
-
new_r,
|
7567
|
-
new_c,
|
7568
|
-
keep_xscroll=False,
|
7569
|
-
bottom_right_corner=True,
|
7570
|
-
check_cell_visibility=True,
|
7571
|
-
)
|
7430
|
+
self.see(new_r, new_c, bottom_right_corner=True)
|
7572
7431
|
if not self.PAR.ops.show_selected_cells_border:
|
7573
7432
|
self.refresh()
|
7574
7433
|
return "break"
|
@@ -7879,7 +7738,7 @@ class MainTable(tk.Canvas):
|
|
7879
7738
|
datarn: int,
|
7880
7739
|
datacn: int,
|
7881
7740
|
value: object,
|
7882
|
-
kwargs: dict =
|
7741
|
+
kwargs: dict | None = None,
|
7883
7742
|
expand_sheet: bool = True,
|
7884
7743
|
) -> None:
|
7885
7744
|
if expand_sheet:
|
@@ -7987,10 +7846,7 @@ class MainTable(tk.Canvas):
|
|
7987
7846
|
self.set_cell_data(*key, get_val(*key), expand_sheet=False)
|
7988
7847
|
|
7989
7848
|
def delete_row_format(self, datarn: Literal["all"] | int = "all", clear_values: bool = False) -> None:
|
7990
|
-
if isinstance(datarn, str) and datarn.lower() == "all"
|
7991
|
-
itr = gen_formatted(self.row_options)
|
7992
|
-
else:
|
7993
|
-
itr = (datarn,)
|
7849
|
+
itr = gen_formatted(self.row_options) if isinstance(datarn, str) and datarn.lower() == "all" else (datarn,)
|
7994
7850
|
get_val = self.get_value_for_empty_cell
|
7995
7851
|
for datarn in itr:
|
7996
7852
|
try:
|
@@ -8002,10 +7858,7 @@ class MainTable(tk.Canvas):
|
|
8002
7858
|
self.set_cell_data(datarn, datacn, get_val(datarn, datacn), expand_sheet=False)
|
8003
7859
|
|
8004
7860
|
def delete_column_format(self, datacn: Literal["all"] | int = "all", clear_values: bool = False) -> None:
|
8005
|
-
if isinstance(datacn, str) and datacn.lower() == "all"
|
8006
|
-
itr = gen_formatted(self.col_options)
|
8007
|
-
else:
|
8008
|
-
itr = (datacn,)
|
7861
|
+
itr = gen_formatted(self.col_options) if isinstance(datacn, str) and datacn.lower() == "all" else (datacn,)
|
8009
7862
|
get_val = self.get_value_for_empty_cell
|
8010
7863
|
for datacn in itr:
|
8011
7864
|
try:
|
@@ -8083,9 +7936,7 @@ class MainTable(tk.Canvas):
|
|
8083
7936
|
return False
|
8084
7937
|
elif "format" in kwargs:
|
8085
7938
|
return True
|
8086
|
-
elif self.cell_equal_to(datarn, datacn, value, ignore_empty=ignore_empty)
|
8087
|
-
return False
|
8088
|
-
elif (
|
7939
|
+
elif self.cell_equal_to(datarn, datacn, value, ignore_empty=ignore_empty) or (
|
8089
7940
|
(dropdown := kwargs.get("dropdown", {})) and dropdown["validate_input"] and value not in dropdown["values"]
|
8090
7941
|
):
|
8091
7942
|
return False
|