tksheet 7.4.16__py3-none-any.whl → 7.4.18__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.4.16"
7
+ __version__ = "7.4.18"
8
8
 
9
9
  from .colors import (
10
10
  color_map,
tksheet/main_table.py CHANGED
@@ -150,6 +150,7 @@ class MainTable(tk.Canvas):
150
150
  "<<SelectAll>>": self.select_all,
151
151
  }
152
152
  self.enabled_bindings = set()
153
+ self.enabled_bindings_menu_entries = set()
153
154
  self.selection_box_ctr = 0
154
155
  self.disp_selection_fills = set()
155
156
  self.hidd_selection_fills = set()
@@ -2928,28 +2929,42 @@ class MainTable(tk.Canvas):
2928
2929
  ):
2929
2930
  menu.delete(0, "end")
2930
2931
  mnkwgs = get_menu_kwargs(self.PAR.ops)
2931
- if self.rc_popup_menus_enabled and self.CH.edit_cell_enabled:
2932
+ if (
2933
+ self.rc_popup_menus_enabled
2934
+ and self.CH.edit_cell_enabled
2935
+ and "edit_header" in self.enabled_bindings_menu_entries
2936
+ ):
2932
2937
  self.menu_add_command(
2933
2938
  self.CH.ch_rc_popup_menu,
2934
2939
  label=self.PAR.ops.edit_header_label,
2935
2940
  command=lambda: self.CH.open_cell(event="rc"),
2936
2941
  **mnkwgs,
2937
2942
  )
2938
- if self.rc_popup_menus_enabled and self.RI.edit_cell_enabled:
2943
+ if (
2944
+ self.rc_popup_menus_enabled
2945
+ and self.RI.edit_cell_enabled
2946
+ and "edit_index" in self.enabled_bindings_menu_entries
2947
+ ):
2939
2948
  self.menu_add_command(
2940
2949
  self.RI.ri_rc_popup_menu,
2941
2950
  label=self.PAR.ops.edit_index_label,
2942
2951
  command=lambda: self.RI.open_cell(event="rc"),
2943
2952
  **mnkwgs,
2944
2953
  )
2945
- if self.rc_popup_menus_enabled and self.edit_cell_enabled:
2954
+ if (
2955
+ self.rc_popup_menus_enabled
2956
+ and self.edit_cell_enabled
2957
+ and any(x in self.enabled_bindings_menu_entries for x in ("all", "edit_cell", "edit_bindings", "edit"))
2958
+ ):
2946
2959
  self.menu_add_command(
2947
2960
  self.rc_popup_menu,
2948
2961
  label=self.PAR.ops.edit_cell_label,
2949
2962
  command=lambda: self.open_cell(event="rc"),
2950
2963
  **mnkwgs,
2951
2964
  )
2952
- if self.cut_enabled:
2965
+ if self.cut_enabled and any(
2966
+ x in self.enabled_bindings_menu_entries for x in ("all", "cut", "edit_bindings", "edit")
2967
+ ):
2953
2968
  self.menu_add_command(
2954
2969
  self.rc_popup_menu,
2955
2970
  label=self.PAR.ops.cut_label,
@@ -2971,7 +2986,9 @@ class MainTable(tk.Canvas):
2971
2986
  command=self.ctrl_x,
2972
2987
  **mnkwgs,
2973
2988
  )
2974
- if self.copy_enabled:
2989
+ if self.copy_enabled and any(
2990
+ x in self.enabled_bindings_menu_entries for x in ("all", "copy", "edit_bindings", "edit")
2991
+ ):
2975
2992
  self.menu_add_command(
2976
2993
  self.rc_popup_menu,
2977
2994
  label=self.PAR.ops.copy_label,
@@ -2993,7 +3010,9 @@ class MainTable(tk.Canvas):
2993
3010
  command=self.ctrl_c,
2994
3011
  **mnkwgs,
2995
3012
  )
2996
- if self.paste_enabled:
3013
+ if self.paste_enabled and any(
3014
+ x in self.enabled_bindings_menu_entries for x in ("all", "paste", "edit_bindings", "edit")
3015
+ ):
2997
3016
  self.menu_add_command(
2998
3017
  self.rc_popup_menu,
2999
3018
  label=self.PAR.ops.paste_label,
@@ -3023,7 +3042,9 @@ class MainTable(tk.Canvas):
3023
3042
  command=self.ctrl_v,
3024
3043
  **mnkwgs,
3025
3044
  )
