tksheet 7.4.6__tar.gz → 7.4.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.
Files changed (28) hide show
  1. {tksheet-7.4.6/tksheet.egg-info → tksheet-7.4.8}/PKG-INFO +1 -1
  2. {tksheet-7.4.6 → tksheet-7.4.8}/pyproject.toml +1 -1
  3. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/__init__.py +2 -1
  4. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/column_headers.py +2 -0
  5. tksheet-7.4.8/tksheet/constants.py +347 -0
  6. tksheet-7.4.8/tksheet/find_window.py +536 -0
  7. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/functions.py +257 -305
  8. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/main_table.py +481 -295
  9. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/row_index.py +9 -9
  10. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/sheet.py +153 -496
  11. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/sheet_options.py +7 -1
  12. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/tksheet_types.py +3 -0
  13. {tksheet-7.4.6 → tksheet-7.4.8/tksheet.egg-info}/PKG-INFO +1 -1
  14. tksheet-7.4.6/tksheet/constants.py +0 -152
  15. tksheet-7.4.6/tksheet/find_window.py +0 -242
  16. {tksheet-7.4.6 → tksheet-7.4.8}/LICENSE.txt +0 -0
  17. {tksheet-7.4.6 → tksheet-7.4.8}/README.md +0 -0
  18. {tksheet-7.4.6 → tksheet-7.4.8}/setup.cfg +0 -0
  19. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/colors.py +0 -0
  20. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/formatters.py +0 -0
  21. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/other_classes.py +0 -0
  22. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/sorting.py +0 -0
  23. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/text_editor.py +0 -0
  24. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/themes.py +0 -0
  25. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet/top_left_rectangle.py +0 -0
  26. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet.egg-info/SOURCES.txt +0 -0
  27. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet.egg-info/dependency_links.txt +0 -0
  28. {tksheet-7.4.6 → tksheet-7.4.8}/tksheet.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tksheet
3
- Version: 7.4.6
3
+ Version: 7.4.8
4
4
  Summary: Tkinter table / sheet and treeview widget
5
5
  Author-email: ragardner <github@ragardner.simplelogin.com>
6
6
  License: Copyright (c) 2019 ragardner and open source contributors
@@ -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.4.6"
9
+ version = "7.4.8"
10
10
  authors = [{ name = "ragardner", email = "github@ragardner.simplelogin.com" }]
11
11
  requires-python = ">=3.8"
12
12
  license = {file = "LICENSE.txt"}
@@ -4,7 +4,7 @@
4
4
  tksheet - A Python tkinter table widget
5
5
  """
6
6
 
7
- __version__ = "7.4.6"
7
+ __version__ = "7.4.8"
8
8
 
9
9
  from .colors import (
10
10
  color_map,
@@ -73,6 +73,7 @@ from .functions import (
73
73
  move_elements_to,
74
74
  new_tk_event,
75
75
  num2alpha,
76
+ push_n,
76
77
  rounded_box_coords,
77
78
  span_dict,
78
79
  tksheet_type_error,
@@ -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(
@@ -0,0 +1,347 @@
1
+ from __future__ import annotations
2
+
3
+ from platform import system as get_os
4
+ from typing import Hashable
5
+
6
+ USER_OS: str = f"{get_os()}".lower()
7
+ ctrl_key: str = "Command" if USER_OS == "darwin" else "Control"
8
+ rc_binding: str = "<2>" if USER_OS == "darwin" else "<3>"
9
+ symbols_set: set[str] = set("""!#$%&'()*+,-./:;"@[]^_`{|}~>?= \\""")
10
+ nonelike: set[Hashable] = {None, "none", ""}
11
+ truthy: set[Hashable] = {True, "true", "t", "yes", "y", "on", "1"}
12
+ falsy: set[Hashable] = {False, "false", "f", "no", "n", "off", "0"}
13
+ _test_str: str = "aiW_-|"
14
+
15
+ val_modifying_options: set[str] = {"checkbox", "format", "dropdown"}
16
+
17
+ named_span_types: set[str] = {
18
+ "format",
19
+ "highlight",
20
+ "dropdown",
21
+ "checkbox",
22
+ "readonly",
23
+ "align",
24
+ }
25
+
26
+ emitted_events: set[str] = {
27
+ "<<SheetModified>>",
28
+ "<<SheetRedrawn>>",
29
+ "<<SheetSelect>>",
30
+ "<<Copy>>",
31
+ "<<Cut>>",
32
+ "<<Paste>>",
33
+ "<<Delete>>",
34
+ "<<Undo>>",
35
+ "<<Redo>>",
36
+ "<<SelectAll>>",
37
+ }
38
+
39
+ align_helper: dict[str, str] = {
40
+ "w": "nw",
41
+ "e": "ne",
42
+ "center": "n",
43
+ "n": "center",
44
+ "nw": "left",
45
+ "ne": "right",
46
+ }
47
+
48
+ align_value_error: str = "Align must be one of the following values: c, center, w, nw, west, left, e, ne, east, right"
49
+ font_value_error: str = "Argument must be font, size and 'normal', 'bold' or'italic' e.g. ('Carlito',12,'normal')"
50
+
51
+ backwards_compatibility_keys: dict[str, str] = {
52
+ "font": "table_font",
53
+ }
54
+
55
+ text_editor_newline_bindings: set[str] = {
56
+ "<Alt-Return>",
57
+ "<Alt-KP_Enter>",
58
+ "<Shift-Return>",
59
+ f"<{ctrl_key}-Return>",
60
+ }
61
+ if USER_OS == "darwin":
62
+ text_editor_newline_bindings.add("<Option-Return>")
63
+
64
+ text_editor_close_bindings: dict[str, str] = {
65
+ "<Tab>": "Tab",
66
+ "<Return>": "Return",
67
+ "<KP_Enter>": "Return",
68
+ "<Escape>": "Escape",
69
+ }
70
+
71
+ text_editor_to_unbind: set[str] = (
72
+ text_editor_newline_bindings | set(text_editor_close_bindings) | {"<FocusOut>", "<KeyRelease>"}
73
+ )
74
+
75
+ scrollbar_options_keys: set[str] = {
76
+ "vertical_scroll_background",
77
+ "horizontal_scroll_background",
78
+ "vertical_scroll_troughcolor",
79
+ "horizontal_scroll_troughcolor",
80
+ "vertical_scroll_lightcolor",
81
+ "horizontal_scroll_lightcolor",
82
+ "vertical_scroll_darkcolor",
83
+ "horizontal_scroll_darkcolor",
84
+ "vertical_scroll_relief",
85
+ "horizontal_scroll_relief",
86
+ "vertical_scroll_troughrelief",
87
+ "horizontal_scroll_troughrelief",
88
+ "vertical_scroll_bordercolor",
89
+ "horizontal_scroll_bordercolor",
90
+ "vertical_scroll_borderwidth",
91
+ "horizontal_scroll_borderwidth",
92
+ "vertical_scroll_gripcount",
93
+ "horizontal_scroll_gripcount",
94
+ "vertical_scroll_arrowsize",
95
+ "horizontal_scroll_arrowsize",
96
+ "vertical_scroll_active_bg",
97
+ "horizontal_scroll_active_bg",
98
+ "vertical_scroll_not_active_bg",
99
+ "horizontal_scroll_not_active_bg",
100
+ "vertical_scroll_pressed_bg",
101
+ "horizontal_scroll_pressed_bg",
102
+ "vertical_scroll_active_fg",
103
+ "horizontal_scroll_active_fg",
104
+ "vertical_scroll_not_active_fg",
105
+ "horizontal_scroll_not_active_fg",
106
+ "vertical_scroll_pressed_fg",
107
+ "horizontal_scroll_pressed_fg",
108
+ }
109
+
110
+ bind_add_columns: set[str] = {
111
+ "all",
112
+ "rc_insert_column",
113
+ "insert_column",
114
+ "add_column",
115
+ "insert_columns",
116
+ "add_columns",
117
+ "insert column",
118
+ "add column",
119
+ }
120
+
121
+ bind_del_columns: set[str] = {
122
+ "all",
123
+ "rc_delete_column",
124
+ "delete_column",
125
+ "del_column",
126
+ "delete_columns",
127
+ "del_columns",
128
+ "delete columns",
129
+ "del columns",
130
+ }
131
+
132
+ bind_add_rows: set[str] = {
133
+ "all",
134
+ "rc_insert_row",
135
+ "insert_row",
136
+ "add_row",
137
+ "insert_rows",
138
+ "add_rows",
139
+ "insert row",
140
+ "add row",
141
+ }
142
+
143
+ bind_del_rows: set[str] = {
144
+ "all",
145
+ "rc_delete_row",
146
+ "delete_row",
147
+ "del_row",
148
+ "delete_rows",
149
+ "del_rows",
150
+ "delete rows",
151
+ "del rows",
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()