tksheet 7.1.21__py3-none-any.whl → 7.1.22__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/row_index.py CHANGED
@@ -32,6 +32,7 @@ from .functions import (
32
32
  event_dict,
33
33
  get_n2a,
34
34
  is_contiguous,
35
+ new_tk_event,
35
36
  num2alpha,
36
37
  pickled_event_dict,
37
38
  rounded_box_coords,
@@ -48,9 +49,10 @@ from .text_editor import (
48
49
  TextEditor,
49
50
  )
50
51
  from .vars import (
51
- USER_OS,
52
52
  rc_binding,
53
53
  symbols_set,
54
+ text_editor_close_bindings,
55
+ text_editor_newline_bindings,
54
56
  text_editor_to_unbind,
55
57
  )
56
58
 
@@ -136,6 +138,13 @@ class RowIndex(tk.Canvas):
136
138
  self.tree_reset()
137
139
  self.basic_bindings()
138
140
 
141
+ def event_generate(self, *args, **kwargs) -> None:
142
+ for arg in args:
143
+ if self.MT and arg in self.MT.event_linker:
144
+ self.MT.event_linker[arg]()
145
+ else:
146
+ super().event_generate(*args, **kwargs)
147
+
139
148
  def basic_bindings(self, enable: bool = True) -> None:
140
149
  if enable:
141
150
  self.bind("<Motion>", self.mouse_motion)
@@ -835,6 +844,7 @@ class RowIndex(tk.Canvas):
835
844
  event_data = event_dict(
836
845
  name="move_rows",
837
846
  sheet=self.PAR.name,
847
+ widget=self,
838
848
  boxes=self.MT.get_boxes(),
839
849
  selected=self.MT.selected,
840
850
  value=r,
@@ -846,6 +856,7 @@ class RowIndex(tk.Canvas):
846
856
  to_move=self.dragged_row.to_move,
847
857
  ),
848
858
  move_data=self.PAR.ops.row_drag_and_drop_perform,
859
+ move_heights=self.PAR.ops.row_drag_and_drop_perform,
849
860
  event_data=event_data,
850
861
  )
