tksheet 7.1.1__py3-none-any.whl → 7.1.2__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/main_table.py +22 -47
- tksheet/row_index.py +2 -2
- tksheet/sheet.py +94 -33
- {tksheet-7.1.1.dist-info → tksheet-7.1.2.dist-info}/METADATA +1 -1
- {tksheet-7.1.1.dist-info → tksheet-7.1.2.dist-info}/RECORD +9 -9
- {tksheet-7.1.1.dist-info → tksheet-7.1.2.dist-info}/LICENSE.txt +0 -0
- {tksheet-7.1.1.dist-info → tksheet-7.1.2.dist-info}/WHEEL +0 -0
- {tksheet-7.1.1.dist-info → tksheet-7.1.2.dist-info}/top_level.txt +0 -0
tksheet/__init__.py
CHANGED
tksheet/main_table.py
CHANGED
@@ -1099,29 +1099,16 @@ class MainTable(tk.Canvas):
|
|
1099
1099
|
def get_max_column_idx(self, maxidx: int | None = None) -> int:
|
1100
1100
|
if maxidx is None:
|
1101
1101
|
maxidx = len_to_idx(self.total_data_cols())
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
(d["from_c"] for d in self.named_spans.values() if isinstance(d["from_c"], int)),
|
1113
|
-
default=0,
|
1114
|
-
)
|
1115
|
-
):
|
1116
|
-
maxidx = maxk
|
1117
|
-
if maxidx < (
|
1118
|
-
maxk := max(
|
1119
|
-
(d["upto_c"] for d in self.named_spans.values() if isinstance(d["upto_c"], int)),
|
1120
|
-
default=0,
|
1121
|
-
)
|
1122
|
-
):
|
1123
|
-
maxidx = maxk
|
1124
|
-
return maxidx
|
1102
|
+
maxiget = partial(max, key=itemgetter(1))
|
1103
|
+
return max(
|
1104
|
+
max(self.cell_options, key=itemgetter(1), default=(0, maxidx))[1],
|
1105
|
+
max(self.col_options, default=maxidx),
|
1106
|
+
max(self.CH.cell_options, default=maxidx),
|
1107
|
+
maxiget(map(maxiget, self.tagged_cells.values()), default=(0, maxidx))[1],
|
1108
|
+
max(map(max, self.tagged_columns.values()), default=maxidx),
|
1109
|
+
max((d.from_c for d in self.named_spans.values() if isinstance(d.from_c, int)), default=maxidx),
|
1110
|
+
max((d.upto_c for d in self.named_spans.values() if isinstance(d.upto_c, int)), default=maxidx),
|
1111
|
+
)
|
1125
1112
|
|
1126
1113
|
def get_args_for_move_rows(
|
1127
1114
|
self,
|
@@ -1329,28 +1316,16 @@ class MainTable(tk.Canvas):
|
|
1329
1316
|
def get_max_row_idx(self, maxidx: int | None = None) -> int:
|
1330
1317
|
if maxidx is None:
|
1331
1318
|
maxidx = len_to_idx(self.total_data_rows())
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
default=0,
|
1343
|
-
)
|
1344
|
-
):
|
1345
|
-
maxidx = maxk
|
1346
|
-
if maxidx < (
|
1347
|
-
maxk := max(
|
1348
|
-
(d["upto_r"] for d in self.named_spans.values() if isinstance(d["upto_r"], int)),
|
1349
|
-
default=0,
|
1350
|
-
)
|
1351
|
-
):
|
1352
|
-
maxidx = maxk
|
1353
|
-
return maxidx
|
1319
|
+
maxiget = partial(max, key=itemgetter(0))
|
1320
|
+
return max(
|
1321
|
+
max(self.cell_options, key=itemgetter(0), default=(maxidx, 0))[0],
|
1322
|
+
max(self.row_options, default=maxidx),
|
1323
|
+
max(self.RI.cell_options, default=maxidx),
|
1324
|
+
maxiget(map(maxiget, self.tagged_cells.values()), default=(maxidx, 0))[0],
|
1325
|
+
max(map(max, self.tagged_rows.values()), default=maxidx),
|
1326
|
+
max((d.from_r for d in self.named_spans.values() if isinstance(d.from_r, int)), default=maxidx),
|
1327
|
+
max((d.upto_r for d in self.named_spans.values() if isinstance(d.upto_r, int)), default=maxidx),
|
1328
|
+
)
|
1354
1329
|
|
1355
1330
|
def get_full_new_idxs(
|
1356
1331
|
self,
|
@@ -3982,7 +3957,7 @@ class MainTable(tk.Canvas):
|
|
3982
3957
|
# if to_add then it's an undo/redo and don't
|
3983
3958
|
# need to create fresh options
|
3984
3959
|
if create_ops:
|
3985
|
-
# if
|
3960
|
+
# if cols are none it's a row options span
|
3986
3961
|
if span["from_c"] is None:
|
3987
3962
|
new_ops(
|
3988
3963
|
mod_span(
|
@@ -6293,7 +6268,7 @@ class MainTable(tk.Canvas):
|
|
6293
6268
|
box.coords.from_c <= c and box.coords.upto_c > c
|
6294
6269
|
for item, box in self.get_selection_items(
|
6295
6270
|
cells=False,
|
6296
|
-
|
6271
|
+
rows=False,
|
6297
6272
|
)
|
6298
6273
|
)
|
6299
6274
|
|
tksheet/row_index.py
CHANGED
@@ -129,7 +129,7 @@ class RowIndex(tk.Canvas):
|
|
129
129
|
self.align = kwargs["row_index_align"]
|
130
130
|
self.default_index = kwargs["default_row_index"].lower()
|
131
131
|
|
132
|
-
self.
|
132
|
+
self.tree_reset()
|
133
133
|
self.basic_bindings()
|
134
134
|
|
135
135
|
def basic_bindings(self, enable: bool = True) -> None:
|
@@ -148,7 +148,7 @@ class RowIndex(tk.Canvas):
|
|
148
148
|
self.unbind("<Double-Button-1>")
|
149
149
|
self.unbind(rc_binding)
|
150
150
|
|
151
|
-
def
|
151
|
+
def tree_reset(self) -> None:
|
152
152
|
# treeview mode
|
153
153
|
self.tree = {}
|
154
154
|
self.tree_open_ids = set()
|
tksheet/sheet.py
CHANGED
@@ -1476,7 +1476,7 @@ class Sheet(tk.Frame):
|
|
1476
1476
|
if sheet_options:
|
1477
1477
|
self.ops = new_sheet_options()
|
1478
1478
|
if tree:
|
1479
|
-
self.RI.
|
1479
|
+
self.RI.tree_reset()
|
1480
1480
|
self.set_refresh_timer(redraw)
|
1481
1481
|
return self
|
1482
1482
|
|
@@ -2998,9 +2998,10 @@ class Sheet(tk.Frame):
|
|
2998
2998
|
|
2999
2999
|
def get_selected_min_max(
|
3000
3000
|
self,
|
3001
|
-
) ->
|
3002
|
-
|
3003
|
-
|
3001
|
+
) -> tuple[int, int, int, int] | tuple[None, None, None, None]:
|
3002
|
+
"""
|
3003
|
+
Returns (min_y, min_x, max_y, max_x) of all selection boxes
|
3004
|
+
"""
|
3004
3005
|
return self.MT.get_selected_min_max()
|
3005
3006
|
|
3006
3007
|
# Modifying Selected Cells
|
@@ -3286,12 +3287,12 @@ class Sheet(tk.Frame):
|
|
3286
3287
|
|
3287
3288
|
def get_column_widths(self, canvas_positions: bool = False) -> list[float]:
|
3288
3289
|
if canvas_positions:
|
3289
|
-
return
|
3290
|
+
return self.MT.col_positions
|
3290
3291
|
return self.MT.get_column_widths()
|
3291
3292
|
|
3292
3293
|
def get_row_heights(self, canvas_positions: bool = False) -> list[float]:
|
3293
3294
|
if canvas_positions:
|
3294
|
-
return
|
3295
|
+
return self.MT.row_positions
|
3295
3296
|
return self.MT.get_row_heights()
|
3296
3297
|
|
3297
3298
|
def set_column_widths(
|
@@ -4391,6 +4392,61 @@ class Sheet(tk.Frame):
|
|
4391
4392
|
)
|
4392
4393
|
return self
|
4393
4394
|
|
4395
|
+
def tree_reset(self) -> Sheet:
|
4396
|
+
self.deselect()
|
4397
|
+
self.RI.tree_reset()
|
4398
|
+
return self
|
4399
|
+
|
4400
|
+
def tree_get_open(self) -> set[str]:
|
4401
|
+
"""
|
4402
|
+
Returns the set[str] of iids that are open in the treeview
|
4403
|
+
"""
|
4404
|
+
return self.RI.tree_open_ids
|
4405
|
+
|
4406
|
+
def tree_set_open(self, open_ids: set[str]) -> Sheet:
|
4407
|
+
"""
|
4408
|
+
Accepts set[str] of iids that are open in the treeview
|
4409
|
+
Closes everything else
|
4410
|
+
"""
|
4411
|
+
self.RI.tree_open_ids = open_ids
|
4412
|
+
self.hide_rows(
|
4413
|
+
set(self.MT.displayed_rows),
|
4414
|
+
redraw=False,
|
4415
|
+
deselect_all=False,
|
4416
|
+
data_indexes=True,
|
4417
|
+
)
|
4418
|
+
self.show_rows(
|
4419
|
+
(self.RI.tree_rns[iid] for iid in self.get_children("")),
|
4420
|
+
redraw=False,
|
4421
|
+
deselect_all=True,
|
4422
|
+
)
|
4423
|
+
self.tree_open(*open_ids)
|
4424
|
+
return self
|
4425
|
+
|
4426
|
+
def tree_open(self, *items) -> Sheet:
|
4427
|
+
"""
|
4428
|
+
If used without args all items are opened
|
4429
|
+
"""
|
4430
|
+
if items:
|
4431
|
+
for item in items:
|
4432
|
+
self.item(item, open_=True)
|
4433
|
+
else:
|
4434
|
+
for item in self.get_children():
|
4435
|
+
self.item(item, open_=True)
|
4436
|
+
return self
|
4437
|
+
|
4438
|
+
def tree_close(self, *items) -> Sheet:
|
4439
|
+
"""
|
4440
|
+
If used without args all items are closed
|
4441
|
+
"""
|
4442
|
+
if items:
|
4443
|
+
for item in items:
|
4444
|
+
self.item(item, open_=False)
|
4445
|
+
else:
|
4446
|
+
for item in self.get_children():
|
4447
|
+
self.item(item, open_=False)
|
4448
|
+
return self
|
4449
|
+
|
4394
4450
|
def insert(
|
4395
4451
|
self,
|
4396
4452
|
parent: str = "",
|
@@ -4460,7 +4516,12 @@ class Sheet(tk.Frame):
|
|
4460
4516
|
text: str | None = None,
|
4461
4517
|
values: list | None = None,
|
4462
4518
|
open_: bool | None = None,
|
4463
|
-
) -> DotDict:
|
4519
|
+
) -> DotDict | Sheet:
|
4520
|
+
"""
|
4521
|
+
Modify options for item
|
4522
|
+
If no options are set then returns DotDict of options for item
|
4523
|
+
Else returns Sheet
|
4524
|
+
"""
|
4464
4525
|
if not (item := item.lower()) or item not in self.RI.tree:
|
4465
4526
|
raise ValueError(f"Item '{item}' does not exist.")
|
4466
4527
|
if isinstance(iid, str):
|
@@ -4479,28 +4540,33 @@ class Sheet(tk.Frame):
|
|
4479
4540
|
if isinstance(values, list):
|
4480
4541
|
self.set_data(self.RI.tree_rns[item], values)
|
4481
4542
|
if isinstance(open_, bool):
|
4482
|
-
if
|
4543
|
+
if self.RI.tree[item].children:
|
4544
|
+
if open_:
|
4545
|
+
self.RI.tree_open_ids.add(item)
|
4546
|
+
self.show_rows(
|
4547
|
+
(self.RI.tree_rns[did] for did in self.RI.get_iid_descendants(item, check_open=True)),
|
4548
|
+
redraw=False,
|
4549
|
+
deselect_all=False,
|
4550
|
+
)
|
4551
|
+
else:
|
4552
|
+
self.RI.tree_open_ids.discard(item)
|
4553
|
+
self.hide_rows(
|
4554
|
+
(self.RI.tree_rns[did] for did in self.RI.get_iid_descendants(item)),
|
4555
|
+
redraw=False,
|
4556
|
+
deselect_all=False,
|
4557
|
+
data_indexes=True,
|
4558
|
+
)
|
4559
|
+
else:
|
4483
4560
|
self.RI.tree_open_ids.discard(item)
|
4484
|
-
|
4485
|
-
|
4486
|
-
|
4487
|
-
|
4488
|
-
|
4489
|
-
|
4490
|
-
|
4491
|
-
|
4492
|
-
|
4493
|
-
(self.RI.tree_rns[did] for did in self.RI.get_iid_descendants(item)),
|
4494
|
-
redraw=False,
|
4495
|
-
deselect_all=False,
|
4496
|
-
data_indexes=True,
|
4497
|
-
)
|
4498
|
-
self.set_refresh_timer(isinstance(text, str) or isinstance(values, list) or isinstance(open_, bool))
|
4499
|
-
return DotDict(
|
4500
|
-
text=self.RI.tree[item].text,
|
4501
|
-
values=self[self.RI.tree_rns[item]].options(ndim=1).data,
|
4502
|
-
open_=item in self.RI.tree_open_ids,
|
4503
|
-
)
|
4561
|
+
get = not (isinstance(iid, str) or isinstance(text, str) or isinstance(values, list) or isinstance(open_, bool))
|
4562
|
+
self.set_refresh_timer(redraw=not get)
|
4563
|
+
if get:
|
4564
|
+
return DotDict(
|
4565
|
+
text=self.RI.tree[item].text,
|
4566
|
+
values=self[self.RI.tree_rns[item]].options(ndim=1).data,
|
4567
|
+
open_=item in self.RI.tree_open_ids,
|
4568
|
+
)
|
4569
|
+
return self
|
4504
4570
|
|
4505
4571
|
def itemrow(self, item: str) -> int:
|
4506
4572
|
return self.RI.tree_rns[item.lower()]
|
@@ -4522,11 +4588,6 @@ class Sheet(tk.Frame):
|
|
4522
4588
|
else:
|
4523
4589
|
yield from (n.iid for n in self.RI.tree[item].children)
|
4524
4590
|
|
4525
|
-
def reset_tree(self) -> Sheet:
|
4526
|
-
self.deselect()
|
4527
|
-
self.RI.reset_tree()
|
4528
|
-
return self
|
4529
|
-
|
4530
4591
|
def del_items(self, *items) -> Sheet:
|
4531
4592
|
"""
|
4532
4593
|
Also deletes all descendants of items
|
@@ -1,20 +1,20 @@
|
|
1
|
-
tksheet/__init__.py,sha256
|
1
|
+
tksheet/__init__.py,sha256=XdNk6UqANLa3RfjSgcbjOXH8Rjtf-9LLCGU8EESkoMY,1874
|
2
2
|
tksheet/colors.py,sha256=1k06VorynLmnC4FdJg8H4reIA6rXaeXBpdMwXLhN8oc,51594
|
3
3
|
tksheet/column_headers.py,sha256=1I49CQS4unBcJ-y044R-DtYhJ4zUplrOfImOk8qHIj8,99396
|
4
4
|
tksheet/formatters.py,sha256=DXif00aq9DgFpXwkbiqD86KxtDg0Meop51hLY-KcGNQ,10037
|
5
5
|
tksheet/functions.py,sha256=NnBFBvTqT6VhCK8pFlXqTwKekKpcsCYeuxaALcJeVzw,38651
|
6
|
-
tksheet/main_table.py,sha256=
|
6
|
+
tksheet/main_table.py,sha256=Kh8ND0JnVHVeiwTt07FJkbP2GTlen3qCS5bt0xpbrdA,318848
|
7
7
|
tksheet/other_classes.py,sha256=s559IxoFEeAgxTKrrHZnAeXUXWIEmiP4tBncIdQIXSQ,13544
|
8
|
-
tksheet/row_index.py,sha256=
|
9
|
-
tksheet/sheet.py,sha256=
|
8
|
+
tksheet/row_index.py,sha256=GzK6Gfi4v6zwALn5IvBz22SdSFLUgxS1yLX4bm7z3sg,104428
|
9
|
+
tksheet/sheet.py,sha256=ZoxxO1VZZzgshmp_3eJkkzXjx6S3M5T95sw3CTfUqHo,255904
|
10
10
|
tksheet/sheet_options.py,sha256=Vcy4RxTKvf2HM-Yc53ex0lpBe6ATXc_pdx4oLhfjDgU,11906
|
11
11
|
tksheet/text_editor.py,sha256=7xsEbgIyAWHDBWroh2wk1VeoVftFALlPZC9OANgD6LA,6662
|
12
12
|
tksheet/themes.py,sha256=OwUe31NRbosjw3ZoZsMyB8lNVyYin9YcKLhCturi5q8,13398
|
13
13
|
tksheet/top_left_rectangle.py,sha256=-2u9GfOvcqhkKwHEtbqdFvXCY3RbvL5k2Sh9l3r_k04,8275
|
14
14
|
tksheet/types.py,sha256=IgoEHMbceKpakcZtanxKaKJ4RdCq7UW6EoEIIz5O59k,340
|
15
15
|
tksheet/vars.py,sha256=Iukk7-MMT9X7vv0m3nQPKzbp2Iw2Pg1wJEW7js919Mo,2092
|
16
|
-
tksheet-7.1.
|
17
|
-
tksheet-7.1.
|
18
|
-
tksheet-7.1.
|
19
|
-
tksheet-7.1.
|
20
|
-
tksheet-7.1.
|
16
|
+
tksheet-7.1.2.dist-info/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
|
17
|
+
tksheet-7.1.2.dist-info/METADATA,sha256=plUvLhmwtF-WEveHRmf99r4YViVdRJDZTCCJ6noYtZU,6013
|
18
|
+
tksheet-7.1.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
19
|
+
tksheet-7.1.2.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
|
20
|
+
tksheet-7.1.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|