tksheet 7.1.3__py3-none-any.whl → 7.1.5__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
@@ -191,8 +191,7 @@ class RowIndex(tk.Canvas):
191
191
  self.toggle_select_row(r, redraw=True)
192
192
  if self.MT.rc_popup_menus_enabled:
193
193
  popup_menu = self.ri_rc_popup_menu
194
- if self.extra_rc_func is not None:
195
- self.extra_rc_func(event)
194
+ try_binding(self.extra_rc_func, event)
196
195
  if popup_menu is not None:
197
196
  self.popup_menu_loc = r
198
197
  popup_menu.tk_popup(event.x_root, event.y_root)
@@ -212,10 +211,9 @@ class RowIndex(tk.Canvas):
212
211
  self.being_drawn_item = True
213
212
  self.being_drawn_item = self.add_selection(r, set_as_current=True, run_binding_func=False)
214
213
  self.MT.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
215
- if self.ctrl_selection_binding_func is not None:
216
- self.ctrl_selection_binding_func(
217
- self.MT.get_select_event(being_drawn_item=self.being_drawn_item),
218
- )
214
+ sel_event = self.MT.get_select_event(being_drawn_item=self.being_drawn_item)
215
+ try_binding(self.ctrl_selection_binding_func, sel_event)
216
+ self.PAR.emit_event("<<SheetSelect>>", data=sel_event)
219
217
  elif r_selected:
220
218
  self.MT.deselect(r=r)
221
219
  elif not self.MT.ctrl_select_enabled:
@@ -246,10 +244,9 @@ class RowIndex(tk.Canvas):
246
244
  set_as_current=True,
247
245
  )
248
246
  self.MT.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
249
- if self.ctrl_selection_binding_func is not None:
250
- self.ctrl_selection_binding_func(
251
- self.MT.get_select_event(being_drawn_item=self.being_drawn_item),
252
- )
247
+ sel_event = self.MT.get_select_event(being_drawn_item=self.being_drawn_item)
248
+ try_binding(self.ctrl_selection_binding_func, sel_event)
249
+ self.PAR.emit_event("<<SheetSelect>>", data=sel_event)
253
250
  elif r_selected:
