tksheet 7.1.7__py3-none-any.whl → 7.1.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 CHANGED
@@ -4,7 +4,7 @@
4
4
  tksheet - A Python tkinter table widget
5
5
  """
6
6
 
7
- __version__ = "7.1.7"
7
+ __version__ = "7.1.9"
8
8
 
9
9
  from .colors import (
10
10
  color_map,
@@ -35,13 +35,13 @@ from .functions import (
35
35
  alpha2idx,
36
36
  alpha2num,
37
37
  consecutive_chunks,
38
+ consecutive_ranges,
38
39
  data_to_displayed_idxs,
39
40
  displayed_to_data_idxs,
40
41
  dropdown_search_function,
41
42
  event_dict,
42
43
  get_checkbox_dict,
43
44
  get_checkbox_kwargs,
44
- rounded_box_coords,
45
45
  get_dropdown_dict,
46
46
  get_dropdown_kwargs,
47
47
  get_index_of_gap_in_sorted_integer_seq_forward,
@@ -53,12 +53,10 @@ from .functions import (
53
53
  move_elements_by_mapping,
54
54
  move_elements_to,
55
55
  num2alpha,
56
+ rounded_box_coords,
56
57
  span_dict,
57
58
  tksheet_type_error,
58
59
  )
59
- from .listbox import (
60
- ListBox,
61
- )
62
60
  from .main_table import MainTable
63
61
  from .other_classes import (
64
62
  DotDict,
tksheet/column_headers.py CHANGED
@@ -23,9 +23,9 @@ from .functions import (
23
23
  consecutive_ranges,
24
24
  ev_stack_dict,
25
25
  event_dict,
26
- rounded_box_coords,
27
26
  get_n2a,
28
27
  is_contiguous,
28
+ rounded_box_coords,
29
29
  try_binding,
30
30
  )
31
31
  from .other_classes import (
@@ -41,6 +41,7 @@ from .vars import (
41
41
  USER_OS,
42
42
  rc_binding,
43
43
  symbols_set,
44
+ text_editor_to_unbind,
44
45
  )
45
46
 
46
47
 
@@ -942,7 +943,7 @@ class ColumnHeaders(tk.Canvas):
942
943
  y1,
943
944
  x2,
944
945
  y2,
945
- radius=9 if self.PAR.ops.rounded_boxes else 0,
946
+ radius=8 if self.PAR.ops.rounded_boxes else 0,
946
947
  )
947
948
  if isinstance(iid, int):
948
949
  self.coords(iid, coords)
@@ -1663,6 +1664,7 @@ class ColumnHeaders(tk.Canvas):
1663
1664
  key=extra_func_key,
1664
1665
  value=text,
1665
1666
  loc=c,
1667
+ column=c,
1666
1668
  boxes=self.MT.get_boxes(),
1667
1669
  selected=self.MT.selected,
1668
1670
  )
@@ -1726,12 +1728,14 @@ class ColumnHeaders(tk.Canvas):
1726
1728
  self.text_editor.tktext.focus_set()
1727
1729
  self.text_editor.window.scroll_to_bottom()
1728
1730
  self.text_editor.tktext.bind("<Alt-Return>", lambda _x: self.text_editor_newline_binding(c=c))
1731
+ self.text_editor.tktext.bind("<Alt-KP_Enter>", lambda _x: self.text_editor_newline_binding(c=c))
1729
1732
  if USER_OS == "darwin":
1730
1733
  self.text_editor.tktext.bind("<Option-Return>", lambda _x: self.text_editor_newline_binding(c=c))
1731
1734
  for key, func in self.MT.text_editor_user_bound_keys.items():
1732
1735
  self.text_editor.tktext.bind(key, func)
1733
1736
  self.text_editor.tktext.bind("<Tab>", lambda _x: self.close_text_editor((c, "Tab")))
1734
1737
  self.text_editor.tktext.bind("<Return>", lambda _x: self.close_text_editor((c, "Return")))
1738
+ self.text_editor.tktext.bind("<KP_Enter>", lambda _x: self.close_text_editor((c, "Return")))
1735
1739
  if not dropdown:
1736
1740
  self.text_editor.tktext.bind("<FocusOut>", lambda _x: self.close_text_editor((c, "FocusOut")))
1737
1741
  self.text_editor.tktext.bind("<Escape>", lambda _x: self.close_text_editor((c, "Escape")))
@@ -1827,8 +1831,8 @@ class ColumnHeaders(tk.Canvas):
1827
1831
 
1828
1832
  def hide_text_editor(self, reason: None | str = None) -> None:
1829
1833
  if self.text_editor.open:
1830
- for b in ("<Alt-Return>", "<Option-Return>", "<Tab>", "<Return>", "<FocusOut>", "<Escape>"):
1831
- self.text_editor.tktext.unbind(b)
1834
+ for binding in text_editor_to_unbind:
1835
+ self.text_editor.tktext.unbind(binding)
1832
1836
  self.itemconfig(self.text_editor.canvas_id, state="hidden")
1833
1837
  self.text_editor.open = False
1834
1838
  if reason == "Escape":
@@ -1862,6 +1866,7 @@ class ColumnHeaders(tk.Canvas):
1862
1866
  key=editor_info[1] if len(editor_info) >= 2 else "FocusOut",
1863
1867
  value=text_editor_value,
1864
1868
  loc=c,
1869
+ column=c,
1865
1870
  boxes=self.MT.get_boxes(),
1866
1871
  selected=self.MT.selected,
1867
1872
  )
@@ -1970,6 +1975,7 @@ class ColumnHeaders(tk.Canvas):
1970
1975
  sheet=self.PAR.name,
1971
1976
  value=self.text_editor.get(),
1972
1977
  loc=c,
1978
+ column=c,
1973
1979
  boxes=self.MT.get_boxes(),
1974
1980
  selected=self.MT.selected,
1975
1981
  ),
@@ -2005,6 +2011,7 @@ class ColumnHeaders(tk.Canvas):
2005
2011
  key="??",
2006
2012
  value=selection,
2007
2013
  loc=c,
2014
+ column=c,
2008
2015
  boxes=self.MT.get_boxes(),
2009
2016
  selected=self.MT.selected,
2010
2017
  )
@@ -2230,6 +2237,7 @@ class ColumnHeaders(tk.Canvas):
2230
2237
  key="??",
2231
2238
  value=value,
2232
2239
  loc=c,
2240
+ column=c,
2233
2241
  boxes=self.MT.get_boxes(),
2234
2242
  selected=self.MT.selected,
2235
2243
  )
tksheet/functions.py CHANGED
@@ -102,6 +102,8 @@ def event_dict(
102
102
  key: None | str = None,
103
103
  value: object = None,
104
104
  loc: None | int | tuple[int] = None,
105
+ row: None | int = None,
106
+ column: None | int = None,
105
107
  resized_rows: None | dict = None,
106
108
  resized_columns: None | dict = None,
107
109
  # resized_index: None, dict] = None,
@@ -147,6 +149,8 @@ def event_dict(
147
149
  key="" if key is None else key,
148
150
  value=None if value is None else value,
149
151
  loc=tuple() if loc is None else loc,
152
+ row=row,
153
+ column=column,
150
154
  resized=DotDict(
151
155
  rows=DotDict() if resized_rows is None else resized_rows,
152
156
  columns=DotDict() if resized_columns is None else resized_columns,
@@ -403,8 +407,8 @@ def index_exists(seq: Sequence[object], index: int) -> bool:
403
407
 
404
408
  def move_elements_by_mapping(
405
409
  seq: list[object],
406
- new_idxs: dict,
407
- old_idxs: dict,
410
+ new_idxs: dict[int, int],
411
+ old_idxs: dict[int, int],
408
412
  ) -> list[object]:
409
413
  # move elements of a list around, displacing
410
414
  # other elements based on mapping
@@ -472,8 +476,7 @@ def get_new_indexes(
472
476
 
473
477
 
474
478
  def insert_items(seq: list | tuple, to_insert: dict, seq_len_func: Callable | None = None) -> list:
475
- # faster method of inserting many items into a list
476
- # using a dict of reverse sorted order of
479
+ # inserts many items into a list using a dict of reverse sorted order of
477
480
  # {index: value, index: value, ...}
478
481
  res = []
479
482
  extended = 0
@@ -611,7 +614,7 @@ def try_binding(
611
614
  event: dict,
612
615
  new_name: None | str = None,
613
616
  ) -> bool:
614
- if binding is not None:
617
+ if binding:
615
618
  try:
616
619
  if new_name is None:
617
620
  binding(event)