tksheet 7.4.9__py3-none-any.whl → 7.4.11__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tksheet/__init__.py +1 -1
- tksheet/column_headers.py +16 -13
- tksheet/functions.py +18 -15
- tksheet/main_table.py +152 -131
- tksheet/row_index.py +286 -131
- tksheet/sheet.py +186 -236
- tksheet/sorting.py +61 -50
- tksheet/tksheet_types.py +0 -3
- {tksheet-7.4.9.dist-info → tksheet-7.4.11.dist-info}/METADATA +1 -1
- tksheet-7.4.11.dist-info/RECORD +22 -0
- tksheet-7.4.9.dist-info/RECORD +0 -22
- {tksheet-7.4.9.dist-info → tksheet-7.4.11.dist-info}/LICENSE.txt +0 -0
- {tksheet-7.4.9.dist-info → tksheet-7.4.11.dist-info}/WHEEL +0 -0
- {tksheet-7.4.9.dist-info → tksheet-7.4.11.dist-info}/top_level.txt +0 -0
tksheet/sheet.py
CHANGED
@@ -87,7 +87,7 @@ from .themes import (
|
|
87
87
|
theme_light_blue,
|
88
88
|
theme_light_green,
|
89
89
|
)
|
90
|
-
from .tksheet_types import
|
90
|
+
from .tksheet_types import Binding, CellPropertyKey, CreateSpanTypes, ExtraBinding
|
91
91
|
from .top_left_rectangle import TopLeftRectangle
|
92
92
|
|
93
93
|
|
@@ -543,7 +543,7 @@ class Sheet(tk.Frame):
|
|
543
543
|
def set_header_data(
|
544
544
|
self,
|
545
545
|
value: Any,
|
546
|
-
c: int | None |
|
546
|
+
c: int | None | Iterator[int] = None,
|
547
547
|
redraw: bool = True,
|
548
548
|
) -> Sheet:
|
549
549
|
if c is None:
|
@@ -579,7 +579,7 @@ class Sheet(tk.Frame):
|
|
579
579
|
def set_index_data(
|
580
580
|
self,
|
581
581
|
value: Any,
|
582
|
-
r: int | None |
|
582
|
+
r: int | None | Iterator[int] = None,
|
583
583
|
redraw: bool = True,
|
584
584
|
) -> Sheet:
|
585
585
|
if r is None:
|
@@ -1301,6 +1301,7 @@ class Sheet(tk.Frame):
|
|
1301
1301
|
undo: bool | None = None,
|
1302
1302
|
emit_event: bool | None = None,
|
1303
1303
|
redraw: bool = True,
|
1304
|
+
event_data: EventDataDict | None = None,
|
1304
1305
|
) -> EventDataDict:
|
1305
1306
|
"""
|
1306
1307
|
e.g.
|
@@ -1357,12 +1358,13 @@ class Sheet(tk.Frame):
|
|
1357
1358
|
fmt_kw = span.kwargs if span.type_ == "format" and span.kwargs else None
|
1358
1359
|
transposed = span.transposed
|
1359
1360
|
maxr, maxc = startr, startc
|
1360
|
-
event_data
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1361
|
+
if event_data is None:
|
1362
|
+
event_data = event_dict(
|
1363
|
+
name="edit_table",
|
1364
|
+
sheet=self.name,
|
1365
|
+
widget=self,
|
1366
|
+
selected=self.MT.selected,
|
1367
|
+
)
|
1366
1368
|
set_t = self.event_data_set_table_cell
|
1367
1369
|
set_i, set_h = self.event_data_set_index_cell, self.event_data_set_header_cell
|
1368
1370
|
istart = 1 if index else 0
|
@@ -1533,28 +1535,32 @@ class Sheet(tk.Frame):
|
|
1533
1535
|
event_data = set_h(startc, data, event_data)
|
1534
1536
|
# add row/column lines (positions) if required
|
1535
1537
|
if self.MT.all_columns_displayed and maxc >= (ncols := len(self.MT.col_positions) - 1):
|
1538
|
+
_, _, widths = self.MT.get_args_for_add_columns(
|
1539
|
+
data_ins_col=len(self.MT.col_positions) - 1,
|
1540
|
+
displayed_ins_col=len(self.MT.col_positions) - 1,
|
1541
|
+
columns=maxc + 1 - ncols,
|
1542
|
+
widths=None,
|
1543
|
+
headers=False,
|
1544
|
+
)
|
1536
1545
|
event_data = self.MT.add_columns(
|
1537
|
-
|
1538
|
-
|
1539
|
-
|
1540
|
-
numcols=maxc + 1 - ncols,
|
1541
|
-
columns=[],
|
1542
|
-
widths=None,
|
1543
|
-
headers=False,
|
1544
|
-
),
|
1546
|
+
columns={},
|
1547
|
+
header={},
|
1548
|
+
column_widths=widths,
|
1545
1549
|
event_data=event_data,
|
1546
1550
|
create_selections=False,
|
1547
1551
|
)
|
1548
1552
|
if self.MT.all_rows_displayed and maxr >= (nrows := len(self.MT.row_positions) - 1):
|
1553
|
+
_, _, heights = self.MT.get_args_for_add_rows(
|
1554
|
+
data_ins_row=len(self.MT.row_positions) - 1,
|
1555
|
+
displayed_ins_row=len(self.MT.row_positions) - 1,
|
1556
|
+
rows=maxr + 1 - nrows,
|
1557
|
+
heights=None,
|
1558
|
+
row_index=False,
|
1559
|
+
)
|
1549
1560
|
event_data = self.MT.add_rows(
|
1550
|
-
|
1551
|
-
|
1552
|
-
|
1553
|
-
numrows=maxr + 1 - nrows,
|
1554
|
-
rows=[],
|
1555
|
-
heights=None,
|
1556
|
-
row_index=False,
|
1557
|
-
),
|
1561
|
+
rows={},
|
1562
|
+
index={},
|
1563
|
+
row_heights=heights,
|
1558
1564
|
event_data=event_data,
|
1559
1565
|
create_selections=False,
|
1560
1566
|
)
|
@@ -1696,7 +1702,7 @@ class Sheet(tk.Frame):
|
|
1696
1702
|
|
1697
1703
|
def insert_rows(
|
1698
1704
|
self,
|
1699
|
-
rows:
|
1705
|
+
rows: Iterator[list[Any]] | int = 1,
|
1700
1706
|
idx: str | int | None = None,
|
1701
1707
|
heights: list[int] | tuple[int] | None = None,
|
1702
1708
|
row_index: bool = False,
|
@@ -1715,34 +1721,10 @@ class Sheet(tk.Frame):
|
|
1715
1721
|
if isinstance(rows, int):
|
1716
1722
|
if rows < 1:
|
1717
1723
|
raise ValueError(f"rows arg must be greater than 0, not {rows}")
|
1718
|
-
|
1719
|
-
if row_index:
|
1720
|
-
data = [
|
1721
|
-
[self.RI.get_value_for_empty_cell(idx + i, r_ops=False)]
|
1722
|
-
+ self.MT.get_empty_row_seq(
|
1723
|
-
idx + i,
|
1724
|
-
total_cols,
|
1725
|
-
r_ops=False,
|
1726
|
-
c_ops=False,
|
1727
|
-
)
|
1728
|
-
for i in range(rows)
|
1729
|
-
]
|
1730
|
-
else:
|
1731
|
-
data = [
|
1732
|
-
self.MT.get_empty_row_seq(
|
1733
|
-
idx + i,
|
1734
|
-
total_cols,
|
1735
|
-
r_ops=False,
|
1736
|
-
c_ops=False,
|
1737
|
-
)
|
1738
|
-
for i in range(rows)
|
1739
|
-
]
|
1740
|
-
else:
|
1741
|
-
data = rows
|
1742
|
-
if not isinstance(rows, int) and fill:
|
1724
|
+
elif fill:
|
1743
1725
|
total_cols = self.MT.total_data_cols() if total_cols is None else total_cols
|
1744
1726
|
len_check = (total_cols + 1) if row_index else total_cols
|
1745
|
-
for rn, r in enumerate(
|
1727
|
+
for rn, r in enumerate(rows):
|
1746
1728
|
if len_check > (lnr := len(r)):
|
1747
1729
|
r += self.MT.get_empty_row_seq(
|
1748
1730
|
rn,
|
@@ -1751,14 +1733,11 @@ class Sheet(tk.Frame):
|
|
1751
1733
|
r_ops=False,
|
1752
1734
|
c_ops=False,
|
1753
1735
|
)
|
1754
|
-
numrows = len(data)
|
1755
|
-
displayed_ins_idx = idx if self.MT.all_rows_displayed else bisect_left(self.MT.displayed_rows, idx)
|
1756
1736
|
event_data = self.MT.add_rows(
|
1757
1737
|
*self.MT.get_args_for_add_rows(
|
1758
1738
|
data_ins_row=idx,
|
1759
|
-
displayed_ins_row=
|
1760
|
-
|
1761
|
-
rows=data,
|
1739
|
+
displayed_ins_row=idx if self.MT.all_rows_displayed else bisect_left(self.MT.displayed_rows, idx),
|
1740
|
+
rows=rows,
|
1762
1741
|
heights=heights,
|
1763
1742
|
row_index=row_index,
|
1764
1743
|
),
|
@@ -1777,7 +1756,7 @@ class Sheet(tk.Frame):
|
|
1777
1756
|
|
1778
1757
|
def insert_columns(
|
1779
1758
|
self,
|
1780
|
-
columns:
|
1759
|
+
columns: Iterator[list[Any]] | int = 1,
|
1781
1760
|
idx: str | int | None = None,
|
1782
1761
|
widths: list[int] | tuple[int] | None = None,
|
1783
1762
|
headers: bool = False,
|
@@ -1796,60 +1775,24 @@ class Sheet(tk.Frame):
|
|
1796
1775
|
if isinstance(columns, int):
|
1797
1776
|
if columns < 1:
|
1798
1777
|
raise ValueError(f"columns arg must be greater than 0, not {columns}")
|
1799
|
-
|
1800
|
-
|
1801
|
-
|
1802
|
-
|
1778
|
+
elif fill:
|
1779
|
+
len_check = (total_rows + 1) if headers else total_rows
|
1780
|
+
for i, column in enumerate(columns):
|
1781
|
+
if (col_len := len(column)) < len_check:
|
1782
|
+
column += [
|
1803
1783
|
self.MT.get_value_for_empty_cell(
|
1804
|
-
|
1805
|
-
|
1806
|
-
r_ops=False,
|
1807
|
-
c_ops=False,
|
1808
|
-
)
|
1809
|
-
for datarn in range(total_rows)
|
1810
|
-
]
|
1811
|
-
for datacn in range(idx, idx + columns)
|
1812
|
-
]
|
1813
|
-
else:
|
1814
|
-
data = [
|
1815
|
-
[
|
1816
|
-
self.MT.get_value_for_empty_cell(
|
1817
|
-
datarn,
|
1818
|
-
datacn,
|
1784
|
+
r,
|
1785
|
+
idx + i,
|
1819
1786
|
r_ops=False,
|
1820
1787
|
c_ops=False,
|
1821
1788
|
)
|
1822
|
-
for
|
1789
|
+
for r in range((col_len - 1) if headers else col_len, total_rows)
|
1823
1790
|
]
|
1824
|
-
for datacn in range(idx, idx + columns)
|
1825
|
-
]
|
1826
|
-
numcols = columns
|
1827
|
-
else:
|
1828
|
-
data = columns
|
1829
|
-
numcols = len(columns)
|
1830
|
-
if fill:
|
1831
|
-
len_check = (total_rows + 1) if headers else total_rows
|
1832
|
-
for i, column in enumerate(data):
|
1833
|
-
if (col_len := len(column)) < len_check:
|
1834
|
-
column += [
|
1835
|
-
self.MT.get_value_for_empty_cell(
|
1836
|
-
r,
|
1837
|
-
idx + i,
|
1838
|
-
r_ops=False,
|
1839
|
-
c_ops=False,
|
1840
|
-
)
|
1841
|
-
for r in range((col_len - 1) if headers else col_len, total_rows)
|
1842
|
-
]
|
1843
|
-
if self.MT.all_columns_displayed:
|
1844
|
-
displayed_ins_idx = idx
|
1845
|
-
elif not self.MT.all_columns_displayed:
|
1846
|
-
displayed_ins_idx = bisect_left(self.MT.displayed_columns, idx)
|
1847
1791
|
event_data = self.MT.add_columns(
|
1848
1792
|
*self.MT.get_args_for_add_columns(
|
1849
1793
|
data_ins_col=idx,
|
1850
|
-
displayed_ins_col=
|
1851
|
-
|
1852
|
-
columns=data,
|
1794
|
+
displayed_ins_col=idx if self.MT.all_columns_displayed else bisect_left(self.MT.displayed_columns, idx),
|
1795
|
+
columns=columns,
|
1853
1796
|
widths=widths,
|
1854
1797
|
headers=headers,
|
1855
1798
|
),
|
@@ -1867,7 +1810,7 @@ class Sheet(tk.Frame):
|
|
1867
1810
|
|
1868
1811
|
def del_rows(
|
1869
1812
|
self,
|
1870
|
-
rows: int |
|
1813
|
+
rows: int | Iterator[int],
|
1871
1814
|
data_indexes: bool = True,
|
1872
1815
|
undo: bool = True,
|
1873
1816
|
emit_event: bool = False,
|
@@ -1888,7 +1831,7 @@ class Sheet(tk.Frame):
|
|
1888
1831
|
|
1889
1832
|
def del_columns(
|
1890
1833
|
self,
|
1891
|
-
columns: int |
|
1834
|
+
columns: int | Iterator[int],
|
1892
1835
|
data_indexes: bool = True,
|
1893
1836
|
undo: bool = True,
|
1894
1837
|
emit_event: bool = False,
|
@@ -2180,7 +2123,7 @@ class Sheet(tk.Frame):
|
|
2180
2123
|
|
2181
2124
|
def sort_rows(
|
2182
2125
|
self,
|
2183
|
-
rows:
|
2126
|
+
rows: Iterator[int] | Span | int | None = None,
|
2184
2127
|
reverse: bool = False,
|
2185
2128
|
validation: bool = True,
|
2186
2129
|
key: Callable | None = None,
|
@@ -2194,7 +2137,7 @@ class Sheet(tk.Frame):
|
|
2194
2137
|
|
2195
2138
|
def sort_columns(
|
2196
2139
|
self,
|
2197
|
-
columns:
|
2140
|
+
columns: Iterator[int] | Span | int | None = None,
|
2198
2141
|
reverse: bool = False,
|
2199
2142
|
validation: bool = True,
|
2200
2143
|
key: Callable | None = None,
|
@@ -3183,8 +3126,8 @@ class Sheet(tk.Frame):
|
|
3183
3126
|
|
3184
3127
|
def deselect_any(
|
3185
3128
|
self,
|
3186
|
-
rows:
|
3187
|
-
columns:
|
3129
|
+
rows: Iterator[int] | int | None,
|
3130
|
+
columns: Iterator[int] | int | None,
|
3188
3131
|
redraw: bool = True,
|
3189
3132
|
) -> Sheet:
|
3190
3133
|
self.MT.deselect_any(rows=rows, columns=columns, redraw=False)
|
@@ -3386,7 +3329,7 @@ class Sheet(tk.Frame):
|
|
3386
3329
|
|
3387
3330
|
def set_column_widths(
|
3388
3331
|
self,
|
3389
|
-
column_widths:
|
3332
|
+
column_widths: Iterator[float] | None = None,
|
3390
3333
|
canvas_positions: bool = False,
|
3391
3334
|
reset: bool = False,
|
3392
3335
|
) -> Sheet:
|
@@ -3401,7 +3344,7 @@ class Sheet(tk.Frame):
|
|
3401
3344
|
|
3402
3345
|
def set_row_heights(
|
3403
3346
|
self,
|
3404
|
-
row_heights:
|
3347
|
+
row_heights: Iterator[float] | None = None,
|
3405
3348
|
canvas_positions: bool = False,
|
3406
3349
|
reset: bool = False,
|
3407
3350
|
) -> Sheet:
|
@@ -3448,7 +3391,7 @@ class Sheet(tk.Frame):
|
|
3448
3391
|
|
3449
3392
|
delete_row_position = del_row_position
|
3450
3393
|
|
3451
|
-
def del_row_positions(self, idxs:
|
3394
|
+
def del_row_positions(self, idxs: Iterator[int] | None = None) -> Sheet:
|
3452
3395
|
self.MT.del_row_positions(idxs=idxs)
|
3453
3396
|
self.set_refresh_timer()
|
3454
3397
|
return self
|
@@ -3459,7 +3402,7 @@ class Sheet(tk.Frame):
|
|
3459
3402
|
|
3460
3403
|
delete_column_position = del_column_position
|
3461
3404
|
|
3462
|
-
def del_column_positions(self, idxs:
|
3405
|
+
def del_column_positions(self, idxs: Iterator[int] | None = None) -> Sheet:
|
3463
3406
|
self.MT.del_col_positions(idxs=idxs)
|
3464
3407
|
self.set_refresh_timer()
|
3465
3408
|
return self
|
@@ -3736,7 +3679,7 @@ class Sheet(tk.Frame):
|
|
3736
3679
|
|
3737
3680
|
def display_columns(
|
3738
3681
|
self,
|
3739
|
-
columns: None | Literal["all"] |
|
3682
|
+
columns: None | Literal["all"] | Iterator[int] = None,
|
3740
3683
|
all_columns_displayed: None | bool = None,
|
3741
3684
|
reset_col_positions: bool = True,
|
3742
3685
|
redraw: bool = False,
|
@@ -3760,7 +3703,7 @@ class Sheet(tk.Frame):
|
|
3760
3703
|
|
3761
3704
|
def hide_columns(
|
3762
3705
|
self,
|
3763
|
-
columns: int | set[int] |
|
3706
|
+
columns: int | set[int] | Iterator[int],
|
3764
3707
|
redraw: bool = True,
|
3765
3708
|
deselect_all: bool = True,
|
3766
3709
|
data_indexes: bool = False,
|
@@ -3804,7 +3747,7 @@ class Sheet(tk.Frame):
|
|
3804
3747
|
|
3805
3748
|
def show_columns(
|
3806
3749
|
self,
|
3807
|
-
columns: int |
|
3750
|
+
columns: int | Iterator[int],
|
3808
3751
|
redraw: bool = True,
|
3809
3752
|
deselect_all: bool = True,
|
3810
3753
|
) -> Sheet:
|
@@ -3871,7 +3814,7 @@ class Sheet(tk.Frame):
|
|
3871
3814
|
|
3872
3815
|
def display_rows(
|
3873
3816
|
self,
|
3874
|
-
rows: None | Literal["all"] |
|
3817
|
+
rows: None | Literal["all"] | Iterator[int] = None,
|
3875
3818
|
all_rows_displayed: None | bool = None,
|
3876
3819
|
reset_row_positions: bool = True,
|
3877
3820
|
redraw: bool = False,
|
@@ -3893,7 +3836,7 @@ class Sheet(tk.Frame):
|
|
3893
3836
|
|
3894
3837
|
def hide_rows(
|
3895
3838
|
self,
|
3896
|
-
rows: int | set[int] |
|
3839
|
+
rows: int | set[int] | Iterator[int],
|
3897
3840
|
redraw: bool = True,
|
3898
3841
|
deselect_all: bool = True,
|
3899
3842
|
data_indexes: bool = False,
|
@@ -3939,7 +3882,7 @@ class Sheet(tk.Frame):
|
|
3939
3882
|
|
3940
3883
|
def show_rows(
|
3941
3884
|
self,
|
3942
|
-
rows: int |
|
3885
|
+
rows: int | Iterator[int],
|
3943
3886
|
redraw: bool = True,
|
3944
3887
|
deselect_all: bool = True,
|
3945
3888
|
) -> Sheet:
|
@@ -4499,7 +4442,7 @@ class Sheet(tk.Frame):
|
|
4499
4442
|
def tag(
|
4500
4443
|
self,
|
4501
4444
|
*key: CreateSpanTypes,
|
4502
|
-
tags:
|
4445
|
+
tags: Iterator[str] | str = "",
|
4503
4446
|
) -> Sheet:
|
4504
4447
|
span = self.span_from_key(*key)
|
4505
4448
|
rows, cols = self.ranges_from_span(span)
|
@@ -4544,7 +4487,7 @@ class Sheet(tk.Frame):
|
|
4544
4487
|
|
4545
4488
|
def tag_rows(
|
4546
4489
|
self,
|
4547
|
-
rows: int |
|
4490
|
+
rows: int | Iterator[int],
|
4548
4491
|
*tags,
|
4549
4492
|
) -> Sheet:
|
4550
4493
|
if isinstance(rows, int):
|
@@ -4557,7 +4500,7 @@ class Sheet(tk.Frame):
|
|
4557
4500
|
|
4558
4501
|
def tag_columns(
|
4559
4502
|
self,
|
4560
|
-
columns: int |
|
4503
|
+
columns: int | Iterator[int],
|
4561
4504
|
*tags,
|
4562
4505
|
) -> Sheet:
|
4563
4506
|
if isinstance(columns, int):
|
@@ -4571,8 +4514,8 @@ class Sheet(tk.Frame):
|
|
4571
4514
|
def untag(
|
4572
4515
|
self,
|
4573
4516
|
cell: tuple[int, int] | None = None,
|
4574
|
-
rows: int |
|
4575
|
-
columns: int |
|
4517
|
+
rows: int | Iterator[int] | None = None,
|
4518
|
+
columns: int | Iterator[int] | None = None,
|
4576
4519
|
) -> Sheet:
|
4577
4520
|
if isinstance(cell, tuple):
|
4578
4521
|
for tagged in self.MT.tagged_cells.values():
|
@@ -4632,7 +4575,7 @@ class Sheet(tk.Frame):
|
|
4632
4575
|
text_column: None | int | list[str] = None,
|
4633
4576
|
push_ops: bool = False,
|
4634
4577
|
row_heights: Sequence[int] | None | False = None,
|
4635
|
-
open_ids:
|
4578
|
+
open_ids: Iterator[str] | None = None,
|
4636
4579
|
safety: bool = True,
|
4637
4580
|
ncols: int | None = None,
|
4638
4581
|
lower: bool = False,
|
@@ -4640,7 +4583,9 @@ class Sheet(tk.Frame):
|
|
4640
4583
|
include_parent_column: bool = True,
|
4641
4584
|
include_text_column: bool = True,
|
4642
4585
|
) -> Sheet:
|
4643
|
-
self.RI.tree_build
|
4586
|
+
build = self.RI.safe_tree_build if safety else self.RI.tree_build
|
4587
|
+
self.reset(cell_options=False, column_widths=False, header=False, redraw=False)
|
4588
|
+
build(
|
4644
4589
|
data=data,
|
4645
4590
|
iid_column=iid_column,
|
4646
4591
|
parent_column=parent_column,
|
@@ -4648,7 +4593,6 @@ class Sheet(tk.Frame):
|
|
4648
4593
|
push_ops=push_ops,
|
4649
4594
|
row_heights=row_heights,
|
4650
4595
|
open_ids=open_ids,
|
4651
|
-
safety=safety,
|
4652
4596
|
ncols=ncols,
|
4653
4597
|
lower=lower,
|
4654
4598
|
include_iid_column=include_iid_column,
|
@@ -4668,7 +4612,7 @@ class Sheet(tk.Frame):
|
|
4668
4612
|
"""
|
4669
4613
|
return self.RI.tree_open_ids
|
4670
4614
|
|
4671
|
-
def tree_set_open(self, open_ids:
|
4615
|
+
def tree_set_open(self, open_ids: Iterator[str]) -> Sheet:
|
4672
4616
|
"""
|
4673
4617
|
Accepts set[str] of iids that are open in the treeview
|
4674
4618
|
Closes everything else
|
@@ -4695,12 +4639,12 @@ class Sheet(tk.Frame):
|
|
4695
4639
|
"""
|
4696
4640
|
to_open = []
|
4697
4641
|
disp_set = set(self.MT.displayed_rows)
|
4698
|
-
|
4699
|
-
rns = self.RI.
|
4642
|
+
index = self.MT._row_index
|
4643
|
+
rns = self.RI.rns
|
4700
4644
|
open_ids = self.RI.tree_open_ids
|
4701
4645
|
descendants = self.RI.get_iid_descendants
|
4702
4646
|
for item in filter(items.__contains__, self.get_children()):
|
4703
|
-
if
|
4647
|
+
if index[rns[item]].children:
|
4704
4648
|
open_ids.add(item)
|
4705
4649
|
if rns[item] in disp_set:
|
4706
4650
|
to_disp = [rns[did] for did in descendants(item, check_open=True)]
|
@@ -4720,20 +4664,22 @@ class Sheet(tk.Frame):
|
|
4720
4664
|
deselect_all=False,
|
4721
4665
|
)
|
4722
4666
|
|
4723
|
-
def _tree_close(self, items:
|
4667
|
+
def _tree_close(self, items: Iterator[str]) -> list[int]:
|
4724
4668
|
"""
|
4725
4669
|
Only meant for internal use
|
4726
4670
|
"""
|
4727
4671
|
to_close = set()
|
4728
4672
|
disp_set = set(self.MT.displayed_rows)
|
4729
|
-
|
4730
|
-
|
4673
|
+
index = self.MT._row_index
|
4674
|
+
rns = self.RI.rns
|
4675
|
+
open_ids = self.RI.tree_open_ids
|
4676
|
+
descendants = self.RI.get_iid_descendants
|
4731
4677
|
for item in items:
|
4732
|
-
if
|
4733
|
-
|
4734
|
-
if
|
4735
|
-
for did in
|
4736
|
-
to_close.add(
|
4678
|
+
if index[rns[item]].children:
|
4679
|
+
open_ids.discard(item)
|
4680
|
+
if rns[item] in disp_set:
|
4681
|
+
for did in descendants(item, check_open=True):
|
4682
|
+
to_close.add(rns[did])
|
4737
4683
|
return to_close
|
4738
4684
|
|
4739
4685
|
def tree_close(self, *items, redraw: bool = True) -> Sheet:
|
@@ -4766,11 +4712,11 @@ class Sheet(tk.Frame):
|
|
4766
4712
|
"""
|
4767
4713
|
if not iid:
|
4768
4714
|
iid = self.RI.new_iid()
|
4769
|
-
if iid in self.RI.
|
4715
|
+
if iid in self.RI.rns:
|
4770
4716
|
raise ValueError(f"iid '{iid}' already exists.")
|
4771
4717
|
if iid == parent:
|
4772
4718
|
raise ValueError(f"iid '{iid}' cannot be equal to parent '{parent}'.")
|
4773
|
-
if parent and parent not in self.RI.
|
4719
|
+
if parent and parent not in self.RI.rns:
|
4774
4720
|
raise ValueError(f"parent '{parent}' does not exist.")
|
4775
4721
|
if text is None:
|
4776
4722
|
text = iid
|
@@ -4779,6 +4725,7 @@ class Sheet(tk.Frame):
|
|
4779
4725
|
self.insert_rows(
|
4780
4726
|
rows=[[new_node] + ([] if values is None else values)],
|
4781
4727
|
idx=datarn,
|
4728
|
+
heights=[],
|
4782
4729
|
row_index=True,
|
4783
4730
|
create_selections=create_selections,
|
4784
4731
|
fill=False,
|
@@ -4793,15 +4740,15 @@ class Sheet(tk.Frame):
|
|
4793
4740
|
def _get_id_insert_row(self, index: int, parent: str) -> int:
|
4794
4741
|
if parent:
|
4795
4742
|
if isinstance(index, int):
|
4796
|
-
index = min(index, len(self.RI.
|
4743
|
+
index = min(index, len(self.RI.iid_children(parent)))
|
4797
4744
|
datarn = (
|
4798
|
-
self.RI.
|
4745
|
+
self.RI.rns[parent]
|
4799
4746
|
+ index
|
4800
4747
|
+ 1
|
4801
4748
|
+ sum(self.RI.num_descendants(cid) for cid in islice(self.get_children(parent), index))
|
4802
4749
|
)
|
4803
4750
|
else:
|
4804
|
-
datarn = self.RI.
|
4751
|
+
datarn = self.RI.rns[parent] + self.RI.num_descendants(parent) + 1
|
4805
4752
|
else:
|
4806
4753
|
if isinstance(index, int):
|
4807
4754
|
datarn = index
|
@@ -4832,7 +4779,7 @@ class Sheet(tk.Frame):
|
|
4832
4779
|
- Values (int): row numbers
|
4833
4780
|
"""
|
4834
4781
|
to_insert = []
|
4835
|
-
if parent and parent not in self.RI.
|
4782
|
+
if parent and parent not in self.RI.rns:
|
4836
4783
|
raise ValueError(f"parent '{parent}' does not exist.")
|
4837
4784
|
datarn = self._get_id_insert_row(index=index, parent=parent)
|
4838
4785
|
rns_to_add = {}
|
@@ -4856,6 +4803,7 @@ class Sheet(tk.Frame):
|
|
4856
4803
|
self.insert_rows(
|
4857
4804
|
rows=to_insert,
|
4858
4805
|
idx=datarn,
|
4806
|
+
heights=[],
|
4859
4807
|
row_index=True,
|
4860
4808
|
create_selections=create_selections,
|
4861
4809
|
fill=False,
|
@@ -4873,6 +4821,8 @@ class Sheet(tk.Frame):
|
|
4873
4821
|
text: str | None = None,
|
4874
4822
|
values: list | None = None,
|
4875
4823
|
open_: bool | None = None,
|
4824
|
+
undo: bool = True,
|
4825
|
+
emit_event: bool = True,
|
4876
4826
|
redraw: bool = True,
|
4877
4827
|
) -> DotDict | Sheet:
|
4878
4828
|
"""
|
@@ -4880,19 +4830,17 @@ class Sheet(tk.Frame):
|
|
4880
4830
|
If no options are set then returns DotDict of options for item
|
4881
4831
|
Else returns Sheet
|
4882
4832
|
"""
|
4883
|
-
if item not in self.RI.
|
4833
|
+
if item not in self.RI.rns:
|
4884
4834
|
raise ValueError(f"Item '{item}' does not exist.")
|
4885
|
-
|
4886
|
-
|
4887
|
-
if isinstance(values, list):
|
4888
|
-
self.set_data(self.RI.tree_rns[item], data=values)
|
4835
|
+
get_only = all(param is None for param in (iid, text, values, open_))
|
4836
|
+
|
4889
4837
|
if isinstance(open_, bool):
|
4890
|
-
if self.RI.
|
4838
|
+
if self.RI.iid_children(item):
|
4891
4839
|
if open_:
|
4892
4840
|
self.RI.tree_open_ids.add(item)
|
4893
4841
|
if self.item_displayed(item):
|
4894
4842
|
self.show_rows(
|
4895
|
-
rows=map(self.RI.
|
4843
|
+
rows=map(self.RI.rns.__getitem__, self.RI.get_iid_descendants(item, check_open=True)),
|
4896
4844
|
redraw=False,
|
4897
4845
|
deselect_all=False,
|
4898
4846
|
)
|
@@ -4900,43 +4848,47 @@ class Sheet(tk.Frame):
|
|
4900
4848
|
self.RI.tree_open_ids.discard(item)
|
4901
4849
|
if self.item_displayed(item):
|
4902
4850
|
self.hide_rows(
|
4903
|
-
rows=set(
|
4904
|
-
map(self.RI.tree_rns.__getitem__, self.RI.get_iid_descendants(item, check_open=True))
|
4905
|
-
),
|
4851
|
+
rows=set(map(self.RI.rns.__getitem__, self.RI.get_iid_descendants(item, check_open=True))),
|
4906
4852
|
redraw=False,
|
4907
4853
|
deselect_all=False,
|
4908
4854
|
data_indexes=True,
|
4909
4855
|
)
|
4910
4856
|
else:
|
4911
4857
|
self.RI.tree_open_ids.discard(item)
|
4858
|
+
|
4859
|
+
event_data = None if get_only else self.MT.new_event_dict("edit_table", state=True)
|
4860
|
+
|
4861
|
+
if isinstance(text, str):
|
4862
|
+
event_data.cells.index = {self.RI.rns[item]: self.MT._row_index[self.RI.rns[item]].text}
|
4863
|
+
self.MT._row_index[self.RI.rns[item]].text = text
|
4864
|
+
|
4865
|
+
if isinstance(values, list):
|
4866
|
+
span = self.span(self.RI.rns[item], undo=False, emit_event=False)
|
4867
|
+
event_data = self.set_data(span, data=values, event_data=event_data)
|
4868
|
+
|
4912
4869
|
if isinstance(iid, str):
|
4913
|
-
if iid in self.RI.
|
4870
|
+
if iid in self.RI.rns:
|
4914
4871
|
raise ValueError(f"Cannot rename '{iid}', it already exists.")
|
4915
|
-
|
4916
|
-
|
4917
|
-
|
4918
|
-
|
4919
|
-
|
4920
|
-
|
4921
|
-
|
4922
|
-
|
4923
|
-
|
4924
|
-
|
4925
|
-
self.RI.tree_open_ids.discard(item)
|
4926
|
-
self.RI.tree_open_ids.add(iid)
|
4927
|
-
get = not (isinstance(iid, str) or isinstance(text, str) or isinstance(values, list) or isinstance(open_, bool))
|
4928
|
-
self.set_refresh_timer(redraw=not get and redraw)
|
4929
|
-
if get:
|
4872
|
+
event_data = self.RI.rename_iid(old=item, new=iid, event_data=event_data)
|
4873
|
+
|
4874
|
+
if event_data:
|
4875
|
+
if undo and self.MT.undo_enabled:
|
4876
|
+
self.MT.undo_stack.append(stored_event_dict(event_data))
|
4877
|
+
if emit_event:
|
4878
|
+
self.emit_event("<<SheetModified>>", event_data)
|
4879
|
+
|
4880
|
+
self.set_refresh_timer(redraw=not get_only and redraw)
|
4881
|
+
if get_only:
|
4930
4882
|
return DotDict(
|
4931
|
-
text=self.RI.
|
4932
|
-
values=self[self.RI.
|
4883
|
+
text=self.MT._row_index[self.RI.rns[item]].text,
|
4884
|
+
values=self[self.RI.rns[item]].options(ndim=1).data,
|
4933
4885
|
open_=item in self.RI.tree_open_ids,
|
4934
4886
|
)
|
4935
4887
|
return self
|
4936
4888
|
|
4937
4889
|
def itemrow(self, item: str) -> int:
|
4938
4890
|
try:
|
4939
|
-
return self.RI.
|
4891
|
+
return self.RI.rns[item]
|
4940
4892
|
except ValueError as error:
|
4941
4893
|
raise ValueError(f"item '{item}' does not exist.") from error
|
4942
4894
|
|
@@ -4950,30 +4902,29 @@ class Sheet(tk.Frame):
|
|
4950
4902
|
|
4951
4903
|
def get_children(self, item: None | str = None) -> Generator[str]:
|
4952
4904
|
if item is None:
|
4953
|
-
|
4954
|
-
yield iid
|
4955
|
-
yield from self.RI.get_iid_descendants(iid)
|
4905
|
+
yield from map(attrgetter("iid"), self.MT._row_index)
|
4956
4906
|
elif item == "":
|
4957
4907
|
yield from map(attrgetter("iid"), self.RI.gen_top_nodes())
|
4958
4908
|
else:
|
4959
|
-
yield from self.RI.
|
4909
|
+
yield from self.RI.iid_children(item)
|
4960
4910
|
|
4961
|
-
def
|
4911
|
+
def tree_traverse(self, item: None | str = None) -> Generator[str]:
|
4962
4912
|
if item is None:
|
4963
|
-
for
|
4964
|
-
|
4965
|
-
|
4966
|
-
yield from self.RI.get_iid_descendants(n.iid)
|
4913
|
+
for tiid in map(attrgetter("iid"), self.RI.gen_top_nodes()):
|
4914
|
+
yield tiid
|
4915
|
+
yield from self.RI.get_iid_descendants(tiid)
|
4967
4916
|
elif item == "":
|
4968
|
-
yield from (
|
4917
|
+
yield from map(attrgetter("iid"), self.RI.gen_top_nodes())
|
4969
4918
|
else:
|
4970
|
-
yield from self.RI.
|
4919
|
+
yield from self.RI.iid_children(item)
|
4920
|
+
|
4921
|
+
get_iids = tree_traverse
|
4971
4922
|
|
4972
4923
|
def del_items(self, *items, undo: bool = True) -> Sheet:
|
4973
4924
|
"""
|
4974
4925
|
Also deletes all descendants of items
|
4975
4926
|
"""
|
4976
|
-
rows = list(map(self.RI.
|
4927
|
+
rows = list(map(self.RI.rns.get, filter(self.exists, unpack(items))))
|
4977
4928
|
if rows:
|
4978
4929
|
self.del_rows(rows, data_indexes=True, undo=undo)
|
4979
4930
|
return self.set_refresh_timer(rows)
|
@@ -4988,7 +4939,7 @@ class Sheet(tk.Frame):
|
|
4988
4939
|
|
4989
4940
|
def top_index_row(self, index: int) -> int:
|
4990
4941
|
try:
|
4991
|
-
return next(self.RI.
|
4942
|
+
return next(self.RI.rns[n.iid] for i, n in enumerate(self.RI.gen_top_nodes()) if i == index)
|
4992
4943
|
except Exception:
|
4993
4944
|
return None
|
4994
4945
|
|
@@ -5005,9 +4956,9 @@ class Sheet(tk.Frame):
|
|
5005
4956
|
Moves item to be under parent as child at index
|
5006
4957
|
'parent' can be an empty str which will put the item at top level
|
5007
4958
|
"""
|
5008
|
-
if item not in self.RI.
|
4959
|
+
if item not in self.RI.rns:
|
5009
4960
|
raise ValueError(f"Item '{item}' does not exist.")
|
5010
|
-
if parent and parent not in self.RI.
|
4961
|
+
if parent and parent not in self.RI.rns:
|
5011
4962
|
raise ValueError(f"Parent '{parent}' does not exist.")
|
5012
4963
|
if self.RI.move_pid_causes_recursive_loop(item, parent):
|
5013
4964
|
raise ValueError(f"Item '{item}' causes recursive loop with parent '{parent}.")
|
@@ -5032,30 +4983,29 @@ class Sheet(tk.Frame):
|
|
5032
4983
|
reattach = move
|
5033
4984
|
|
5034
4985
|
def exists(self, item: str) -> bool:
|
5035
|
-
return item in self.RI.
|
4986
|
+
return item in self.RI.rns
|
5036
4987
|
|
5037
4988
|
def parent(self, item: str) -> str:
|
5038
|
-
if item not in self.RI.
|
4989
|
+
if item not in self.RI.rns:
|
5039
4990
|
raise ValueError(f"Item '{item}' does not exist.")
|
5040
|
-
return self.RI.
|
4991
|
+
return self.RI.iid_parent(item)
|
5041
4992
|
|
5042
4993
|
def index(self, item: str) -> int:
|
5043
|
-
if item not in self.RI.
|
4994
|
+
if item not in self.RI.rns:
|
5044
4995
|
raise ValueError(f"Item '{item}' does not exist.")
|
5045
|
-
elif self.RI.
|
4996
|
+
elif self.RI.iid_parent(item):
|
5046
4997
|
return self.RI.parent_node(item).children.index(item)
|
5047
4998
|
else:
|
5048
|
-
|
5049
|
-
return next(index for index, node in enumerate(self.RI.gen_top_nodes()) if node == find_node)
|
4999
|
+
return next(index for index, iid in enumerate(self.get_children("")) if iid == item)
|
5050
5000
|
|
5051
5001
|
def item_displayed(self, item: str) -> bool:
|
5052
5002
|
"""
|
5053
5003
|
Check if an item (row) is currently displayed on the sheet
|
5054
5004
|
- Does not check if the item is visible to the user
|
5055
5005
|
"""
|
5056
|
-
if item not in self.RI.
|
5006
|
+
if item not in self.RI.rns:
|
5057
5007
|
raise ValueError(f"Item '{item}' does not exist.")
|
5058
|
-
return bisect_in(self.MT.displayed_rows, self.RI.
|
5008
|
+
return bisect_in(self.MT.displayed_rows, self.RI.rns[item])
|
5059
5009
|
|
5060
5010
|
def display_item(self, item: str, redraw: bool = False) -> Sheet:
|
5061
5011
|
"""
|
@@ -5064,7 +5014,7 @@ class Sheet(tk.Frame):
|
|
5064
5014
|
- Unlike the ttk treeview 'see' function
|
5065
5015
|
this function does **NOT** scroll to the item
|
5066
5016
|
"""
|
5067
|
-
if not self.item_displayed(item) and self.RI.
|
5017
|
+
if not self.item_displayed(item) and self.RI.iid_parent(item):
|
5068
5018
|
self.show_rows(
|
5069
5019
|
rows=self._tree_open(list(self.RI.get_iid_ancestors(item))),
|
5070
5020
|
redraw=False,
|
@@ -5078,7 +5028,7 @@ class Sheet(tk.Frame):
|
|
5078
5028
|
"""
|
5079
5029
|
self.display_item(item, redraw=False)
|
5080
5030
|
self.see(
|
5081
|
-
row=bisect_left(self.MT.displayed_rows, self.RI.
|
5031
|
+
row=bisect_left(self.MT.displayed_rows, self.RI.rns[item]),
|
5082
5032
|
keep_xscroll=True,
|
5083
5033
|
redraw=False,
|
5084
5034
|
)
|
@@ -5113,8 +5063,8 @@ class Sheet(tk.Frame):
|
|
5113
5063
|
def selection_add(self, *items, run_binding: bool = True, redraw: bool = True) -> Sheet:
|
5114
5064
|
to_open = []
|
5115
5065
|
quick_displayed_check = set(self.MT.displayed_rows)
|
5116
|
-
for item in filter(self.RI.
|
5117
|
-
if self.RI.
|
5066
|
+
for item in filter(self.RI.rns.__contains__, unpack(items)):
|
5067
|
+
if self.RI.rns[item] not in quick_displayed_check and self.RI.iid_parent(item):
|
5118
5068
|
to_open.extend(list(self.RI.get_iid_ancestors(item)))
|
5119
5069
|
if to_open:
|
5120
5070
|
self.show_rows(
|
@@ -5126,9 +5076,9 @@ class Sheet(tk.Frame):
|
|
5126
5076
|
sorted(
|
5127
5077
|
bisect_left(
|
5128
5078
|
self.MT.displayed_rows,
|
5129
|
-
self.RI.
|
5079
|
+
self.RI.rns[item],
|
5130
5080
|
)
|
5131
|
-
for item in filter(self.RI.
|
5081
|
+
for item in filter(self.RI.rns.__contains__, unpack(items))
|
5132
5082
|
)
|
5133
5083
|
):
|
5134
5084
|
self.MT.create_selection_box(
|
@@ -5146,10 +5096,10 @@ class Sheet(tk.Frame):
|
|
5146
5096
|
|
5147
5097
|
def selection_remove(self, *items, redraw: bool = True) -> Sheet:
|
5148
5098
|
for item in unpack(items):
|
5149
|
-
if item not in self.RI.
|
5099
|
+
if item not in self.RI.rns:
|
5150
5100
|
continue
|
5151
5101
|
try:
|
5152
|
-
self.deselect(bisect_left(self.MT.displayed_rows, self.RI.
|
5102
|
+
self.deselect(bisect_left(self.MT.displayed_rows, self.RI.rns[item]), redraw=False)
|
5153
5103
|
except Exception:
|
5154
5104
|
continue
|
5155
5105
|
return self.set_refresh_timer(redraw)
|
@@ -5159,7 +5109,7 @@ class Sheet(tk.Frame):
|
|
5159
5109
|
add = []
|
5160
5110
|
remove = []
|
5161
5111
|
for item in unpack(items):
|
5162
|
-
if item in self.RI.
|
5112
|
+
if item in self.RI.rns:
|
5163
5113
|
if item in selected:
|
5164
5114
|
remove.append(item)
|
5165
5115
|
else:
|
@@ -5307,7 +5257,7 @@ class Sheet(tk.Frame):
|
|
5307
5257
|
get_displayed: bool = False,
|
5308
5258
|
get_index: bool = False,
|
5309
5259
|
get_index_displayed: bool = True,
|
5310
|
-
only_columns: int |
|
5260
|
+
only_columns: int | Iterator[int] | None = None,
|
5311
5261
|
) -> list[Any]:
|
5312
5262
|
if only_columns is not None:
|
5313
5263
|
if isinstance(only_columns, int):
|
@@ -5333,7 +5283,7 @@ class Sheet(tk.Frame):
|
|
5333
5283
|
get_displayed: bool = False,
|
5334
5284
|
get_header: bool = False,
|
5335
5285
|
get_header_displayed: bool = True,
|
5336
|
-
only_rows: int |
|
5286
|
+
only_rows: int | Iterator[int] | None = None,
|
5337
5287
|
) -> list[Any]:
|
5338
5288
|
if only_rows is not None:
|
5339
5289
|
if isinstance(only_rows, int):
|
@@ -5353,8 +5303,8 @@ class Sheet(tk.Frame):
|
|
5353
5303
|
get_index: bool = False,
|
5354
5304
|
get_header_displayed: bool = True,
|
5355
5305
|
get_index_displayed: bool = True,
|
5356
|
-
only_rows:
|
5357
|
-
only_columns:
|
5306
|
+
only_rows: Iterator[int] | int | None = None,
|
5307
|
+
only_columns: Iterator[int] | int | None = None,
|
5358
5308
|
) -> list[list[Any]]:
|
5359
5309
|
if only_rows is not None:
|
5360
5310
|
if isinstance(only_rows, int):
|
@@ -5407,8 +5357,8 @@ class Sheet(tk.Frame):
|
|
5407
5357
|
get_index: bool = False,
|
5408
5358
|
get_index_displayed: bool = True,
|
5409
5359
|
get_header_displayed: bool = True,
|
5410
|
-
only_rows: int |
|
5411
|
-
only_columns: int |
|
5360
|
+
only_rows: int | Iterator[int] | None = None,
|
5361
|
+
only_columns: int | Iterator[int] | None = None,
|
5412
5362
|
) -> Generator[list[Any]]:
|
5413
5363
|
if only_rows is not None:
|
5414
5364
|
if isinstance(only_rows, int):
|
@@ -5667,7 +5617,7 @@ class Sheet(tk.Frame):
|
|
5667
5617
|
|
5668
5618
|
def highlight_rows(
|
5669
5619
|
self,
|
5670
|
-
rows:
|
5620
|
+
rows: Iterator[int] | int,
|
5671
5621
|
bg: None | str = None,
|
5672
5622
|
fg: None | str = None,
|
5673
5623
|
highlight_index: bool = True,
|
@@ -5685,7 +5635,7 @@ class Sheet(tk.Frame):
|
|
5685
5635
|
|
5686
5636
|
def highlight_columns(
|
5687
5637
|
self,
|
5688
|
-
columns:
|
5638
|
+
columns: Iterator[int] | int,
|
5689
5639
|
bg: bool | None | str = False,
|
5690
5640
|
fg: bool | None | str = False,
|
5691
5641
|
highlight_header: bool = True,
|
@@ -5987,7 +5937,7 @@ class Sheet(tk.Frame):
|
|
5987
5937
|
|
5988
5938
|
def checkbox_row(
|
5989
5939
|
self,
|
5990
|
-
r:
|
5940
|
+
r: Iterator[int] | int | Literal["all"] = 0,
|
5991
5941
|
*args,
|
5992
5942
|
**kwargs,
|
5993
5943
|
) -> None:
|
@@ -6012,7 +5962,7 @@ class Sheet(tk.Frame):
|
|
6012
5962
|
|
6013
5963
|
def checkbox_column(
|
6014
5964
|
self,
|
6015
|
-
c:
|
5965
|
+
c: Iterator[int] | int | Literal["all"] = 0,
|
6016
5966
|
*args,
|
6017
5967
|
**kwargs,
|
6018
5968
|
) -> None:
|
@@ -6037,7 +5987,7 @@ class Sheet(tk.Frame):
|
|
6037
5987
|
|
6038
5988
|
def create_header_checkbox(
|
6039
5989
|
self,
|
6040
|
-
c:
|
5990
|
+
c: Iterator[int] | int | Literal["all"] = 0,
|
6041
5991
|
*args,
|
6042
5992
|
**kwargs,
|
6043
5993
|
) -> None:
|
@@ -6060,7 +6010,7 @@ class Sheet(tk.Frame):
|
|
6060
6010
|
|
6061
6011
|
def create_index_checkbox(
|
6062
6012
|
self,
|
6063
|
-
r:
|
6013
|
+
r: Iterator[int] | int | Literal["all"] = 0,
|
6064
6014
|
*args,
|
6065
6015
|
**kwargs,
|
6066
6016
|
) -> None:
|
@@ -6110,7 +6060,7 @@ class Sheet(tk.Frame):
|
|
6110
6060
|
|
6111
6061
|
def delete_row_checkbox(
|
6112
6062
|
self,
|
6113
|
-
r:
|
6063
|
+
r: Iterator[int] | int | Literal["all"] = 0,
|
6114
6064
|
) -> None:
|
6115
6065
|
if isinstance(r, str) and r.lower() == "all":
|
6116
6066
|
for r_ in self.MT.row_options:
|
@@ -6123,7 +6073,7 @@ class Sheet(tk.Frame):
|
|
6123
6073
|
|
6124
6074
|
def delete_column_checkbox(
|
6125
6075
|
self,
|
6126
|
-
c:
|
6076
|
+
c: Iterator[int] | int | Literal["all"] = 0,
|
6127
6077
|
) -> None:
|
6128
6078
|
if isinstance(c, str) and c.lower() == "all":
|
6129
6079
|
for c_ in self.MT.col_options:
|
@@ -6136,7 +6086,7 @@ class Sheet(tk.Frame):
|
|
6136
6086
|
|
6137
6087
|
def delete_header_checkbox(
|
6138
6088
|
self,
|
6139
|
-
c:
|
6089
|
+
c: Iterator[int] | int | Literal["all"] = 0,
|
6140
6090
|
) -> None:
|
6141
6091
|
if isinstance(c, str) and c.lower() == "all":
|
6142
6092
|
for c_ in self.CH.cell_options:
|
@@ -6150,7 +6100,7 @@ class Sheet(tk.Frame):
|
|
6150
6100
|
|
6151
6101
|
def delete_index_checkbox(
|
6152
6102
|
self,
|
6153
|
-
r:
|
6103
|
+
r: Iterator[int] | int | Literal["all"] = 0,
|
6154
6104
|
) -> None:
|
6155
6105
|
if isinstance(r, str) and r.lower() == "all":
|
6156
6106
|
for r_ in self.RI.cell_options:
|
@@ -6240,7 +6190,7 @@ class Sheet(tk.Frame):
|
|
6240
6190
|
|
6241
6191
|
def dropdown_row(
|
6242
6192
|
self,
|
6243
|
-
r:
|
6193
|
+
r: Iterator[int] | int | Literal["all"] = 0,
|
6244
6194
|
*args,
|
6245
6195
|
**kwargs,
|
6246
6196
|
) -> Sheet:
|
@@ -6265,7 +6215,7 @@ class Sheet(tk.Frame):
|
|
6265
6215
|
|
6266
6216
|
def dropdown_column(
|
6267
6217
|
self,
|
6268
|
-
c:
|
6218
|
+
c: Iterator[int] | int | Literal["all"] = 0,
|
6269
6219
|
*args,
|
6270
6220
|
**kwargs,
|
6271
6221
|
) -> Sheet:
|
@@ -6290,7 +6240,7 @@ class Sheet(tk.Frame):
|
|
6290
6240
|
|
6291
6241
|
def create_header_dropdown(
|
6292
6242
|
self,
|
6293
|
-
c:
|
6243
|
+
c: Iterator[int] | int | Literal["all"] = 0,
|
6294
6244
|
*args,
|
6295
6245
|
**kwargs,
|
6296
6246
|
) -> Sheet:
|
@@ -6314,7 +6264,7 @@ class Sheet(tk.Frame):
|
|
6314
6264
|
|
6315
6265
|
def create_index_dropdown(
|
6316
6266
|
self,
|
6317
|
-
r:
|
6267
|
+
r: Iterator[int] | int | Literal["all"] = 0,
|
6318
6268
|
*args,
|
6319
6269
|
**kwargs,
|
6320
6270
|
) -> Sheet:
|
@@ -6365,7 +6315,7 @@ class Sheet(tk.Frame):
|
|
6365
6315
|
|
6366
6316
|
def delete_row_dropdown(
|
6367
6317
|
self,
|
6368
|
-
r:
|
6318
|
+
r: Iterator[int] | int | Literal["all"] = "all",
|
6369
6319
|
) -> None:
|
6370
6320
|
if isinstance(r, str) and r.lower() == "all":
|
6371
6321
|
for r_ in self.MT.row_options:
|
@@ -6379,7 +6329,7 @@ class Sheet(tk.Frame):
|
|
6379
6329
|
|
6380
6330
|
def delete_column_dropdown(
|
6381
6331
|
self,
|
6382
|
-
c:
|
6332
|
+
c: Iterator[int] | int | Literal["all"] = "all",
|
6383
6333
|
) -> None:
|
6384
6334
|
if isinstance(c, str) and c.lower() == "all":
|
6385
6335
|
for c_ in self.MT.col_options:
|
@@ -6391,7 +6341,7 @@ class Sheet(tk.Frame):
|
|
6391
6341
|
for c_ in c:
|
6392
6342
|
self.del_column_options_dropdown(datacn=c_)
|
6393
6343
|
|
6394
|
-
def delete_header_dropdown(self, c:
|
6344
|
+
def delete_header_dropdown(self, c: Iterator[int] | int | Literal["all"]) -> None:
|
6395
6345
|
if isinstance(c, str) and c.lower() == "all":
|
6396
6346
|
for c_ in self.CH.cell_options:
|
6397
6347
|
if "dropdown" in self.CH.cell_options[c_]:
|
@@ -6402,7 +6352,7 @@ class Sheet(tk.Frame):
|
|
6402
6352
|
for c_ in c:
|
6403
6353
|
self.del_header_cell_options_dropdown(c_)
|
6404
6354
|
|
6405
|
-
def delete_index_dropdown(self, r:
|
6355
|
+
def delete_index_dropdown(self, r: Iterator[int] | int | Literal["all"]) -> None:
|
6406
6356
|
if isinstance(r, str) and r.lower() == "all":
|
6407
6357
|
for r_ in self.RI.cell_options:
|
6408
6358
|
if "dropdown" in self.RI.cell_options[r_]:
|
@@ -6638,7 +6588,7 @@ class Sheet(tk.Frame):
|
|
6638
6588
|
|
6639
6589
|
def format_row(
|
6640
6590
|
self,
|
6641
|
-
r:
|
6591
|
+
r: Iterator[int] | int | Literal["all"],
|
6642
6592
|
formatter_options: dict | None = None,
|
6643
6593
|
formatter_class: Any = None,
|
6644
6594
|
redraw: bool = True,
|
@@ -6670,7 +6620,7 @@ class Sheet(tk.Frame):
|
|
6670
6620
|
|
6671
6621
|
def delete_row_format(
|
6672
6622
|
self,
|
6673
|
-
r:
|
6623
|
+
r: Iterator[int] | int | Literal["all"] = "all",
|
6674
6624
|
clear_values: bool = False,
|
6675
6625
|
) -> Sheet:
|
6676
6626
|
if is_iterable(r):
|
@@ -6682,7 +6632,7 @@ class Sheet(tk.Frame):
|
|
6682
6632
|
|
6683
6633
|
def format_column(
|
6684
6634
|
self,
|
6685
|
-
c:
|
6635
|
+
c: Iterator[int] | int | Literal["all"],
|
6686
6636
|
formatter_options: dict | None = None,
|
6687
6637
|
formatter_class: Any = None,
|
6688
6638
|
redraw: bool = True,
|
@@ -6714,7 +6664,7 @@ class Sheet(tk.Frame):
|
|
6714
6664
|
|
6715
6665
|
def delete_column_format(
|
6716
6666
|
self,
|
6717
|
-
c:
|
6667
|
+
c: Iterator[int] | int | Literal["all"] = "all",
|
6718
6668
|
clear_values: bool = False,
|
6719
6669
|
) -> Sheet:
|
6720
6670
|
if is_iterable(c):
|