3026
- if self.delete_key_enabled:
3045
+ if self.delete_key_enabled and any(
3046
+ x in self.enabled_bindings_menu_entries for x in ("all", "paste", "edit_bindings", "edit")
3047
+ ):
3027
3048
  self.menu_add_command(
3028
3049
  self.rc_popup_menu,
3029
3050
  label=self.PAR.ops.delete_label,
@@ -3219,18 +3240,18 @@ class MainTable(tk.Canvas):
3219
3240
  **mnkwgs,
3220
3241
  )
3221
3242
 
3222
- def enable_bindings(self, bindings: Any) -> None:
3243
+ def enable_bindings(self, bindings: Any, menu: bool = True) -> None:
3223
3244
  if not bindings:
3224
- self._enable_binding("all")
3245
+ self._enable_binding("all", menu)
3225
3246
  elif isinstance(bindings, (list, tuple)):
3226
3247
  for binding in bindings:
3227
3248
  if isinstance(binding, (list, tuple)):
3228
3249
  for bind in binding:
3229
- self._enable_binding(bind.lower())
3250
+ self._enable_binding(bind.lower(), menu)
3230
3251
  elif isinstance(binding, str):
3231
- self._enable_binding(binding.lower())
3252
+ self._enable_binding(binding.lower(), menu)
3232
3253
  elif isinstance(bindings, str):
3233
- self._enable_binding(bindings.lower())
3254
+ self._enable_binding(bindings.lower(), menu)
3234
3255
  self.create_rc_menus()
3235
3256
 
3236
3257
  def disable_bindings(self, bindings: Any) -> None:
@@ -3247,7 +3268,7 @@ class MainTable(tk.Canvas):
3247
3268
  self._disable_binding(bindings)
3248
3269
  self.create_rc_menus()
3249
3270
 
3250
- def _enable_binding(self, binding: Binding) -> None:
3271
+ def _enable_binding(self, binding: Binding, menu: bool = True) -> None:
3251
3272
  if binding == "enable_all":
3252
3273
  binding = "all"