254
251
  self.dragged_row = DraggedRowColumn(
255
252
  dragged=r,
@@ -269,15 +266,16 @@ class RowIndex(tk.Canvas):
269
266
  if self.MT.selected and self.MT.selected.type_ == "rows":
270
267
  r_to_sel, c_to_sel = self.MT.selected.row, self.MT.selected.column
271
268
  self.MT.deselect("all", redraw=False)
272
- self.being_drawn_item = self.MT.create_selection_box(*self.get_shift_select_box(r, r_to_sel))
269
+ self.being_drawn_item = self.MT.create_selection_box(
270
+ *self.get_shift_select_box(r, r_to_sel), "rows"
271
+ )
273
272
  self.MT.set_currently_selected(r_to_sel, c_to_sel, self.being_drawn_item)
274
273
  else:
275
274
  self.being_drawn_item = self.select_row(r, run_binding_func=False)
276
275
  self.MT.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
277
- if self.shift_selection_binding_func is not None:
278
- self.shift_selection_binding_func(
279
- self.MT.get_select_event(being_drawn_item=self.being_drawn_item),
280
- )
276
+ sel_event = self.MT.get_select_event(being_drawn_item=self.being_drawn_item)
277
+ try_binding(self.shift_selection_binding_func, sel_event)
278
+ self.PAR.emit_event("<<SheetSelect>>", data=sel_event)
281
279
  elif r_selected:
282
280
  self.dragged_row = DraggedRowColumn(
283
281
  dragged=r,
@@ -365,8 +363,7 @@ class RowIndex(tk.Canvas):
365
363
  self.MT.current_cursor = "hand2"
366
364
  if not mouse_over_resize and not mouse_over_selected:
367
365
  self.MT.reset_mouse_motion_creations()
368
- if self.extra_motion_func is not None:
369
- self.extra_motion_func(event)
366
+ try_binding(self.extra_motion_func, event)
370
367
 
371
368
  def double_b1(self, event: object):
372
369
  self.mouseclick_outside_editor_or_dropdown_all_canvases(inside=True)
@@ -410,8 +407,7 @@ class RowIndex(tk.Canvas):
410
407
  self.PAR.item(iid, open_=iid not in self.tree_open_ids)
411
408
  self.rsz_h = None
412
409
  self.mouse_motion(event)
413
- if self.extra_double_b1_func is not None:
414
- self.extra_double_b1_func(event)
410
+ try_binding(self.extra_double_b1_func, event)
415
411
 
416
412
  def b1_press(self, event: object):
417
413
  self.MT.unbind("<MouseWheel>")
@@ -484,8 +480,7 @@ class RowIndex(tk.Canvas):
484
480
  self.being_drawn_item = self.select_row(r, redraw=True)
485
481
  elif self.MT.toggle_selection_enabled:
486
482
  self.toggle_select_row(r, redraw=True)
487
- if self.extra_b1_press_func is not None:
488
- self.extra_b1_press_func(event)
483
+ try_binding(self.extra_b1_press_func, event)
489
484
 
490
485
  def b1_motion(self, event: object):
491
486
  x1, y1, x2, y2 = self.MT.get_canvas_visible_area()
@@ -576,16 +571,14 @@ class RowIndex(tk.Canvas):
576
571
  else:
577
572
  self.being_drawn_item = self.select_row(self.MT.selected.row, run_binding_func=False)
578
573
  need_redraw = True
579
- if self.drag_selection_binding_func is not None:
580
- self.drag_selection_binding_func(
581
- self.MT.get_select_event(being_drawn_item=self.being_drawn_item),
582
- )
574
+ sel_event = self.MT.get_select_event(being_drawn_item=self.being_drawn_item)
575
+ try_binding(self.drag_selection_binding_func, sel_event)
576
+ self.PAR.emit_event("<<SheetSelect>>", data=sel_event)
583
577
  if self.scroll_if_event_offscreen(event):
584
578
  need_redraw = True
585
579
  if need_redraw:
586
580
  self.MT.main_table_redraw_grid_and_text(redraw_header=False, redraw_row_index=True)
587
- if self.extra_b1_motion_func is not None:
588
- self.extra_b1_motion_func(event)
581
+ try_binding(self.extra_b1_motion_func, event)
589
582
 
590
583
  def get_b1_motion_box(self, start_row, end_row):
591
584
  if end_row >= start_row:
@@ -637,10 +630,9 @@ class RowIndex(tk.Canvas):
637
630
  self.MT.hide_selection_box(self.MT.selected.fill_iid)
638
631
  self.being_drawn_item = self.add_selection(box[0], run_binding_func=False)
639
632
  need_redraw = True
640
- if self.drag_selection_binding_func is not None:
641
- self.drag_selection_binding_func(
642
- self.MT.get_select_event(being_drawn_item=self.being_drawn_item),
643
- )
633
+ sel_event = self.MT.get_select_event(being_drawn_item=self.being_drawn_item)
634
+ try_binding(self.drag_selection_binding_func, sel_event)
635
+ self.PAR.emit_event("<<SheetSelect>>", data=sel_event)
644
636
  if self.scroll_if_event_offscreen(event):
645
637
  need_redraw = True
646
638
  if need_redraw:
@@ -775,10 +767,9 @@ class RowIndex(tk.Canvas):
775
767
  c_to_sel,
776
768
  item=self.MT.create_selection_box(*to_sel, set_current=False),
777
769
  )
778
- if self.drag_selection_binding_func is not None:
779
- self.drag_selection_binding_func(
780
- self.MT.get_select_event(being_drawn_item=self.being_drawn_item),
781
- )
770
+ sel_event = self.MT.get_select_event(being_drawn_item=self.being_drawn_item)
771
+ try_binding(self.drag_selection_binding_func, sel_event)
772
+ self.PAR.emit_event("<<SheetSelect>>", data=sel_event)
782
773
  self.MT.bind("<MouseWheel>", self.MT.mousewheel)
783
774
  if self.height_resizing_enabled and self.rsz_h is not None and self.currently_resizing_height:
784
775
  self.currently_resizing_height = False
@@ -886,8 +877,7 @@ class RowIndex(tk.Canvas):
886
877
  self.rsz_w = None
887
878
  self.rsz_h = None
888
879
  self.mouse_motion(event)
889
- if self.extra_b1_release_func is not None:
890
- self.extra_b1_release_func(event)
880
+ try_binding(self.extra_b1_release_func, event)
891
881
 
892
882
  def event_over_tree_arrow(
893
883
  self,
@@ -1738,7 +1728,7 @@ class RowIndex(tk.Canvas):
1738
1728
  text = event.char
1739
1729
  else:
1740
1730
  return False
1741
- if self.extra_begin_edit_cell_func is not None:
1731
+ if self.extra_begin_edit_cell_func:
1742
1732
  try:
1743
1733
  text = self.extra_begin_edit_cell_func(
1744
1734
  event_dict(
@@ -1768,9 +1758,9 @@ class RowIndex(tk.Canvas):
1768
1758
  if not self.MT.see(r=r, c=0, keep_yscroll=True, check_cell_visibility=True):
1769
1759
  self.MT.refresh()
1770
1760
  x = 0
1771
- y = self.MT.row_positions[r] + 1
1761
+ y = self.MT.row_positions[r]
1772
1762
  w = self.current_width + 1
1773
- h = self.MT.row_positions[r + 1] - y
1763
+ h = self.MT.row_positions[r + 1] - y + 1
1774
1764
  datarn = r if self.MT.all_rows_displayed else self.MT.displayed_rows[r]
1775
1765
  if text is None:
1776
1766
  text = self.get_cell_data(datarn, none_to_empty_str=True, redirect_int=True)
@@ -1786,12 +1776,12 @@ class RowIndex(tk.Canvas):
1786
1776
  }
1787
1777
  ),
1788
1778
  "sheet_ops": self.PAR.ops,
1789
- "border_color": self.PAR.ops.table_selected_cells_border_fg,
1779
+ "border_color": self.PAR.ops.index_selected_rows_bg,
1790
1780
  "text": text,
1791
1781
  "state": state,
1792
1782
  "width": w,
1793
1783
  "height": h,
1794
- "show_border": self.PAR.ops.show_selected_cells_border,
1784
+ "show_border": True,
1795
1785
  "bg": bg,
1796
1786
  "fg": fg,
1797
1787
  "align": self.get_cell_align(r),
@@ -1821,42 +1811,45 @@ class RowIndex(tk.Canvas):
1821
1811
  return True
1822
1812
 
1823
1813
  def text_editor_newline_binding(self, r=0, c=0, event: object = None, check_lines=True):
1824
- if self.height_resizing_enabled:
1825
- curr_height = self.text_editor.window.winfo_height()
1826
- if (
1827
- not check_lines
1828
- or self.MT.get_lines_cell_height(
1829
- self.text_editor.window.get_num_lines() + 1,
1830
- font=self.PAR.ops.index_font,
1831
- )
1832
- > curr_height
1833
- ):
1834
- new_height = curr_height + self.MT.index_xtra_lines_increment
1835
- space_bot = self.MT.get_space_bot(r)
1836
- if new_height > space_bot:
1837
- new_height = space_bot
1838
- if new_height != curr_height:
1839
- self.set_row_height(r, new_height)
1840
- self.MT.refresh()
1841
- self.text_editor.window.config(height=new_height)
1842
- self.coords(self.text_editor.canvas_id, 0, self.MT.row_positions[r] + 1)
1843
- if self.dropdown.open and self.dropdown.get_coords() == r:
1844
- text_editor_h = self.text_editor.window.winfo_height()
1845
- win_h, anchor = self.get_dropdown_height_anchor(r, text_editor_h)
1846
- if anchor == "nw":
1847
- self.coords(
1848
- self.dropdown.canvas_id,
1849
- self.MT.col_positions[c],
1850
- self.MT.row_positions[r] + text_editor_h - 1,
1851
- )
1852
- self.itemconfig(self.dropdown.canvas_id, anchor=anchor, height=win_h)
1853
- elif anchor == "sw":
1854
- self.coords(
1855
- self.dropdown.canvas_id,
1856
- self.MT.col_positions[c],
1857
- self.MT.row_positions[r],
1858
- )
1859
- self.itemconfig(self.dropdown.canvas_id, anchor=anchor, height=win_h)
1814
+ if not self.height_resizing_enabled:
1815
+ return
1816
+ curr_height = self.text_editor.window.winfo_height()
1817
+ if curr_height < self.MT.min_row_height:
1818
+ return
1819
+ if (
1820
+ not check_lines
1821
+ or self.MT.get_lines_cell_height(
1822
+ self.text_editor.window.get_num_lines() + 1,
1823
+ font=self.PAR.ops.index_font,
1824
+ )
1825
+ > curr_height
1826
+ ):
1827
+ new_height = curr_height + self.MT.index_xtra_lines_increment
1828
+ space_bot = self.MT.get_space_bot(r)
1829
+ if new_height > space_bot:
1830
+ new_height = space_bot
1831
+ if new_height != curr_height:
1832
+ self.set_row_height(r, new_height)
1833
+ self.MT.refresh()
1834
+ self.text_editor.window.config(height=new_height)
1835
+ self.coords(self.text_editor.canvas_id, 0, self.MT.row_positions[r] + 1)
1836
+ if self.dropdown.open and self.dropdown.get_coords() == r:
1837
+ text_editor_h = self.text_editor.window.winfo_height()
1838
+ win_h, anchor = self.get_dropdown_height_anchor(r, text_editor_h)
1839
+ if anchor == "nw":
1840
+ self.coords(
1841
+ self.dropdown.canvas_id,
1842
+ self.MT.col_positions[c],
1843
+ self.MT.row_positions[r] + text_editor_h - 1,
1844
+ )
1845
+ self.itemconfig(self.dropdown.canvas_id, anchor=anchor, height=win_h)
1846
+ elif anchor == "sw":
1847
+ self.coords(
1848
+ self.dropdown.canvas_id,
1849
+ self.MT.col_positions[c],
1850
+ self.MT.row_positions[r],
1851
+ )
1852
+ self.itemconfig(self.dropdown.canvas_id, anchor=anchor, height=win_h)
1860
1853
 
1861
1854
  def refresh_open_window_positions(self):
1862
1855
  if self.text_editor.open:
@@ -1993,33 +1986,32 @@ class RowIndex(tk.Canvas):
1993
1986
  if not self.open_text_editor(event=event, r=r, dropdown=True):
1994
1987
  return
1995
1988
  win_h, anchor = self.get_dropdown_height_anchor(r)
1989
+ win_w = self.current_width
1996
1990
  ypos = self.MT.row_positions[r + 1]
1997
- if self.dropdown.window is not None:
1998
- self.dropdown.window.search_function = kwargs["search_function"]
1999
- self.dropdown.window.r = r
2000
- self.dropdown.window.row = -1
2001
- self.dropdown.window.set_options()
2002
- self.dropdown.window.values(kwargs["values"])
2003
- if not self.dropdown.open:
2004
- self.itemconfig(self.dropdown.canvas_id, state="normal")
1991
+ reset_kwargs = {
1992
+ "r": r,
1993
+ "c": 0,
1994
+ "width": win_w,
1995
+ "height": win_h,
1996
+ "font": self.PAR.ops.index_font,
1997
+ "ops": self.PAR.ops,
1998
+ "outline_color": self.PAR.ops.popup_menu_fg,
1999
+ "align": self.get_cell_align(r),
2000
+ "values": kwargs["values"],
2001
+ }
2002
+ if self.dropdown.window:
2003
+ self.dropdown.window.reset(**reset_kwargs)
2004
+ self.itemconfig(self.dropdown.canvas_id, state="normal")
2005
2005
  self.coords(self.dropdown.canvas_id, 0, ypos)
2006
2006
  else:
2007
2007
  self.dropdown.window = self.PAR.dropdown_class(
2008
- self.MT.winfo_toplevel(),
2009
- r,
2010
- 0,
2011
- width=self.current_width,
2012
- height=win_h,
2013
- font=self.PAR.ops.index_font,
2014
- ops=self.PAR.ops,
2015
- outline_color=self.PAR.ops.popup_menu_fg,
2016
- values=kwargs["values"],
2008
+ self.winfo_toplevel(),
2009
+ **reset_kwargs,
2010
+ single_index="r",
2017
2011
  close_dropdown_window=self.close_dropdown_window,
2018
2012
  search_function=kwargs["search_function"],
2019
2013
  arrowkey_RIGHT=self.MT.arrowkey_RIGHT,
2020
2014
  arrowkey_LEFT=self.MT.arrowkey_LEFT,
2021
- align="w",
2022
- single_index="r",
2023
2015
  )
2024
2016
  self.dropdown.canvas_id = self.create_window(
2025
2017
  (0, ypos),