tksheet 7.5.4__py3-none-any.whl → 7.5.7__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 +1 -1
- tksheet/column_headers.py +230 -87
- tksheet/constants.py +1 -0
- tksheet/find_window.py +4 -4
- tksheet/formatters.py +4 -2
- tksheet/functions.py +134 -57
- tksheet/main_table.py +360 -631
- tksheet/menus.py +494 -0
- tksheet/other_classes.py +3 -0
- tksheet/row_index.py +235 -92
- tksheet/sheet.py +117 -52
- tksheet/sheet_options.py +5 -1
- tksheet/tksheet_types.py +1 -0
- tksheet/tooltip.py +335 -0
- {tksheet-7.5.4.dist-info → tksheet-7.5.7.dist-info}/METADATA +1 -1
- tksheet-7.5.7.dist-info/RECORD +24 -0
- {tksheet-7.5.4.dist-info → tksheet-7.5.7.dist-info}/WHEEL +1 -1
- tksheet-7.5.4.dist-info/RECORD +0 -22
- {tksheet-7.5.4.dist-info → tksheet-7.5.7.dist-info}/licenses/LICENSE.txt +0 -0
- {tksheet-7.5.4.dist-info → tksheet-7.5.7.dist-info}/top_level.txt +0 -0
tksheet/sheet.py
CHANGED
@@ -51,6 +51,7 @@ from .functions import (
|
|
51
51
|
is_iterable,
|
52
52
|
key_to_span,
|
53
53
|
mod_event_val,
|
54
|
+
mod_note,
|
54
55
|
new_tk_event,
|
55
56
|
num2alpha,
|
56
57
|
pop_positions,
|
@@ -181,7 +182,6 @@ class Sheet(tk.Frame):
|
|
181
182
|
row_drag_and_drop_perform: bool = True,
|
182
183
|
empty_horizontal: int = 50,
|
183
184
|
empty_vertical: int = 50,
|
184
|
-
selected_rows_to_end_of_window: bool = False,
|
185
185
|
horizontal_grid_to_end_of_window: bool = False,
|
186
186
|
vertical_grid_to_end_of_window: bool = False,
|
187
187
|
show_vertical_grid: bool = True,
|
@@ -201,6 +201,11 @@ class Sheet(tk.Frame):
|
|
201
201
|
index_wrap: Literal["", "w", "c"] = "c",
|
202
202
|
header_wrap: Literal["", "w", "c"] = "c",
|
203
203
|
sort_key: Callable = natural_sort_key,
|
204
|
+
tooltips: bool = False,
|
205
|
+
user_can_create_notes: bool = False,
|
206
|
+
note_corners: bool = False,
|
207
|
+
tooltip_width: int = 210,
|
208
|
+
tooltip_height: int = 210,
|
204
209
|
# colors
|
205
210
|
outline_thickness: int = 0,
|
206
211
|
theme: str = "light blue",
|
@@ -312,6 +317,7 @@ class Sheet(tk.Frame):
|
|
312
317
|
highlightbackground=outline_color,
|
313
318
|
highlightcolor=outline_color,
|
314
319
|
)
|
320
|
+
self.unique_id = f"{default_timer()}{self.winfo_id()}".replace(".", "")
|
315
321
|
self._startup_complete = False
|
316
322
|
self.ops = new_sheet_options()
|
317
323
|
if column_width is not None:
|
@@ -393,7 +399,6 @@ class Sheet(tk.Frame):
|
|
393
399
|
row_index_canvas=self.RI,
|
394
400
|
header_canvas=self.CH,
|
395
401
|
)
|
396
|
-
self.unique_id = f"{default_timer()}{self.winfo_id()}".replace(".", "")
|
397
402
|
style = ttk.Style()
|
398
403
|
for orientation in ("Vertical", "Horizontal"):
|
399
404
|
style.element_create(
|
@@ -505,6 +510,7 @@ class Sheet(tk.Frame):
|
|
505
510
|
self.refresh()
|
506
511
|
if startup_focus:
|
507
512
|
self.MT.focus_set()
|
513
|
+
self.MT.create_rc_menus()
|
508
514
|
self.after_idle(self.startup_complete)
|
509
515
|
|
510
516
|
def startup_complete(self, _mod: bool = True) -> bool:
|
@@ -800,7 +806,6 @@ class Sheet(tk.Frame):
|
|
800
806
|
self.MT.extra_header_rc_menu_funcs[label] = dct
|
801
807
|
if empty_space_menu:
|
802
808
|
self.MT.extra_empty_space_rc_menu_funcs[label] = dct
|
803
|
-
self.MT.create_rc_menus()
|
804
809
|
return self
|
805
810
|
|
806
811
|
def popup_menu_del_command(self, label: str | None = None) -> Sheet:
|
@@ -818,7 +823,6 @@ class Sheet(tk.Frame):
|
|
818
823
|
del self.MT.extra_header_rc_menu_funcs[label]
|
819
824
|
if label in self.MT.extra_empty_space_rc_menu_funcs:
|
820
825
|
del self.MT.extra_empty_space_rc_menu_funcs[label]
|
821
|
-
self.MT.create_rc_menus()
|
822
826
|
return self
|
823
827
|
|
824
828
|
def basic_bindings(self, enable: bool = False) -> Sheet:
|
@@ -904,7 +908,7 @@ class Sheet(tk.Frame):
|
|
904
908
|
hdisp: bool = True,
|
905
909
|
transposed: bool = False,
|
906
910
|
ndim: int = 0,
|
907
|
-
convert:
|
911
|
+
convert: Callable | None = None,
|
908
912
|
undo: bool = True,
|
909
913
|
emit_event: bool = False,
|
910
914
|
widget: Any = None,
|
@@ -2247,6 +2251,40 @@ class Sheet(tk.Frame):
|
|
2247
2251
|
self.MT.sheet_modified(event_data)
|
2248
2252
|
return event_data
|
2249
2253
|
|
2254
|
+
# Notes
|
2255
|
+
|
2256
|
+
def note(self, *key: CreateSpanTypes, note: str | None = None, readonly: bool = True) -> Span:
|
2257
|
+
"""
|
2258
|
+
note=None to delete notes for the span area.
|
2259
|
+
Or use a str to set notes for the span area.
|
2260
|
+
"""
|
2261
|
+
span = self.span_from_key(*key)
|
2262
|
+
rows, cols = self.ranges_from_span(span)
|
2263
|
+
table, index, header = span.table, span.index, span.header
|
2264
|
+
if span.kind == "cell":
|
2265
|
+
if header:
|
2266
|
+
for c in cols:
|
2267
|
+
mod_note(self.CH.cell_options, c, note, readonly)
|
2268
|
+
for r in rows:
|
2269
|
+
if index:
|
2270
|
+
mod_note(self.RI.cell_options, r, note, readonly)
|
2271
|
+
if table:
|
2272
|
+
for c in cols:
|
2273
|
+
mod_note(self.MT.cell_options, (r, c), note, readonly)
|
2274
|
+
elif span.kind == "row":
|
2275
|
+
for r in rows:
|
2276
|
+
if index:
|
2277
|
+
mod_note(self.RI.cell_options, r, note, readonly)
|
2278
|
+
if table:
|
2279
|
+
mod_note(self.MT.row_options, r, note, readonly)
|
2280
|
+
elif span.kind == "column":
|
2281
|
+
for c in cols:
|
2282
|
+
if header:
|
2283
|
+
mod_note(self.CH.cell_options, c, note, readonly)
|
2284
|
+
if table:
|
2285
|
+
mod_note(self.MT.col_options, c, note, readonly)
|
2286
|
+
return span
|
2287
|
+
|
2250
2288
|
# Highlighting Cells
|
2251
2289
|
|
2252
2290
|
def highlight(
|
@@ -2351,6 +2389,7 @@ class Sheet(tk.Frame):
|
|
2351
2389
|
"search_function": search_function,
|
2352
2390
|
"validate_input": validate_input,
|
2353
2391
|
"text": text,
|
2392
|
+
"default_value": set_value,
|
2354
2393
|
}
|
2355
2394
|
d = get_dropdown_dict(**kwargs)
|
2356
2395
|
span = self.span_from_key(*key)
|
@@ -4187,7 +4226,6 @@ class Sheet(tk.Frame):
|
|
4187
4226
|
if "treeview" in kwargs:
|
4188
4227
|
self.index_align("nw", redraw=False)
|
4189
4228
|
self.ops.paste_can_expand_y = False
|
4190
|
-
self.MT.create_rc_menus()
|
4191
4229
|
return self.set_refresh_timer(redraw)
|
4192
4230
|
|
4193
4231
|
def set_scrollbar_options(self) -> Sheet:
|
@@ -4746,24 +4784,29 @@ class Sheet(tk.Frame):
|
|
4746
4784
|
|
4747
4785
|
def _get_id_insert_row(self, index: int | None, parent: str) -> int:
|
4748
4786
|
if parent:
|
4787
|
+
chn = self.RI.iid_children(parent)
|
4749
4788
|
if isinstance(index, int):
|
4750
|
-
index = min(index, len(
|
4751
|
-
|
4752
|
-
self.RI.rns[parent]
|
4753
|
-
|
4754
|
-
|
4755
|
-
|
4756
|
-
)
|
4789
|
+
index = min(index, len(chn))
|
4790
|
+
if index == 0:
|
4791
|
+
return self.RI.rns[parent] + 1
|
4792
|
+
else:
|
4793
|
+
prev_chld = chn[index - 1]
|
4794
|
+
return self.RI.rns[prev_chld] + self.RI.num_descendants(prev_chld) + 1
|
4757
4795
|
else:
|
4758
|
-
|
4796
|
+
if chn:
|
4797
|
+
last_chld = chn[-1]
|
4798
|
+
last_chld_rn = self.RI.rns[last_chld]
|
4799
|
+
return last_chld_rn + self.RI.num_descendants(last_chld) + 1
|
4800
|
+
else:
|
4801
|
+
return self.RI.rns[parent] + 1
|
4759
4802
|
else:
|
4760
4803
|
if isinstance(index, int):
|
4761
|
-
|
4762
|
-
|
4763
|
-
|
4804
|
+
if index == 0:
|
4805
|
+
return 0
|
4806
|
+
datarn = self.top_index_row(index)
|
4807
|
+
return len(self.MT._row_index) if datarn is None else datarn
|
4764
4808
|
else:
|
4765
|
-
|
4766
|
-
return datarn
|
4809
|
+
return len(self.MT._row_index)
|
4767
4810
|
|
4768
4811
|
def bulk_insert(
|
4769
4812
|
self,
|
@@ -5998,6 +6041,8 @@ class Sheet(tk.Frame):
|
|
5998
6041
|
self._create_header_checkbox(c_, kwargs["checked"], d)
|
5999
6042
|
self.set_refresh_timer(kwargs["redraw"])
|
6000
6043
|
|
6044
|
+
checkbox_header = create_header_checkbox
|
6045
|
+
|
6001
6046
|
def _create_header_checkbox(self, c: int, v: bool, d: dict) -> None:
|
6002
6047
|
self.del_header_cell_options_dropdown_and_checkbox(c)
|
6003
6048
|
add_to_options(self.CH.cell_options, c, "checkbox", d)
|
@@ -6021,6 +6066,8 @@ class Sheet(tk.Frame):
|
|
6021
6066
|
self._create_index_checkbox(r_, kwargs["checked"], d)
|
6022
6067
|
self.set_refresh_timer(kwargs["redraw"])
|
6023
6068
|
|
6069
|
+
checkbox_index = create_index_checkbox
|
6070
|
+
|
6024
6071
|
def _create_index_checkbox(self, r: int, v: bool, d: dict) -> None:
|
6025
6072
|
self.del_index_cell_options_dropdown_and_checkbox(r)
|
6026
6073
|
add_to_options(self.RI.cell_options, r, "checkbox", d)
|
@@ -6154,25 +6201,27 @@ class Sheet(tk.Frame):
|
|
6154
6201
|
kwargs = get_dropdown_kwargs(*args, **kwargs)
|
6155
6202
|
d = get_dropdown_dict(**kwargs)
|
6156
6203
|
v = kwargs["set_value"] if kwargs["set_value"] is not None else kwargs["values"][0] if kwargs["values"] else ""
|
6204
|
+
edit = kwargs["edit_data"]
|
6157
6205
|
if isinstance(r, str) and r.lower() == "all" and isinstance(c, int):
|
6158
6206
|
for r_ in range(self.MT.total_data_rows()):
|
6159
|
-
self._create_dropdown(r_, c, v, d)
|
6207
|
+
self._create_dropdown(r_, c, v, d, edit)
|
6160
6208
|
elif isinstance(c, str) and c.lower() == "all" and isinstance(r, int):
|
6161
6209
|
for c_ in range(self.MT.total_data_cols()):
|
6162
|
-
self._create_dropdown(r, c_, v, d)
|
6210
|
+
self._create_dropdown(r, c_, v, d, edit)
|
6163
6211
|
elif isinstance(r, str) and r.lower() == "all" and isinstance(c, str) and c.lower() == "all":
|
6164
6212
|
totalcols = self.MT.total_data_cols()
|
6165
6213
|
for r_ in range(self.MT.total_data_rows()):
|
6166
6214
|
for c_ in range(totalcols):
|
6167
|
-
self._create_dropdown(r_, c_, v, d)
|
6215
|
+
self._create_dropdown(r_, c_, v, d, edit)
|
6168
6216
|
elif isinstance(r, int) and isinstance(c, int):
|
6169
|
-
self._create_dropdown(r, c, v, d)
|
6217
|
+
self._create_dropdown(r, c, v, d, edit)
|
6170
6218
|
return self.set_refresh_timer(kwargs["redraw"])
|
6171
6219
|
|
6172
|
-
def _create_dropdown(self, r: int, c: int, v: Any, d: dict) -> None:
|
6220
|
+
def _create_dropdown(self, r: int, c: int, v: Any, d: dict, edit: bool = True) -> None:
|
6173
6221
|
self.del_cell_options_dropdown_and_checkbox(r, c)
|
6174
6222
|
add_to_options(self.MT.cell_options, (r, c), "dropdown", d)
|
6175
|
-
|
6223
|
+
if edit:
|
6224
|
+
self.MT.set_cell_data(r, c, v)
|
6176
6225
|
|
6177
6226
|
def dropdown_cell(
|
6178
6227
|
self,
|
@@ -6192,21 +6241,23 @@ class Sheet(tk.Frame):
|
|
6192
6241
|
kwargs = get_dropdown_kwargs(*args, **kwargs)
|
6193
6242
|
d = get_dropdown_dict(**kwargs)
|
6194
6243
|
v = kwargs["set_value"] if kwargs["set_value"] is not None else kwargs["values"][0] if kwargs["values"] else ""
|
6244
|
+
edit = kwargs["edit_data"]
|
6195
6245
|
if isinstance(r, str) and r.lower() == "all":
|
6196
6246
|
for r_ in range(self.MT.total_data_rows()):
|
6197
|
-
self._dropdown_row(r_, v, d)
|
6247
|
+
self._dropdown_row(r_, v, d, edit)
|
6198
6248
|
elif isinstance(r, int):
|
6199
|
-
self._dropdown_row(r, v, d)
|
6249
|
+
self._dropdown_row(r, v, d, edit)
|
6200
6250
|
elif is_iterable(r):
|
6201
6251
|
for r_ in r:
|
6202
|
-
self._dropdown_row(r_, v, d)
|
6252
|
+
self._dropdown_row(r_, v, d, edit)
|
6203
6253
|
return self.set_refresh_timer(kwargs["redraw"])
|
6204
6254
|
|
6205
|
-
def _dropdown_row(self, r: int, v: Any, d: dict) -> None:
|
6255
|
+
def _dropdown_row(self, r: int, v: Any, d: dict, edit: bool = True) -> None:
|
6206
6256
|
self.del_row_options_dropdown_and_checkbox(r)
|
6207
6257
|
add_to_options(self.MT.row_options, r, "dropdown", d)
|
6208
|
-
|
6209
|
-
self.MT.
|
6258
|
+
if edit:
|
6259
|
+
for c in range(self.MT.total_data_cols()):
|
6260
|
+
self.MT.set_cell_data(r, c, v)
|
6210
6261
|
|
6211
6262
|
def dropdown_column(
|
6212
6263
|
self,
|
@@ -6217,21 +6268,23 @@ class Sheet(tk.Frame):
|
|
6217
6268
|
kwargs = get_dropdown_kwargs(*args, **kwargs)
|
6218
6269
|
d = get_dropdown_dict(**kwargs)
|
6219
6270
|
v = kwargs["set_value"] if kwargs["set_value"] is not None else kwargs["values"][0] if kwargs["values"] else ""
|
6271
|
+
edit = kwargs["edit_data"]
|
6220
6272
|
if isinstance(c, str) and c.lower() == "all":
|
6221
6273
|
for c_ in range(self.MT.total_data_cols()):
|
6222
|
-
self._dropdown_column(c_, v, d)
|
6274
|
+
self._dropdown_column(c_, v, d, edit)
|
6223
6275
|
elif isinstance(c, int):
|
6224
|
-
self._dropdown_column(c, v, d)
|
6276
|
+
self._dropdown_column(c, v, d, edit)
|
6225
6277
|
elif is_iterable(c):
|
6226
6278
|
for c_ in c:
|
6227
|
-
self._dropdown_column(c_, v, d)
|
6279
|
+
self._dropdown_column(c_, v, d, edit)
|
6228
6280
|
return self.set_refresh_timer(kwargs["redraw"])
|
6229
6281
|
|
6230
|
-
def _dropdown_column(self, c: int, v: Any, d: dict) -> None:
|
6282
|
+
def _dropdown_column(self, c: int, v: Any, d: dict, edit: bool = True) -> None:
|
6231
6283
|
self.del_column_options_dropdown_and_checkbox(c)
|
6232
6284
|
add_to_options(self.MT.col_options, c, "dropdown", d)
|
6233
|
-
|
6234
|
-
self.MT.
|
6285
|
+
if edit:
|
6286
|
+
for r in range(self.MT.total_data_rows()):
|
6287
|
+
self.MT.set_cell_data(r, c, v)
|
6235
6288
|
|
6236
6289
|
def create_header_dropdown(
|
6237
6290
|
self,
|
@@ -6242,20 +6295,24 @@ class Sheet(tk.Frame):
|
|
6242
6295
|
kwargs = get_dropdown_kwargs(*args, **kwargs)
|
6243
6296
|
d = get_dropdown_dict(**kwargs)
|
6244
6297
|
v = kwargs["set_value"] if kwargs["set_value"] is not None else kwargs["values"][0] if kwargs["values"] else ""
|
6298
|
+
edit = kwargs["edit_data"]
|
6245
6299
|
if isinstance(c, str) and c.lower() == "all":
|
6246
6300
|
for c_ in range(self.MT.total_data_cols()):
|
6247
|
-
self._create_header_dropdown(c_, v, d)
|
6301
|
+
self._create_header_dropdown(c_, v, d, edit)
|
6248
6302
|
elif isinstance(c, int):
|
6249
|
-
self._create_header_dropdown(c, v, d)
|
6303
|
+
self._create_header_dropdown(c, v, d, edit)
|
6250
6304
|
elif is_iterable(c):
|
6251
6305
|
for c_ in c:
|
6252
|
-
self._create_header_dropdown(c_, v, d)
|
6306
|
+
self._create_header_dropdown(c_, v, d, edit)
|
6253
6307
|
return self.set_refresh_timer(kwargs["redraw"])
|
6254
6308
|
|
6255
|
-
|
6309
|
+
dropdown_header = create_header_dropdown
|
6310
|
+
|
6311
|
+
def _create_header_dropdown(self, c: int, v: Any, d: dict, edit: bool = True) -> None:
|
6256
6312
|
self.del_header_cell_options_dropdown_and_checkbox(c)
|
6257
6313
|
add_to_options(self.CH.cell_options, c, "dropdown", d)
|
6258
|
-
|
6314
|
+
if edit:
|
6315
|
+
self.CH.set_cell_data(c, v)
|
6259
6316
|
|
6260
6317
|
def create_index_dropdown(
|
6261
6318
|
self,
|
@@ -6266,20 +6323,24 @@ class Sheet(tk.Frame):
|
|
6266
6323
|
kwargs = get_dropdown_kwargs(*args, **kwargs)
|
6267
6324
|
d = get_dropdown_dict(**kwargs)
|
6268
6325
|
v = kwargs["set_value"] if kwargs["set_value"] is not None else kwargs["values"][0] if kwargs["values"] else ""
|
6326
|
+
edit = kwargs["edit_data"]
|
6269
6327
|
if isinstance(r, str) and r.lower() == "all":
|
6270
6328
|
for r_ in range(self.MT.total_data_rows()):
|
6271
|
-
self._create_index_dropdown(r_, v, d)
|
6329
|
+
self._create_index_dropdown(r_, v, d, edit)
|
6272
6330
|
elif isinstance(r, int):
|
6273
|
-
self._create_index_dropdown(r, v, d)
|
6331
|
+
self._create_index_dropdown(r, v, d, edit)
|
6274
6332
|
elif is_iterable(r):
|
6275
6333
|
for r_ in r:
|
6276
|
-
self._create_index_dropdown(r_, v, d)
|
6334
|
+
self._create_index_dropdown(r_, v, d, edit)
|
6277
6335
|
return self.set_refresh_timer(kwargs["redraw"])
|
6278
6336
|
|
6279
|
-
|
6337
|
+
dropdown_index = create_index_dropdown
|
6338
|
+
|
6339
|
+
def _create_index_dropdown(self, r: int, v: Any, d: dict, edit: bool = True) -> None:
|
6280
6340
|
self.del_index_cell_options_dropdown_and_checkbox(r)
|
6281
6341
|
add_to_options(self.RI.cell_options, r, "dropdown", d)
|
6282
|
-
|
6342
|
+
if edit:
|
6343
|
+
self.RI.set_cell_data(r, v)
|
6283
6344
|
|
6284
6345
|
def delete_dropdown(
|
6285
6346
|
self,
|
@@ -6704,11 +6765,11 @@ class Dropdown(Sheet):
|
|
6704
6765
|
show_top_left=False,
|
6705
6766
|
empty_horizontal=0,
|
6706
6767
|
empty_vertical=0,
|
6707
|
-
selected_rows_to_end_of_window=True,
|
6708
6768
|
horizontal_grid_to_end_of_window=True,
|
6709
|
-
set_cell_sizes_on_zoom=True,
|
6710
6769
|
show_selected_cells_border=False,
|
6770
|
+
set_cell_sizes_on_zoom=True,
|
6711
6771
|
scrollbar_show_arrows=False,
|
6772
|
+
rounded_boxes=False,
|
6712
6773
|
)
|
6713
6774
|
self.parent = parent
|
6714
6775
|
self.close_dropdown_window = close_dropdown_window
|
@@ -6785,7 +6846,7 @@ class Dropdown(Sheet):
|
|
6785
6846
|
table_bg=bg,
|
6786
6847
|
**{k: ops[k] for k in scrollbar_options_keys},
|
6787
6848
|
)
|
6788
|
-
self.values(values, width=width
|
6849
|
+
self.values(values, width=width)
|
6789
6850
|
|
6790
6851
|
def arrowkey_UP(self, event: Any = None) -> None:
|
6791
6852
|
if self.row > 0:
|
@@ -6862,7 +6923,11 @@ class Dropdown(Sheet):
|
|
6862
6923
|
[[v] for v in values],
|
6863
6924
|
reset_col_positions=False,
|
6864
6925
|
reset_row_positions=False,
|
6865
|
-
redraw=
|
6926
|
+
redraw=True,
|
6866
6927
|
verify=False,
|
6867
6928
|
)
|
6868
|
-
self.
|
6929
|
+
self.MT.main_table_redraw_grid_and_text(True, True, True, True, True)
|
6930
|
+
if self.yscroll_showing:
|
6931
|
+
self.set_all_cell_sizes_to_text(redraw=redraw, width=width - self.yscroll.winfo_width() - 4, slim=True)
|
6932
|
+
else:
|
6933
|
+
self.set_all_cell_sizes_to_text(redraw=redraw, width=width - 4, slim=True)
|
tksheet/sheet_options.py
CHANGED
@@ -341,7 +341,6 @@ def new_sheet_options() -> DotDict:
|
|
341
341
|
"row_drag_and_drop_perform": True,
|
342
342
|
"empty_horizontal": 50,
|
343
343
|
"empty_vertical": 50,
|
344
|
-
"selected_rows_to_end_of_window": False,
|
345
344
|
"horizontal_grid_to_end_of_window": False,
|
346
345
|
"vertical_grid_to_end_of_window": False,
|
347
346
|
"show_vertical_grid": True,
|
@@ -366,5 +365,10 @@ def new_sheet_options() -> DotDict:
|
|
366
365
|
"max_index_width": float("inf"),
|
367
366
|
"show_top_left": None,
|
368
367
|
"sort_key": natural_sort_key,
|
368
|
+
"tooltips": False,
|
369
|
+
"user_can_create_notes": False,
|
370
|
+
"note_corners": False,
|
371
|
+
"tooltip_width": 210,
|
372
|
+
"tooltip_height": 210,
|
369
373
|
}
|
370
374
|
)
|