3253
3274
  if binding in (
@@ -3389,6 +3410,8 @@ class MainTable(tk.Canvas):
3389
3410
  if binding in ("ctrl_click_select", "ctrl_select"):
3390
3411
  self.ctrl_select_enabled = True
3391
3412
  self.enabled_bindings.add(binding)
3413
+ if menu:
3414
+ self.enabled_bindings_menu_entries.add(binding)
3392
3415
 
3393
3416
  def _tksheet_bind(self, bindings_key: str, func: Callable) -> None:
3394
3417
  for widget in (self, self.RI, self.CH, self.TL):
@@ -3400,8 +3423,10 @@ class MainTable(tk.Canvas):
3400
3423
  binding = "all"
3401
3424
  if binding == "all":
3402
3425
  self.enabled_bindings = set()
3426
+ self.enabled_bindings_menu_entries = set()
3403
3427
  else:
3404
3428
  self.enabled_bindings.discard(binding)
3429
+ self.enabled_bindings_menu_entries.discard(binding)
3405
3430
  if binding in (
3406
3431
  "all",
3407
3432
  "single",
@@ -7599,8 +7624,7 @@ class MainTable(tk.Canvas):
7599
7624
  self, datarn: int, datacn: int, event_data: EventDataDict
7600
7625
  ) -> tuple[Any, EventDataDict]:
7601
7626
  value = event_data.value
7602
- if self.edit_validation_func and (new_value := self.edit_validation_func(event_data)) is not None:
7603
- value = new_value
7627
+ if self.edit_validation_func and (value := self.edit_validation_func(event_data)) is not None:
7604
7628
  event_data["data"][(datarn, datacn)] = value
7605
7629
  event_data["value"] = value
7606
7630
  if self.bulk_table_edit_validation_func:
tksheet/sheet.py CHANGED
@@ -614,8 +614,8 @@ class Sheet(tk.Frame):
614
614
 
615
615
  # Bindings and Functionality
616
616
 
617
- def enable_bindings(self, *bindings: Binding) -> Sheet:
618
- self.MT.enable_bindings(bindings)
617
+ def enable_bindings(self, *bindings: Binding, menu: bool = True) -> Sheet:
618
+ self.MT.enable_bindings(bindings, menu=menu)
619
619
  return self
620
620
 
621
621
  def disable_bindings(self, *bindings: Binding) -> Sheet:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tksheet
3
- Version: 7.4.16
3
+ Version: 7.4.18
4
4
  Summary: Tkinter table / sheet and treeview widget
5
5
  Author-email: ragardner <github@ragardner.simplelogin.com>
6
6
  License: Copyright (c) 2019 ragardner and open source contributors
@@ -1,22 +1,22 @@
1
- tksheet/__init__.py,sha256=OLoYiKVcrBwP995Mw004bnHrKCaoq6vIlVHpsbTVAwY,2327
1
+ tksheet/__init__.py,sha256=KzVp7ncwHA5rEgQ25NL2YzAyUIXskxZE-NXVco4xyCw,2327
2
2
  tksheet/colors.py,sha256=dHhmdFuQDlwohDHsAfT9VdrKoSl_R33L72a3HCin5zo,51591
3
3
  tksheet/column_headers.py,sha256=POoLTtR8qvrRYJl1c7WMc6UiDxfoNxhLUC2ikcEzt1M,103446
4
4
  tksheet/constants.py,sha256=aiDvUSaPtl_TSNtRRJ_p87c9iTBz9ksMd5IsSXzz4Hk,13316
5
5
  tksheet/find_window.py,sha256=w6S0FZFLRNHiM57Oq97avALT_PctIBPegSxnkNUwkwk,19982
6
6
  tksheet/formatters.py,sha256=DGcRiMsDJnySNpQcjfiX84oJ7TmOSMdU6u9injIhA4g,10095
7
7
  tksheet/functions.py,sha256=qks2dLqBE9GMAuEXaA4qiU-rrL-dzmz4-tkmkp6_ETk,53037
8
- tksheet/main_table.py,sha256=uZd1XM-lQftwlRABYXxXc5Le08I5uawmvcmI5fRJ5G0,365975
8
+ tksheet/main_table.py,sha256=TLhm9kwmOmEAoA06ey37Jdm3e579JOUMMLJxdaYfj60,367118
9
9
  tksheet/other_classes.py,sha256=B2SrUAviztDUOPGoWkcu-AixqAaKwItshoVZPGe1_Tc,16662
10
10
  tksheet/row_index.py,sha256=a0W78zqZIXVxfzyF5yYfXu1iUXnnDcK0ESodLl6joiA,141720
11
- tksheet/sheet.py,sha256=nQES3tqopDmmyL7j7YKDjZRdfVVhmgzQ-2srII6COgE,269766
11
+ tksheet/sheet.py,sha256=MRk0Q_LzX_VjJnTVWq3bgIRRF4FrDChS2uFHqHTAZEE,269796
12
12
  tksheet/sheet_options.py,sha256=ob-XYgGfBoi2TaFAvUUmlWUkw9xB-yXmJw17gu9__Lw,9948
13
13
  tksheet/sorting.py,sha256=zcZPpRtP1h_xJGtGkG3E43H7deKQFnh9cMwZ1B2-aGc,17502
14
14
  tksheet/text_editor.py,sha256=rU8Fz0-ltkM63W9io2DoZJPyzUGzCc9Z0qBtc4D1H40,7404
15
15
  tksheet/themes.py,sha256=AoNAxibnQi04MN0Zpbn9-kyDnkiiV8TDNWP9FYjpuf0,18473
16
16
  tksheet/tksheet_types.py,sha256=1MjXR34EmvP1KfHlLTvKKVnf0VMz_LU_WOM2q4o5hfI,4598
17
17
  tksheet/top_left_rectangle.py,sha256=M52IrPIeMoYE3jSpooZmqw_0W5Fz_R-Yu1ZqA685EZ8,8557
18
- tksheet-7.4.16.dist-info/licenses/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
19
- tksheet-7.4.16.dist-info/METADATA,sha256=X_Ym1wjZ0WGE2o8VxYogW88btlFhPJCtEhHMVEiajjY,8117
20
- tksheet-7.4.16.dist-info/WHEEL,sha256=DK49LOLCYiurdXXOXwGJm6U4DkHkg4lcxjhqwRa0CP4,91
21
- tksheet-7.4.16.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
22
- tksheet-7.4.16.dist-info/RECORD,,
18
+ tksheet-7.4.18.dist-info/licenses/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
19
+ tksheet-7.4.18.dist-info/METADATA,sha256=GNx2NJ-qfa0PEE1mxFbSR92Maq3yUMQpqRygY2ks19Y,8117
20
+ tksheet-7.4.18.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
21
+ tksheet-7.4.18.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
22
+ tksheet-7.4.18.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.0.2)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5