tksheet 7.1.10__tar.gz → 7.1.11__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 (24) hide show
  1. {tksheet-7.1.10/tksheet.egg-info → tksheet-7.1.11}/PKG-INFO +1 -1
  2. {tksheet-7.1.10 → tksheet-7.1.11}/pyproject.toml +1 -1
  3. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/__init__.py +1 -1
  4. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/column_headers.py +13 -13
  5. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/main_table.py +26 -11
  6. {tksheet-7.1.10 → tksheet-7.1.11/tksheet.egg-info}/PKG-INFO +1 -1
  7. {tksheet-7.1.10 → tksheet-7.1.11}/LICENSE.txt +0 -0
  8. {tksheet-7.1.10 → tksheet-7.1.11}/README.md +0 -0
  9. {tksheet-7.1.10 → tksheet-7.1.11}/setup.cfg +0 -0
  10. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/colors.py +0 -0
  11. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/formatters.py +0 -0
  12. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/functions.py +0 -0
  13. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/other_classes.py +0 -0
  14. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/row_index.py +0 -0
  15. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/sheet.py +0 -0
  16. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/sheet_options.py +0 -0
  17. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/text_editor.py +0 -0
  18. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/themes.py +0 -0
  19. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/top_left_rectangle.py +0 -0
  20. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/types.py +0 -0
  21. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet/vars.py +0 -0
  22. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet.egg-info/SOURCES.txt +0 -0
  23. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet.egg-info/dependency_links.txt +0 -0
  24. {tksheet-7.1.10 → tksheet-7.1.11}/tksheet.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tksheet
3
- Version: 7.1.10
3
+ Version: 7.1.11
4
4
  Summary: Tkinter table / sheet 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 widget"
8
8
  readme = "README.md"
9
- version = "7.1.10"
9
+ version = "7.1.11"
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.1.10"
7
+ __version__ = "7.1.11"
8
8
 