851
862
  event_data["moved"]["rows"] = {
@@ -1011,7 +1022,7 @@ class RowIndex(tk.Canvas):
1011
1022
  w = self.PAR.ops.default_row_index_width
1012
1023
  h = self.MT.min_row_height
1013
1024
  if self.get_cell_kwargs(datarn, key="dropdown") or self.get_cell_kwargs(datarn, key="checkbox"):
1014
- w += self.MT.index_txt_height
1025
+ w += self.MT.index_txt_height + 2
1015
1026
  if self.PAR.ops.treeview:
1016
1027
  if datarn in self.cell_options and "align" in self.cell_options[datarn]:
1017
1028
  align = self.cell_options[datarn]["align"]
@@ -1193,9 +1204,9 @@ class RowIndex(tk.Canvas):
1193
1204
  new_w = self.set_width_of_index_to_text(only_rows=only_rows, set_width=False)
1194
1205
  else:
1195
1206
  new_w = None
1196
- if new_w is not None and (sheet_w_x := floor(self.PAR.winfo_width() * 0.8)) < new_w:
1207
+ if new_w is not None and (sheet_w_x := floor(self.PAR.winfo_width() * 0.7)) < new_w:
1197
1208
  new_w = sheet_w_x
1198
- if new_w and (self.current_width - new_w > 15 or new_w - self.current_width > 5):
1209
+ if new_w and (self.current_width - new_w > 15 or new_w - self.current_width > 3):
1199
1210
  self.set_width(new_w, set_TL=True)
1200
1211
  return True
1201
1212
  return False
@@ -1861,24 +1872,19 @@ class RowIndex(tk.Canvas):
1861
1872
  self.itemconfig(self.text_editor.canvas_id, state="normal")
1862
1873
  self.text_editor.open = True
1863
1874
  self.coords(self.text_editor.canvas_id, x, y)
1875
+ for b in text_editor_newline_bindings:
1876
+ self.text_editor.tktext.bind(b, self.text_editor_newline_binding)
1877
+ for b in text_editor_close_bindings:
1878
+ self.text_editor.tktext.bind(b, self.close_text_editor)
1864
1879
  if not dropdown:
1865
1880
  self.text_editor.tktext.focus_set()
1866
1881
  self.text_editor.window.scroll_to_bottom()
1867
- self.text_editor.tktext.bind("<Alt-Return>", lambda _x: self.text_editor_newline_binding(r=r))
1868
- self.text_editor.tktext.bind("<Alt-KP_Enter>", lambda _x: self.text_editor_newline_binding(r=r))
1869
- if USER_OS == "darwin":
1870
- self.text_editor.tktext.bind("<Option-Return>", lambda _x: self.text_editor_newline_binding(r=r))
1882
+ self.text_editor.tktext.bind("<FocusOut>", self.close_text_editor)
1871
1883
  for key, func in self.MT.text_editor_user_bound_keys.items():
1872
1884
  self.text_editor.tktext.bind(key, func)
1873
- self.text_editor.tktext.bind("<Tab>", lambda _x: self.close_text_editor((r, "Tab")))
1874
- self.text_editor.tktext.bind("<Return>", lambda _x: self.close_text_editor((r, "Return")))
1875
- self.text_editor.tktext.bind("<KP_Enter>", lambda _x: self.close_text_editor((r, "Return")))
1876
- if not dropdown:
1877
- self.text_editor.tktext.bind("<FocusOut>", lambda _x: self.close_text_editor((r, "FocusOut")))
1878
- self.text_editor.tktext.bind("<Escape>", lambda _x: self.close_text_editor((r, "Escape")))
1879
1885
  return True
1880
1886
 
1881
- def text_editor_newline_binding(self, r=0, c=0, event: object = None, check_lines=True):
1887
+ def text_editor_newline_binding(self, event: object = None, check_lines=True):
1882
1888
  if not self.height_resizing_enabled:
1883
1889
  return
1884
1890
  curr_height = self.text_editor.window.winfo_height()
@@ -1892,6 +1898,7 @@ class RowIndex(tk.Canvas):
1892
1898
  )
1893
1899
  > curr_height
1894
1900
  ):
1901
+ r = self.text_editor.row
1895
1902
  new_height = curr_height + self.MT.index_xtra_lines_increment
1896
1903
  space_bot = self.MT.get_space_bot(r)
1897
1904
  if new_height > space_bot:
@@ -1907,14 +1914,14 @@ class RowIndex(tk.Canvas):
1907
1914
  if anchor == "nw":
1908
1915
  self.coords(
1909
1916
  self.dropdown.canvas_id,
1910
- self.MT.col_positions[c],
1917
+ 0,
1911
1918
  self.MT.row_positions[r] + text_editor_h - 1,
1912
1919
  )
1913
1920
  self.itemconfig(self.dropdown.canvas_id, anchor=anchor, height=win_h)
1914
1921
  elif anchor == "sw":
1915
1922
  self.coords(
1916
1923
  self.dropdown.canvas_id,
1917
- self.MT.col_positions[c],
1924
+ 0,
1918
1925
  self.MT.row_positions[r],
1919
1926
  )
1920
1927
  self.itemconfig(self.dropdown.canvas_id, anchor=anchor, height=win_h)
@@ -1968,29 +1975,32 @@ class RowIndex(tk.Canvas):
1968
1975
  self.focus_set()
1969
1976
 
1970
1977
  # r is displayed row
1971
- def close_text_editor(
1972
- self,
1973
- editor_info: tuple | None = None,
1974
- ) -> str | None:
1975
- focused = self.focus_get()
1978
+ def close_text_editor(self, event: tk.Event) -> Literal["break"] | None:
1979
+ # checking if text editor should be closed or not
1980
+ # errors if __tk_filedialog is open
1981
+ try:
1982
+ focused = self.focus_get()
1983
+ except Exception:
1984
+ focused = None
1976
1985
  try:
1977
1986
  if focused == self.text_editor.tktext.rc_popup_menu:
