tksheet 7.2.6__tar.gz → 7.2.8__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.2.6/tksheet.egg-info → tksheet-7.2.8}/PKG-INFO +1 -1
- {tksheet-7.2.6 → tksheet-7.2.8}/pyproject.toml +1 -1
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/__init__.py +1 -1
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/column_headers.py +24 -22
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/main_table.py +51 -55
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/row_index.py +45 -35
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/themes.py +8 -8
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/top_left_rectangle.py +1 -0
- {tksheet-7.2.6 → tksheet-7.2.8/tksheet.egg-info}/PKG-INFO +1 -1
- {tksheet-7.2.6 → tksheet-7.2.8}/LICENSE.txt +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/README.md +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/setup.cfg +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/colors.py +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/formatters.py +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/functions.py +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/other_classes.py +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/sheet.py +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/sheet_options.py +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/text_editor.py +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/types.py +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet/vars.py +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet.egg-info/SOURCES.txt +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/tksheet.egg-info/dependency_links.txt +0 -0
- {tksheet-7.2.6 → tksheet-7.2.8}/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 widget"
|
8
8
|
readme = "README.md"
|
9
|
-
version = "7.2.
|
9
|
+
version = "7.2.8"
|
10
10
|
authors = [{ name = "ragardner", email = "github@ragardner.simplelogin.com" }]
|
11
11
|
requires-python = ">=3.8"
|
12
12
|
license = {file = "LICENSE.txt"}
|
@@ -946,8 +946,10 @@ class ColumnHeaders(tk.Canvas):
|
|
946
946
|
run_binding_func: bool = True,
|
947
947
|
ext: bool = False,
|
948
948
|
) -> int:
|
949
|
-
self.MT.
|
949
|
+
boxes_to_hide = tuple(iid for iid in self.MT.selection_boxes)
|
950
950
|
fill_iid = self.MT.create_selection_box(0, c, len(self.MT.row_positions) - 1, c + 1, "columns", ext=ext)
|
951
|
+
for iid in boxes_to_hide:
|
952
|
+
self.MT.hide_selection_box(iid)
|
951
953
|
if redraw:
|
952
954
|
self.MT.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
|
953
955
|
if run_binding_func:
|
@@ -1301,35 +1303,35 @@ class ColumnHeaders(tk.Canvas):
|
|
1301
1303
|
tag: str | tuple[str],
|
1302
1304
|
draw_outline: bool = True,
|
1303
1305
|
draw_arrow: bool = True,
|
1304
|
-
|
1306
|
+
open_: bool = False,
|
1305
1307
|
) -> None:
|
1306
1308
|
if draw_outline and self.PAR.ops.show_dropdown_borders:
|
1307
1309
|
self.redraw_highlight(x1 + 1, y1 + 1, x2, y2, fill="", outline=self.PAR.ops.header_fg, tag=tag)
|
1308
1310
|
if draw_arrow:
|
1309
1311
|
mod = (self.MT.header_txt_height - 1) if self.MT.header_txt_height % 2 else self.MT.header_txt_height
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1314
|
-
)
|
1315
|
-
if dd_is_open:
|
1312
|
+
small_mod = int(mod / 5)
|
1313
|
+
mid_y = floor(self.MT.min_header_height / 2)
|
1314
|
+
if open_:
|
1315
|
+
# up arrow
|
1316
1316
|
points = (
|
1317
|
-
x2 - 3 -
|
1318
|
-
y1 + mid_y +
|
1319
|
-
x2 - 3 -
|
1320
|
-
y1 + mid_y -
|
1317
|
+
x2 - 3 - small_mod - small_mod - small_mod - small_mod,
|
1318
|
+
y1 + mid_y + small_mod,
|
1319
|
+
x2 - 3 - small_mod - small_mod,
|
1320
|
+
y1 + mid_y - small_mod,
|
1321
1321
|
x2 - 3,
|
1322
|
-
y1 + mid_y +
|
1322
|
+
y1 + mid_y + small_mod,
|
1323
1323
|
)
|
1324
1324
|
else:
|
1325
|
+
# down arrow
|
1325
1326
|
points = (
|
1326
|
-
x2 - 3 -
|
1327
|
-
y1 + mid_y -
|
1328
|
-
x2 - 3 -
|
1329
|
-
y1 + mid_y +
|
1327
|
+
x2 - 3 - small_mod - small_mod - small_mod - small_mod,
|
1328
|
+
y1 + mid_y - small_mod,
|
1329
|
+
x2 - 3 - small_mod - small_mod,
|
1330
|
+
y1 + mid_y + small_mod,
|
1330
1331
|
x2 - 3,
|
1331
|
-
y1 + mid_y -
|
1332
|
+
y1 + mid_y - small_mod,
|
1332
1333
|
)
|
1334
|
+
|
1333
1335
|
if self.hidd_dropdown:
|
1334
1336
|
t, sh = self.hidd_dropdown.popitem()
|
1335
1337
|
self.coords(t, points)
|
@@ -1502,7 +1504,7 @@ class ColumnHeaders(tk.Canvas):
|
|
1502
1504
|
tag="dd",
|
1503
1505
|
draw_outline=not dd_drawn,
|
1504
1506
|
draw_arrow=mw >= 5,
|
1505
|
-
|
1507
|
+
open_=dd_coords == c,
|
1506
1508
|
)
|
1507
1509
|
else:
|
1508
1510
|
mw = crightgridln - cleftgridln - 1
|
@@ -1521,7 +1523,7 @@ class ColumnHeaders(tk.Canvas):
|
|
1521
1523
|
tag="dd",
|
1522
1524
|
draw_outline=not dd_drawn,
|
1523
1525
|
draw_arrow=mw >= 5,
|
1524
|
-
|
1526
|
+
open_=dd_coords == c,
|
1525
1527
|
)
|
1526
1528
|
else:
|
1527
1529
|
mw = crightgridln - cleftgridln - 1
|
@@ -1541,7 +1543,7 @@ class ColumnHeaders(tk.Canvas):
|
|
1541
1543
|
tag="dd",
|
1542
1544
|
draw_outline=not dd_drawn,
|
1543
1545
|
draw_arrow=mw >= 5,
|
1544
|
-
|
1546
|
+
open_=dd_coords == c,
|
1545
1547
|
)
|
1546
1548
|
else:
|
1547
1549
|
mw = crightgridln - cleftgridln - 1
|
@@ -2022,7 +2024,7 @@ class ColumnHeaders(tk.Canvas):
|
|
2022
2024
|
"height": win_h,
|
2023
2025
|
"font": self.PAR.ops.header_font,
|
2024
2026
|
"ops": self.PAR.ops,
|
2025
|
-
"outline_color": self.PAR.ops.
|
2027
|
+
"outline_color": self.PAR.ops.header_selected_columns_bg,
|
2026
2028
|
"align": self.get_cell_align(c),
|
2027
2029
|
"values": kwargs["values"],
|
2028
2030
|
}
|
@@ -1000,25 +1000,21 @@ class MainTable(tk.Canvas):
|
|
1000
1000
|
else:
|
1001
1001
|
disp_new_idxs = {}
|
1002
1002
|
# at_least_cols should not be len in this case as move_to can be len
|
1003
|
+
fix_len = (move_to - 1) if move_to else move_to
|
1003
1004
|
if not self.all_columns_displayed and not data_indexes:
|
1004
|
-
|
1005
|
-
|
1006
|
-
totalcols = self.equalize_data_row_lengths(at_least_cols=move_to)
|
1005
|
+
fix_len = self.datacn(fix_len)
|
1006
|
+
totalcols = self.equalize_data_row_lengths(at_least_cols=fix_len)
|
1007
1007
|
data_new_idxs = get_new_indexes(move_to=move_to, to_move=to_move)
|
1008
1008
|
if not self.all_columns_displayed and not data_indexes:
|
1009
|
-
moved = {self.displayed_columns[i] for i in to_move}
|
1010
1009
|
data_new_idxs = dict(
|
1011
|
-
|
1012
|
-
|
1013
|
-
zip(
|
1014
|
-
move_elements_by_mapping(
|
1015
|
-
self.displayed_columns,
|
1016
|
-
data_new_idxs,
|
1017
|
-
dict(zip(data_new_idxs.values(), data_new_idxs)),
|
1018
|
-
),
|
1010
|
+
zip(
|
1011
|
+
move_elements_by_mapping(
|
1019
1012
|
self.displayed_columns,
|
1013
|
+
data_new_idxs,
|
1014
|
+
dict(zip(data_new_idxs.values(), data_new_idxs)),
|
1020
1015
|
),
|
1021
|
-
|
1016
|
+
self.displayed_columns,
|
1017
|
+
),
|
1022
1018
|
)
|
1023
1019
|
return data_new_idxs, dict(zip(data_new_idxs.values(), data_new_idxs)), totalcols, disp_new_idxs
|
1024
1020
|
|
@@ -1108,6 +1104,7 @@ class MainTable(tk.Canvas):
|
|
1108
1104
|
tags: {full_new_idxs[k] for k in tagged} for tags, tagged in self.tagged_columns.items()
|
1109
1105
|
}
|
1110
1106
|
self.CH.cell_options = {full_new_idxs[k]: v for k, v in self.CH.cell_options.items()}
|
1107
|
+
self.displayed_columns = sorted(full_new_idxs[k] for k in self.displayed_columns)
|
1111
1108
|
if self.named_spans:
|
1112
1109
|
totalrows = self.total_data_rows()
|
1113
1110
|
new_ops = self.PAR.create_options_from_span
|
@@ -1206,8 +1203,6 @@ class MainTable(tk.Canvas):
|
|
1206
1203
|
del self.cell_options[(r, full_new_idxs[k])][span["type_"]]
|
1207
1204
|
# finally, change the span coords
|
1208
1205
|
span["from_c"], span["upto_c"] = newfrom, newupto
|
1209
|
-
if data_indexes:
|
1210
|
-
self.displayed_columns = sorted(full_new_idxs[k] for k in self.displayed_columns)
|
1211
1206
|
return data_new_idxs, disp_new_idxs, event_data
|
1212
1207
|
|
1213
1208
|
def get_max_column_idx(self, maxidx: int | None = None) -> int:
|
@@ -1222,6 +1217,7 @@ class MainTable(tk.Canvas):
|
|
1222
1217
|
max(map(max, self.tagged_columns.values()), default=maxidx),
|
1223
1218
|
max((d.from_c for d in self.named_spans.values() if isinstance(d.from_c, int)), default=maxidx),
|
1224
1219
|
max((d.upto_c for d in self.named_spans.values() if isinstance(d.upto_c, int)), default=maxidx),
|
1220
|
+
self.displayed_columns[-1] if self.displayed_columns else maxidx,
|
1225
1221
|
)
|
1226
1222
|
|
1227
1223
|
def get_args_for_move_rows(
|
@@ -1235,27 +1231,22 @@ class MainTable(tk.Canvas):
|
|
1235
1231
|
else:
|
1236
1232
|
disp_new_idxs = {}
|
1237
1233
|
# move_to can be len and fix_data_len() takes index so - 1
|
1234
|
+
fix_len = (move_to - 1) if move_to else move_to
|
1238
1235
|
if not self.all_rows_displayed and not data_indexes:
|
1239
|
-
fix_len = self.datarn(
|
1240
|
-
else:
|
1241
|
-
fix_len = move_to - 1
|
1236
|
+
fix_len = self.datarn(fix_len)
|
1242
1237
|
self.fix_data_len(fix_len)
|
1243
1238
|
totalrows = max(self.total_data_rows(), len(self.row_positions) - 1)
|
1244
1239
|
data_new_idxs = get_new_indexes(move_to=move_to, to_move=to_move)
|
1245
1240
|
if not self.all_rows_displayed and not data_indexes:
|
1246
|
-
moved = {self.displayed_rows[i] for i in to_move}
|
1247
1241
|
data_new_idxs = dict(
|
1248
|
-
|
1249
|
-
|
1250
|
-
zip(
|
1251
|
-
move_elements_by_mapping(
|
1252
|
-
self.displayed_rows,
|
1253
|
-
data_new_idxs,
|
1254
|
-
dict(zip(data_new_idxs.values(), data_new_idxs)),
|
1255
|
-
),
|
1242
|
+
zip(
|
1243
|
+
move_elements_by_mapping(
|
1256
1244
|
self.displayed_rows,
|
1245
|
+
data_new_idxs,
|
1246
|
+
dict(zip(data_new_idxs.values(), data_new_idxs)),
|
1257
1247
|
),
|
1258
|
-
|
1248
|
+
self.displayed_rows,
|
1249
|
+
),
|
1259
1250
|
)
|
1260
1251
|
return data_new_idxs, dict(zip(data_new_idxs.values(), data_new_idxs)), totalrows, disp_new_idxs
|
1261
1252
|
|
@@ -1343,6 +1334,7 @@ class MainTable(tk.Canvas):
|
|
1343
1334
|
self.row_options = {full_new_idxs[k]: v for k, v in self.row_options.items()}
|
1344
1335
|
self.RI.cell_options = {full_new_idxs[k]: v for k, v in self.RI.cell_options.items()}
|
1345
1336
|
self.RI.tree_rns = {v: full_new_idxs[k] for v, k in self.RI.tree_rns.items()}
|
1337
|
+
self.displayed_rows = sorted(full_new_idxs[k] for k in self.displayed_rows)
|
1346
1338
|
if self.named_spans:
|
1347
1339
|
totalcols = self.total_data_cols()
|
1348
1340
|
new_ops = self.PAR.create_options_from_span
|
@@ -1441,8 +1433,6 @@ class MainTable(tk.Canvas):
|
|
1441
1433
|
del self.cell_options[(full_new_idxs[k], c)][span["type_"]]
|
1442
1434
|
# finally, change the span coords
|
1443
1435
|
span["from_r"], span["upto_r"] = newfrom, newupto
|
1444
|
-
if data_indexes:
|
1445
|
-
self.displayed_rows = sorted(full_new_idxs[k] for k in self.displayed_rows)
|
1446
1436
|
return data_new_idxs, disp_new_idxs, event_data
|
1447
1437
|
|
1448
1438
|
def get_max_row_idx(self, maxidx: int | None = None) -> int:
|
@@ -1457,6 +1447,7 @@ class MainTable(tk.Canvas):
|
|
1457
1447
|
max(map(max, self.tagged_rows.values()), default=maxidx),
|
1458
1448
|
max((d.from_r for d in self.named_spans.values() if isinstance(d.from_r, int)), default=maxidx),
|
1459
1449
|
max((d.upto_r for d in self.named_spans.values() if isinstance(d.upto_r, int)), default=maxidx),
|
1450
|
+
self.displayed_rows[-1] if self.displayed_rows else maxidx,
|
1460
1451
|
)
|
1461
1452
|
|
1462
1453
|
def get_full_new_idxs(
|
@@ -3319,7 +3310,7 @@ class MainTable(tk.Canvas):
|
|
3319
3310
|
self.yview_scroll(-1, "units")
|
3320
3311
|
self.RI.yview_scroll(-1, "units")
|
3321
3312
|
self.y_move_synced_scrolls("moveto", self.yview()[0])
|
3322
|
-
self.main_table_redraw_grid_and_text(redraw_row_index=True)
|
3313
|
+
self.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
|
3323
3314
|
|
3324
3315
|
def shift_mousewheel(self, event: object) -> None:
|
3325
3316
|
if event.delta < 0 or event.num == 5:
|
@@ -3332,7 +3323,7 @@ class MainTable(tk.Canvas):
|
|
3332
3323
|
self.xview_scroll(-1, "units")
|
3333
3324
|
self.CH.xview_scroll(-1, "units")
|
3334
3325
|
self.x_move_synced_scrolls("moveto", self.xview()[0])
|
3335
|
-
self.main_table_redraw_grid_and_text(redraw_header=True)
|
3326
|
+
self.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
|
3336
3327
|
|
3337
3328
|
def ctrl_mousewheel(self, event):
|
3338
3329
|
if event.delta < 0 or event.num == 5:
|
@@ -3697,7 +3688,11 @@ class MainTable(tk.Canvas):
|
|
3697
3688
|
else:
|
3698
3689
|
return False
|
3699
3690
|
|
3700
|
-
def set_all_cell_sizes_to_text(
|
3691
|
+
def set_all_cell_sizes_to_text(
|
3692
|
+
self,
|
3693
|
+
width: int | None = None,
|
3694
|
+
slim: bool = False,
|
3695
|
+
) -> tuple[list[float], list[float]]:
|
3701
3696
|
min_column_width = int(self.min_column_width)
|
3702
3697
|
min_rh = int(self.min_row_height)
|
3703
3698
|
h = min_rh
|
@@ -5239,32 +5234,33 @@ class MainTable(tk.Canvas):
|
|
5239
5234
|
tag,
|
5240
5235
|
draw_outline=True,
|
5241
5236
|
draw_arrow=True,
|
5242
|
-
|
5237
|
+
open_=False,
|
5243
5238
|
):
|
5244
5239
|
if draw_outline and self.PAR.ops.show_dropdown_borders:
|
5245
5240
|
self.redraw_highlight(x1 + 1, y1 + 1, x2, y2, fill="", outline=self.PAR.ops.table_fg, tag=tag)
|
5246
5241
|
if draw_arrow:
|
5247
5242
|
mod = (self.table_txt_height - 1) if self.table_txt_height % 2 else self.table_txt_height
|
5248
|
-
|
5249
|
-
|
5250
|
-
|
5251
|
-
|
5243
|
+
small_mod = int(mod / 5)
|
5244
|
+
mid_y = floor(self.min_row_height / 2)
|
5245
|
+
if open_:
|
5246
|
+
# up arrow
|
5252
5247
|
points = (
|
5253
|
-
x2 - 3 -
|
5254
|
-
y1 + mid_y +
|
5255
|
-
x2 - 3 -
|
5256
|
-
y1 + mid_y -
|
5248
|
+
x2 - 3 - small_mod - small_mod - small_mod - small_mod,
|
5249
|
+
y1 + mid_y + small_mod,
|
5250
|
+
x2 - 3 - small_mod - small_mod,
|
5251
|
+
y1 + mid_y - small_mod,
|
5257
5252
|
x2 - 3,
|
5258
|
-
y1 + mid_y +
|
5253
|
+
y1 + mid_y + small_mod,
|
5259
5254
|
)
|
5260
5255
|
else:
|
5256
|
+
# down arrow
|
5261
5257
|
points = (
|
5262
|
-
x2 - 3 -
|
5263
|
-
y1 + mid_y -
|
5264
|
-
x2 - 3 -
|
5265
|
-
y1 + mid_y +
|
5258
|
+
x2 - 3 - small_mod - small_mod - small_mod - small_mod,
|
5259
|
+
y1 + mid_y - small_mod,
|
5260
|
+
x2 - 3 - small_mod - small_mod,
|
5261
|
+
y1 + mid_y + small_mod,
|
5266
5262
|
x2 - 3,
|
5267
|
-
y1 + mid_y -
|
5263
|
+
y1 + mid_y - small_mod,
|
5268
5264
|
)
|
5269
5265
|
if self.hidd_dropdown:
|
5270
5266
|
t, sh = self.hidd_dropdown.popitem()
|
@@ -5609,7 +5605,7 @@ class MainTable(tk.Canvas):
|
|
5609
5605
|
tag=f"dd_{r}_{c}",
|
5610
5606
|
draw_outline=not dd_drawn,
|
5611
5607
|
draw_arrow=mw >= 5,
|
5612
|
-
|
5608
|
+
open_=dd_coords == (r, c),
|
5613
5609
|
)
|
5614
5610
|
else:
|
5615
5611
|
mw = crightgridln - cleftgridln - 1
|
@@ -5627,7 +5623,7 @@ class MainTable(tk.Canvas):
|
|
5627
5623
|
tag=f"dd_{r}_{c}",
|
5628
5624
|
draw_outline=not dd_drawn,
|
5629
5625
|
draw_arrow=mw >= 5,
|
5630
|
-
|
5626
|
+
open_=dd_coords == (r, c),
|
5631
5627
|
)
|
5632
5628
|
else:
|
5633
5629
|
mw = crightgridln - cleftgridln - 1
|
@@ -5646,7 +5642,7 @@ class MainTable(tk.Canvas):
|
|
5646
5642
|
tag=f"dd_{r}_{c}",
|
5647
5643
|
draw_outline=not dd_drawn,
|
5648
5644
|
draw_arrow=mw >= 5,
|
5649
|
-
|
5645
|
+
open_=dd_coords == (r, c),
|
5650
5646
|
)
|
5651
5647
|
else:
|
5652
5648
|
mw = crightgridln - cleftgridln - 1
|
@@ -6049,7 +6045,7 @@ class MainTable(tk.Canvas):
|
|
6049
6045
|
mt_border_col = self.PAR.ops.table_selected_columns_border_fg
|
6050
6046
|
if self.selection_boxes:
|
6051
6047
|
self.itemconfig(next(reversed(self.selection_boxes)), state="normal")
|
6052
|
-
x1, y1, x2, y2 = self.
|
6048
|
+
x1, y1, x2, y2 = self.box_coords_x_canvas_coords(r1, c1, r2, c2, type_)
|
6053
6049
|
fill_iid = self.display_box(
|
6054
6050
|
x1,
|
6055
6051
|
y1,
|
@@ -6062,7 +6058,7 @@ class MainTable(tk.Canvas):
|
|
6062
6058
|
width=1,
|
6063
6059
|
)
|
6064
6060
|
index_iid = self.RI.display_box(
|
6065
|
-
|
6061
|
+
0,
|
6066
6062
|
y1,
|
6067
6063
|
self.RI.current_width - 1,
|
6068
6064
|
y2,
|
@@ -6136,7 +6132,7 @@ class MainTable(tk.Canvas):
|
|
6136
6132
|
if self.PAR.ops.show_selected_cells_border:
|
6137
6133
|
self.tag_raise(self.selected.iid)
|
6138
6134
|
|
6139
|
-
def
|
6135
|
+
def box_coords_x_canvas_coords(
|
6140
6136
|
self,
|
6141
6137
|
r1: int,
|
6142
6138
|
c1: int,
|
@@ -6183,7 +6179,7 @@ class MainTable(tk.Canvas):
|
|
6183
6179
|
state = "normal"
|
6184
6180
|
if self.selected.fill_iid == fill_iid:
|
6185
6181
|
self.selected = self.selected._replace(box=Box_nt(r1, c1, r2, c2))
|
6186
|
-
x1, y1, x2, y2 = self.
|
6182
|
+
x1, y1, x2, y2 = self.box_coords_x_canvas_coords(r1, c1, r2, c2, type_)
|
6187
6183
|
self.display_box(x1, y1, x2, y2, fill=mt_bg, outline="", state=state, tags=type_, width=1, iid=fill_iid)
|
6188
6184
|
self.RI.display_box(
|
6189
6185
|
1,
|
@@ -893,7 +893,7 @@ class RowIndex(tk.Canvas):
|
|
893
893
|
self.open_cell(event)
|
894
894
|
elif (iid := self.event_over_tree_arrow(r, canvasy, event.x)) is not None:
|
895
895
|
if self.MT.selection_boxes:
|
896
|
-
self.select_row(r, redraw=False)
|
896
|
+
self.select_row(r, ext=True, redraw=False)
|
897
897
|
self.PAR.item(iid, open_=iid not in self.tree_open_ids)
|
898
898
|
else:
|
899
899
|
self.mouseclick_outside_editor_or_dropdown_all_canvases(inside=True)
|
@@ -957,9 +957,10 @@ class RowIndex(tk.Canvas):
|
|
957
957
|
run_binding_func: bool = True,
|
958
958
|
ext: bool = False,
|
959
959
|
) -> int:
|
960
|
-
self.MT.
|
961
|
-
|
962
|
-
|
960
|
+
boxes_to_hide = tuple(iid for iid in self.MT.selection_boxes)
|
961
|
+
fill_iid = self.MT.create_selection_box(r, 0, r + 1, len(self.MT.col_positions) - 1, "rows", ext=ext)
|
962
|
+
for iid in boxes_to_hide:
|
963
|
+
self.MT.hide_selection_box(iid)
|
963
964
|
if redraw:
|
964
965
|
self.MT.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
|
965
966
|
if run_binding_func:
|
@@ -1344,29 +1345,37 @@ class RowIndex(tk.Canvas):
|
|
1344
1345
|
open_: bool = False,
|
1345
1346
|
) -> None:
|
1346
1347
|
mod = (self.MT.index_txt_height - 1) if self.MT.index_txt_height % 2 else self.MT.index_txt_height
|
1347
|
-
|
1348
|
-
|
1349
|
-
small_mod = int(half_mod / 4) - 1
|
1350
|
-
mid_y = int(self.MT.min_row_height / 2)
|
1348
|
+
small_mod = int(mod / 5)
|
1349
|
+
mid_y = floor(self.MT.min_row_height / 2)
|
1351
1350
|
# up arrow
|
1352
1351
|
if open_:
|
1353
1352
|
points = (
|
1354
|
-
|
1355
|
-
|
1356
|
-
|
1357
|
-
|
1358
|
-
|
1359
|
-
|
1353
|
+
# the left hand downward point
|
1354
|
+
x1 + 5 + indent,
|
1355
|
+
y1 + mid_y + small_mod,
|
1356
|
+
|
1357
|
+
# the middle upward point
|
1358
|
+
x1 + 5 + indent + small_mod + small_mod,
|
1359
|
+
y1 + mid_y - small_mod,
|
1360
|
+
|
1361
|
+
# the right hand downward point
|
1362
|
+
x1 + 5 + indent + small_mod + small_mod + small_mod + small_mod,
|
1363
|
+
y1 + mid_y + small_mod,
|
1360
1364
|
)
|
1361
1365
|
# right pointing arrow
|
1362
1366
|
else:
|
1363
1367
|
points = (
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1368
|
+
# the upper point
|
1369
|
+
x1 + 5 + indent + small_mod + small_mod,
|
1370
|
+
y1 + mid_y - small_mod - small_mod,
|
1371
|
+
|
1372
|
+
# the middle point
|
1373
|
+
x1 + 5 + indent + small_mod + small_mod + small_mod + small_mod,
|
1367
1374
|
y1 + mid_y,
|
1368
|
-
|
1369
|
-
|
1375
|
+
|
1376
|
+
# the bottom point
|
1377
|
+
x1 + 5 + indent + small_mod + small_mod,
|
1378
|
+
y1 + mid_y + small_mod + small_mod,
|
1370
1379
|
)
|
1371
1380
|
if self.hidd_tree_arrow:
|
1372
1381
|
t, sh = self.hidd_tree_arrow.popitem()
|
@@ -1404,26 +1413,27 @@ class RowIndex(tk.Canvas):
|
|
1404
1413
|
self.redraw_highlight(x1 + 1, y1 + 1, x2, y2, fill="", outline=self.PAR.ops.index_fg, tag=tag)
|
1405
1414
|
if draw_arrow:
|
1406
1415
|
mod = (self.MT.index_txt_height - 1) if self.MT.index_txt_height % 2 else self.MT.index_txt_height
|
1407
|
-
|
1408
|
-
|
1409
|
-
mid_y = (self.MT.index_first_ln_ins - 1) if self.MT.index_first_ln_ins % 2 else self.MT.index_first_ln_ins
|
1416
|
+
small_mod = int(mod / 5)
|
1417
|
+
mid_y = floor(self.MT.min_row_height / 2)
|
1410
1418
|
if open_:
|
1419
|
+
# up arrow
|
1411
1420
|
points = (
|
1412
|
-
x2 - 3 -
|
1413
|
-
y1 + mid_y +
|
1414
|
-
x2 - 3 -
|
1415
|
-
y1 + mid_y -
|
1421
|
+
x2 - 3 - small_mod - small_mod - small_mod - small_mod,
|
1422
|
+
y1 + mid_y + small_mod,
|
1423
|
+
x2 - 3 - small_mod - small_mod,
|
1424
|
+
y1 + mid_y - small_mod,
|
1416
1425
|
x2 - 3,
|
1417
|
-
y1 + mid_y +
|
1426
|
+
y1 + mid_y + small_mod,
|
1418
1427
|
)
|
1419
1428
|
else:
|
1429
|
+
# down arrow
|
1420
1430
|
points = (
|
1421
|
-
x2 - 3 -
|
1422
|
-
y1 + mid_y -
|
1423
|
-
x2 - 3 -
|
1424
|
-
y1 + mid_y +
|
1431
|
+
x2 - 3 - small_mod - small_mod - small_mod - small_mod,
|
1432
|
+
y1 + mid_y - small_mod,
|
1433
|
+
x2 - 3 - small_mod - small_mod,
|
1434
|
+
y1 + mid_y + small_mod,
|
1425
1435
|
x2 - 3,
|
1426
|
-
y1 + mid_y -
|
1436
|
+
y1 + mid_y - small_mod,
|
1427
1437
|
)
|
1428
1438
|
if self.hidd_dropdown:
|
1429
1439
|
t, sh = self.hidd_dropdown.popitem()
|
@@ -1683,12 +1693,12 @@ class RowIndex(tk.Canvas):
|
|
1683
1693
|
iid = self.MT._row_index[datarn].iid
|
1684
1694
|
mw -= self.MT.index_txt_height
|
1685
1695
|
if align == "w":
|
1686
|
-
draw_x += self.MT.index_txt_height +
|
1696
|
+
draw_x += self.MT.index_txt_height + 3
|
1687
1697
|
indent = self.get_treeview_indent(iid)
|
1688
1698
|
draw_x += indent + 5
|
1689
1699
|
if self.tree[iid].children:
|
1690
1700
|
self.redraw_tree_arrow(
|
1691
|
-
|
1701
|
+
2,
|
1692
1702
|
rtopgridln,
|
1693
1703
|
r=r,
|
1694
1704
|
fill=tree_arrow_fg,
|
@@ -2145,7 +2155,7 @@ class RowIndex(tk.Canvas):
|
|
2145
2155
|
"height": win_h,
|
2146
2156
|
"font": self.PAR.ops.index_font,
|
2147
2157
|
"ops": self.PAR.ops,
|
2148
|
-
"outline_color": self.PAR.ops.
|
2158
|
+
"outline_color": self.PAR.ops.index_selected_rows_bg,
|
2149
2159
|
"align": self.get_cell_align(r),
|
2150
2160
|
"values": kwargs["values"],
|
2151
2161
|
}
|
@@ -21,7 +21,7 @@ theme_light_blue: dict[str, str] = DotDict({
|
|
21
21
|
"index_fg": "black",
|
22
22
|
"index_selected_cells_bg": "#D3E3FD",
|
23
23
|
"index_selected_cells_fg": "black",
|
24
|
-
"top_left_bg": "#
|
24
|
+
"top_left_bg": "#F9FBFD",
|
25
25
|
"top_left_fg": "#C7C7C7",
|
26
26
|
"top_left_fg_highlight": "#747775",
|
27
27
|
"table_bg": "#FFFFFF",
|
@@ -84,19 +84,19 @@ theme_light_green: dict[str, str] = DotDict({
|
|
84
84
|
"popup_menu_highlight_fg": "#000000",
|
85
85
|
"index_hidden_rows_expander_bg": "gray30",
|
86
86
|
"header_hidden_columns_expander_bg": "gray30",
|
87
|
-
"header_bg": "#
|
87
|
+
"header_bg": "#F5F5F5",
|
88
88
|
"header_border_fg": "#ababab",
|
89
89
|
"header_grid_fg": "#ababab",
|
90
90
|
"header_fg": "black",
|
91
|
-
"header_selected_cells_bg": "#
|
91
|
+
"header_selected_cells_bg": "#CAEAD8",
|
92
92
|
"header_selected_cells_fg": "#217346",
|
93
|
-
"index_bg": "#
|
93
|
+
"index_bg": "#F5F5F5",
|
94
94
|
"index_border_fg": "#ababab",
|
95
95
|
"index_grid_fg": "#ababab",
|
96
96
|
"index_fg": "black",
|
97
|
-
"index_selected_cells_bg": "#
|
97
|
+
"index_selected_cells_bg": "#CAEAD8",
|
98
98
|
"index_selected_cells_fg": "#107C41",
|
99
|
-
"top_left_bg": "#
|
99
|
+
"top_left_bg": "#F5F5F5",
|
100
100
|
"top_left_fg": "#b7b7b7",
|
101
101
|
"top_left_fg_highlight": "#5f6368",
|
102
102
|
"table_bg": "#FFFFFF",
|
@@ -171,7 +171,7 @@ theme_dark: dict[str, str] = DotDict({
|
|
171
171
|
"index_fg": "gray70",
|
172
172
|
"index_selected_cells_bg": "#545454",
|
173
173
|
"index_selected_cells_fg": "#6aa2fc",
|
174
|
-
"top_left_bg": "#
|
174
|
+
"top_left_bg": "#28282a",
|
175
175
|
"top_left_fg": "#505054",
|
176
176
|
"top_left_fg_highlight": "white",
|
177
177
|
"table_bg": "#000000",
|
@@ -246,7 +246,7 @@ theme_black: dict[str, str] = DotDict({
|
|
246
246
|
"index_fg": "#FBB86C",
|
247
247
|
"index_selected_cells_bg": "#545454",
|
248
248
|
"index_selected_cells_fg": "#FBB86C",
|
249
|
-
"top_left_bg": "#
|
249
|
+
"top_left_bg": "#141416",
|
250
250
|
"top_left_fg": "#505054",
|
251
251
|
"top_left_fg_highlight": "#FBB86C",
|
252
252
|
"table_bg": "#000000",
|
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
|