tksheet 7.4.7__py3-none-any.whl → 7.4.9__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 +10 -8
- tksheet/constants.py +195 -0
- tksheet/find_window.py +324 -30
- tksheet/functions.py +89 -39
- tksheet/main_table.py +468 -308
- tksheet/row_index.py +15 -15
- tksheet/sheet.py +197 -546
- tksheet/sheet_options.py +4 -0
- tksheet/tksheet_types.py +3 -0
- {tksheet-7.4.7.dist-info → tksheet-7.4.9.dist-info}/METADATA +1 -1
- tksheet-7.4.9.dist-info/RECORD +22 -0
- tksheet-7.4.7.dist-info/RECORD +0 -22
- {tksheet-7.4.7.dist-info → tksheet-7.4.9.dist-info}/LICENSE.txt +0 -0
- {tksheet-7.4.7.dist-info → tksheet-7.4.9.dist-info}/WHEEL +0 -0
- {tksheet-7.4.7.dist-info → tksheet-7.4.9.dist-info}/top_level.txt +0 -0
tksheet/__init__.py
CHANGED
tksheet/column_headers.py
CHANGED
@@ -899,6 +899,7 @@ class ColumnHeaders(tk.Canvas):
|
|
899
899
|
value=val,
|
900
900
|
event_data=event_data,
|
901
901
|
)
|
902
|
+
event_data = self.MT.bulk_edit_validation(event_data)
|
902
903
|
if event_data["cells"]["table"]:
|
903
904
|
if undo and self.MT.undo_enabled:
|
904
905
|
self.MT.undo_stack.append(stored_event_dict(event_data))
|
@@ -959,6 +960,7 @@ class ColumnHeaders(tk.Canvas):
|
|
959
960
|
move_data=True,
|
960
961
|
create_selections=False,
|
961
962
|
event_data=event_data,
|
963
|
+
manage_tree=False,
|
962
964
|
)
|
963
965
|
else:
|
964
966
|
data_new_idxs, disp_new_idxs, _ = self.PAR.mapping_move_rows(
|
@@ -1092,7 +1094,7 @@ class ColumnHeaders(tk.Canvas):
|
|
1092
1094
|
self.itemconfig(item, state="hidden")
|
1093
1095
|
|
1094
1096
|
def get_cell_dimensions(self, datacn: int) -> tuple[int, int]:
|
1095
|
-
txt = self.
|
1097
|
+
txt = self.cell_str(datacn, fix=False)
|
1096
1098
|
if txt:
|
1097
1099
|
self.MT.txt_measure_canvas.itemconfig(
|
1098
1100
|
self.MT.txt_measure_canvas_text,
|
@@ -1148,7 +1150,7 @@ class ColumnHeaders(tk.Canvas):
|
|
1148
1150
|
elif isinstance(self.MT._headers, int):
|
1149
1151
|
datarn = self.MT._headers
|
1150
1152
|
for datacn in iterable:
|
1151
|
-
if txt := self.MT.
|
1153
|
+
if txt := self.MT.cell_str(datarn, datacn, get_displayed=True):
|
1152
1154
|
qconf(qtxtm, text=txt, font=qfont)
|
1153
1155
|
b = qbbox(qtxtm)
|
1154
1156
|
th = b[3] - b[1] + 5
|
@@ -1195,7 +1197,7 @@ class ColumnHeaders(tk.Canvas):
|
|
1195
1197
|
qtxth = self.MT.table_txt_height
|
1196
1198
|
qfont = self.ops.table_font
|
1197
1199
|
for datarn in iterable:
|
1198
|
-
if txt := self.MT.
|
1200
|
+
if txt := self.MT.cell_str(datarn, datacn, get_displayed=True):
|
1199
1201
|
qconf(qtxtm, text=txt, font=qfont)
|
1200
1202
|
b = qbbox(qtxtm)
|
1201
1203
|
if (
|
@@ -1627,7 +1629,7 @@ class ColumnHeaders(tk.Canvas):
|
|
1627
1629
|
or (align.endswith("n") and cleftgridln + 5 > scrollpos_right)
|
1628
1630
|
):
|
1629
1631
|
continue
|
1630
|
-
text = self.
|
1632
|
+
text = self.cell_str(datacn, fix=False)
|
1631
1633
|
if not text:
|
1632
1634
|
continue
|
1633
1635
|
max_lines = int((self.current_height - top - 2) / txt_h)
|
@@ -2221,7 +2223,7 @@ class ColumnHeaders(tk.Canvas):
|
|
2221
2223
|
edited = True
|
2222
2224
|
if edited and cell_resize and self.ops.cell_auto_resize_enabled:
|
2223
2225
|
if self.height_resizing_enabled:
|
2224
|
-
self.set_height_of_header_to_text(self.
|
2226
|
+
self.set_height_of_header_to_text(self.cell_str(datacn, fix=False))
|
2225
2227
|
self.set_col_width_run_binding(c)
|
2226
2228
|
if redraw:
|
2227
2229
|
self.MT.refresh()
|
@@ -2268,7 +2270,7 @@ class ColumnHeaders(tk.Canvas):
|
|
2268
2270
|
redirect_int: bool = False,
|
2269
2271
|
) -> Any:
|
2270
2272
|
if get_displayed:
|
2271
|
-
return self.
|
2273
|
+
return self.cell_str(datacn, fix=False)
|
2272
2274
|
if redirect_int and isinstance(self.MT._headers, int): # internal use
|
2273
2275
|
return self.MT.get_cell_data(self.MT._headers, datacn, none_to_empty_str=True)
|
2274
2276
|
if (
|
@@ -2280,7 +2282,7 @@ class ColumnHeaders(tk.Canvas):
|
|
2280
2282
|
return ""
|
2281
2283
|
return self.MT._headers[datacn]
|
2282
2284
|
|
2283
|
-
def
|
2285
|
+
def cell_str(self, datacn: int, fix: bool = True) -> str:
|
2284
2286
|
kwargs = self.get_cell_kwargs(datacn, key="dropdown")
|
2285
2287
|
if kwargs:
|
2286
2288
|
if kwargs["text"] is not None:
|
@@ -2290,7 +2292,7 @@ class ColumnHeaders(tk.Canvas):
|
|
2290
2292
|
if kwargs:
|
2291
2293
|
return f"{kwargs['text']}"
|
2292
2294
|
if isinstance(self.MT._headers, int):
|
2293
|
-
return self.MT.
|
2295
|
+
return self.MT.cell_str(self.MT._headers, datacn, get_displayed=True)
|
2294
2296
|
if fix:
|
2295
2297
|
self.fix_header(datacn)
|
2296
2298
|
try:
|
tksheet/constants.py
CHANGED
@@ -150,3 +150,198 @@ bind_del_rows: set[str] = {
|
|
150
150
|
"delete rows",
|
151
151
|
"del rows",
|
152
152
|
}
|
153
|
+
|
154
|
+
BINDING_TO_ATTR = {
|
155
|
+
"replace_all": ("MT", "extra_end_replace_all_func"),
|
156
|
+
# begin sort cells
|
157
|
+
"begin_sort_cells": ("MT", "extra_begin_sort_cells_func"),
|
158
|
+
# end sort cells
|
159
|
+
"sort_cells": ("MT", "extra_end_sort_cells_func"),
|
160
|
+
"end_sort_cells": ("MT", "extra_end_sort_cells_func"),
|
161
|
+
# begin sort rows
|
162
|
+
"begin_sort_rows": ("CH", "ch_extra_begin_sort_rows_func"),
|
163
|
+
# end sort rows
|
164
|
+
"sort_rows": ("CH", "ch_extra_end_sort_rows_func"),
|
165
|
+
"end_sort_rows": ("CH", "ch_extra_end_sort_rows_func"),
|
166
|
+
# begin sort cols
|
167
|
+
"begin_sort_columns": ("RI", "ri_extra_begin_sort_cols_func"),
|
168
|
+
# end sort cols
|
169
|
+
"sort_columns": ("RI", "ri_extra_end_sort_cols_func"),
|
170
|
+
"end_sort_columns": ("RI", "ri_extra_end_sort_cols_func"),
|
171
|
+
# begin copy
|
172
|
+
"begin_copy": ("MT", "extra_begin_ctrl_c_func"),
|
173
|
+
"begin_ctrl_c": ("MT", "extra_begin_ctrl_c_func"),
|
174
|
+
# end copy
|
175
|
+
"ctrl_c": ("MT", "extra_end_ctrl_c_func"),
|
176
|
+
"end_copy": ("MT", "extra_end_ctrl_c_func"),
|
177
|
+
"end_ctrl_c": ("MT", "extra_end_ctrl_c_func"),
|
178
|
+
"copy": ("MT", "extra_end_ctrl_c_func"),
|
179
|
+
# begin cut
|
180
|
+
"begin_cut": ("MT", "extra_begin_ctrl_x_func"),
|
181
|
+
"begin_ctrl_x": ("MT", "extra_begin_ctrl_x_func"),
|
182
|
+
# end cut
|
183
|
+
"ctrl_x": ("MT", "extra_end_ctrl_x_func"),
|
184
|
+
"end_cut": ("MT", "extra_end_ctrl_x_func"),
|
185
|
+
"end_ctrl_x": ("MT", "extra_end_ctrl_x_func"),
|
186
|
+
"cut": ("MT", "extra_end_ctrl_x_func"),
|
187
|
+
# begin paste
|
188
|
+
"begin_paste": ("MT", "extra_begin_ctrl_v_func"),
|
189
|
+
"begin_ctrl_v": ("MT", "extra_begin_ctrl_v_func"),
|
190
|
+
# end paste
|
191
|
+
"ctrl_v": ("MT", "extra_end_ctrl_v_func"),
|
192
|
+
"end_paste": ("MT", "extra_end_ctrl_v_func"),
|
193
|
+
"end_ctrl_v": ("MT", "extra_end_ctrl_v_func"),
|
194
|
+
"paste": ("MT", "extra_end_ctrl_v_func"),
|
195
|
+
# begin undo/redo
|
196
|
+
"begin_undo": ("MT", "extra_begin_ctrl_z_func"),
|
197
|
+
"begin_ctrl_z": ("MT", "extra_begin_ctrl_z_func"),
|
198
|
+
# end undo/redo
|
199
|
+
"ctrl_z": ("MT", "extra_end_ctrl_z_func"),
|
200
|
+
"end_undo": ("MT", "extra_end_ctrl_z_func"),
|
201
|
+
"end_ctrl_z": ("MT", "extra_end_ctrl_z_func"),
|
202
|
+
"undo": ("MT", "extra_end_ctrl_z_func"),
|
203
|
+
# begin del key
|
204
|
+
"begin_delete_key": ("MT", "extra_begin_delete_key_func"),
|
205
|
+
"begin_delete": ("MT", "extra_begin_delete_key_func"),
|
206
|
+
# end del key
|
207
|
+
"delete_key": ("MT", "extra_end_delete_key_func"),
|
208
|
+
"end_delete": ("MT", "extra_end_delete_key_func"),
|
209
|
+
"end_delete_key": ("MT", "extra_end_delete_key_func"),
|
210
|
+
"delete": ("MT", "extra_end_delete_key_func"),
|
211
|
+
# begin edit table
|
212
|
+
"begin_edit_cell": ("MT", "extra_begin_edit_cell_func"),
|
213
|
+
"begin_edit_table": ("MT", "extra_begin_edit_cell_func"),
|
214
|
+
# end edit table
|
215
|
+
"end_edit_cell": ("MT", "extra_end_edit_cell_func"),
|
216
|
+
"edit_cell": ("MT", "extra_end_edit_cell_func"),
|
217
|
+
"edit_table": ("MT", "extra_end_edit_cell_func"),
|
218
|
+
# begin edit header
|
219
|
+
"begin_edit_header": ("CH", "extra_begin_edit_cell_func"),
|
220
|
+
# end edit header
|
221
|
+
"end_edit_header": ("CH", "extra_end_edit_cell_func"),
|
222
|
+
"edit_header": ("CH", "extra_end_edit_cell_func"),
|
223
|
+
# begin edit index
|
224
|
+
"begin_edit_index": ("RI", "extra_begin_edit_cell_func"),
|
225
|
+
# end edit index
|
226
|
+
"end_edit_index": ("RI", "extra_end_edit_cell_func"),
|
227
|
+
"edit_index": ("RI", "extra_end_edit_cell_func"),
|
228
|
+
# begin move rows
|
229
|
+
"begin_row_index_drag_drop": ("RI", "ri_extra_begin_drag_drop_func"),
|
230
|
+
"begin_move_rows": ("RI", "ri_extra_begin_drag_drop_func"),
|
231
|
+
# end move rows
|
232
|
+
"row_index_drag_drop": ("RI", "ri_extra_end_drag_drop_func"),
|
233
|
+
"move_rows": ("RI", "ri_extra_end_drag_drop_func"),
|
234
|
+
"end_move_rows": ("RI", "ri_extra_end_drag_drop_func"),
|
235
|
+
"end_row_index_drag_drop": ("RI", "ri_extra_end_drag_drop_func"),
|
236
|
+
# begin move cols
|
237
|
+
"begin_column_header_drag_drop": ("CH", "ch_extra_begin_drag_drop_func"),
|
238
|
+
"begin_move_columns": ("CH", "ch_extra_begin_drag_drop_func"),
|
239
|
+
# end move cols
|
240
|
+
"column_header_drag_drop": ("CH", "ch_extra_end_drag_drop_func"),
|
241
|
+
"move_columns": ("CH", "ch_extra_end_drag_drop_func"),
|
242
|
+
"end_move_columns": ("CH", "ch_extra_end_drag_drop_func"),
|
243
|
+
"end_column_header_drag_drop": ("CH", "ch_extra_end_drag_drop_func"),
|
244
|
+
# begin del rows
|
245
|
+
"begin_rc_delete_row": ("MT", "extra_begin_del_rows_rc_func"),
|
246
|
+
"begin_delete_rows": ("MT", "extra_begin_del_rows_rc_func"),
|
247
|
+
# end del rows
|
248
|
+
"rc_delete_row": ("MT", "extra_end_del_rows_rc_func"),
|
249
|
+
"end_rc_delete_row": ("MT", "extra_end_del_rows_rc_func"),
|
250
|
+
"end_delete_rows": ("MT", "extra_end_del_rows_rc_func"),
|
251
|
+
"delete_rows": ("MT", "extra_end_del_rows_rc_func"),
|
252
|
+
# begin del cols
|
253
|
+
"begin_rc_delete_column": ("MT", "extra_begin_del_cols_rc_func"),
|
254
|
+
"begin_delete_columns": ("MT", "extra_begin_del_cols_rc_func"),
|
255
|
+
# end del cols
|
256
|
+
"rc_delete_column": ("MT", "extra_end_del_cols_rc_func"),
|
257
|
+
"end_rc_delete_column": ("MT", "extra_end_del_cols_rc_func"),
|
258
|
+
"end_delete_columns": ("MT", "extra_end_del_cols_rc_func"),
|
259
|
+
"delete_columns": ("MT", "extra_end_del_cols_rc_func"),
|
260
|
+
# begin add cols
|
261
|
+
"begin_rc_insert_column": ("MT", "extra_begin_insert_cols_rc_func"),
|
262
|
+
"begin_insert_column": ("MT", "extra_begin_insert_cols_rc_func"),
|
263
|
+
"begin_insert_columns": ("MT", "extra_begin_insert_cols_rc_func"),
|
264
|
+
"begin_add_column": ("MT", "extra_begin_insert_cols_rc_func"),
|
265
|
+
"begin_rc_add_column": ("MT", "extra_begin_insert_cols_rc_func"),
|
266
|
+
"begin_add_columns": ("MT", "extra_begin_insert_cols_rc_func"),
|
267
|
+
# end add cols
|
268
|
+
"rc_insert_column": ("MT", "extra_end_insert_cols_rc_func"),
|
269
|
+
"end_rc_insert_column": ("MT", "extra_end_insert_cols_rc_func"),
|
270
|
+
"end_insert_column": ("MT", "extra_end_insert_cols_rc_func"),
|
271
|
+
"end_insert_columns": ("MT", "extra_end_insert_cols_rc_func"),
|
272
|
+
"rc_add_column": ("MT", "extra_end_insert_cols_rc_func"),
|
273
|
+
"end_rc_add_column": ("MT", "extra_end_insert_cols_rc_func"),
|
274
|
+
"end_add_column": ("MT", "extra_end_insert_cols_rc_func"),
|
275
|
+
"end_add_columns": ("MT", "extra_end_insert_cols_rc_func"),
|
276
|
+
"add_columns": ("MT", "extra_end_insert_cols_rc_func"),
|
277
|
+
# begin add rows
|
278
|
+
"begin_rc_insert_row": ("MT", "extra_begin_insert_rows_rc_func"),
|
279
|
+
"begin_insert_row": ("MT", "extra_begin_insert_rows_rc_func"),
|
280
|
+
"begin_insert_rows": ("MT", "extra_begin_insert_rows_rc_func"),
|
281
|
+
"begin_rc_add_row": ("MT", "extra_begin_insert_rows_rc_func"),
|
282
|
+
"begin_add_row": ("MT", "extra_begin_insert_rows_rc_func"),
|
283
|
+
"begin_add_rows": ("MT", "extra_begin_insert_rows_rc_func"),
|
284
|
+
# end add rows
|
285
|
+
"rc_insert_row": ("MT", "extra_end_insert_rows_rc_func"),
|
286
|
+
"end_rc_insert_row": ("MT", "extra_end_insert_rows_rc_func"),
|
287
|
+
"end_insert_row": ("MT", "extra_end_insert_rows_rc_func"),
|
288
|
+
"end_insert_rows": ("MT", "extra_end_insert_rows_rc_func"),
|
289
|
+
"rc_add_row": ("MT", "extra_end_insert_rows_rc_func"),
|
290
|
+
"end_rc_add_row": ("MT", "extra_end_insert_rows_rc_func"),
|
291
|
+
"end_add_row": ("MT", "extra_end_insert_rows_rc_func"),
|
292
|
+
"end_add_rows": ("MT", "extra_end_insert_rows_rc_func"),
|
293
|
+
"add_rows": ("MT", "extra_end_insert_rows_rc_func"),
|
294
|
+
# resize
|
295
|
+
"row_height_resize": ("RI", "row_height_resize_func"),
|
296
|
+
"column_width_resize": ("CH", "column_width_resize_func"),
|
297
|
+
# selection
|
298
|
+
"cell_select": ("MT", "selection_binding_func"),
|
299
|
+
"select_all": ("MT", "select_all_binding_func"),
|
300
|
+
"all_select": ("MT", "select_all_binding_func"),
|
301
|
+
"row_select": ("RI", "selection_binding_func"),
|
302
|
+
"column_select": ("CH", "selection_binding_func"),
|
303
|
+
"col_select": ("CH", "selection_binding_func"),
|
304
|
+
"drag_select_cells": ("MT", "drag_selection_binding_func"),
|
305
|
+
"drag_select_rows": ("RI", "drag_selection_binding_func"),
|
306
|
+
"drag_select_columns": ("CH", "drag_selection_binding_func"),
|
307
|
+
"shift_cell_select": ("MT", "shift_selection_binding_func"),
|
308
|
+
"shift_row_select": ("RI", "shift_selection_binding_func"),
|
309
|
+
"shift_column_select": ("CH", "shift_selection_binding_func"),
|
310
|
+
"ctrl_cell_select": ("MT", "ctrl_selection_binding_func"),
|
311
|
+
"ctrl_row_select": ("RI", "ctrl_selection_binding_func"),
|
312
|
+
"ctrl_column_select": ("CH", "ctrl_selection_binding_func"),
|
313
|
+
"deselect": ("MT", "deselection_binding_func"),
|
314
|
+
}
|
315
|
+
|
316
|
+
MODIFIED_BINDINGS = [
|
317
|
+
("MT", "extra_end_replace_all_func"),
|
318
|
+
("MT", "extra_end_sort_cells_func"),
|
319
|
+
("CH", "ch_extra_end_sort_rows_func"),
|
320
|
+
("RI", "ri_extra_end_sort_cols_func"),
|
321
|
+
("MT", "extra_end_ctrl_c_func"),
|
322
|
+
("MT", "extra_end_ctrl_x_func"),
|
323
|
+
("MT", "extra_end_ctrl_v_func"),
|
324
|
+
("MT", "extra_end_ctrl_z_func"),
|
325
|
+
("MT", "extra_end_delete_key_func"),
|
326
|
+
("RI", "ri_extra_end_drag_drop_func"),
|
327
|
+
("CH", "ch_extra_end_drag_drop_func"),
|
328
|
+
("MT", "extra_end_del_rows_rc_func"),
|
329
|
+
("MT", "extra_end_del_cols_rc_func"),
|
330
|
+
("MT", "extra_end_insert_cols_rc_func"),
|
331
|
+
("MT", "extra_end_insert_rows_rc_func"),
|
332
|
+
("MT", "extra_end_edit_cell_func"),
|
333
|
+
("CH", "extra_end_edit_cell_func"),
|
334
|
+
("RI", "extra_end_edit_cell_func"),
|
335
|
+
]
|
336
|
+
|
337
|
+
visited = set()
|
338
|
+
ALL_BINDINGS = []
|
339
|
+
SELECT_BINDINGS = []
|
340
|
+
for o, b in BINDING_TO_ATTR.values():
|
341
|
+
if b not in visited:
|
342
|
+
ALL_BINDINGS.append((o, b))
|
343
|
+
visited.add(b)
|
344
|
+
if "select" in b and (o, b) not in visited:
|
345
|
+
SELECT_BINDINGS.append((o, b))
|
346
|
+
visited.add((o, b))
|
347
|
+
visited = set()
|