1978
1987
  return "break"
1979
1988
  except Exception:
1980
1989
  pass
1981
- if focused is None and editor_info:
1990
+ if focused is None:
1982
1991
  return "break"
1983
- if editor_info is not None and len(editor_info) >= 2 and editor_info[1] == "Escape":
1992
+ if event.keysym == "Escape":
1984
1993
  self.hide_text_editor_and_dropdown()
1985
1994
  return
1986
1995
  text_editor_value = self.text_editor.get()
1987
- r = editor_info[0]
1996
+ r = self.text_editor.row
1988
1997
  datarn = r if self.MT.all_rows_displayed else self.MT.displayed_rows[r]
1989
1998
  event_data = event_dict(
1990
1999
  name="end_edit_index",
1991
2000
  sheet=self.PAR.name,
2001
+ widget=self,
1992
2002
  cells_index={datarn: self.get_cell_data(datarn)},
1993
- key=editor_info[1] if len(editor_info) >= 2 else "FocusOut",
2003
+ key=event.keysym,
1994
2004
  value=text_editor_value,
1995
2005
  loc=r,
1996
2006
  row=r,
@@ -2014,7 +2024,7 @@ class RowIndex(tk.Canvas):
2014
2024
  try_binding(self.extra_end_edit_cell_func, event_data)
2015
2025
  self.MT.recreate_all_selection_boxes()
2016
2026
  self.hide_text_editor_and_dropdown()
2017
- if editor_info[1] != "FocusOut":
2027
+ if event.keysym != "FocusOut":
2018
2028
  self.focus_set()
2019
2029
  return "break"
2020
2030
 
@@ -2151,6 +2161,7 @@ class RowIndex(tk.Canvas):
2151
2161
  event_data = event_dict(
2152
2162
  name="end_edit_index",
2153
2163
  sheet=self.PAR.name,
2164
+ widget=self,
2154
2165
  cells_header={datarn: pre_edit_value},
2155
2166
  key="??",
2156
2167
  value=selection,
@@ -2182,7 +2193,7 @@ class RowIndex(tk.Canvas):
2182
2193
  def mouseclick_outside_editor_or_dropdown(self, inside: bool = False):
2183
2194
  closed_dd_coords = self.dropdown.get_coords()
2184
2195
  if self.text_editor.open:
2185
- self.close_text_editor((self.text_editor.row, "ButtonPress-1"))
2196
+ self.close_text_editor(new_tk_event("ButtonPress-1"))
2186
2197
  if closed_dd_coords is not None:
2187
2198
  self.hide_dropdown_window()
2188
2199
  if inside:
@@ -2220,6 +2231,7 @@ class RowIndex(tk.Canvas):
2220
2231
  event_data = event_dict(
2221
2232
  name="edit_index",
2222
2233
  sheet=self.PAR.name,
2234
+ widget=self,
2223
2235
  cells_index={datarn: self.get_cell_data(datarn)},
2224
2236
  boxes=self.MT.get_boxes(),
2225
2237
  selected=self.MT.selected,
@@ -2374,6 +2386,7 @@ class RowIndex(tk.Canvas):
2374
2386
  event_data = event_dict(
2375
2387
  name="end_edit_index",
2376
2388
  sheet=self.PAR.name,
2389
+ widget=self,
2377
2390
  cells_index={datarn: pre_edit_value},
2378
2391
  key="??",
2379
2392
  value=value,
@@ -2427,7 +2440,7 @@ class RowIndex(tk.Canvas):
2427
2440
 
2428
2441
  def get_treeview_indent(self, iid: str) -> int:
2429
2442
  if isinstance(self.PAR.ops.treeview_indent, str):
2430
- indent = self.MT.index_txt_height * int(self.PAR.ops.treeview_indent)
2443
+ indent = self.MT.index_txt_width * int(self.PAR.ops.treeview_indent)
2431
2444
  else:
2432
2445
  indent = self.PAR.ops.treeview_indent
2433
2446
  return indent * max(self.get_node_level(self.tree[iid]))