9
9
  from .colors import (
10
10
  color_map,
@@ -4,6 +4,7 @@ import tkinter as tk
4
4
  from collections import defaultdict
5
5
  from collections.abc import (
6
6
  Callable,
7
+ Sequence,
7
8
  )
8
9
  from functools import (
9
10
  partial,
@@ -673,11 +674,11 @@ class ColumnHeaders(tk.Canvas):
673
674
 
674
675
  def show_drag_and_drop_indicators(
675
676
  self,
676
- xpos,
677
- y1,
678
- y2,
679
- cols,
680
- ):
677
+ xpos: float,
678
+ y1: float,
679
+ y2: float,
680
+ cols: Sequence[int],
681
+ ) -> None:
681
682
  self.hide_resize_and_ctrl_lines()
682
683
  self.create_resize_line(
683
684
  xpos,
@@ -698,13 +699,13 @@ class ColumnHeaders(tk.Canvas):
698
699
  delete_on_timer=False,
699
700
  )
700
701
 
701
- def hide_resize_and_ctrl_lines(self, ctrl_lines=True):
702
+ def hide_resize_and_ctrl_lines(self, ctrl_lines: bool = True) -> None:
702
703
  self.delete_resize_lines()
703
704
  self.MT.delete_resize_lines()
704
705
  if ctrl_lines:
705
706
  self.MT.delete_ctrl_outlines()
706
707
 
707
- def scroll_if_event_offscreen(self, event: object):
708
+ def scroll_if_event_offscreen(self, event: object) -> bool:
708
709
  xcheck = self.xview()
709
710
  need_redraw = False
710
711
  if event.x > self.winfo_width() and len(xcheck) > 1 and xcheck[1] < 1:
@@ -727,14 +728,14 @@ class ColumnHeaders(tk.Canvas):
727
728
  need_redraw = True
728
729
  return need_redraw
729
730
 
730
- def fix_xview(self):
731
+ def fix_xview(self) -> None:
731
732
  xcheck = self.xview()
732
733
  if xcheck and xcheck[0] < 0:
733
734
  self.MT.set_xviews("moveto", 0)
734
735
  elif len(xcheck) > 1 and xcheck[1] > 1:
735
736
  self.MT.set_xviews("moveto", 1)
736
737
 
737
- def event_over_dropdown(self, c, datacn, event: object, canvasx):
738
+ def event_over_dropdown(self, c: int, datacn: int, event: object, canvasx: float) -> bool:
738
739
  if (
739
740
  event.y < self.MT.header_txt_height + 5
740
741
  and self.get_cell_kwargs(datacn, key="dropdown")
@@ -744,7 +745,7 @@ class ColumnHeaders(tk.Canvas):
744
745
  return True
745
746
  return False
746
747
 
747
- def event_over_checkbox(self, c, datacn, event: object, canvasx):
748
+ def event_over_checkbox(self, c: int, datacn: int, event: object, canvasx: float) -> bool:
748
749
  if (
749
750
  event.y < self.MT.header_txt_height + 5
750
751
  and self.get_cell_kwargs(datacn, key="checkbox")
@@ -753,7 +754,7 @@ class ColumnHeaders(tk.Canvas):
753
754
  return True
754
755
  return False
755
756
 
756
- def b1_release(self, event: object):
757
+ def b1_release(self, event: object) -> None:
757
758
  if self.being_drawn_item is not None:
758
759
  to_sel = self.MT.coords_and_type(self.being_drawn_item)
759
760
  r_to_sel, c_to_sel = self.MT.selected.row, self.MT.selected.column
@@ -909,8 +910,7 @@ class ColumnHeaders(tk.Canvas):
909
910
 
910
911
  def select_col(self, c, redraw=False, run_binding_func=True):
911
912
  self.MT.deselect("all", redraw=False)
912
- box = (0, c, len(self.MT.row_positions) - 1, c + 1, "columns")
913
- fill_iid = self.MT.create_selection_box(*box)
913
+ fill_iid = self.MT.create_selection_box(0, c, len(self.MT.row_positions) - 1, c + 1, "columns")
914
914
  if redraw:
915
915
  self.MT.main_table_redraw_grid_and_text(redraw_header=True, redraw_row_index=True)
916
916
  if run_binding_func:
@@ -551,7 +551,10 @@ class MainTable(tk.Canvas):
551
551
  for r1, c1, r2, c2 in boxes:
552
552
  self.show_ctrl_outline(canvas="table", start_cell=(c1, r1), end_cell=(c2, r2))
553
553
  self.clipboard_clear()
554
- self.clipboard_append(s.getvalue())
554
+ if len(event_data["cells"]["table"]) == 1:
555
+ self.clipboard_append(next(iter(event_data["cells"]["table"].values())))
556
+ else:
557
+ self.clipboard_append(s.getvalue())
555
558
  self.update_idletasks()
556
559
  try_binding(self.extra_end_ctrl_c_func, event_data, "end_ctrl_c")
557
560
 
@@ -615,7 +618,10 @@ class MainTable(tk.Canvas):
615
618
  if event_data["cells"]["table"]:
616
619
  self.undo_stack.append(ev_stack_dict(event_data))
617
620
  self.clipboard_clear()
618
- self.clipboard_append(s.getvalue())
621
+ if len(event_data["cells"]["table"]) == 1:
622
+ self.clipboard_append(next(iter(event_data["cells"]["table"].values())))
623
+ else:
624
+ self.clipboard_append(s.getvalue())
619
625
  self.update_idletasks()
620
626
  self.refresh()
621
627
  for r1, c1, r2, c2 in boxes:
@@ -657,9 +663,11 @@ class MainTable(tk.Canvas):
657
663
  dialect = csv.Sniffer().sniff(data, delimiters=self.PAR.ops.from_clipboard_delimiters)
658
664
  except Exception:
659
665
  dialect = csv.excel_tab
660
- data = list(csv.reader(io.StringIO(data), dialect=dialect, skipinitialspace=True))
661
- if not data:
662
- return
666
+ if dialect.delimiter in data:
667
+ if not (data := list(csv.reader(io.StringIO(data), dialect=dialect, skipinitialspace=True))):
668
+ return
669
+ else:
670
+ data = [[data]]
663
671
  new_data_numcols = max(map(len, data))
664
672
  new_data_numrows = len(data)
665
673
  for rn, r in enumerate(data):
@@ -5657,7 +5665,7 @@ class MainTable(tk.Canvas):
5657
5665
  r = r1
5658
5666
  if c is None:
5659
5667
  c = c1
5660
- if r1 <= r and c1 <= c and r2 > r and c2 > c:
5668
+ if r1 <= r and c1 <= c and r2 >= r and c2 >= c:
5661
5669
  self.create_currently_selected_box(
5662
5670
  r,
5663
5671
  c,
@@ -5673,7 +5681,7 @@ class MainTable(tk.Canvas):
5673
5681
  c = box[1]
5674
5682
  for item, selection_box in self.get_selection_items(reverse=True):
5675
5683
  r1, c1, r2, c2 = selection_box.coords
5676
- if box == (r1, c1, r2, c2) and r1 <= r and c1 <= c and r2 > r and c2 > c:
5684
+ if box == (r1, c1, r2, c2) and r1 <= r and c1 <= c and r2 >= r and c2 >= c:
5677
5685
  self.create_currently_selected_box(
5678
5686
  r,
5679
5687
  c,
@@ -5686,7 +5694,7 @@ class MainTable(tk.Canvas):
5686
5694
  if r is not None and c is not None:
5687
5695
  for item, selection_box in self.get_selection_items(reverse=True):
5688
5696
  r1, c1, r2, c2 = selection_box.coords
5689
- if r1 <= r and c1 <= c and r2 > r and c2 > c:
5697
+ if r1 <= r and c1 <= c and r2 >= r and c2 >= c:
5690
5698
  self.create_currently_selected_box(
5691
5699
  r,
5692
5700
  c,
@@ -6057,9 +6065,16 @@ class MainTable(tk.Canvas):
6057
6065
  return
6058
6066
  for item, box in self.get_selection_items():
6059
6067
  r1, c1, r2, c2 = box.coords
6060
- if r1 >= len(self.row_positions) - 1 or c1 >= len(self.col_positions) - 1:
6061
- self.hide_selection_box(item)
6062
- continue
6068
+ if r1 >= len(self.row_positions) - 1:
6069
+ if len(self.row_positions) > 1:
6070
+ r1 = len(self.row_positions) - 2
6071
+ else:
6072
+ r1 = len(self.row_positions) - 1
6073
+ if c1 >= len(self.col_positions) - 1:
6074
+ if len(self.col_positions) > 1:
6075
+ c1 = len(self.col_positions) - 2
6076
+ else:
6077
+ c1 = len(self.col_positions) - 1
6063
6078
  if r2 > len(self.row_positions) - 1:
6064
6079
  r2 = len(self.row_positions) - 1
6065
6080
  if c2 > len(self.col_positions) - 1:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tksheet
3
- Version: 7.1.10
3
+ Version: 7.1.11
4
4
  Summary: Tkinter table / sheet widget
5
5
  Author-email: ragardner <github@ragardner.simplelogin.com>
6
6
  License: Copyright (c) 2019 ragardner and open source contributors
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes