tksheet 7.5.8__py3-none-any.whl → 7.5.10__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 +7 -6
- tksheet/functions.py +11 -0
- tksheet/main_table.py +17 -13
- tksheet/row_index.py +53 -72
- tksheet/sheet.py +41 -11
- {tksheet-7.5.8.dist-info → tksheet-7.5.10.dist-info}/METADATA +1 -1
- {tksheet-7.5.8.dist-info → tksheet-7.5.10.dist-info}/RECORD +11 -11
- {tksheet-7.5.8.dist-info → tksheet-7.5.10.dist-info}/WHEEL +0 -0
- {tksheet-7.5.8.dist-info → tksheet-7.5.10.dist-info}/licenses/LICENSE.txt +0 -0
- {tksheet-7.5.8.dist-info → tksheet-7.5.10.dist-info}/top_level.txt +0 -0
tksheet/__init__.py
CHANGED
tksheet/column_headers.py
CHANGED
@@ -1863,14 +1863,15 @@ class ColumnHeaders(tk.Canvas):
|
|
1863
1863
|
except Exception:
|
1864
1864
|
self.tooltip.content_text.focus_set()
|
1865
1865
|
return
|
1866
|
-
if not self.tooltip.cell_readonly:
|
1866
|
+
if not self.tooltip.cell_readonly or not self.tooltip.note_readonly:
|
1867
1867
|
_, c, cell, note = self.tooltip.get()
|
1868
1868
|
datacn = self.MT.datacn(c)
|
1869
|
-
|
1870
|
-
|
1871
|
-
|
1872
|
-
|
1873
|
-
|
1869
|
+
if not self.tooltip.cell_readonly:
|
1870
|
+
event_data = self.new_single_edit_event(c, datacn, "??", self.get_cell_data(datacn), cell)
|
1871
|
+
self.do_single_edit(c, datacn, event_data, cell)
|
1872
|
+
if not self.tooltip.note_readonly:
|
1873
|
+
span = self.PAR.span(None, datacn, None, datacn + 1).options(table=False, header=True)
|
1874
|
+
self.PAR.note(span, note=note if note else None, readonly=False)
|
1874
1875
|
self.hide_tooltip()
|
1875
1876
|
self.MT.refresh()
|
1876
1877
|
self.focus_set()
|
tksheet/functions.py
CHANGED
@@ -835,6 +835,17 @@ def move_elements_to(
|
|
835
835
|
)
|
836
836
|
|
837
837
|
|
838
|
+
def remove_duplicates_outside_section(strings: list[str], section_start: int, section_size: int) -> list[str]:
|
839
|
+
if section_start == 0 and section_size >= len(strings):
|
840
|
+
return strings
|
841
|
+
|
842
|
+
section_end = section_start + section_size
|
843
|
+
section_set = set(strings[section_start:section_end])
|
844
|
+
print(section_set, section_start, section_size)
|
845
|
+
|
846
|
+
return [s for i, s in enumerate(strings) if (section_start <= i < section_end) or (s not in section_set)]
|
847
|
+
|
848
|
+
|
838
849
|
def get_new_indexes(
|
839
850
|
move_to: int,
|
840
851
|
to_move: Iterable[int],
|
tksheet/main_table.py
CHANGED
@@ -1805,7 +1805,7 @@ class MainTable(tk.Canvas):
|
|
1805
1805
|
create_selections: bool = True,
|
1806
1806
|
event_data: EventDataDict | None = None,
|
1807
1807
|
undo_modification: EventDataDict | None = None,
|
1808
|
-
node_change: None |
|
1808
|
+
node_change: None | dict = None,
|
1809
1809
|
manage_tree: bool = True,
|
1810
1810
|
) -> tuple[dict[int, int], dict[int, int], EventDataDict]:
|
1811
1811
|
self.saved_row_heights = {}
|
@@ -1965,7 +1965,10 @@ class MainTable(tk.Canvas):
|
|
1965
1965
|
# finally, change the span coords
|
1966
1966
|
span["from_r"], span["upto_r"] = newfrom, newupto
|
1967
1967
|
|
1968
|
-
if
|
1968
|
+
if not undo_modification and create_selections and self.PAR.ops.treeview:
|
1969
|
+
self.PAR.selection_set(*[self._row_index[k].iid for k in data_new_idxs.values()])
|
1970
|
+
|
1971
|
+
elif not undo_modification and move_heights and disp_new_idxs:
|
1969
1972
|
self.set_row_positions(
|
1970
1973
|
itr=move_elements_by_mapping_gen(
|
1971
1974
|
self.get_row_heights(),
|
@@ -6577,19 +6580,20 @@ class MainTable(tk.Canvas):
|
|
6577
6580
|
except Exception:
|
6578
6581
|
self.tooltip.content_text.focus_set()
|
6579
6582
|
return
|
6580
|
-
if not self.tooltip.cell_readonly:
|
6583
|
+
if not self.tooltip.cell_readonly or not self.tooltip.note_readonly:
|
6581
6584
|
r, c, cell, note = self.tooltip.get()
|
6582
6585
|
datarn, datacn = self.datarn(r), self.datacn(c)
|
6583
|
-
|
6584
|
-
|
6585
|
-
|
6586
|
-
|
6587
|
-
|
6588
|
-
|
6589
|
-
|
6590
|
-
|
6591
|
-
|
6592
|
-
self.
|
6586
|
+
if not self.tooltip.cell_readonly:
|
6587
|
+
event_data = self.new_single_edit_event(
|
6588
|
+
r, c, datarn, datacn, "??", self.get_cell_data(datarn, datacn), cell
|
6589
|
+
)
|
6590
|
+
value, event_data = self.single_edit_run_validation(datarn, datacn, event_data)
|
6591
|
+
if value is not None and (
|
6592
|
+
self.set_cell_data_undo(r=r, c=c, datarn=datarn, datacn=datacn, value=value, redraw=False)
|
6593
|
+
):
|
6594
|
+
try_binding(self.extra_end_edit_cell_func, event_data)
|
6595
|
+
if not self.tooltip.note_readonly:
|
6596
|
+
self.PAR.note(datarn, datacn, note=note if note else None, readonly=False)
|
6593
6597
|
self.hide_tooltip()
|
6594
6598
|
self.refresh()
|
6595
6599
|
self.focus_set()
|
tksheet/row_index.py
CHANGED
@@ -35,6 +35,7 @@ from .functions import (
|
|
35
35
|
num2alpha,
|
36
36
|
push_displayed,
|
37
37
|
recursive_bind,
|
38
|
+
remove_duplicates_outside_section,
|
38
39
|
rounded_box_coords,
|
39
40
|
safe_copy,
|
40
41
|
stored_event_dict,
|
@@ -884,7 +885,7 @@ class RowIndex(tk.Canvas):
|
|
884
885
|
elif (iid := self.event_over_tree_arrow(r, canvasy, event.x)) is not None:
|
885
886
|
if self.MT.selection_boxes:
|
886
887
|
self.select_row(r, ext=True, redraw=False)
|
887
|
-
self.PAR.item(iid, open_=iid not in self.tree_open_ids)
|
888
|
+
self.PAR.item(iid, open_=iid not in self.tree_open_ids, undo=False)
|
888
889
|
else:
|
889
890
|
self.mouseclick_outside_editor_or_dropdown_all_canvases(inside=True)
|
890
891
|
self.b1_pressed_loc = None
|
@@ -2036,14 +2037,15 @@ class RowIndex(tk.Canvas):
|
|
2036
2037
|
except Exception:
|
2037
2038
|
self.tooltip.content_text.focus_set()
|
2038
2039
|
return
|
2039
|
-
if not self.tooltip.cell_readonly:
|
2040
|
+
if not self.tooltip.cell_readonly or not self.tooltip.note_readonly:
|
2040
2041
|
r, _, cell, note = self.tooltip.get()
|
2041
2042
|
datarn = self.MT.datarn(r)
|
2042
|
-
|
2043
|
-
|
2044
|
-
|
2045
|
-
|
2046
|
-
|
2043
|
+
if not self.tooltip.cell_readonly:
|
2044
|
+
event_data = self.new_single_edit_event(r, datarn, "??", self.get_cell_data(datarn), cell)
|
2045
|
+
self.do_single_edit(r, datarn, event_data, cell)
|
2046
|
+
if not self.tooltip.note_readonly:
|
2047
|
+
span = self.PAR.span(datarn).options(table=False, index=True)
|
2048
|
+
self.PAR.note(span, note=note if note else None, readonly=False)
|
2047
2049
|
self.hide_tooltip()
|
2048
2050
|
self.MT.refresh()
|
2049
2051
|
self.focus_set()
|
@@ -2790,6 +2792,14 @@ class RowIndex(tk.Canvas):
|
|
2790
2792
|
|
2791
2793
|
return event_data
|
2792
2794
|
|
2795
|
+
def remove_descendants(self, iids: set[str]) -> tuple[list[int], set[str]]:
|
2796
|
+
return (
|
2797
|
+
sorted(
|
2798
|
+
self.rns[iid] for iid in iids if not any(ancestor in iids for ancestor in self.get_iid_ancestors(iid))
|
2799
|
+
),
|
2800
|
+
iids,
|
2801
|
+
)
|
2802
|
+
|
2793
2803
|
def move_rows_mod_nodes(
|
2794
2804
|
self,
|
2795
2805
|
data_new_idxs: dict[int, int],
|
@@ -2798,7 +2808,7 @@ class RowIndex(tk.Canvas):
|
|
2798
2808
|
maxidx: int,
|
2799
2809
|
event_data: EventDataDict,
|
2800
2810
|
undo_modification: EventDataDict | None = None,
|
2801
|
-
node_change:
|
2811
|
+
node_change: dict | None = None,
|
2802
2812
|
) -> Generator[tuple[dict[int, int], dict[int, int], dict[str, int], EventDataDict]] | None:
|
2803
2813
|
# data_new_idxs is {old: new, old: new}
|
2804
2814
|
# data_old_idxs is {new: old, new: old}
|
@@ -2812,97 +2822,84 @@ class RowIndex(tk.Canvas):
|
|
2812
2822
|
|
2813
2823
|
elif event_data["moved"]["rows"]:
|
2814
2824
|
if node_change:
|
2815
|
-
|
2816
|
-
|
2817
|
-
|
2818
|
-
move_to_index = node_change[2]
|
2819
|
-
# new parent exists
|
2825
|
+
moved_rows, iids = self.remove_descendants(node_change["iids"])
|
2826
|
+
new_parent = node_change["new_par"]
|
2827
|
+
move_to_index = node_change["index"]
|
2820
2828
|
if new_parent:
|
2821
2829
|
new_par_cn = self.iid_children(new_parent)
|
2822
|
-
|
2830
|
+
len_new_par_cn = len(new_par_cn)
|
2823
2831
|
if isinstance(move_to_index, int):
|
2824
|
-
move_to_index = min(move_to_index,
|
2832
|
+
move_to_index = min(move_to_index, len_new_par_cn)
|
2825
2833
|
else:
|
2826
|
-
move_to_index =
|
2827
|
-
# determine insert row
|
2834
|
+
move_to_index = len_new_par_cn
|
2828
2835
|
if not new_par_cn:
|
2829
2836
|
insert_row = self.rns[new_parent] + 1
|
2830
|
-
elif move_to_index >=
|
2837
|
+
elif move_to_index >= len_new_par_cn:
|
2831
2838
|
insert_row = self.rns[new_par_cn[-1]] + self.num_descendants(new_par_cn[-1]) + 1
|
2832
|
-
elif new_parent == self.iid_parent(item):
|
2833
|
-
if move_to_index <= self.PAR.index(item):
|
2834
|
-
# Insert before the sibling at move_to_index
|
2835
|
-
insert_row = self.rns[new_par_cn[move_to_index]]
|
2836
|
-
else:
|
2837
|
-
# Insert after the sibling at move_to_index
|
2838
|
-
insert_row = self.rns[new_par_cn[move_to_index]]
|
2839
|
-
insert_row += 1 + self.num_descendants(new_par_cn[move_to_index])
|
2840
2839
|
else:
|
2840
|
+
# To get the ids to the proper index and insert row -
|
2841
|
+
# For every iid that is being moved under the same parent but to an
|
2842
|
+
# index further along we have to adjust the insert row and move to index
|
2841
2843
|
insert_row = self.rns[new_par_cn[move_to_index]]
|
2842
|
-
|
2844
|
+
for iid in iids:
|
2845
|
+
if new_parent == self.iid_parent(iid) and move_to_index > self.PAR.index(iid):
|
2846
|
+
insert_row += 1 + self.num_descendants(new_par_cn[move_to_index])
|
2847
|
+
move_to_index += 1
|
2848
|
+
if move_to_index >= len_new_par_cn:
|
2849
|
+
break
|
2843
2850
|
else:
|
2844
|
-
# determine index
|
2845
2851
|
if isinstance(move_to_index, int):
|
2846
2852
|
move_to_index = min(move_to_index, sum(1 for _ in self.gen_top_nodes()))
|
2847
2853
|
else:
|
2848
2854
|
move_to_index = sum(1 for _ in self.gen_top_nodes())
|
2849
|
-
# determine insert row
|
2850
2855
|
insert_row = self.PAR._get_id_insert_row(move_to_index, new_parent)
|
2851
2856
|
else:
|
2852
|
-
|
2853
|
-
|
2854
|
-
moved_rows = sorted(
|
2855
|
-
self.rns[iid]
|
2856
|
-
for iid in iids
|
2857
|
-
if not any(ancestor in iids for ancestor in self.get_iid_ancestors(iid))
|
2857
|
+
moved_rows, iids = self.remove_descendants(
|
2858
|
+
{self.MT._row_index[r].iid for r in event_data["moved"]["rows"]["data"]}
|
2858
2859
|
)
|
2859
|
-
item = self.MT._row_index[moved_rows[0]].iid
|
2860
2860
|
if isinstance(event_data.value, int):
|
2861
2861
|
if event_data.value >= len(self.MT.displayed_rows):
|
2862
2862
|
insert_row = len(self.MT._row_index)
|
2863
2863
|
else:
|
2864
2864
|
insert_row = self.MT.datarn(event_data.value)
|
2865
2865
|
move_to_iid = self.MT._row_index[min(insert_row, len(self.MT._row_index) - 1)].iid
|
2866
|
-
|
2867
2866
|
else:
|
2868
2867
|
min_from = min(event_data["moved"]["rows"]["data"])
|
2869
|
-
# max_from = max(event_data.moved.rows)
|
2870
2868
|
min_to = min(event_data["moved"]["rows"]["data"].values())
|
2871
2869
|
max_to = max(event_data["moved"]["rows"]["data"].values())
|
2872
2870
|
insert_row = max_to if min_from <= min_to else min_to
|
2873
2871
|
move_to_iid = self.MT._row_index[insert_row].iid
|
2874
|
-
|
2875
2872
|
move_to_index = self.PAR.index(move_to_iid)
|
2876
2873
|
new_parent = self.iid_parent(move_to_iid)
|
2877
|
-
|
2878
|
-
|
2874
|
+
if any(
|
2875
|
+
self.move_pid_causes_recursive_loop(self.MT._row_index[r].iid, new_parent) for r in moved_rows
|
2876
|
+
):
|
2877
|
+
event_data["moved"]["rows"], data_new_idxs, data_old_idxs = {}, {}, {}
|
2878
|
+
moved_rows = []
|
2879
2879
|
|
2880
2880
|
new_loc_is_displayed = not new_parent or (
|
2881
2881
|
new_parent and new_parent in self.tree_open_ids and self.PAR.item_displayed(new_parent)
|
2882
2882
|
)
|
2883
|
-
event_data["moved"]["rows"]["displayed"] = {}
|
2883
|
+
event_data["moved"]["rows"]["displayed"], disp_new_idxs = {}, {}
|
2884
2884
|
|
2885
|
-
if
|
2886
|
-
event_data["moved"]["rows"] = {}
|
2887
|
-
|
2888
|
-
|
2889
|
-
else:
|
2885
|
+
if moved_rows:
|
2886
|
+
event_data["moved"]["rows"]["data"] = {moved_rows[0]: insert_row}
|
2887
|
+
iids = []
|
2890
2888
|
for r in moved_rows:
|
2891
2889
|
iid = self.MT._row_index[r].iid
|
2892
|
-
event_data = self.move_node(
|
2893
|
-
|
2894
|
-
|
2895
|
-
|
2896
|
-
|
2890
|
+
event_data = self.move_node(event_data=event_data, item=iid, parent=new_parent)
|
2891
|
+
iids.append(iid)
|
2892
|
+
if new_parent:
|
2893
|
+
self.iid_node(new_parent).children[move_to_index:move_to_index] = iids
|
2894
|
+
self.iid_node(new_parent).children = remove_duplicates_outside_section(
|
2895
|
+
self.iid_children(new_parent), move_to_index, len(iids)
|
2897
2896
|
)
|
2898
|
-
move_to_index += 1
|
2899
2897
|
event_data["moved"]["rows"]["data"] = get_new_indexes(
|
2900
2898
|
insert_row,
|
2901
2899
|
event_data["moved"]["rows"]["data"],
|
2902
2900
|
)
|
2903
2901
|
data_new_idxs = event_data["moved"]["rows"]["data"]
|
2904
2902
|
data_old_idxs = {v: k for k, v in data_new_idxs.items()}
|
2905
|
-
disp_new_idxs = event_data["moved"]["rows"]["displayed"]
|
2906
2903
|
|
2907
2904
|
if data_new_idxs:
|
2908
2905
|
self.MT.move_rows_data(data_new_idxs, data_old_idxs, maxidx)
|
@@ -2919,27 +2916,16 @@ class RowIndex(tk.Canvas):
|
|
2919
2916
|
|
2920
2917
|
yield None
|
2921
2918
|
|
2922
|
-
def move_node(
|
2923
|
-
self,
|
2924
|
-
event_data: EventDataDict,
|
2925
|
-
item: str,
|
2926
|
-
parent: str | None = None,
|
2927
|
-
index: int = 0,
|
2928
|
-
) -> EventDataDict:
|
2919
|
+
def move_node(self, event_data: EventDataDict, item: str, parent: str | None = None) -> EventDataDict:
|
2929
2920
|
# also backs up nodes
|
2930
2921
|
if parent is None:
|
2931
2922
|
parent = self.iid_parent(item)
|
2932
|
-
|
2933
2923
|
item_node = self.iid_node(item)
|
2934
|
-
|
2935
|
-
# new parent is an item
|
2936
2924
|
if parent:
|
2937
2925
|
parent_node = self.iid_node(parent)
|
2938
2926
|
# its the same parent, we're just moving index
|
2939
2927
|
if parent == item_node.parent:
|
2940
2928
|
event_data = self.copy_nodes((item, parent), event_data)
|
2941
|
-
parent_node.children.insert(index, parent_node.children.pop(parent_node.children.index(item)))
|
2942
|
-
|
2943
2929
|
else:
|
2944
2930
|
if item_node.parent:
|
2945
2931
|
event_data = self.copy_nodes((item, item_node.parent, parent), event_data)
|
@@ -2947,9 +2933,6 @@ class RowIndex(tk.Canvas):
|
|
2947
2933
|
event_data = self.copy_nodes((item, parent), event_data)
|
2948
2934
|
self.remove_iid_from_parents_children(item)
|
2949
2935
|
item_node.parent = parent_node.iid
|
2950
|
-
parent_node.children.insert(index, item)
|
2951
|
-
|
2952
|
-
# no new parent
|
2953
2936
|
else:
|
2954
2937
|
if item_node.parent:
|
2955
2938
|
event_data = self.copy_nodes((item, item_node.parent), event_data)
|
@@ -2958,7 +2941,7 @@ class RowIndex(tk.Canvas):
|
|
2958
2941
|
self.remove_iid_from_parents_children(item)
|
2959
2942
|
self.MT._row_index[self.rns[item]].parent = ""
|
2960
2943
|
|
2961
|
-
# last row in mapping is where to start from
|
2944
|
+
# last row in mapping + 1 is where to start from
|
2962
2945
|
mapping = event_data["moved"]["rows"]["data"]
|
2963
2946
|
row_ctr = next(reversed(mapping.values())) + 1
|
2964
2947
|
|
@@ -2966,13 +2949,11 @@ class RowIndex(tk.Canvas):
|
|
2966
2949
|
if rn not in mapping:
|
2967
2950
|
mapping[rn] = row_ctr
|
2968
2951
|
row_ctr += 1
|
2969
|
-
|
2970
2952
|
for did in self.get_iid_descendants(item):
|
2971
2953
|
mapping[self.rns[did]] = row_ctr
|
2972
2954
|
row_ctr += 1
|
2973
2955
|
|
2974
2956
|
event_data["moved"]["rows"]["data"] = mapping
|
2975
|
-
|
2976
2957
|
return event_data
|
2977
2958
|
|
2978
2959
|
def restore_nodes(self, event_data: EventDataDict) -> None:
|
tksheet/sheet.py
CHANGED
@@ -4980,14 +4980,6 @@ class Sheet(tk.Frame):
|
|
4980
4980
|
self.del_rows(rows, data_indexes=True, undo=undo)
|
4981
4981
|
return self.set_refresh_timer(rows)
|
4982
4982
|
|
4983
|
-
def set_children(self, parent: str, *newchildren) -> Sheet:
|
4984
|
-
"""
|
4985
|
-
Moves everything in '*newchildren' under 'parent'
|
4986
|
-
"""
|
4987
|
-
for iid in unpack(newchildren):
|
4988
|
-
self.move(iid, parent)
|
4989
|
-
return self
|
4990
|
-
|
4991
4983
|
def top_index_row(self, index: int) -> int:
|
4992
4984
|
try:
|
4993
4985
|
return next(self.RI.rns[n.iid] for i, n in enumerate(self.RI.gen_top_nodes()) if i == index)
|
@@ -5009,9 +5001,9 @@ class Sheet(tk.Frame):
|
|
5009
5001
|
"""
|
5010
5002
|
if item not in self.RI.rns:
|
5011
5003
|
raise ValueError(f"Item '{item}' does not exist.")
|
5012
|
-
|
5004
|
+
elif parent and parent not in self.RI.rns:
|
5013
5005
|
raise ValueError(f"Parent '{parent}' does not exist.")
|
5014
|
-
|
5006
|
+
elif self.RI.move_pid_causes_recursive_loop(item, parent):
|
5015
5007
|
raise ValueError(f"Item '{item}' causes recursive loop with parent '{parent}.")
|
5016
5008
|
data_new_idxs, disp_new_idxs, event_data = self.MT.move_rows_adjust_options_dict(
|
5017
5009
|
data_new_idxs={},
|
@@ -5022,7 +5014,45 @@ class Sheet(tk.Frame):
|
|
5022
5014
|
move_heights=True,
|
5023
5015
|
create_selections=select,
|
5024
5016
|
event_data=None,
|
5025
|
-
node_change=
|
5017
|
+
node_change={"iids": {item}, "new_par": parent, "index": index},
|
5018
|
+
)
|
5019
|
+
if undo:
|
5020
|
+
self.MT.undo_stack.append(stored_event_dict(event_data))
|
5021
|
+
self.MT.sheet_modified(event_data, emit_event=emit_event)
|
5022
|
+
self.set_refresh_timer()
|
5023
|
+
return data_new_idxs, disp_new_idxs, event_data
|
5024
|
+
|
5025
|
+
def set_children(
|
5026
|
+
self,
|
5027
|
+
parent: str,
|
5028
|
+
*newchildren: str,
|
5029
|
+
index: int | None = None,
|
5030
|
+
select: bool = True,
|
5031
|
+
undo: bool = True,
|
5032
|
+
emit_event: bool = False,
|
5033
|
+
) -> Sheet:
|
5034
|
+
"""
|
5035
|
+
Moves everything in '*newchildren' under 'parent'
|
5036
|
+
"""
|
5037
|
+
if parent and parent not in self.RI.rns:
|
5038
|
+
raise ValueError(f"Parent '{parent}' does not exist.")
|
5039
|
+
iids = set()
|
5040
|
+
for iid in unpack(newchildren):
|
5041
|
+
if iid not in self.RI.rns:
|
5042
|
+
raise ValueError(f"Item '{iid}' does not exist.")
|
5043
|
+
elif self.RI.move_pid_causes_recursive_loop(iid, parent):
|
5044
|
+
raise ValueError(f"Item '{iid}' causes recursive loop with parent '{parent}.")
|
5045
|
+
iids.add(iid)
|
5046
|
+
data_new_idxs, disp_new_idxs, event_data = self.MT.move_rows_adjust_options_dict(
|
5047
|
+
data_new_idxs={},
|
5048
|
+
data_old_idxs={},
|
5049
|
+
totalrows=None,
|
5050
|
+
disp_new_idxs={},
|
5051
|
+
move_data=True,
|
5052
|
+
move_heights=True,
|
5053
|
+
create_selections=select,
|
5054
|
+
event_data=None,
|
5055
|
+
node_change={"iids": iids, "new_par": parent, "index": index},
|
5026
5056
|
)
|
5027
5057
|
if undo:
|
5028
5058
|
self.MT.undo_stack.append(stored_event_dict(event_data))
|
@@ -1,15 +1,15 @@
|
|
1
|
-
tksheet/__init__.py,sha256=
|
1
|
+
tksheet/__init__.py,sha256=3Ue-5hmalzD8JxLLXk1WoBPBWdZ3MWkFfs_3wx0S2w8,2533
|
2
2
|
tksheet/colors.py,sha256=dHhmdFuQDlwohDHsAfT9VdrKoSl_R33L72a3HCin5zo,51591
|
3
|
-
tksheet/column_headers.py,sha256
|
3
|
+
tksheet/column_headers.py,sha256=-i8LMCUW1UuKpyurWySJRyjiCqisgFrjm9l8U58bFAY,110720
|
4
4
|
tksheet/constants.py,sha256=4cpU_PmOgN0isBVPWwCwBwqD8Fxnu4HJgDSSjfxjiPo,25467
|
5
5
|
tksheet/find_window.py,sha256=aV2U-IDFL6xNRhF4VomdrXEML4qw6QBqlfrVskuiTNY,20954
|
6
6
|
tksheet/formatters.py,sha256=r2vjgmKs_xWBYlfqVhPPNKQc67zCawOIl4dp4XAEzYg,10182
|
7
|
-
tksheet/functions.py,sha256=
|
8
|
-
tksheet/main_table.py,sha256=
|
7
|
+
tksheet/functions.py,sha256=O74jt9Kq-JgtWaI7fHBXbIbCTdi79B3eHidR-wfiAZ0,56585
|
8
|
+
tksheet/main_table.py,sha256=awMX6ABc_LW-gzhZh9MKnyMv9-ZKpBEQUcEylwKjVMA,368162
|
9
9
|
tksheet/menus.py,sha256=sRHZRgnYWddBtlzvbyWFSN2cVhlmUWyA9zf4vpqun7I,19431
|
10
10
|
tksheet/other_classes.py,sha256=6LpexHAxj23ZweuL3a4yCcdMSj_iXP38S7WRNQAehe0,18354
|
11
|
-
tksheet/row_index.py,sha256=
|
12
|
-
tksheet/sheet.py,sha256=
|
11
|
+
tksheet/row_index.py,sha256=wmoQylsUJQMnbONIndeRM_gW9eHJg-DdmX6MjxqlQlk,146892
|
12
|
+
tksheet/sheet.py,sha256=gYm2o_chSI9vCtxY4r5j9soKQXXWFgvuH2FrEd3IGc4,273109
|
13
13
|
tksheet/sheet_options.py,sha256=dhHY4jUULGXH2b_VOjoAfKXm3PAz7QL5CrVnHA0byho,14697
|
14
14
|
tksheet/sorting.py,sha256=zcZPpRtP1h_xJGtGkG3E43H7deKQFnh9cMwZ1B2-aGc,17502
|
15
15
|
tksheet/text_editor.py,sha256=Ksz4kT7TrCIzDhRZK9EM54M7R_5CvrwC1aeTrUPNOTg,8391
|
@@ -17,8 +17,8 @@ tksheet/themes.py,sha256=kUUCUmvgu8vUlzfVNk9a3BEbeBcU3asNwPB_u-OejCY,18471
|
|
17
17
|
tksheet/tksheet_types.py,sha256=qthH565jq60QCAeczvIWttIa4X5rFfLWPSwWBMDPilw,4611
|
18
18
|
tksheet/tooltip.py,sha256=TTWk3HW5Sltamish9GCnAECwZLa9Rm6QC8-RCDDtQnE,12374
|
19
19
|
tksheet/top_left_rectangle.py,sha256=A4wWL8PFl57Pn2Ek71rASCE1-bW844cTl7bgt4tLWzI,8499
|
20
|
-
tksheet-7.5.
|
21
|
-
tksheet-7.5.
|
22
|
-
tksheet-7.5.
|
23
|
-
tksheet-7.5.
|
24
|
-
tksheet-7.5.
|
20
|
+
tksheet-7.5.10.dist-info/licenses/LICENSE.txt,sha256=n1UvJHBr-AYNOf6ExICDsEggh9R7U4V4m_gH7FD-y-o,2305
|
21
|
+
tksheet-7.5.10.dist-info/METADATA,sha256=GI9d24XzxknLTYE8ITC4_dWUii4pG2r_P-jczO3Sb6I,9475
|
22
|
+
tksheet-7.5.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
23
|
+
tksheet-7.5.10.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
|
24
|
+
tksheet-7.5.10.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|