tksheet 7.1.3__py3-none-any.whl → 7.1.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 +91 -91
- tksheet/functions.py +16 -0
- tksheet/main_table.py +155 -133
- tksheet/other_classes.py +4 -0
- tksheet/row_index.py +89 -97
- tksheet/sheet.py +123 -82
- tksheet/text_editor.py +8 -6
- {tksheet-7.1.3.dist-info → tksheet-7.1.5.dist-info}/METADATA +1 -1
- tksheet-7.1.5.dist-info/RECORD +20 -0
- tksheet-7.1.3.dist-info/RECORD +0 -20
- {tksheet-7.1.3.dist-info → tksheet-7.1.5.dist-info}/LICENSE.txt +0 -0
- {tksheet-7.1.3.dist-info → tksheet-7.1.5.dist-info}/WHEEL +0 -0
- {tksheet-7.1.3.dist-info → tksheet-7.1.5.dist-info}/top_level.txt +0 -0
tksheet/main_table.py
CHANGED
@@ -75,6 +75,7 @@ from .functions import (
|
|
75
75
|
)
|
76
76
|
from .other_classes import (
|
77
77
|
Box_nt,
|
78
|
+
Box_st,
|
78
79
|
Box_t,
|
79
80
|
DotDict,
|
80
81
|
DropdownStorage,
|
@@ -1802,7 +1803,7 @@ class MainTable(tk.Canvas):
|
|
1802
1803
|
cells=False,
|
1803
1804
|
):
|
1804
1805
|
self.hide_selection_box(item)
|
1805
|
-
elif r
|
1806
|
+
elif isinstance(r, int) and c is None and cell is None:
|
1806
1807
|
for item, box in self.get_selection_items(columns=False, cells=False):
|
1807
1808
|
r1, c1, r2, c2 = box.coords
|
1808
1809
|
if r >= r1 and r < r2:
|
@@ -1846,7 +1847,7 @@ class MainTable(tk.Canvas):
|
|
1846
1847
|
set_current=resel and to_sel >= r + 1 and to_sel < r2,
|
1847
1848
|
)
|
1848
1849
|
break
|
1849
|
-
elif c
|
1850
|
+
elif isinstance(c, int) and r is None and cell is None:
|
1850
1851
|
for item, box in self.get_selection_items(rows=False, cells=False):
|
1851
1852
|
r1, c1, r2, c2 = box.coords
|
1852
1853
|
if c >= c1 and c < c2:
|
@@ -1890,7 +1891,7 @@ class MainTable(tk.Canvas):
|
|
1890
1891
|
set_current=resel and to_sel >= c + 1 and to_sel < c2,
|
1891
1892
|
)
|
1892
1893
|
break
|
1893
|
-
elif (r
|
1894
|
+
elif (isinstance(r, int) and isinstance(c, int) and cell is None) or cell is not None:
|
1894
1895
|
if cell is not None:
|
1895
1896
|
r, c = cell[0], cell[1]
|
1896
1897
|
for item, box in self.get_selection_items(reverse=True):
|
@@ -1908,11 +1909,11 @@ class MainTable(tk.Canvas):
|
|
1908
1909
|
def page_UP(self, event=None):
|
1909
1910
|
height = self.winfo_height()
|
1910
1911
|
top = self.canvasy(0)
|
1911
|
-
|
1912
|
-
if
|
1913
|
-
|
1912
|
+
scrollto_y = top - height
|
1913
|
+
if scrollto_y < 0:
|
1914
|
+
scrollto_y = 0
|
1914
1915
|
if self.PAR.ops.page_up_down_select_row:
|
1915
|
-
r = bisect_left(self.row_positions,
|
1916
|
+
r = bisect_left(self.row_positions, scrollto_y)
|
1916
1917
|
if self.selected and self.selected.row == r:
|
1917
1918
|
r -= 1
|
1918
1919
|
if r < 0:
|
@@ -1925,11 +1926,11 @@ class MainTable(tk.Canvas):
|
|
1925
1926
|
elif (self.single_selection_enabled or self.toggle_selection_enabled) and self.anything_selected(
|
1926
1927
|
exclude_columns=True, exclude_rows=True
|
1927
1928
|
):
|
1928
|
-
|
1929
|
-
self.see(r,
|
1930
|
-
self.select_cell(r,
|
1929
|
+
c = next(reversed(self.selection_boxes.values())).coords.from_c
|
1930
|
+
self.see(r, c, keep_xscroll=True, check_cell_visibility=False)
|
1931
|
+
self.select_cell(r, c)
|
1931
1932
|
else:
|
1932
|
-
args = ("moveto",
|
1933
|
+
args = ("moveto", scrollto_y / (self.row_positions[-1] + 100))
|
1933
1934
|
self.yview(*args)
|
1934
1935
|
self.RI.yview(*args)
|
1935
1936
|
self.main_table_redraw_grid_and_text(redraw_row_index=True)
|
@@ -1952,9 +1953,9 @@ class MainTable(tk.Canvas):
|
|
1952
1953
|
elif (self.single_selection_enabled or self.toggle_selection_enabled) and self.anything_selected(
|
1953
1954
|
exclude_columns=True, exclude_rows=True
|
1954
1955
|
):
|
1955
|
-
|
1956
|
-
self.see(r,
|
1957
|
-
self.select_cell(r,
|
1956
|
+
c = next(reversed(self.selection_boxes.values())).coords.from_c
|
1957
|
+
self.see(r, c, keep_xscroll=True, check_cell_visibility=False)
|
1958
|
+
self.select_cell(r, c)
|
1958
1959
|
else:
|
1959
1960
|
end = self.row_positions[-1]
|
1960
1961
|
if scrollto > end + 100:
|
@@ -1969,7 +1970,7 @@ class MainTable(tk.Canvas):
|
|
1969
1970
|
return
|
1970
1971
|
if self.selected.type_ == "rows":
|
1971
1972
|
r = self.selected.row
|
1972
|
-
if r
|
1973
|
+
if r and self.RI.row_selection_enabled:
|
1973
1974
|
if self.cell_completely_visible(r=r - 1, c=0):
|
1974
1975
|
self.RI.select_row(r - 1, redraw=True)
|
1975
1976
|
else:
|
@@ -1978,63 +1979,16 @@ class MainTable(tk.Canvas):
|
|
1978
1979
|
elif self.selected.type_ in ("cells", "columns"):
|
1979
1980
|
r = self.selected.row
|
1980
1981
|
c = self.selected.column
|
1981
|
-
if r
|
1982
|
+
if not r and self.CH.col_selection_enabled:
|
1982
1983
|
if not self.cell_completely_visible(r=r, c=0):
|
1983
|
-
self.see(r, c,
|
1984
|
-
elif r
|
1984
|
+
self.see(r, c, check_cell_visibility=False)
|
1985
|
+
elif r and (self.single_selection_enabled or self.toggle_selection_enabled):
|
1985
1986
|
if self.cell_completely_visible(r=r - 1, c=c):
|
1986
1987
|
self.select_cell(r - 1, c, redraw=True)
|
1987
1988
|
else:
|
1988
1989
|
self.select_cell(r - 1, c)
|
1989
1990
|
self.see(r - 1, c, keep_xscroll=True, check_cell_visibility=False)
|
1990
1991
|
|
1991
|
-
def arrowkey_RIGHT(self, event=None):
|
1992
|
-
if not self.selected:
|
1993
|
-
return
|
1994
|
-
if self.selected.type_ == "rows":
|
1995
|
-
r = self.selected.row
|
1996
|
-
if self.single_selection_enabled or self.toggle_selection_enabled:
|
1997
|
-
if self.cell_completely_visible(r=r, c=0):
|
1998
|
-
self.select_cell(r, 0, redraw=True)
|
1999
|
-
else:
|
2000
|
-
self.select_cell(r, 0)
|
2001
|
-
self.see(
|
2002
|
-
r,
|
2003
|
-
0,
|
2004
|
-
keep_yscroll=True,
|
2005
|
-
bottom_right_corner=True,
|
2006
|
-
check_cell_visibility=False,
|
2007
|
-
)
|
2008
|
-
elif self.selected.type_ == "columns":
|
2009
|
-
c = self.selected.column
|
2010
|
-
if c < len(self.col_positions) - 2 and self.CH.col_selection_enabled:
|
2011
|
-
if self.cell_completely_visible(r=0, c=c + 1):
|
2012
|
-
self.CH.select_col(c + 1, redraw=True)
|
2013
|
-
else:
|
2014
|
-
self.CH.select_col(c + 1)
|
2015
|
-
self.see(
|
2016
|
-
0,
|
2017
|
-
c + 1,
|
2018
|
-
keep_yscroll=True,
|
2019
|
-
bottom_right_corner=False if self.PAR.ops.arrow_key_down_right_scroll_page else True,
|
2020
|
-
check_cell_visibility=False,
|
2021
|
-
)
|
2022
|
-
else:
|
2023
|
-
r = self.selected.row
|
2024
|
-
c = self.selected.column
|
2025
|
-
if c < len(self.col_positions) - 2 and (self.single_selection_enabled or self.toggle_selection_enabled):
|
2026
|
-
if self.cell_completely_visible(r=r, c=c + 1):
|
2027
|
-
self.select_cell(r, c + 1, redraw=True)
|
2028
|
-
else:
|
2029
|
-
self.select_cell(r, c + 1)
|
2030
|
-
self.see(
|
2031
|
-
r,
|
2032
|
-
c + 1,
|
2033
|
-
keep_yscroll=True,
|
2034
|
-
bottom_right_corner=False if self.PAR.ops.arrow_key_down_right_scroll_page else True,
|
2035
|
-
check_cell_visibility=False,
|
2036
|
-
)
|
2037
|
-
|
2038
1992
|
def arrowkey_DOWN(self, event=None):
|
2039
1993
|
if not self.selected:
|
2040
1994
|
return
|
@@ -2070,15 +2024,17 @@ class MainTable(tk.Canvas):
|
|
2070
2024
|
elif self.selected.type_ == "columns":
|
2071
2025
|
c = self.selected.column
|
2072
2026
|
if self.single_selection_enabled or self.toggle_selection_enabled:
|
2073
|
-
if self.
|
2074
|
-
self.
|
2027
|
+
if self.selected.row == len(self.row_positions) - 2:
|
2028
|
+
r = self.selected.row
|
2075
2029
|
else:
|
2076
|
-
self.
|
2030
|
+
r = self.selected.row + 1
|
2031
|
+
if self.cell_completely_visible(r=r, c=c):
|
2032
|
+
self.select_cell(r, c, redraw=True)
|
2033
|
+
else:
|
2034
|
+
self.select_cell(r, c)
|
2077
2035
|
self.see(
|
2078
|
-
|
2036
|
+
r,
|
2079
2037
|
c,
|
2080
|
-
keep_xscroll=True,
|
2081
|
-
bottom_right_corner=True,
|
2082
2038
|
check_cell_visibility=False,
|
2083
2039
|
)
|
2084
2040
|
else:
|
@@ -2117,7 +2073,7 @@ class MainTable(tk.Canvas):
|
|
2117
2073
|
return
|
2118
2074
|
if self.selected.type_ == "columns":
|
2119
2075
|
c = self.selected.column
|
2120
|
-
if c
|
2076
|
+
if c and self.CH.col_selection_enabled:
|
2121
2077
|
if self.cell_completely_visible(r=0, c=c - 1):
|
2122
2078
|
self.CH.select_col(c - 1, redraw=True)
|
2123
2079
|
else:
|
@@ -2129,19 +2085,70 @@ class MainTable(tk.Canvas):
|
|
2129
2085
|
bottom_right_corner=True,
|
2130
2086
|
check_cell_visibility=False,
|
2131
2087
|
)
|
2088
|
+
elif self.selected.type_ == "rows" and self.selected.column:
|
2089
|
+
self.select_cell(self.selected.row, self.selected.column - 1)
|
2090
|
+
self.see(self.selected.row, self.selected.column, check_cell_visibility=True)
|
2132
2091
|
elif self.selected.type_ == "cells":
|
2133
2092
|
r = self.selected.row
|
2134
2093
|
c = self.selected.column
|
2135
|
-
if c
|
2136
|
-
|
2137
|
-
|
2138
|
-
elif c != 0 and (self.single_selection_enabled or self.toggle_selection_enabled):
|
2094
|
+
if not c and not self.cell_completely_visible(r=r, c=0):
|
2095
|
+
self.see(r, c, keep_yscroll=True, check_cell_visibility=False)
|
2096
|
+
elif c and (self.single_selection_enabled or self.toggle_selection_enabled):
|
2139
2097
|
if self.cell_completely_visible(r=r, c=c - 1):
|
2140
2098
|
self.select_cell(r, c - 1, redraw=True)
|
2141
2099
|
else:
|
2142
2100
|
self.select_cell(r, c - 1)
|
2143
2101
|
self.see(r, c - 1, keep_yscroll=True, check_cell_visibility=False)
|
2144
2102
|
|
2103
|
+
def arrowkey_RIGHT(self, event=None):
|
2104
|
+
if not self.selected:
|
2105
|
+
return
|
2106
|
+
if self.selected.type_ == "rows":
|
2107
|
+
r = self.selected.row
|
2108
|
+
if self.single_selection_enabled or self.toggle_selection_enabled:
|
2109
|
+
if self.selected.column == len(self.col_positions) - 2:
|
2110
|
+
c = self.selected.column
|
2111
|
+
else:
|
2112
|
+
c = self.selected.column + 1
|
2113
|
+
if self.cell_completely_visible(r=r, c=c):
|
2114
|
+
self.select_cell(r, c, redraw=True)
|
2115
|
+
else:
|
2116
|
+
self.select_cell(r, c)
|
2117
|
+
self.see(
|
2118
|
+
r,
|
2119
|
+
c,
|
2120
|
+
check_cell_visibility=False,
|
2121
|
+
)
|
2122
|
+
elif self.selected.type_ == "columns":
|
2123
|
+
c = self.selected.column
|
2124
|
+
if c < len(self.col_positions) - 2 and self.CH.col_selection_enabled:
|
2125
|
+
if self.cell_completely_visible(r=0, c=c + 1):
|
2126
|
+
self.CH.select_col(c + 1, redraw=True)
|
2127
|
+
else:
|
2128
|
+
self.CH.select_col(c + 1)
|
2129
|
+
self.see(
|
2130
|
+
0,
|
2131
|
+
c + 1,
|
2132
|
+
keep_yscroll=True,
|
2133
|
+
bottom_right_corner=False if self.PAR.ops.arrow_key_down_right_scroll_page else True,
|
2134
|
+
check_cell_visibility=False,
|
2135
|
+
)
|
2136
|
+
else:
|
2137
|
+
r = self.selected.row
|
2138
|
+
c = self.selected.column
|
2139
|
+
if c < len(self.col_positions) - 2 and (self.single_selection_enabled or self.toggle_selection_enabled):
|
2140
|
+
if self.cell_completely_visible(r=r, c=c + 1):
|
2141
|
+
self.select_cell(r, c + 1, redraw=True)
|
2142
|
+
else:
|
2143
|
+
self.select_cell(r, c + 1)
|
2144
|
+
self.see(
|
2145
|
+
r,
|
2146
|
+
c + 1,
|
2147
|
+
keep_yscroll=True,
|
2148
|
+
bottom_right_corner=False if self.PAR.ops.arrow_key_down_right_scroll_page else True,
|
2149
|
+
check_cell_visibility=False,
|
2150
|
+
)
|
2151
|
+
|
2145
2152
|
def key_bindings(self) -> None:
|
2146
2153
|
for widget in (self, self.RI, self.CH, self.TL):
|
2147
2154
|
for binding in self.PAR.ops.copy_bindings:
|
@@ -3375,7 +3382,7 @@ class MainTable(tk.Canvas):
|
|
3375
3382
|
def set_table_font_help(self):
|
3376
3383
|
self.table_txt_width, self.table_txt_height = self.get_txt_dimensions("|", self.PAR.ops.table_font)
|
3377
3384
|
self.table_half_txt_height = ceil(self.table_txt_height / 2)
|
3378
|
-
if self.table_half_txt_height % 2
|
3385
|
+
if not self.table_half_txt_height % 2:
|
3379
3386
|
self.table_first_ln_ins = self.table_half_txt_height + 2
|
3380
3387
|
else:
|
3381
3388
|
self.table_first_ln_ins = self.table_half_txt_height + 3
|
@@ -3403,7 +3410,7 @@ class MainTable(tk.Canvas):
|
|
3403
3410
|
def set_header_font_help(self):
|
3404
3411
|
self.header_txt_width, self.header_txt_height = self.get_txt_dimensions("|", self.PAR.ops.header_font)
|
3405
3412
|
self.header_half_txt_height = ceil(self.header_txt_height / 2)
|
3406
|
-
if self.header_half_txt_height % 2
|
3413
|
+
if not self.header_half_txt_height % 2:
|
3407
3414
|
self.header_first_ln_ins = self.header_half_txt_height + 2
|
3408
3415
|
else:
|
3409
3416
|
self.header_first_ln_ins = self.header_half_txt_height + 3
|
@@ -3434,7 +3441,7 @@ class MainTable(tk.Canvas):
|
|
3434
3441
|
def set_index_font_help(self):
|
3435
3442
|
self.index_txt_width, self.index_txt_height = self.get_txt_dimensions("|", self.PAR.ops.index_font)
|
3436
3443
|
self.index_half_txt_height = ceil(self.index_txt_height / 2)
|
3437
|
-
if self.index_half_txt_height % 2
|
3444
|
+
if not self.index_half_txt_height % 2:
|
3438
3445
|
self.index_first_ln_ins = self.index_half_txt_height + 2
|
3439
3446
|
else:
|
3440
3447
|
self.index_first_ln_ins = self.index_half_txt_height + 3
|
@@ -3561,19 +3568,22 @@ class MainTable(tk.Canvas):
|
|
3561
3568
|
else:
|
3562
3569
|
return False
|
3563
3570
|
|
3564
|
-
def set_all_cell_sizes_to_text(self,
|
3571
|
+
def set_all_cell_sizes_to_text(self, w: int | None = None) -> tuple[list[float], list[float]]:
|
3565
3572
|
min_column_width = int(self.min_column_width)
|
3566
3573
|
min_rh = int(self.min_row_height)
|
3567
|
-
w = min_column_width
|
3574
|
+
w = min_column_width if w is None else w
|
3568
3575
|
h = min_rh
|
3569
3576
|
rhs = defaultdict(lambda: int(min_rh))
|
3570
3577
|
cws = []
|
3571
|
-
|
3572
|
-
|
3573
|
-
|
3578
|
+
qconf = self.txt_measure_canvas.itemconfig
|
3579
|
+
qbbox = self.txt_measure_canvas.bbox
|
3580
|
+
qtxtm = self.txt_measure_canvas_text
|
3581
|
+
qtxth = self.table_txt_height
|
3582
|
+
qfont = self.PAR.ops.table_font
|
3574
3583
|
numrows = self.total_data_rows()
|
3584
|
+
numcols = self.total_data_cols()
|
3575
3585
|
if self.all_columns_displayed:
|
3576
|
-
itercols = range(
|
3586
|
+
itercols = range(numcols)
|
3577
3587
|
else:
|
3578
3588
|
itercols = self.displayed_columns
|
3579
3589
|
if self.all_rows_displayed:
|
@@ -3590,23 +3600,28 @@ class MainTable(tk.Canvas):
|
|
3590
3600
|
if h > rhs[datarn]:
|
3591
3601
|
rhs[datarn] = h
|
3592
3602
|
for datacn in itercols:
|
3593
|
-
|
3594
|
-
|
3595
|
-
iterrows = range(numrows)
|
3603
|
+
if (hw := self.CH.get_cell_dimensions(datacn)[0]) > w:
|
3604
|
+
w = hw
|
3596
3605
|
for datarn in iterrows:
|
3597
3606
|
txt = self.get_valid_cell_data_as_str(datarn, datacn, get_displayed=True)
|
3598
3607
|
if txt:
|
3599
|
-
|
3600
|
-
b =
|
3608
|
+
qconf(qtxtm, text=txt, font=qfont)
|
3609
|
+
b = qbbox(qtxtm)
|
3601
3610
|
tw = b[2] - b[0] + 7
|
3602
3611
|
h = b[3] - b[1] + 5
|
3603
3612
|
else:
|
3604
3613
|
tw = min_column_width
|
3605
3614
|
h = min_rh
|
3606
|
-
if self.get_cell_kwargs(
|
3607
|
-
datarn,
|
3615
|
+
if self.get_cell_kwargs(
|
3616
|
+
datarn,
|
3617
|
+
datacn,
|
3618
|
+
key="dropdown",
|
3619
|
+
) or self.get_cell_kwargs(
|
3620
|
+
datarn,
|
3621
|
+
datacn,
|
3622
|
+
key="checkbox",
|
3608
3623
|
):
|
3609
|
-
tw +=
|
3624
|
+
tw += qtxth
|
3610
3625
|
if tw > w:
|
3611
3626
|
w = tw
|
3612
3627
|
if h < min_rh:
|
@@ -3620,8 +3635,8 @@ class MainTable(tk.Canvas):
|
|
3620
3635
|
elif w > self.max_column_width:
|
3621
3636
|
w = int(self.max_column_width)
|
3622
3637
|
cws.append(w)
|
3623
|
-
self.set_row_positions(itr=
|
3624
|
-
self.set_col_positions(itr=
|
3638
|
+
self.set_row_positions(itr=rhs.values())
|
3639
|
+
self.set_col_positions(itr=cws)
|
3625
3640
|
self.recreate_all_selection_boxes()
|
3626
3641
|
return self.row_positions, self.col_positions
|
3627
3642
|
|
@@ -5583,6 +5598,9 @@ class MainTable(tk.Canvas):
|
|
5583
5598
|
columns: bool = True,
|
5584
5599
|
reverse: bool = False,
|
5585
5600
|
) -> Generator[int]:
|
5601
|
+
"""
|
5602
|
+
Most recent selection box should be last
|
5603
|
+
"""
|
5586
5604
|
itr = reversed(self.selection_boxes.items()) if reverse else self.selection_boxes.items()
|
5587
5605
|
return tuple(
|
5588
5606
|
(iid, box)
|
@@ -5590,7 +5608,7 @@ class MainTable(tk.Canvas):
|
|
5590
5608
|
if cells and box.type_ == "cells" or rows and box.type_ == "rows" or columns and box.type_ == "columns"
|
5591
5609
|
)
|
5592
5610
|
|
5593
|
-
def get_boxes(self) -> dict:
|
5611
|
+
def get_boxes(self) -> dict[Box_nt, Literal["cells", "rows", "columns"]]:
|
5594
5612
|
return {box.coords: box.type_ for box in self.selection_boxes.values()}
|
5595
5613
|
|
5596
5614
|
def reselect_from_get_boxes(
|
@@ -5685,6 +5703,7 @@ class MainTable(tk.Canvas):
|
|
5685
5703
|
c: int,
|
5686
5704
|
type_: Literal["cells", "rows", "columns"],
|
5687
5705
|
fill_iid: int,
|
5706
|
+
lower_selection_boxes: bool = True,
|
5688
5707
|
) -> int:
|
5689
5708
|
fill, outline = self.get_selected_box_bg_fg(type_=type_)
|
5690
5709
|
x1 = self.col_positions[c] + 1
|
@@ -5695,6 +5714,7 @@ class MainTable(tk.Canvas):
|
|
5695
5714
|
if self.PAR.ops.show_selected_cells_border:
|
5696
5715
|
fill = ""
|
5697
5716
|
else:
|
5717
|
+
fill = outline
|
5698
5718
|
outline = ""
|
5699
5719
|
iid = self.display_box(
|
5700
5720
|
x1,
|
@@ -5715,10 +5735,7 @@ class MainTable(tk.Canvas):
|
|
5715
5735
|
iid=iid,
|
5716
5736
|
fill_iid=fill_iid,
|
5717
5737
|
)
|
5718
|
-
if
|
5719
|
-
self.tag_raise(iid)
|
5720
|
-
else:
|
5721
|
-
self.tag_lower(iid)
|
5738
|
+
if lower_selection_boxes:
|
5722
5739
|
self.lower_selection_boxes()
|
5723
5740
|
return iid
|
5724
5741
|
|
@@ -5867,19 +5884,25 @@ class MainTable(tk.Canvas):
|
|
5867
5884
|
elif isinstance(set_current, tuple):
|
5868
5885
|
curr_r = set_current[0]
|
5869
5886
|
curr_c = set_current[1]
|
5870
|
-
self.create_currently_selected_box(curr_r, curr_c, type_, fill_iid)
|
5887
|
+
self.create_currently_selected_box(curr_r, curr_c, type_, fill_iid, lower_selection_boxes=False)
|
5871
5888
|
self.lower_selection_boxes()
|
5872
5889
|
if run_binding:
|
5873
5890
|
self.run_selection_binding(type_)
|
5874
5891
|
return fill_iid
|
5875
5892
|
|
5876
5893
|
def lower_selection_boxes(self) -> None:
|
5877
|
-
|
5878
|
-
self.
|
5879
|
-
|
5880
|
-
self.
|
5881
|
-
|
5882
|
-
self.
|
5894
|
+
if self.selected:
|
5895
|
+
if not self.PAR.ops.show_selected_cells_border:
|
5896
|
+
self.tag_lower(self.selected.iid)
|
5897
|
+
self.tag_lower("rows")
|
5898
|
+
self.tag_lower("columns")
|
5899
|
+
self.tag_lower("cells")
|
5900
|
+
self.RI.tag_lower("rows")
|
5901
|
+
self.RI.tag_lower("cells")
|
5902
|
+
self.CH.tag_lower("columns")
|
5903
|
+
self.CH.tag_lower("cells")
|
5904
|
+
if self.PAR.ops.show_selected_cells_border:
|
5905
|
+
self.tag_raise(self.selected.iid)
|
5883
5906
|
|
5884
5907
|
def recreate_selection_box(
|
5885
5908
|
self,
|
@@ -6216,7 +6239,7 @@ class MainTable(tk.Canvas):
|
|
6216
6239
|
return tuple(box.coords for item, box in self.get_selection_items())
|
6217
6240
|
|
6218
6241
|
def get_all_selection_boxes_with_types(self) -> list[tuple[tuple[int, int, int, int], str]]:
|
6219
|
-
return [(box.coords, box.type_) for item, box in self.get_selection_items()]
|
6242
|
+
return [Box_st(box.coords, box.type_) for item, box in self.get_selection_items()]
|
6220
6243
|
|
6221
6244
|
def all_selected(self) -> bool:
|
6222
6245
|
return any(
|
@@ -6243,20 +6266,20 @@ class MainTable(tk.Canvas):
|
|
6243
6266
|
)
|
6244
6267
|
)
|
6245
6268
|
|
6246
|
-
def col_selected(self, c: int) -> bool:
|
6269
|
+
def col_selected(self, c: int, cells: bool = False) -> bool:
|
6247
6270
|
return isinstance(c, int) and any(
|
6248
6271
|
box.coords.from_c <= c and box.coords.upto_c > c
|
6249
6272
|
for item, box in self.get_selection_items(
|
6250
|
-
cells=
|
6273
|
+
cells=cells,
|
6251
6274
|
rows=False,
|
6252
6275
|
)
|
6253
6276
|
)
|
6254
6277
|
|
6255
|
-
def row_selected(self, r: int) -> bool:
|
6278
|
+
def row_selected(self, r: int, cells: bool = False) -> bool:
|
6256
6279
|
return isinstance(r, int) and any(
|
6257
6280
|
box.coords.from_r <= r and box.coords.upto_r > r
|
6258
6281
|
for item, box in self.get_selection_items(
|
6259
|
-
cells=
|
6282
|
+
cells=cells,
|
6260
6283
|
columns=False,
|
6261
6284
|
)
|
6262
6285
|
)
|
@@ -6414,12 +6437,12 @@ class MainTable(tk.Canvas):
|
|
6414
6437
|
}
|
6415
6438
|
),
|
6416
6439
|
"sheet_ops": self.PAR.ops,
|
6417
|
-
"border_color": self.PAR.ops.
|
6440
|
+
"border_color": self.PAR.ops.table_selected_box_cells_fg,
|
6418
6441
|
"text": text,
|
6419
6442
|
"state": state,
|
6420
6443
|
"width": w,
|
6421
6444
|
"height": h,
|
6422
|
-
"show_border":
|
6445
|
+
"show_border": True,
|
6423
6446
|
"bg": bg,
|
6424
6447
|
"fg": fg,
|
6425
6448
|
"align": self.get_cell_align(r, c),
|
@@ -6458,6 +6481,8 @@ class MainTable(tk.Canvas):
|
|
6458
6481
|
check_lines: bool = True,
|
6459
6482
|
) -> None:
|
6460
6483
|
curr_height = self.text_editor.window.winfo_height()
|
6484
|
+
if curr_height < self.min_row_height:
|
6485
|
+
return
|
6461
6486
|
if not check_lines or self.get_lines_cell_height(self.text_editor.window.get_num_lines() + 1) > curr_height:
|
6462
6487
|
new_height = curr_height + self.table_xtra_lines_increment
|
6463
6488
|
space_bot = self.get_space_bot(r)
|
@@ -6757,6 +6782,7 @@ class MainTable(tk.Canvas):
|
|
6757
6782
|
if not self.open_text_editor(event=event, r=r, c=c, dropdown=True):
|
6758
6783
|
return
|
6759
6784
|
win_h, anchor = self.get_dropdown_height_anchor(r, c)
|
6785
|
+
win_w = self.col_positions[c + 1] - self.col_positions[c] + 1
|
6760
6786
|
if anchor == "nw":
|
6761
6787
|
if kwargs["state"] == "normal":
|
6762
6788
|
ypos = self.row_positions[r] + self.text_editor.window.winfo_height() - 1
|
@@ -6764,33 +6790,29 @@ class MainTable(tk.Canvas):
|
|
6764
6790
|
ypos = self.row_positions[r + 1]
|
6765
6791
|
else:
|
6766
6792
|
ypos = self.row_positions[r]
|
6767
|
-
|
6768
|
-
|
6769
|
-
|
6770
|
-
|
6771
|
-
|
6772
|
-
self.
|
6773
|
-
self.
|
6774
|
-
|
6775
|
-
|
6793
|
+
reset_kwargs = {
|
6794
|
+
"r": r,
|
6795
|
+
"c": c,
|
6796
|
+
"width": win_w,
|
6797
|
+
"height": win_h,
|
6798
|
+
"font": self.PAR.ops.table_font,
|
6799
|
+
"ops": self.PAR.ops,
|
6800
|
+
"outline_color": self.get_selected_box_bg_fg(type_="cells")[1],
|
6801
|
+
"align": self.get_cell_align(r, c),
|
6802
|
+
"values": kwargs["values"],
|
6803
|
+
}
|
6804
|
+
if self.dropdown.window:
|
6805
|
+
self.dropdown.window.reset(**reset_kwargs)
|
6806
|
+
self.itemconfig(self.dropdown.canvas_id, state="normal")
|
6776
6807
|
self.coords(self.dropdown.canvas_id, self.col_positions[c], ypos)
|
6777
6808
|
else:
|
6778
6809
|
self.dropdown.window = self.PAR.dropdown_class(
|
6779
6810
|
self.winfo_toplevel(),
|
6780
|
-
|
6781
|
-
c,
|
6782
|
-
width=self.col_positions[c + 1] - self.col_positions[c] + 1,
|
6783
|
-
height=win_h,
|
6784
|
-
font=self.PAR.ops.table_font,
|
6785
|
-
ops=self.PAR.ops,
|
6786
|
-
outline_color=self.get_selected_box_bg_fg(type_="cells")[1],
|
6787
|
-
outline_thickness=2,
|
6788
|
-
values=kwargs["values"],
|
6811
|
+
**reset_kwargs,
|
6789
6812
|
close_dropdown_window=self.close_dropdown_window,
|
6790
6813
|
search_function=kwargs["search_function"],
|
6791
6814
|
arrowkey_RIGHT=self.arrowkey_RIGHT,
|
6792
6815
|
arrowkey_LEFT=self.arrowkey_LEFT,
|
6793
|
-
align="w", # self.get_cell_align(r, c)
|
6794
6816
|
)
|
6795
6817
|
self.dropdown.canvas_id = self.create_window(
|
6796
6818
|
(self.col_positions[c], ypos),
|