tksheet 7.2.7__py3-none-any.whl → 7.2.9__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 +30 -26
- tksheet/functions.py +1 -1
- tksheet/main_table.py +92 -77
- tksheet/row_index.py +48 -39
- tksheet/sheet.py +65 -33
- tksheet/themes.py +8 -8
- tksheet/top_left_rectangle.py +1 -0
- {tksheet-7.2.7.dist-info → tksheet-7.2.9.dist-info}/METADATA +1 -1
- tksheet-7.2.9.dist-info/RECORD +20 -0
- tksheet-7.2.7.dist-info/RECORD +0 -20
- {tksheet-7.2.7.dist-info → tksheet-7.2.9.dist-info}/LICENSE.txt +0 -0
- {tksheet-7.2.7.dist-info → tksheet-7.2.9.dist-info}/WHEEL +0 -0
- {tksheet-7.2.7.dist-info → tksheet-7.2.9.dist-info}/top_level.txt +0 -0
tksheet/__init__.py
CHANGED
tksheet/column_headers.py
CHANGED
@@ -946,8 +946,10 @@ class ColumnHeaders(tk.Canvas):
|
|
946
946
|
run_binding_func: bool = True,
|
947
947
|
ext: bool = False,
|
948
948
|
) -> int:
|
949
|
-
self.MT.
|
949
|
+
boxes_to_hide = tuple(self.MT.selection_boxes)
|
950
950
|
fill_iid = self.MT.create_selection_box(0, c, len(self.MT.row_positions) - 1, c + 1, "columns", ext=ext)
|
951
|
+
for iid in boxes_to_hide:
|
952
|
+
self.MT.hide_selection_box(iid)
|
951
953
|
if redraw:
|
952
954
|
self.MT.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
|
953
955
|
if run_binding_func:
|
@@ -987,7 +989,7 @@ class ColumnHeaders(tk.Canvas):
|
|
987
989
|
y1,
|
988
990
|
x2,
|
989
991
|
y2,
|
990
|
-
radius=
|
992
|
+
radius=5 if self.PAR.ops.rounded_boxes else 0,
|
991
993
|
)
|
992
994
|
if isinstance(iid, int):
|
993
995
|
self.coords(iid, coords)
|
@@ -1301,34 +1303,33 @@ class ColumnHeaders(tk.Canvas):
|
|
1301
1303
|
tag: str | tuple[str],
|
1302
1304
|
draw_outline: bool = True,
|
1303
1305
|
draw_arrow: bool = True,
|
1304
|
-
|
1306
|
+
open_: bool = False,
|
1305
1307
|
) -> None:
|
1306
1308
|
if draw_outline and self.PAR.ops.show_dropdown_borders:
|
1307
1309
|
self.redraw_highlight(x1 + 1, y1 + 1, x2, y2, fill="", outline=self.PAR.ops.header_fg, tag=tag)
|
1308
1310
|
if draw_arrow:
|
1309
1311
|
mod = (self.MT.header_txt_height - 1) if self.MT.header_txt_height % 2 else self.MT.header_txt_height
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1314
|
-
)
|
1315
|
-
if dd_is_open:
|
1312
|
+
small_mod = int(mod / 5)
|
1313
|
+
mid_y = floor(self.MT.min_header_height / 2)
|
1314
|
+
if open_:
|
1315
|
+
# up arrow
|
1316
1316
|
points = (
|
1317
|
-
x2 -
|
1318
|
-
y1 + mid_y +
|
1319
|
-
x2 -
|
1320
|
-
y1 + mid_y -
|
1321
|
-
x2 -
|
1322
|
-
y1 + mid_y +
|
1317
|
+
x2 - 4 - small_mod - small_mod - small_mod - small_mod,
|
1318
|
+
y1 + mid_y + small_mod,
|
1319
|
+
x2 - 4 - small_mod - small_mod,
|
1320
|
+
y1 + mid_y - small_mod,
|
1321
|
+
x2 - 4,
|
1322
|
+
y1 + mid_y + small_mod,
|
1323
1323
|
)
|
1324
1324
|
else:
|
1325
|
+
# down arrow
|
1325
1326
|
points = (
|
1326
|
-
x2 -
|
1327
|
-
y1 + mid_y -
|
1328
|
-
x2 -
|
1329
|
-
y1 + mid_y +
|
1330
|
-
x2 -
|
1331
|
-
y1 + mid_y -
|
1327
|
+
x2 - 4 - small_mod - small_mod - small_mod - small_mod,
|
1328
|
+
y1 + mid_y - small_mod,
|
1329
|
+
x2 - 4 - small_mod - small_mod,
|
1330
|
+
y1 + mid_y + small_mod,
|
1331
|
+
x2 - 4,
|
1332
|
+
y1 + mid_y - small_mod,
|
1332
1333
|
)
|
1333
1334
|
if self.hidd_dropdown:
|
1334
1335
|
t, sh = self.hidd_dropdown.popitem()
|
@@ -1339,10 +1340,13 @@ class ColumnHeaders(tk.Canvas):
|
|
1339
1340
|
self.itemconfig(t, fill=fill, tag=tag, state="normal")
|
1340
1341
|
self.lift(t)
|
1341
1342
|
else:
|
1342
|
-
t = self.
|
1343
|
+
t = self.create_line(
|
1343
1344
|
points,
|
1344
1345
|
fill=fill,
|
1345
1346
|
tag=tag,
|
1347
|
+
width=2,
|
1348
|
+
capstyle=tk.ROUND,
|
1349
|
+
joinstyle=tk.BEVEL,
|
1346
1350
|
)
|
1347
1351
|
self.disp_dropdown[t] = True
|
1348
1352
|
|
@@ -1502,7 +1506,7 @@ class ColumnHeaders(tk.Canvas):
|
|
1502
1506
|
tag="dd",
|
1503
1507
|
draw_outline=not dd_drawn,
|
1504
1508
|
draw_arrow=mw >= 5,
|
1505
|
-
|
1509
|
+
open_=dd_coords == c,
|
1506
1510
|
)
|
1507
1511
|
else:
|
1508
1512
|
mw = crightgridln - cleftgridln - 1
|
@@ -1521,7 +1525,7 @@ class ColumnHeaders(tk.Canvas):
|
|
1521
1525
|
tag="dd",
|
1522
1526
|
draw_outline=not dd_drawn,
|
1523
1527
|
draw_arrow=mw >= 5,
|
1524
|
-
|
1528
|
+
open_=dd_coords == c,
|
1525
1529
|
)
|
1526
1530
|
else:
|
1527
1531
|
mw = crightgridln - cleftgridln - 1
|
@@ -1541,7 +1545,7 @@ class ColumnHeaders(tk.Canvas):
|
|
1541
1545
|
tag="dd",
|
1542
1546
|
draw_outline=not dd_drawn,
|
1543
1547
|
draw_arrow=mw >= 5,
|
1544
|
-
|
1548
|
+
open_=dd_coords == c,
|
1545
1549
|
)
|
1546
1550
|
else:
|
1547
1551
|
mw = crightgridln - cleftgridln - 1
|
@@ -2022,7 +2026,7 @@ class ColumnHeaders(tk.Canvas):
|
|
2022
2026
|
"height": win_h,
|
2023
2027
|
"font": self.PAR.ops.header_font,
|
2024
2028
|
"ops": self.PAR.ops,
|
2025
|
-
"outline_color": self.PAR.ops.
|
2029
|
+
"outline_color": self.PAR.ops.header_selected_columns_bg,
|
2026
2030
|
"align": self.get_cell_align(c),
|
2027
2031
|
"values": kwargs["values"],
|
2028
2032
|
}
|
tksheet/functions.py
CHANGED
tksheet/main_table.py
CHANGED
@@ -25,6 +25,7 @@ from itertools import (
|
|
25
25
|
accumulate,
|
26
26
|
chain,
|
27
27
|
cycle,
|
28
|
+
filterfalse,
|
28
29
|
islice,
|
29
30
|
repeat,
|
30
31
|
)
|
@@ -696,8 +697,9 @@ class MainTable(tk.Canvas):
|
|
696
697
|
selected=self.selected,
|
697
698
|
)
|
698
699
|
if self.selected:
|
699
|
-
selected_r = self.selected.
|
700
|
-
selected_c = self.selected.
|
700
|
+
selected_r = self.selected.box.from_r
|
701
|
+
selected_c = self.selected.box.from_c
|
702
|
+
curr_coords = (self.selected.row, self.selected.column)
|
701
703
|
elif not self.selected and not self.PAR.ops.paste_can_expand_x and not self.PAR.ops.paste_can_expand_y:
|
702
704
|
return
|
703
705
|
else:
|
@@ -710,6 +712,7 @@ class MainTable(tk.Canvas):
|
|
710
712
|
selected_c, selected_r = len(self.col_positions) - 1, 0
|
711
713
|
elif len(self.row_positions) > 1 and len(self.col_positions) > 1:
|
712
714
|
selected_c, selected_r = 0, len(self.row_positions) - 1
|
715
|
+
curr_coords = (selected_r, selected_c)
|
713
716
|
try:
|
714
717
|
data = get_data_from_clipboard(
|
715
718
|
widget=self,
|
@@ -915,13 +918,17 @@ class MainTable(tk.Canvas):
|
|
915
918
|
else:
|
916
919
|
selboxc = selected_c_adjusted_new_data_numcols
|
917
920
|
self.deselect("all", redraw=False)
|
918
|
-
self.
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
921
|
+
self.set_currently_selected(
|
922
|
+
*curr_coords,
|
923
|
+
item=self.create_selection_box(
|
924
|
+
selected_r,
|
925
|
+
selected_c,
|
926
|
+
selboxr,
|
927
|
+
selboxc,
|
928
|
+
type_="cells",
|
929
|
+
set_current=False,
|
930
|
+
run_binding=True,
|
931
|
+
),
|
925
932
|
)
|
926
933
|
event_data["selection_boxes"] = self.get_boxes()
|
927
934
|
event_data["selected"] = self.selected
|
@@ -3310,7 +3317,7 @@ class MainTable(tk.Canvas):
|
|
3310
3317
|
self.yview_scroll(-1, "units")
|
3311
3318
|
self.RI.yview_scroll(-1, "units")
|
3312
3319
|
self.y_move_synced_scrolls("moveto", self.yview()[0])
|
3313
|
-
self.main_table_redraw_grid_and_text(redraw_row_index=True)
|
3320
|
+
self.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
|
3314
3321
|
|
3315
3322
|
def shift_mousewheel(self, event: object) -> None:
|
3316
3323
|
if event.delta < 0 or event.num == 5:
|
@@ -3323,7 +3330,7 @@ class MainTable(tk.Canvas):
|
|
3323
3330
|
self.xview_scroll(-1, "units")
|
3324
3331
|
self.CH.xview_scroll(-1, "units")
|
3325
3332
|
self.x_move_synced_scrolls("moveto", self.xview()[0])
|
3326
|
-
self.main_table_redraw_grid_and_text(redraw_header=True)
|
3333
|
+
self.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
|
3327
3334
|
|
3328
3335
|
def ctrl_mousewheel(self, event):
|
3329
3336
|
if event.delta < 0 or event.num == 5:
|
@@ -3773,11 +3780,10 @@ class MainTable(tk.Canvas):
|
|
3773
3780
|
colpos = self.PAR.ops.default_column_width
|
3774
3781
|
if isinstance(ncols, int):
|
3775
3782
|
self.set_col_positions(itr=repeat(colpos, ncols))
|
3783
|
+
elif self.all_columns_displayed:
|
3784
|
+
self.set_col_positions(itr=repeat(colpos, self.total_data_cols()))
|
3776
3785
|
else:
|
3777
|
-
|
3778
|
-
self.set_col_positions(itr=repeat(colpos, self.total_data_cols()))
|
3779
|
-
else:
|
3780
|
-
self.set_col_positions(itr=repeat(colpos, len(self.displayed_columns)))
|
3786
|
+
self.set_col_positions(itr=repeat(colpos, len(self.displayed_columns)))
|
3781
3787
|
|
3782
3788
|
def set_row_positions(self, itr: Iterator[float]) -> None:
|
3783
3789
|
self.row_positions = list(accumulate(chain([0], itr)))
|
@@ -3786,11 +3792,10 @@ class MainTable(tk.Canvas):
|
|
3786
3792
|
rowpos = self.get_default_row_height()
|
3787
3793
|
if isinstance(nrows, int):
|
3788
3794
|
self.set_row_positions(itr=repeat(rowpos, nrows))
|
3795
|
+
elif self.all_rows_displayed:
|
3796
|
+
self.set_row_positions(itr=repeat(rowpos, self.total_data_rows()))
|
3789
3797
|
else:
|
3790
|
-
|
3791
|
-
self.set_row_positions(itr=repeat(rowpos, self.total_data_rows()))
|
3792
|
-
else:
|
3793
|
-
self.set_row_positions(itr=repeat(rowpos, len(self.displayed_rows)))
|
3798
|
+
self.set_row_positions(itr=repeat(rowpos, len(self.displayed_rows)))
|
3794
3799
|
|
3795
3800
|
def del_col_position(self, idx: int, deselect_all: bool = False):
|
3796
3801
|
if deselect_all:
|
@@ -4453,7 +4458,7 @@ class MainTable(tk.Canvas):
|
|
4453
4458
|
if isinstance(displayed_rows, list):
|
4454
4459
|
self.displayed_rows = displayed_rows
|
4455
4460
|
elif not self.all_rows_displayed:
|
4456
|
-
# push displayed indexes by one for every inserted
|
4461
|
+
# push displayed indexes by one for every inserted row
|
4457
4462
|
self.displayed_rows.sort()
|
4458
4463
|
# highest index is first in rows
|
4459
4464
|
up_to = len(self.displayed_rows)
|
@@ -4718,9 +4723,10 @@ class MainTable(tk.Canvas):
|
|
4718
4723
|
named_spans=self.get_spans_to_del_from_cols(cols=cols_set),
|
4719
4724
|
)
|
4720
4725
|
if not self.all_columns_displayed:
|
4721
|
-
self.displayed_columns = [
|
4722
|
-
|
4723
|
-
|
4726
|
+
self.displayed_columns = [
|
4727
|
+
c if not (num := bisect_left(cols, c)) else c - num
|
4728
|
+
for c in filterfalse(cols_set.__contains__, self.displayed_columns)
|
4729
|
+
]
|
4724
4730
|
return event_data
|
4725
4731
|
|
4726
4732
|
def delete_columns_displayed(self, cols: list, event_data: dict) -> EventDataDict:
|
@@ -4773,9 +4779,10 @@ class MainTable(tk.Canvas):
|
|
4773
4779
|
named_spans=self.get_spans_to_del_from_rows(rows=rows_set),
|
4774
4780
|
)
|
4775
4781
|
if not self.all_rows_displayed:
|
4776
|
-
self.displayed_rows = [
|
4777
|
-
|
4778
|
-
|
4782
|
+
self.displayed_rows = [
|
4783
|
+
r if not (num := bisect_left(rows, r)) else r - num
|
4784
|
+
for r in filterfalse(rows_set.__contains__, self.displayed_rows)
|
4785
|
+
]
|
4779
4786
|
return event_data
|
4780
4787
|
|
4781
4788
|
def delete_rows_displayed(self, rows: list, event_data: dict) -> EventDataDict:
|
@@ -4847,20 +4854,23 @@ class MainTable(tk.Canvas):
|
|
4847
4854
|
) -> list[int] | None:
|
4848
4855
|
if rows is None and all_rows_displayed is None:
|
4849
4856
|
return list(range(self.total_data_rows())) if self.all_rows_displayed else self.displayed_rows
|
4850
|
-
total_data_rows = None
|
4851
|
-
if (rows is not None and rows != self.displayed_rows) or (all_rows_displayed and not self.all_rows_displayed):
|
4852
|
-
self.purge_undo_and_redo_stack()
|
4853
4857
|
if rows is not None and rows != self.displayed_rows:
|
4858
|
+
self.purge_undo_and_redo_stack()
|
4854
4859
|
self.displayed_rows = sorted(rows)
|
4855
|
-
|
4856
|
-
|
4857
|
-
|
4858
|
-
|
4859
|
-
|
4860
|
-
|
4861
|
-
|
4860
|
+
# setting all_rows_displayed
|
4861
|
+
if all_rows_displayed is not None:
|
4862
|
+
# setting it to True and it's currently False
|
4863
|
+
if all_rows_displayed and not self.all_rows_displayed:
|
4864
|
+
self.purge_undo_and_redo_stack()
|
4865
|
+
self.all_rows_displayed = True
|
4866
|
+
# setting it to False and it's currently True
|
4867
|
+
elif not all_rows_displayed and self.all_rows_displayed:
|
4868
|
+
# if rows is None then displayed_rows needs to be reset
|
4869
|
+
if rows is None:
|
4870
|
+
self.displayed_rows = list(range(self.total_data_rows()))
|
4871
|
+
self.all_rows_displayed = False
|
4862
4872
|
if reset_row_positions:
|
4863
|
-
self.reset_row_positions(
|
4873
|
+
self.reset_row_positions()
|
4864
4874
|
if deselect_all:
|
4865
4875
|
self.deselect("all", redraw=False)
|
4866
4876
|
|
@@ -4873,22 +4883,23 @@ class MainTable(tk.Canvas):
|
|
4873
4883
|
) -> list[int] | None:
|
4874
4884
|
if columns is None and all_columns_displayed is None:
|
4875
4885
|
return list(range(self.total_data_cols())) if self.all_columns_displayed else self.displayed_columns
|
4876
|
-
total_data_cols = None
|
4877
|
-
if (columns is not None and columns != self.displayed_columns) or (
|
4878
|
-
all_columns_displayed and not self.all_columns_displayed
|
4879
|
-
):
|
4880
|
-
self.purge_undo_and_redo_stack()
|
4881
4886
|
if columns is not None and columns != self.displayed_columns:
|
4887
|
+
self.purge_undo_and_redo_stack()
|
4882
4888
|
self.displayed_columns = sorted(columns)
|
4883
|
-
|
4884
|
-
|
4885
|
-
|
4886
|
-
|
4887
|
-
|
4888
|
-
|
4889
|
-
|
4889
|
+
# setting all_columns_displayed
|
4890
|
+
if all_columns_displayed is not None:
|
4891
|
+
# setting it to True and it's currently False
|
4892
|
+
if all_columns_displayed and not self.all_columns_displayed:
|
4893
|
+
self.purge_undo_and_redo_stack()
|
4894
|
+
self.all_columns_displayed = True
|
4895
|
+
# setting it to False and it's currently True
|
4896
|
+
elif not all_columns_displayed and self.all_columns_displayed:
|
4897
|
+
# if columns is None then displayed_columns needs to be reset
|
4898
|
+
if columns is None:
|
4899
|
+
self.displayed_columns = list(range(self.total_data_cols()))
|
4900
|
+
self.all_columns_displayed = False
|
4890
4901
|
if reset_col_positions:
|
4891
|
-
self.reset_col_positions(
|
4902
|
+
self.reset_col_positions()
|
4892
4903
|
if deselect_all:
|
4893
4904
|
self.deselect("all", redraw=False)
|
4894
4905
|
|
@@ -5234,32 +5245,33 @@ class MainTable(tk.Canvas):
|
|
5234
5245
|
tag,
|
5235
5246
|
draw_outline=True,
|
5236
5247
|
draw_arrow=True,
|
5237
|
-
|
5248
|
+
open_=False,
|
5238
5249
|
):
|
5239
5250
|
if draw_outline and self.PAR.ops.show_dropdown_borders:
|
5240
5251
|
self.redraw_highlight(x1 + 1, y1 + 1, x2, y2, fill="", outline=self.PAR.ops.table_fg, tag=tag)
|
5241
5252
|
if draw_arrow:
|
5242
5253
|
mod = (self.table_txt_height - 1) if self.table_txt_height % 2 else self.table_txt_height
|
5243
|
-
|
5244
|
-
|
5245
|
-
|
5246
|
-
|
5254
|
+
small_mod = int(mod / 5)
|
5255
|
+
mid_y = floor(self.min_row_height / 2)
|
5256
|
+
if open_:
|
5257
|
+
# up arrow
|
5247
5258
|
points = (
|
5248
|
-
x2 -
|
5249
|
-
y1 + mid_y +
|
5250
|
-
x2 -
|
5251
|
-
y1 + mid_y -
|
5252
|
-
x2 -
|
5253
|
-
y1 + mid_y +
|
5259
|
+
x2 - 4 - small_mod - small_mod - small_mod - small_mod,
|
5260
|
+
y1 + mid_y + small_mod,
|
5261
|
+
x2 - 4 - small_mod - small_mod,
|
5262
|
+
y1 + mid_y - small_mod,
|
5263
|
+
x2 - 4,
|
5264
|
+
y1 + mid_y + small_mod,
|
5254
5265
|
)
|
5255
5266
|
else:
|
5267
|
+
# down arrow
|
5256
5268
|
points = (
|
5257
|
-
x2 -
|
5258
|
-
y1 + mid_y -
|
5259
|
-
x2 -
|
5260
|
-
y1 + mid_y +
|
5261
|
-
x2 -
|
5262
|
-
y1 + mid_y -
|
5269
|
+
x2 - 4 - small_mod - small_mod - small_mod - small_mod,
|
5270
|
+
y1 + mid_y - small_mod,
|
5271
|
+
x2 - 4 - small_mod - small_mod,
|
5272
|
+
y1 + mid_y + small_mod,
|
5273
|
+
x2 - 4,
|
5274
|
+
y1 + mid_y - small_mod,
|
5263
5275
|
)
|
5264
5276
|
if self.hidd_dropdown:
|
5265
5277
|
t, sh = self.hidd_dropdown.popitem()
|
@@ -5270,10 +5282,13 @@ class MainTable(tk.Canvas):
|
|
5270
5282
|
self.itemconfig(t, fill=fill, tag=tag, state="normal")
|
5271
5283
|
self.lift(t)
|
5272
5284
|
else:
|
5273
|
-
t = self.
|
5285
|
+
t = self.create_line(
|
5274
5286
|
points,
|
5275
5287
|
fill=fill,
|
5276
5288
|
tag=tag,
|
5289
|
+
width=2,
|
5290
|
+
capstyle=tk.ROUND,
|
5291
|
+
joinstyle=tk.BEVEL,
|
5277
5292
|
)
|
5278
5293
|
self.disp_dropdown[t] = True
|
5279
5294
|
|
@@ -5604,7 +5619,7 @@ class MainTable(tk.Canvas):
|
|
5604
5619
|
tag=f"dd_{r}_{c}",
|
5605
5620
|
draw_outline=not dd_drawn,
|
5606
5621
|
draw_arrow=mw >= 5,
|
5607
|
-
|
5622
|
+
open_=dd_coords == (r, c),
|
5608
5623
|
)
|
5609
5624
|
else:
|
5610
5625
|
mw = crightgridln - cleftgridln - 1
|
@@ -5622,7 +5637,7 @@ class MainTable(tk.Canvas):
|
|
5622
5637
|
tag=f"dd_{r}_{c}",
|
5623
5638
|
draw_outline=not dd_drawn,
|
5624
5639
|
draw_arrow=mw >= 5,
|
5625
|
-
|
5640
|
+
open_=dd_coords == (r, c),
|
5626
5641
|
)
|
5627
5642
|
else:
|
5628
5643
|
mw = crightgridln - cleftgridln - 1
|
@@ -5641,7 +5656,7 @@ class MainTable(tk.Canvas):
|
|
5641
5656
|
tag=f"dd_{r}_{c}",
|
5642
5657
|
draw_outline=not dd_drawn,
|
5643
5658
|
draw_arrow=mw >= 5,
|
5644
|
-
|
5659
|
+
open_=dd_coords == (r, c),
|
5645
5660
|
)
|
5646
5661
|
else:
|
5647
5662
|
mw = crightgridln - cleftgridln - 1
|
@@ -5956,7 +5971,7 @@ class MainTable(tk.Canvas):
|
|
5956
5971
|
if not self.PAR.ops.rounded_boxes or not x2 - x1 or not y2 - y1:
|
5957
5972
|
radius = 0
|
5958
5973
|
else:
|
5959
|
-
radius =
|
5974
|
+
radius = 5
|
5960
5975
|
coords = rounded_box_coords(
|
5961
5976
|
x1,
|
5962
5977
|
y1,
|
@@ -6044,7 +6059,7 @@ class MainTable(tk.Canvas):
|
|
6044
6059
|
mt_border_col = self.PAR.ops.table_selected_columns_border_fg
|
6045
6060
|
if self.selection_boxes:
|
6046
6061
|
self.itemconfig(next(reversed(self.selection_boxes)), state="normal")
|
6047
|
-
x1, y1, x2, y2 = self.
|
6062
|
+
x1, y1, x2, y2 = self.box_coords_x_canvas_coords(r1, c1, r2, c2, type_)
|
6048
6063
|
fill_iid = self.display_box(
|
6049
6064
|
x1,
|
6050
6065
|
y1,
|
@@ -6057,7 +6072,7 @@ class MainTable(tk.Canvas):
|
|
6057
6072
|
width=1,
|
6058
6073
|
)
|
6059
6074
|
index_iid = self.RI.display_box(
|
6060
|
-
|
6075
|
+
0,
|
6061
6076
|
y1,
|
6062
6077
|
self.RI.current_width - 1,
|
6063
6078
|
y2,
|
@@ -6131,7 +6146,7 @@ class MainTable(tk.Canvas):
|
|
6131
6146
|
if self.PAR.ops.show_selected_cells_border:
|
6132
6147
|
self.tag_raise(self.selected.iid)
|
6133
6148
|
|
6134
|
-
def
|
6149
|
+
def box_coords_x_canvas_coords(
|
6135
6150
|
self,
|
6136
6151
|
r1: int,
|
6137
6152
|
c1: int,
|
@@ -6178,10 +6193,10 @@ class MainTable(tk.Canvas):
|
|
6178
6193
|
state = "normal"
|
6179
6194
|
if self.selected.fill_iid == fill_iid:
|
6180
6195
|
self.selected = self.selected._replace(box=Box_nt(r1, c1, r2, c2))
|
6181
|
-
x1, y1, x2, y2 = self.
|
6196
|
+
x1, y1, x2, y2 = self.box_coords_x_canvas_coords(r1, c1, r2, c2, type_)
|
6182
6197
|
self.display_box(x1, y1, x2, y2, fill=mt_bg, outline="", state=state, tags=type_, width=1, iid=fill_iid)
|
6183
6198
|
self.RI.display_box(
|
6184
|
-
|
6199
|
+
0,
|
6185
6200
|
y1,
|
6186
6201
|
self.RI.current_width - 1,
|
6187
6202
|
y2,
|
tksheet/row_index.py
CHANGED
@@ -893,7 +893,7 @@ class RowIndex(tk.Canvas):
|
|
893
893
|
self.open_cell(event)
|
894
894
|
elif (iid := self.event_over_tree_arrow(r, canvasy, event.x)) is not None:
|
895
895
|
if self.MT.selection_boxes:
|
896
|
-
self.select_row(r, redraw=False)
|
896
|
+
self.select_row(r, ext=True, redraw=False)
|
897
897
|
self.PAR.item(iid, open_=iid not in self.tree_open_ids)
|
898
898
|
else:
|
899
899
|
self.mouseclick_outside_editor_or_dropdown_all_canvases(inside=True)
|
@@ -957,9 +957,10 @@ class RowIndex(tk.Canvas):
|
|
957
957
|
run_binding_func: bool = True,
|
958
958
|
ext: bool = False,
|
959
959
|
) -> int:
|
960
|
-
self.MT.
|
961
|
-
|
962
|
-
|
960
|
+
boxes_to_hide = tuple(self.MT.selection_boxes)
|
961
|
+
fill_iid = self.MT.create_selection_box(r, 0, r + 1, len(self.MT.col_positions) - 1, "rows", ext=ext)
|
962
|
+
for iid in boxes_to_hide:
|
963
|
+
self.MT.hide_selection_box(iid)
|
963
964
|
if redraw:
|
964
965
|
self.MT.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
|
965
966
|
if run_binding_func:
|
@@ -999,7 +1000,7 @@ class RowIndex(tk.Canvas):
|
|
999
1000
|
y1,
|
1000
1001
|
x2,
|
1001
1002
|
y2,
|
1002
|
-
radius=
|
1003
|
+
radius=5 if self.PAR.ops.rounded_boxes else 0,
|
1003
1004
|
)
|
1004
1005
|
if isinstance(iid, int):
|
1005
1006
|
self.coords(iid, coords)
|
@@ -1344,29 +1345,33 @@ class RowIndex(tk.Canvas):
|
|
1344
1345
|
open_: bool = False,
|
1345
1346
|
) -> None:
|
1346
1347
|
mod = (self.MT.index_txt_height - 1) if self.MT.index_txt_height % 2 else self.MT.index_txt_height
|
1347
|
-
|
1348
|
-
|
1349
|
-
small_mod = int(half_mod / 4) - 1
|
1350
|
-
mid_y = int(self.MT.min_row_height / 2)
|
1348
|
+
small_mod = int(mod / 5)
|
1349
|
+
mid_y = floor(self.MT.min_row_height / 2)
|
1351
1350
|
# up arrow
|
1352
1351
|
if open_:
|
1353
1352
|
points = (
|
1354
|
-
|
1355
|
-
|
1356
|
-
|
1357
|
-
|
1358
|
-
x1 +
|
1359
|
-
y1 + mid_y
|
1353
|
+
# the left hand downward point
|
1354
|
+
x1 + 5 + indent,
|
1355
|
+
y1 + mid_y + small_mod,
|
1356
|
+
# the middle upward point
|
1357
|
+
x1 + 5 + indent + small_mod + small_mod,
|
1358
|
+
y1 + mid_y - small_mod,
|
1359
|
+
# the right hand downward point
|
1360
|
+
x1 + 5 + indent + small_mod + small_mod + small_mod + small_mod,
|
1361
|
+
y1 + mid_y + small_mod,
|
1360
1362
|
)
|
1361
1363
|
# right pointing arrow
|
1362
1364
|
else:
|
1363
1365
|
points = (
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1366
|
+
# the upper point
|
1367
|
+
x1 + 5 + indent + small_mod + small_mod,
|
1368
|
+
y1 + mid_y - small_mod - small_mod,
|
1369
|
+
# the middle point
|
1370
|
+
x1 + 5 + indent + small_mod + small_mod + small_mod + small_mod,
|
1367
1371
|
y1 + mid_y,
|
1368
|
-
|
1369
|
-
|
1372
|
+
# the bottom point
|
1373
|
+
x1 + 5 + indent + small_mod + small_mod,
|
1374
|
+
y1 + mid_y + small_mod + small_mod,
|
1370
1375
|
)
|
1371
1376
|
if self.hidd_tree_arrow:
|
1372
1377
|
t, sh = self.hidd_tree_arrow.popitem()
|
@@ -1404,26 +1409,27 @@ class RowIndex(tk.Canvas):
|
|
1404
1409
|
self.redraw_highlight(x1 + 1, y1 + 1, x2, y2, fill="", outline=self.PAR.ops.index_fg, tag=tag)
|
1405
1410
|
if draw_arrow:
|
1406
1411
|
mod = (self.MT.index_txt_height - 1) if self.MT.index_txt_height % 2 else self.MT.index_txt_height
|
1407
|
-
|
1408
|
-
|
1409
|
-
mid_y = (self.MT.index_first_ln_ins - 1) if self.MT.index_first_ln_ins % 2 else self.MT.index_first_ln_ins
|
1412
|
+
small_mod = int(mod / 5)
|
1413
|
+
mid_y = floor(self.MT.min_row_height / 2)
|
1410
1414
|
if open_:
|
1415
|
+
# up arrow
|
1411
1416
|
points = (
|
1412
|
-
x2 -
|
1413
|
-
y1 + mid_y +
|
1414
|
-
x2 -
|
1415
|
-
y1 + mid_y -
|
1416
|
-
x2 -
|
1417
|
-
y1 + mid_y +
|
1417
|
+
x2 - 4 - small_mod - small_mod - small_mod - small_mod,
|
1418
|
+
y1 + mid_y + small_mod,
|
1419
|
+
x2 - 4 - small_mod - small_mod,
|
1420
|
+
y1 + mid_y - small_mod,
|
1421
|
+
x2 - 4,
|
1422
|
+
y1 + mid_y + small_mod,
|
1418
1423
|
)
|
1419
1424
|
else:
|
1425
|
+
# down arrow
|
1420
1426
|
points = (
|
1421
|
-
x2 -
|
1422
|
-
y1 + mid_y -
|
1423
|
-
x2 -
|
1424
|
-
y1 + mid_y +
|
1425
|
-
x2 -
|
1426
|
-
y1 + mid_y -
|
1427
|
+
x2 - 4 - small_mod - small_mod - small_mod - small_mod,
|
1428
|
+
y1 + mid_y - small_mod,
|
1429
|
+
x2 - 4 - small_mod - small_mod,
|
1430
|
+
y1 + mid_y + small_mod,
|
1431
|
+
x2 - 4,
|
1432
|
+
y1 + mid_y - small_mod,
|
1427
1433
|
)
|
1428
1434
|
if self.hidd_dropdown:
|
1429
1435
|
t, sh = self.hidd_dropdown.popitem()
|
@@ -1434,10 +1440,13 @@ class RowIndex(tk.Canvas):
|
|
1434
1440
|
self.itemconfig(t, fill=fill, tag=tag, state="normal")
|
1435
1441
|
self.lift(t)
|
1436
1442
|
else:
|
1437
|
-
t = self.
|
1443
|
+
t = self.create_line(
|
1438
1444
|
points,
|
1439
1445
|
fill=fill,
|
1440
1446
|
tag=tag,
|
1447
|
+
width=2,
|
1448
|
+
capstyle=tk.ROUND,
|
1449
|
+
joinstyle=tk.BEVEL,
|
1441
1450
|
)
|
1442
1451
|
self.disp_dropdown[t] = True
|
1443
1452
|
|
@@ -1683,12 +1692,12 @@ class RowIndex(tk.Canvas):
|
|
1683
1692
|
iid = self.MT._row_index[datarn].iid
|
1684
1693
|
mw -= self.MT.index_txt_height
|
1685
1694
|
if align == "w":
|
1686
|
-
draw_x += self.MT.index_txt_height +
|
1695
|
+
draw_x += self.MT.index_txt_height + 3
|
1687
1696
|
indent = self.get_treeview_indent(iid)
|
1688
1697
|
draw_x += indent + 5
|
1689
1698
|
if self.tree[iid].children:
|
1690
1699
|
self.redraw_tree_arrow(
|
1691
|
-
|
1700
|
+
2,
|
1692
1701
|
rtopgridln,
|
1693
1702
|
r=r,
|
1694
1703
|
fill=tree_arrow_fg,
|
@@ -2145,7 +2154,7 @@ class RowIndex(tk.Canvas):
|
|
2145
2154
|
"height": win_h,
|
2146
2155
|
"font": self.PAR.ops.index_font,
|
2147
2156
|
"ops": self.PAR.ops,
|
2148
|
-
"outline_color": self.PAR.ops.
|
2157
|
+
"outline_color": self.PAR.ops.index_selected_rows_bg,
|
2149
2158
|
"align": self.get_cell_align(r),
|
2150
2159
|
"values": kwargs["values"],
|
2151
2160
|
}
|
tksheet/sheet.py
CHANGED
@@ -10,7 +10,14 @@ from collections.abc import (
|
|
10
10
|
Iterator,
|
11
11
|
Sequence,
|
12
12
|
)
|
13
|
-
from itertools import
|
13
|
+
from itertools import (
|
14
|
+
accumulate,
|
15
|
+
chain,
|
16
|
+
filterfalse,
|
17
|
+
islice,
|
18
|
+
product,
|
19
|
+
repeat,
|
20
|
+
)
|
14
21
|
from timeit import default_timer
|
15
22
|
from tkinter import ttk
|
16
23
|
from typing import Literal
|
@@ -3813,7 +3820,6 @@ class Sheet(tk.Frame):
|
|
3813
3820
|
columns: None | Literal["all"] | Iterator[int] = None,
|
3814
3821
|
all_columns_displayed: None | bool = None,
|
3815
3822
|
reset_col_positions: bool = True,
|
3816
|
-
refresh: bool = False,
|
3817
3823
|
redraw: bool = False,
|
3818
3824
|
deselect_all: bool = True,
|
3819
3825
|
**kwargs,
|
@@ -3828,8 +3834,9 @@ class Sheet(tk.Frame):
|
|
3828
3834
|
reset_col_positions=reset_col_positions,
|
3829
3835
|
deselect_all=deselect_all,
|
3830
3836
|
)
|
3831
|
-
if refresh
|
3832
|
-
|
3837
|
+
if "refresh" in kwargs:
|
3838
|
+
redraw = kwargs["refresh"]
|
3839
|
+
self.set_refresh_timer(redraw)
|
3833
3840
|
return res
|
3834
3841
|
|
3835
3842
|
def hide_columns(
|
@@ -3846,7 +3853,7 @@ class Sheet(tk.Frame):
|
|
3846
3853
|
if not columns:
|
3847
3854
|
return
|
3848
3855
|
if self.MT.all_columns_displayed:
|
3849
|
-
self.MT.displayed_columns =
|
3856
|
+
self.MT.displayed_columns = list(filterfalse(columns.__contains__, range(self.MT.total_data_cols())))
|
3850
3857
|
to_pop = {c: c for c in columns}
|
3851
3858
|
else:
|
3852
3859
|
to_pop = {}
|
@@ -3876,13 +3883,18 @@ class Sheet(tk.Frame):
|
|
3876
3883
|
self.MT.deselect(redraw=False)
|
3877
3884
|
return self.set_refresh_timer(redraw)
|
3878
3885
|
|
3879
|
-
# uses data indexes
|
3880
3886
|
def show_columns(
|
3881
3887
|
self,
|
3882
3888
|
columns: int | Iterator[int],
|
3883
3889
|
redraw: bool = True,
|
3884
3890
|
deselect_all: bool = True,
|
3885
3891
|
) -> Sheet:
|
3892
|
+
"""
|
3893
|
+
'columns' argument must be data indexes
|
3894
|
+
Function will return without action if Sheet.all_columns
|
3895
|
+
"""
|
3896
|
+
if self.MT.all_columns_displayed:
|
3897
|
+
return
|
3886
3898
|
if isinstance(columns, int):
|
3887
3899
|
columns = [columns]
|
3888
3900
|
cws = self.MT.get_column_widths()
|
@@ -3908,7 +3920,10 @@ class Sheet(tk.Frame):
|
|
3908
3920
|
|
3909
3921
|
@all_columns.setter
|
3910
3922
|
def all_columns(self, a: bool) -> Sheet:
|
3911
|
-
self.MT.
|
3923
|
+
self.MT.display_columns(
|
3924
|
+
columns=None,
|
3925
|
+
all_columns_displayed=a,
|
3926
|
+
)
|
3912
3927
|
return self
|
3913
3928
|
|
3914
3929
|
@property
|
@@ -3917,8 +3932,8 @@ class Sheet(tk.Frame):
|
|
3917
3932
|
|
3918
3933
|
@displayed_columns.setter
|
3919
3934
|
def displayed_columns(self, columns: list[int]) -> Sheet:
|
3920
|
-
self.display_columns(columns=columns, reset_col_positions=
|
3921
|
-
return self
|
3935
|
+
self.display_columns(columns=columns, reset_col_positions=True, redraw=False)
|
3936
|
+
return self.set_refresh_timer()
|
3922
3937
|
|
3923
3938
|
# Hiding Rows
|
3924
3939
|
|
@@ -3933,7 +3948,6 @@ class Sheet(tk.Frame):
|
|
3933
3948
|
rows: None | Literal["all"] | Iterator[int] = None,
|
3934
3949
|
all_rows_displayed: None | bool = None,
|
3935
3950
|
reset_row_positions: bool = True,
|
3936
|
-
refresh: bool = False,
|
3937
3951
|
redraw: bool = False,
|
3938
3952
|
deselect_all: bool = True,
|
3939
3953
|
**kwargs,
|
@@ -3946,8 +3960,9 @@ class Sheet(tk.Frame):
|
|
3946
3960
|
reset_row_positions=reset_row_positions,
|
3947
3961
|
deselect_all=deselect_all,
|
3948
3962
|
)
|
3949
|
-
if refresh
|
3950
|
-
|
3963
|
+
if "refresh" in kwargs:
|
3964
|
+
redraw = kwargs["refresh"]
|
3965
|
+
self.set_refresh_timer(redraw)
|
3951
3966
|
return res
|
3952
3967
|
|
3953
3968
|
def hide_rows(
|
@@ -3965,7 +3980,7 @@ class Sheet(tk.Frame):
|
|
3965
3980
|
if not rows:
|
3966
3981
|
return
|
3967
3982
|
if self.MT.all_rows_displayed:
|
3968
|
-
self.MT.displayed_rows =
|
3983
|
+
self.MT.displayed_rows = list(filterfalse(rows.__contains__, range(self.MT.total_data_rows())))
|
3969
3984
|
to_pop = {r: r for r in rows}
|
3970
3985
|
else:
|
3971
3986
|
to_pop = {}
|
@@ -3996,13 +4011,18 @@ class Sheet(tk.Frame):
|
|
3996
4011
|
self.MT.deselect(redraw=False)
|
3997
4012
|
return self.set_refresh_timer(redraw)
|
3998
4013
|
|
3999
|
-
# uses data indexes
|
4000
4014
|
def show_rows(
|
4001
4015
|
self,
|
4002
4016
|
rows: int | Iterator[int],
|
4003
4017
|
redraw: bool = True,
|
4004
4018
|
deselect_all: bool = True,
|
4005
4019
|
) -> Sheet:
|
4020
|
+
"""
|
4021
|
+
'rows' argument must be data indexes
|
4022
|
+
Function will return without action if Sheet.all_rows
|
4023
|
+
"""
|
4024
|
+
if self.MT.all_rows_displayed:
|
4025
|
+
return
|
4006
4026
|
if isinstance(rows, int):
|
4007
4027
|
rows = [rows]
|
4008
4028
|
rhs = self.MT.get_row_heights()
|
@@ -4028,7 +4048,10 @@ class Sheet(tk.Frame):
|
|
4028
4048
|
|
4029
4049
|
@all_rows.setter
|
4030
4050
|
def all_rows(self, a: bool) -> Sheet:
|
4031
|
-
self.MT.
|
4051
|
+
self.MT.display_rows(
|
4052
|
+
rows=None,
|
4053
|
+
all_rows_displayed=a,
|
4054
|
+
)
|
4032
4055
|
return self
|
4033
4056
|
|
4034
4057
|
@property
|
@@ -4037,8 +4060,8 @@ class Sheet(tk.Frame):
|
|
4037
4060
|
|
4038
4061
|
@displayed_rows.setter
|
4039
4062
|
def displayed_rows(self, rows: list[int]) -> Sheet:
|
4040
|
-
self.display_rows(rows=rows, reset_row_positions=
|
4041
|
-
return self
|
4063
|
+
self.display_rows(rows=rows, reset_row_positions=True, redraw=False)
|
4064
|
+
return self.set_refresh_timer()
|
4042
4065
|
|
4043
4066
|
# Hiding Sheet Elements
|
4044
4067
|
|
@@ -4747,7 +4770,7 @@ class Sheet(tk.Frame):
|
|
4747
4770
|
Closes everything else
|
4748
4771
|
"""
|
4749
4772
|
self.hide_rows(
|
4750
|
-
|
4773
|
+
rows={rn for rn in self.MT.displayed_rows if self.MT._row_index[rn].parent},
|
4751
4774
|
redraw=False,
|
4752
4775
|
deselect_all=False,
|
4753
4776
|
data_indexes=True,
|
@@ -4768,13 +4791,15 @@ class Sheet(tk.Frame):
|
|
4768
4791
|
"""
|
4769
4792
|
to_open = []
|
4770
4793
|
disp_set = set(self.MT.displayed_rows)
|
4771
|
-
|
4772
|
-
|
4794
|
+
tree = self.RI.tree
|
4795
|
+
rns = self.RI.tree_rns
|
4796
|
+
open_ids = self.RI.tree_open_ids
|
4797
|
+
descendants = self.RI.get_iid_descendants
|
4773
4798
|
for item in filter(items.__contains__, self.get_children()):
|
4774
|
-
if
|
4775
|
-
|
4776
|
-
if
|
4777
|
-
to_disp = [
|
4799
|
+
if tree[item].children:
|
4800
|
+
open_ids.add(item)
|
4801
|
+
if rns[item] in disp_set:
|
4802
|
+
to_disp = [rns[did] for did in descendants(item, check_open=True)]
|
4778
4803
|
for i in to_disp:
|
4779
4804
|
disp_set.add(i)
|
4780
4805
|
to_open.extend(to_disp)
|
@@ -4921,7 +4946,7 @@ class Sheet(tk.Frame):
|
|
4921
4946
|
self.RI.tree_open_ids.add(item)
|
4922
4947
|
if self.item_displayed(item):
|
4923
4948
|
self.show_rows(
|
4924
|
-
rows=(self.RI.tree_rns
|
4949
|
+
rows=map(self.RI.tree_rns.__getitem__, self.RI.get_iid_descendants(item, check_open=True)),
|
4925
4950
|
redraw=False,
|
4926
4951
|
deselect_all=False,
|
4927
4952
|
)
|
@@ -4929,7 +4954,9 @@ class Sheet(tk.Frame):
|
|
4929
4954
|
self.RI.tree_open_ids.discard(item)
|
4930
4955
|
if self.item_displayed(item):
|
4931
4956
|
self.hide_rows(
|
4932
|
-
rows=
|
4957
|
+
rows=set(
|
4958
|
+
map(self.RI.tree_rns.__getitem__, self.RI.get_iid_descendants(item, check_open=True))
|
4959
|
+
),
|
4933
4960
|
redraw=False,
|
4934
4961
|
deselect_all=False,
|
4935
4962
|
data_indexes=True,
|
@@ -5106,7 +5133,8 @@ class Sheet(tk.Frame):
|
|
5106
5133
|
if (item := item.lower()) not in self.RI.tree:
|
5107
5134
|
raise ValueError(f"Item '{item}' does not exist.")
|
5108
5135
|
if not self.RI.tree[item].parent:
|
5109
|
-
|
5136
|
+
find_node = self.RI.tree[item]
|
5137
|
+
return next(index for index, node in enumerate(self.RI.gen_top_nodes()) if node == find_node)
|
5110
5138
|
return self.RI.tree[item].parent.children.index(self.RI.tree[item])
|
5111
5139
|
|
5112
5140
|
def item_displayed(self, item: str) -> bool:
|
@@ -5128,8 +5156,11 @@ class Sheet(tk.Frame):
|
|
5128
5156
|
if (item := item.lower()) not in self.RI.tree:
|
5129
5157
|
raise ValueError(f"Item '{item}' does not exist.")
|
5130
5158
|
if self.RI.tree[item].parent:
|
5131
|
-
|
5132
|
-
self.item
|
5159
|
+
self.show_rows(
|
5160
|
+
rows=self._tree_open(list(self.RI.get_iid_ancestors(item))),
|
5161
|
+
redraw=False,
|
5162
|
+
deselect_all=False,
|
5163
|
+
)
|
5133
5164
|
return self.set_refresh_timer(redraw)
|
5134
5165
|
|
5135
5166
|
def scroll_to_item(self, item: str, redraw=False) -> Sheet:
|
@@ -5151,14 +5182,15 @@ class Sheet(tk.Frame):
|
|
5151
5182
|
Get currently selected item ids
|
5152
5183
|
"""
|
5153
5184
|
return [
|
5154
|
-
self.MT._row_index[self.
|
5155
|
-
for rn in self.get_selected_rows(get_cells_as_rows=cells)
|
5185
|
+
self.MT._row_index[self.MT.displayed_rows[rn]].iid for rn in self.get_selected_rows(get_cells_as_rows=cells)
|
5156
5186
|
]
|
5157
5187
|
|
5158
5188
|
def selection_set(self, *items, redraw: bool = True) -> Sheet:
|
5159
5189
|
if any(item.lower() in self.RI.tree for item in unpack(items)):
|
5160
|
-
self.
|
5190
|
+
boxes_to_hide = tuple(self.MT.selection_boxes)
|
5161
5191
|
self.selection_add(*items, redraw=False)
|
5192
|
+
for iid in boxes_to_hide:
|
5193
|
+
self.MT.hide_selection_box(iid)
|
5162
5194
|
return self.set_refresh_timer(redraw)
|
5163
5195
|
|
5164
5196
|
def selection_add(self, *items, redraw: bool = True) -> Sheet:
|
@@ -5220,7 +5252,7 @@ class Sheet(tk.Frame):
|
|
5220
5252
|
|
5221
5253
|
# Functions not in docs
|
5222
5254
|
|
5223
|
-
def event_generate(self, *args, **kwargs):
|
5255
|
+
def event_generate(self, *args, **kwargs) -> None:
|
5224
5256
|
self.MT.event_generate(*args, **kwargs)
|
5225
5257
|
|
5226
5258
|
def emit_event(
|
tksheet/themes.py
CHANGED
@@ -21,7 +21,7 @@ theme_light_blue: dict[str, str] = DotDict({
|
|
21
21
|
"index_fg": "black",
|
22
22
|
"index_selected_cells_bg": "#D3E3FD",
|
23
23
|
"index_selected_cells_fg": "black",
|
24
|
-
"top_left_bg": "#
|
24
|
+
"top_left_bg": "#F9FBFD",
|
25
25
|
"top_left_fg": "#C7C7C7",
|
26
26
|
"top_left_fg_highlight": "#747775",
|
27
27
|
"table_bg": "#FFFFFF",
|
@@ -84,19 +84,19 @@ theme_light_green: dict[str, str] = DotDict({
|
|
84
84
|
"popup_menu_highlight_fg": "#000000",
|
85
85
|
"index_hidden_rows_expander_bg": "gray30",
|
86
86
|
"header_hidden_columns_expander_bg": "gray30",
|
87
|
-
"header_bg": "#
|
87
|
+
"header_bg": "#F5F5F5",
|
88
88
|
"header_border_fg": "#ababab",
|
89
89
|
"header_grid_fg": "#ababab",
|
90
90
|
"header_fg": "black",
|
91
|
-
"header_selected_cells_bg": "#
|
91
|
+
"header_selected_cells_bg": "#CAEAD8",
|
92
92
|
"header_selected_cells_fg": "#217346",
|
93
|
-
"index_bg": "#
|
93
|
+
"index_bg": "#F5F5F5",
|
94
94
|
"index_border_fg": "#ababab",
|
95
95
|
"index_grid_fg": "#ababab",
|
96
96
|
"index_fg": "black",
|
97
|
-
"index_selected_cells_bg": "#
|
97
|
+
"index_selected_cells_bg": "#CAEAD8",
|
98
98
|
"index_selected_cells_fg": "#107C41",
|
99
|
-
"top_left_bg": "#
|
99
|
+
"top_left_bg": "#F5F5F5",
|
100
100
|
"top_left_fg": "#b7b7b7",
|
101
101
|
"top_left_fg_highlight": "#5f6368",
|
102
102
|
"table_bg": "#FFFFFF",
|
@@ -171,7 +171,7 @@ theme_dark: dict[str, str] = DotDict({
|
|
171
171
|
"index_fg": "gray70",
|
172
172
|
"index_selected_cells_bg": "#545454",
|
173
173
|
"index_selected_cells_fg": "#6aa2fc",
|
174
|
-
"top_left_bg": "#
|
174
|
+
"top_left_bg": "#28282a",
|
175
175
|
"top_left_fg": "#505054",
|
176
176
|
"top_left_fg_highlight": "white",
|
177
177
|
"table_bg": "#000000",
|
@@ -246,7 +246,7 @@ theme_black: dict[str, str] = DotDict({
|
|
246
246
|
"index_fg": "#FBB86C",
|
247
247
|
"index_selected_cells_bg": "#545454",
|
248
248
|
"index_selected_cells_fg": "#FBB86C",
|
249
|
-
"top_left_bg": "#
|
249
|
+
"top_left_bg": "#141416",
|
250
250
|
"top_left_fg": "#505054",
|
251
251
|
"top_left_fg_highlight": "#FBB86C",
|
252
252
|
"table_bg": "#000000",
|
tksheet/top_left_rectangle.py
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
tksheet/__init__.py,sha256=CsvPUSqncRztCcOp7ke7wcU9HI6vtZhS7NdDrltgRyU,2144
|
2
|
+
tksheet/colors.py,sha256=1k06VorynLmnC4FdJg8H4reIA6rXaeXBpdMwXLhN8oc,51594
|
3
|
+
tksheet/column_headers.py,sha256=HlMCcwEz2e2L7j93mpkhtlXbIMu_yRTWFIXr9f1Sch8,102430
|
4
|
+
tksheet/formatters.py,sha256=DXif00aq9DgFpXwkbiqD86KxtDg0Meop51hLY-KcGNQ,10037
|
5
|
+
tksheet/functions.py,sha256=PgigHSO_cnQoWSXFSfJ5YlPbyOVd2BYUHU4UBbUCCFE,40706
|
6
|
+
tksheet/main_table.py,sha256=4jdk2ro5pyooMr_BKiv2PkS-sxnWLZe0HcgX69NH7Y8,328195
|
7
|
+
tksheet/other_classes.py,sha256=CDN38ZjKxZro9YOS_g0DjMC82-Mi9udedny4wdd90W0,14347
|
8
|
+
tksheet/row_index.py,sha256=to6EPvmh7NV9YjGfrLOYgrMqDiSMdTjwOWa6Umh0_wA,109206
|
9
|
+
tksheet/sheet.py,sha256=d3HnnJeaEkhZ7ID2t8M2g87hLg66iJmUWV60rGz_OaY,273221
|
10
|
+
tksheet/sheet_options.py,sha256=Azo7_-H0e0ssYEoU7Mq_OWy3S-U05rp4_6Q2E2Ffuu8,12262
|
11
|
+
tksheet/text_editor.py,sha256=aRm1Y5GfORiEAJthtN1uQ30CT3VoF8mRWvR-SIXPrJU,6548
|
12
|
+
tksheet/themes.py,sha256=ijEG5xsrNZR04r5aZaVDHO9_ZFW5q6bzw6NxIjkKIR4,14474
|
13
|
+
tksheet/top_left_rectangle.py,sha256=ZptxpfkkYL09d6ILDkY_u6RLv8PB-AGHOkBz-K0mJ0E,8473
|
14
|
+
tksheet/types.py,sha256=IgoEHMbceKpakcZtanxKaKJ4RdCq7UW6EoEIIz5O59k,340
|
15
|
+
tksheet/vars.py,sha256=86ubZZElsnQuC6Lv6bW2lt2NhD9wAp6PxtkK7ufKqq0,3452
|
16
|
+
tksheet-7.2.9.dist-info/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
|
17
|
+
tksheet-7.2.9.dist-info/METADATA,sha256=sNAOmKjkUJ-PKgZ7koeO3rqc0-cJn5_ppeXXDjpJdJ4,6284
|
18
|
+
tksheet-7.2.9.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
19
|
+
tksheet-7.2.9.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
|
20
|
+
tksheet-7.2.9.dist-info/RECORD,,
|
tksheet-7.2.7.dist-info/RECORD
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
tksheet/__init__.py,sha256=x_4i9xHuhs0udU1k7z8-4bY0maNfh98XfaGxCktPPKY,2144
|
2
|
-
tksheet/colors.py,sha256=1k06VorynLmnC4FdJg8H4reIA6rXaeXBpdMwXLhN8oc,51594
|
3
|
-
tksheet/column_headers.py,sha256=OTK9av3WkPF3ToXAALsa12TqltEFw_-c3kBUv_MTcok,102189
|
4
|
-
tksheet/formatters.py,sha256=DXif00aq9DgFpXwkbiqD86KxtDg0Meop51hLY-KcGNQ,10037
|
5
|
-
tksheet/functions.py,sha256=Ie53z5GWbGoUXUiTf0DtoyOadWFbMFXMFwUjM67vetI,40706
|
6
|
-
tksheet/main_table.py,sha256=12LMFBbZr_eWJih45tG_RQ2LCZCEPnkWsil4RG0tCJc,327526
|
7
|
-
tksheet/other_classes.py,sha256=CDN38ZjKxZro9YOS_g0DjMC82-Mi9udedny4wdd90W0,14347
|
8
|
-
tksheet/row_index.py,sha256=Owsa7YKVZc9TY7W5nfs-M0I1RdFvuoyXhpuyCi5kleo,108606
|
9
|
-
tksheet/sheet.py,sha256=xMctRdAC9npUPPEMXFfH4qCE_vyrUV7BJFrCumaOmU0,272368
|
10
|
-
tksheet/sheet_options.py,sha256=Azo7_-H0e0ssYEoU7Mq_OWy3S-U05rp4_6Q2E2Ffuu8,12262
|
11
|
-
tksheet/text_editor.py,sha256=aRm1Y5GfORiEAJthtN1uQ30CT3VoF8mRWvR-SIXPrJU,6548
|
12
|
-
tksheet/themes.py,sha256=N9nAj6vcWk4UdcrAakvz2LPbJEJWXdv3j7Om6AnvX5k,14474
|
13
|
-
tksheet/top_left_rectangle.py,sha256=o-M6i5NjaJwo60tV-BDP9SbaT1CzQNoPjuoC7p-nb5Q,8436
|
14
|
-
tksheet/types.py,sha256=IgoEHMbceKpakcZtanxKaKJ4RdCq7UW6EoEIIz5O59k,340
|
15
|
-
tksheet/vars.py,sha256=86ubZZElsnQuC6Lv6bW2lt2NhD9wAp6PxtkK7ufKqq0,3452
|
16
|
-
tksheet-7.2.7.dist-info/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
|
17
|
-
tksheet-7.2.7.dist-info/METADATA,sha256=S4tF46fSc18hhRz-8v2P9vJD8M3JtXlRTJRpuH7vQpY,6284
|
18
|
-
tksheet-7.2.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
19
|
-
tksheet-7.2.7.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
|
20
|
-
tksheet-7.2.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|