tksheet 7.5.1__tar.gz → 7.5.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tksheet-7.5.1/tksheet.egg-info → tksheet-7.5.3}/PKG-INFO +1 -1
- {tksheet-7.5.1 → tksheet-7.5.3}/pyproject.toml +1 -1
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/__init__.py +1 -1
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/column_headers.py +18 -20
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/find_window.py +3 -3
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/main_table.py +30 -16
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/row_index.py +18 -20
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/sheet.py +19 -48
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/text_editor.py +3 -2
- {tksheet-7.5.1 → tksheet-7.5.3/tksheet.egg-info}/PKG-INFO +1 -1
- {tksheet-7.5.1 → tksheet-7.5.3}/LICENSE.txt +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/README.md +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/setup.cfg +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/colors.py +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/constants.py +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/formatters.py +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/functions.py +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/other_classes.py +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/sheet_options.py +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/sorting.py +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/themes.py +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/tksheet_types.py +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet/top_left_rectangle.py +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet.egg-info/SOURCES.txt +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet.egg-info/dependency_links.txt +0 -0
- {tksheet-7.5.1 → tksheet-7.5.3}/tksheet.egg-info/top_level.txt +0 -0
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
6
6
|
name = "tksheet"
|
7
7
|
description = "Tkinter table / sheet and treeview widget"
|
8
8
|
readme = "README.md"
|
9
|
-
version = "7.5.
|
9
|
+
version = "7.5.3"
|
10
10
|
authors = [{ name = "ragardner", email = "github@ragardner.simplelogin.com" }]
|
11
11
|
requires-python = ">=3.8"
|
12
12
|
license = {file = "LICENSE.txt"}
|
@@ -24,6 +24,7 @@ from .functions import (
|
|
24
24
|
event_dict,
|
25
25
|
event_has_char_key,
|
26
26
|
event_opens_dropdown_or_checkbox,
|
27
|
+
get_menu_kwargs,
|
27
28
|
get_n2a,
|
28
29
|
int_x_tuple,
|
29
30
|
is_contiguous,
|
@@ -35,7 +36,7 @@ from .functions import (
|
|
35
36
|
try_binding,
|
36
37
|
wrap_text,
|
37
38
|
)
|
38
|
-
from .other_classes import
|
39
|
+
from .other_classes import DraggedRowColumn, DropdownStorage, EventDataDict, TextEditorStorage
|
39
40
|
from .row_index import RowIndex
|
40
41
|
from .sorting import sort_column, sort_rows_by_column, sort_tree_rows_by_column
|
41
42
|
from .text_editor import TextEditor
|
@@ -1804,16 +1805,9 @@ class ColumnHeaders(tk.Canvas):
|
|
1804
1805
|
w = self.MT.col_positions[c + 1] - x
|
1805
1806
|
h = self.current_height + 1
|
1806
1807
|
kwargs = {
|
1807
|
-
"menu_kwargs":
|
1808
|
-
{
|
1809
|
-
"font": self.ops.table_font,
|
1810
|
-
"foreground": self.ops.popup_menu_fg,
|
1811
|
-
"background": self.ops.popup_menu_bg,
|
1812
|
-
"activebackground": self.ops.popup_menu_highlight_bg,
|
1813
|
-
"activeforeground": self.ops.popup_menu_highlight_fg,
|
1814
|
-
}
|
1815
|
-
),
|
1808
|
+
"menu_kwargs": get_menu_kwargs(self.ops),
|
1816
1809
|
"sheet_ops": self.ops,
|
1810
|
+
"font": self.ops.header_font,
|
1817
1811
|
"border_color": self.ops.header_selected_columns_bg,
|
1818
1812
|
"text": text,
|
1819
1813
|
"state": state,
|
@@ -2245,17 +2239,18 @@ class ColumnHeaders(tk.Canvas):
|
|
2245
2239
|
self.MT._headers[datacn] = value
|
2246
2240
|
|
2247
2241
|
def input_valid_for_cell(self, datacn: int, value: Any, check_readonly: bool = True) -> bool:
|
2248
|
-
|
2249
|
-
if check_readonly and "readonly" in kwargs:
|
2242
|
+
if check_readonly and self.get_cell_kwargs(datacn, key="readonly"):
|
2250
2243
|
return False
|
2251
|
-
elif "checkbox"
|
2244
|
+
elif self.get_cell_kwargs(datacn, key="checkbox"):
|
2252
2245
|
return is_bool_like(value)
|
2253
2246
|
else:
|
2254
2247
|
return not (
|
2255
2248
|
self.cell_equal_to(datacn, value)
|
2256
|
-
or (
|
2257
|
-
|
2258
|
-
|
2249
|
+
or (
|
2250
|
+
(kwargs := self.get_cell_kwargs(datacn, key="dropdown"))
|
2251
|
+
and kwargs["validate_input"]
|
2252
|
+
and value not in kwargs["values"]
|
2253
|
+
)
|
2259
2254
|
)
|
2260
2255
|
|
2261
2256
|
def cell_equal_to(self, datacn: int, value: Any) -> bool:
|
@@ -2311,11 +2306,14 @@ class ColumnHeaders(tk.Canvas):
|
|
2311
2306
|
return value
|
2312
2307
|
|
2313
2308
|
def get_value_for_empty_cell(self, datacn: int, c_ops: bool = True) -> Any:
|
2314
|
-
|
2315
|
-
if "checkbox" in kwargs:
|
2309
|
+
if self.get_cell_kwargs(datacn, key="checkbox", cell=c_ops):
|
2316
2310
|
return False
|
2317
|
-
elif
|
2318
|
-
|
2311
|
+
elif (
|
2312
|
+
(kwargs := self.get_cell_kwargs(datacn, key="dropdown", cell=c_ops))
|
2313
|
+
and kwargs["validate_input"]
|
2314
|
+
and kwargs["values"]
|
2315
|
+
):
|
2316
|
+
return kwargs["values"][0]
|
2319
2317
|
else:
|
2320
2318
|
return ""
|
2321
2319
|
|
@@ -434,7 +434,7 @@ class FindWindow(tk.Frame):
|
|
434
434
|
self.tktext.reset(
|
435
435
|
menu_kwargs=menu_kwargs,
|
436
436
|
sheet_ops=sheet_ops,
|
437
|
-
font=
|
437
|
+
font=sheet_ops.table_font,
|
438
438
|
bg=bg,
|
439
439
|
fg=fg,
|
440
440
|
select_bg=select_bg,
|
@@ -443,7 +443,7 @@ class FindWindow(tk.Frame):
|
|
443
443
|
self.replace_tktext.reset(
|
444
444
|
menu_kwargs=menu_kwargs,
|
445
445
|
sheet_ops=sheet_ops,
|
446
|
-
font=
|
446
|
+
font=sheet_ops.table_font,
|
447
447
|
bg=bg,
|
448
448
|
fg=fg,
|
449
449
|
select_bg=select_bg,
|
@@ -459,7 +459,7 @@ class FindWindow(tk.Frame):
|
|
459
459
|
self.replace_all,
|
460
460
|
):
|
461
461
|
widget.config(
|
462
|
-
font=
|
462
|
+
font=sheet_ops.table_font,
|
463
463
|
bg=bg,
|
464
464
|
fg=fg,
|
465
465
|
highlightbackground=bg,
|
@@ -189,7 +189,7 @@ class MainTable(tk.Canvas):
|
|
189
189
|
self.min_row_height = 0
|
190
190
|
self.min_header_height = 0
|
191
191
|
self.being_drawn_item = None
|
192
|
-
self.
|
192
|
+
self.extra_enter_func = None
|
193
193
|
self.extra_b1_press_func = None
|
194
194
|
self.extra_b1_motion_func = None
|
195
195
|
self.extra_b1_release_func = None
|
@@ -389,7 +389,7 @@ class MainTable(tk.Canvas):
|
|
389
389
|
|
390
390
|
def basic_bindings(self, enable: bool = True) -> None:
|
391
391
|
bindings = (
|
392
|
-
("<Enter>", self, self.
|
392
|
+
("<Enter>", self, self.enter),
|
393
393
|
("<Configure>", self, self.window_configured),
|
394
394
|
("<ButtonPress-1>", self, self.b1_press),
|
395
395
|
("<B1-Motion>", self, self.b1_motion),
|
@@ -1222,7 +1222,7 @@ class MainTable(tk.Canvas):
|
|
1222
1222
|
lastbox_numcols = lastbox_c2 - lastbox_c1
|
1223
1223
|
if lastbox_numrows > new_data_numrows and not lastbox_numrows % new_data_numrows:
|
1224
1224
|
repeat_num = int(lastbox_numrows / new_data_numrows)
|
1225
|
-
data.extend(chain.from_iterable([r.copy() for r in data] for _ in range(repeat_num - 1)))
|
1225
|
+
data.extend(list(chain.from_iterable([r.copy() for r in data] for _ in range(repeat_num - 1))))
|
1226
1226
|
new_data_numrows *= repeat_num
|
1227
1227
|
|
1228
1228
|
if lastbox_numcols > new_data_numcols and not lastbox_numcols % new_data_numcols:
|
@@ -3662,11 +3662,11 @@ class MainTable(tk.Canvas):
|
|
3662
3662
|
self.CH.rsz_w = None
|
3663
3663
|
self.CH.rsz_h = None
|
3664
3664
|
|
3665
|
-
def
|
3665
|
+
def enter(self, event: Any) -> None:
|
3666
3666
|
self.config(cursor="")
|
3667
3667
|
self.current_cursor = ""
|
3668
3668
|
self.reset_resize_vars()
|
3669
|
-
try_binding(self.
|
3669
|
+
try_binding(self.extra_enter_func, event)
|
3670
3670
|
|
3671
3671
|
def not_currently_resizing(self) -> bool:
|
3672
3672
|
return all(v is None for v in (self.RI.rsz_h, self.RI.rsz_w, self.CH.rsz_h, self.CH.rsz_w))
|
@@ -7587,6 +7587,7 @@ class MainTable(tk.Canvas):
|
|
7587
7587
|
kwargs = {
|
7588
7588
|
"menu_kwargs": get_menu_kwargs(self.PAR.ops),
|
7589
7589
|
"sheet_ops": self.PAR.ops,
|
7590
|
+
"font": self.PAR.ops.table_font,
|
7590
7591
|
"border_color": self.PAR.ops.table_selected_box_cells_fg,
|
7591
7592
|
"text": text,
|
7592
7593
|
"state": state,
|
@@ -8218,18 +8219,30 @@ class MainTable(tk.Canvas):
|
|
8218
8219
|
return value
|
8219
8220
|
|
8220
8221
|
def get_value_for_empty_cell(self, datarn: int, datacn: int, r_ops: bool = True, c_ops: bool = True) -> Any:
|
8221
|
-
|
8222
|
+
if self.get_cell_kwargs(
|
8222
8223
|
datarn,
|
8223
8224
|
datacn,
|
8224
|
-
key=
|
8225
|
+
key="checkbox",
|
8225
8226
|
cell=r_ops and c_ops,
|
8226
8227
|
row=r_ops,
|
8227
8228
|
column=c_ops,
|
8228
|
-
)
|
8229
|
-
if "checkbox" in kwargs:
|
8229
|
+
):
|
8230
8230
|
return False
|
8231
|
-
elif
|
8232
|
-
|
8231
|
+
elif (
|
8232
|
+
(
|
8233
|
+
kwargs := self.get_cell_kwargs(
|
8234
|
+
datarn,
|
8235
|
+
datacn,
|
8236
|
+
key="dropdown",
|
8237
|
+
cell=r_ops and c_ops,
|
8238
|
+
row=r_ops,
|
8239
|
+
column=c_ops,
|
8240
|
+
)
|
8241
|
+
)
|
8242
|
+
and kwargs["validate_input"]
|
8243
|
+
and kwargs["values"]
|
8244
|
+
):
|
8245
|
+
return kwargs["values"][0]
|
8233
8246
|
else:
|
8234
8247
|
return self.format_value(datarn, datacn, "")
|
8235
8248
|
|
@@ -8415,16 +8428,17 @@ class MainTable(tk.Canvas):
|
|
8415
8428
|
check_readonly: bool = True,
|
8416
8429
|
ignore_empty: bool = False,
|
8417
8430
|
) -> bool:
|
8418
|
-
|
8419
|
-
if check_readonly and "readonly" in kwargs:
|
8431
|
+
if check_readonly and self.get_cell_kwargs(datarn, datacn, key="readonly"):
|
8420
8432
|
return False
|
8421
|
-
elif "format"
|
8433
|
+
elif self.get_cell_kwargs(datarn, datacn, key="format"):
|
8422
8434
|
return True
|
8423
8435
|
elif self.cell_equal_to(datarn, datacn, value, ignore_empty=ignore_empty, check_fmt=False) or (
|
8424
|
-
|
8436
|
+
(kwargs := self.get_cell_kwargs(datarn, datacn, key="dropdown"))
|
8437
|
+
and kwargs["validate_input"]
|
8438
|
+
and value not in kwargs["values"]
|
8425
8439
|
):
|
8426
8440
|
return False
|
8427
|
-
elif "checkbox"
|
8441
|
+
elif self.get_cell_kwargs(datarn, datacn, key="checkbox"):
|
8428
8442
|
return is_bool_like(value)
|
8429
8443
|
else:
|
8430
8444
|
return True
|
@@ -26,6 +26,7 @@ from .functions import (
|
|
26
26
|
event_dict,
|
27
27
|
event_has_char_key,
|
28
28
|
event_opens_dropdown_or_checkbox,
|
29
|
+
get_menu_kwargs,
|
29
30
|
get_n2a,
|
30
31
|
get_new_indexes,
|
31
32
|
int_x_tuple,
|
@@ -39,7 +40,7 @@ from .functions import (
|
|
39
40
|
try_binding,
|
40
41
|
wrap_text,
|
41
42
|
)
|
42
|
-
from .other_classes import
|
43
|
+
from .other_classes import DraggedRowColumn, DropdownStorage, EventDataDict, Node, TextEditorStorage
|
43
44
|
from .sorting import sort_columns_by_row, sort_row
|
44
45
|
from .text_editor import TextEditor
|
45
46
|
|
@@ -1976,16 +1977,9 @@ class RowIndex(tk.Canvas):
|
|
1976
1977
|
w = self.current_width + 1
|
1977
1978
|
h = self.MT.row_positions[r + 1] - y + 1
|
1978
1979
|
kwargs = {
|
1979
|
-
"menu_kwargs":
|
1980
|
-
{
|
1981
|
-
"font": self.ops.index_font,
|
1982
|
-
"foreground": self.ops.popup_menu_fg,
|
1983
|
-
"background": self.ops.popup_menu_bg,
|
1984
|
-
"activebackground": self.ops.popup_menu_highlight_bg,
|
1985
|
-
"activeforeground": self.ops.popup_menu_highlight_fg,
|
1986
|
-
}
|
1987
|
-
),
|
1980
|
+
"menu_kwargs": get_menu_kwargs(self.ops),
|
1988
1981
|
"sheet_ops": self.ops,
|
1982
|
+
"font": self.ops.index_font,
|
1989
1983
|
"border_color": self.ops.index_selected_rows_bg,
|
1990
1984
|
"text": text,
|
1991
1985
|
"state": state,
|
@@ -2414,17 +2408,18 @@ class RowIndex(tk.Canvas):
|
|
2414
2408
|
self.MT._row_index[datarn] = value
|
2415
2409
|
|
2416
2410
|
def input_valid_for_cell(self, datarn: int, value: Any, check_readonly: bool = True) -> bool:
|
2417
|
-
|
2418
|
-
if check_readonly and "readonly" in kwargs:
|
2411
|
+
if check_readonly and self.get_cell_kwargs(datarn, key="readonly"):
|
2419
2412
|
return False
|
2420
|
-
elif "checkbox"
|
2413
|
+
elif self.get_cell_kwargs(datarn, key="checkbox"):
|
2421
2414
|
return is_bool_like(value)
|
2422
2415
|
else:
|
2423
2416
|
return not (
|
2424
2417
|
self.cell_equal_to(datarn, value)
|
2425
|
-
or (
|
2426
|
-
|
2427
|
-
|
2418
|
+
or (
|
2419
|
+
(kwargs := self.get_cell_kwargs(datarn, key="dropdown"))
|
2420
|
+
and kwargs["validate_input"]
|
2421
|
+
and value not in kwargs["values"]
|
2422
|
+
)
|
2428
2423
|
)
|
2429
2424
|
|
2430
2425
|
def cell_equal_to(self, datarn: int, value: Any) -> bool:
|
@@ -2487,11 +2482,14 @@ class RowIndex(tk.Canvas):
|
|
2487
2482
|
if self.ops.treeview:
|
2488
2483
|
iid = self.new_iid()
|
2489
2484
|
return Node(text=iid, iid=iid, parent=self.get_row_parent(datarn))
|
2490
|
-
|
2491
|
-
if "checkbox" in kwargs:
|
2485
|
+
if self.get_cell_kwargs(datarn, key="checkbox", cell=r_ops):
|
2492
2486
|
return False
|
2493
|
-
elif
|
2494
|
-
|
2487
|
+
elif (
|
2488
|
+
(kwargs := self.get_cell_kwargs(datarn, key="dropdown", cell=r_ops))
|
2489
|
+
and kwargs["validate_input"]
|
2490
|
+
and kwargs["values"]
|
2491
|
+
):
|
2492
|
+
return kwargs["values"][0]
|
2495
2493
|
else:
|
2496
2494
|
return ""
|
2497
2495
|
|
@@ -703,7 +703,7 @@ class Sheet(tk.Frame):
|
|
703
703
|
self.RI.extra_double_b1_func = func
|
704
704
|
self.TL.extra_double_b1_func = func
|
705
705
|
elif binding == "<Motion>":
|
706
|
-
self.MT.
|
706
|
+
self.MT.bind("<Motion>", func, add=add)
|
707
707
|
self.CH.extra_motion_func = func
|
708
708
|
self.RI.extra_motion_func = func
|
709
709
|
self.TL.extra_motion_func = func
|
@@ -718,7 +718,10 @@ class Sheet(tk.Frame):
|
|
718
718
|
else:
|
719
719
|
self.bound_events[binding] = [func]
|
720
720
|
else:
|
721
|
-
|
721
|
+
if binding == "<Enter>":
|
722
|
+
self.MT.extra_enter_func = func
|
723
|
+
else:
|
724
|
+
self.MT.bind(binding, func, add=add)
|
722
725
|
self.CH.bind(binding, func, add=add)
|
723
726
|
self.RI.bind(binding, func, add=add)
|
724
727
|
self.TL.bind(binding, func, add=add)
|
@@ -5497,17 +5500,8 @@ class Sheet(tk.Frame):
|
|
5497
5500
|
readonly: bool = True,
|
5498
5501
|
redraw: bool = False,
|
5499
5502
|
) -> Sheet:
|
5500
|
-
if isinstance(rows, int):
|
5501
|
-
|
5502
|
-
if not readonly:
|
5503
|
-
for r in rows:
|
5504
|
-
if r in self.MT.row_options and "readonly" in self.MT.row_options[r]:
|
5505
|
-
del self.MT.row_options[r]["readonly"]
|
5506
|
-
else:
|
5507
|
-
for r in rows:
|
5508
|
-
if r not in self.MT.row_options:
|
5509
|
-
self.MT.row_options[r] = {}
|
5510
|
-
self.MT.row_options[r]["readonly"] = True
|
5503
|
+
for r in (rows,) if isinstance(rows, int) else rows:
|
5504
|
+
set_readonly(self.MT.row_options, r, readonly)
|
5511
5505
|
return self.set_refresh_timer(redraw)
|
5512
5506
|
|
5513
5507
|
def readonly_columns(
|
@@ -5516,17 +5510,8 @@ class Sheet(tk.Frame):
|
|
5516
5510
|
readonly: bool = True,
|
5517
5511
|
redraw: bool = False,
|
5518
5512
|
) -> Sheet:
|
5519
|
-
if isinstance(columns, int):
|
5520
|
-
|
5521
|
-
if not readonly:
|
5522
|
-
for c in columns:
|
5523
|
-
if c in self.MT.col_options and "readonly" in self.MT.col_options[c]:
|
5524
|
-
del self.MT.col_options[c]["readonly"]
|
5525
|
-
else:
|
5526
|
-
for c in columns:
|
5527
|
-
if c not in self.MT.col_options:
|
5528
|
-
self.MT.col_options[c] = {}
|
5529
|
-
self.MT.col_options[c]["readonly"] = True
|
5513
|
+
for c in (columns,) if isinstance(columns, int) else columns:
|
5514
|
+
set_readonly(self.MT.col_options, c, readonly)
|
5530
5515
|
return self.set_refresh_timer(redraw)
|
5531
5516
|
|
5532
5517
|
def readonly_cells(
|
@@ -5537,45 +5522,31 @@ class Sheet(tk.Frame):
|
|
5537
5522
|
readonly: bool = True,
|
5538
5523
|
redraw: bool = False,
|
5539
5524
|
) -> Sheet:
|
5540
|
-
if
|
5541
|
-
|
5542
|
-
|
5543
|
-
if (r, c) in self.MT.cell_options and "readonly" in self.MT.cell_options[(r, c)]:
|
5544
|
-
del self.MT.cell_options[(r, c)]["readonly"]
|
5545
|
-
else:
|
5546
|
-
if (
|
5547
|
-
row,
|
5548
|
-
column,
|
5549
|
-
) in self.MT.cell_options and "readonly" in self.MT.cell_options[(row, column)]:
|
5550
|
-
del self.MT.cell_options[(row, column)]["readonly"]
|
5525
|
+
if cells:
|
5526
|
+
for r, c in cells:
|
5527
|
+
set_readonly(self.MT.cell_options, (r, c), readonly=readonly)
|
5551
5528
|
else:
|
5552
|
-
|
5553
|
-
for r, c in cells:
|
5554
|
-
if (r, c) not in self.MT.cell_options:
|
5555
|
-
self.MT.cell_options[(r, c)] = {}
|
5556
|
-
self.MT.cell_options[(r, c)]["readonly"] = True
|
5557
|
-
else:
|
5558
|
-
if (row, column) not in self.MT.cell_options:
|
5559
|
-
self.MT.cell_options[(row, column)] = {}
|
5560
|
-
self.MT.cell_options[(row, column)]["readonly"] = True
|
5529
|
+
set_readonly(self.MT.cell_options, (row, column), readonly=readonly)
|
5561
5530
|
return self.set_refresh_timer(redraw)
|
5562
5531
|
|
5563
5532
|
def readonly_header(
|
5564
5533
|
self,
|
5565
|
-
columns: list[int],
|
5534
|
+
columns: list[int] | int,
|
5566
5535
|
readonly: bool = True,
|
5567
5536
|
redraw: bool = False,
|
5568
5537
|
) -> Sheet:
|
5569
|
-
|
5538
|
+
for c in (columns, int) if isinstance(columns, int) else columns:
|
5539
|
+
set_readonly(self.CH.cell_options, c, readonly)
|
5570
5540
|
return self.set_refresh_timer(redraw)
|
5571
5541
|
|
5572
5542
|
def readonly_index(
|
5573
5543
|
self,
|
5574
|
-
rows: list[int],
|
5544
|
+
rows: list[int] | int,
|
5575
5545
|
readonly: bool = True,
|
5576
5546
|
redraw: bool = False,
|
5577
5547
|
) -> Sheet:
|
5578
|
-
|
5548
|
+
for r in (rows,) if isinstance(rows, int) else rows:
|
5549
|
+
set_readonly(self.RI.cell_options, r, readonly)
|
5579
5550
|
return self.set_refresh_timer(redraw)
|
5580
5551
|
|
5581
5552
|
def dehighlight_rows(
|
@@ -6,7 +6,7 @@ from typing import Any, Literal
|
|
6
6
|
|
7
7
|
from .constants import align_helper, ctrl_key, rc_binding
|
8
8
|
from .functions import convert_align
|
9
|
-
from .other_classes import DotDict
|
9
|
+
from .other_classes import DotDict, FontTuple
|
10
10
|
|
11
11
|
|
12
12
|
class TextEditorTkText(tk.Text):
|
@@ -231,6 +231,7 @@ class TextEditor(tk.Frame):
|
|
231
231
|
show_border: bool,
|
232
232
|
menu_kwargs: DotDict,
|
233
233
|
sheet_ops: DotDict,
|
234
|
+
font: FontTuple,
|
234
235
|
bg: str,
|
235
236
|
fg: str,
|
236
237
|
select_bg: str,
|
@@ -247,7 +248,7 @@ class TextEditor(tk.Frame):
|
|
247
248
|
menu_kwargs=menu_kwargs,
|
248
249
|
sheet_ops=sheet_ops,
|
249
250
|
align=align,
|
250
|
-
font=
|
251
|
+
font=font,
|
251
252
|
bg=bg,
|
252
253
|
fg=fg,
|
253
254
|
select_bg=select_bg,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|