tksheet 7.4.24__py3-none-any.whl → 7.5.1__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 +13 -1
- tksheet/column_headers.py +5 -0
- tksheet/constants.py +180 -0
- tksheet/find_window.py +25 -2
- tksheet/functions.py +9 -1
- tksheet/main_table.py +279 -104
- tksheet/row_index.py +5 -0
- tksheet/sheet.py +21 -10
- tksheet/sheet_options.py +123 -20
- tksheet/text_editor.py +26 -2
- tksheet/themes.py +4 -4
- {tksheet-7.4.24.dist-info → tksheet-7.5.1.dist-info}/METADATA +23 -1
- tksheet-7.5.1.dist-info/RECORD +22 -0
- {tksheet-7.4.24.dist-info → tksheet-7.5.1.dist-info}/WHEEL +1 -1
- tksheet-7.5.1.dist-info/licenses/LICENSE.txt +41 -0
- tksheet-7.4.24.dist-info/RECORD +0 -22
- tksheet-7.4.24.dist-info/licenses/LICENSE.txt +0 -19
- {tksheet-7.4.24.dist-info → tksheet-7.5.1.dist-info}/top_level.txt +0 -0
tksheet/row_index.py
CHANGED
@@ -160,6 +160,9 @@ class RowIndex(tk.Canvas):
|
|
160
160
|
self.MT.recreate_all_selection_boxes()
|
161
161
|
self.current_width = new_width
|
162
162
|
|
163
|
+
def is_readonly(self, datarn: int) -> bool:
|
164
|
+
return datarn in self.cell_options and "readonly" in self.cell_options[datarn]
|
165
|
+
|
163
166
|
def rc(self, event: Any) -> None:
|
164
167
|
self.mouseclick_outside_editor_or_dropdown_all_canvases(inside=True)
|
165
168
|
self.focus_set()
|
@@ -185,6 +188,8 @@ class RowIndex(tk.Canvas):
|
|
185
188
|
try_binding(self.extra_rc_func, event)
|
186
189
|
if popup_menu is not None:
|
187
190
|
self.popup_menu_loc = r
|
191
|
+
self.MT.popup_menu_disable_edit_if_readonly(popup_menu)
|
192
|
+
self.MT.popup_menu_disable_undo_redo(popup_menu)
|
188
193
|
popup_menu.tk_popup(event.x_root, event.y_root)
|
189
194
|
|
190
195
|
def ctrl_b1_press(self, event: Any) -> None:
|
tksheet/sheet.py
CHANGED
@@ -329,7 +329,7 @@ class Sheet(tk.Frame):
|
|
329
329
|
index_align = "w"
|
330
330
|
auto_resize_row_index = True
|
331
331
|
paste_can_expand_y = False
|
332
|
-
for k, v in locals().items():
|
332
|
+
for k, v in chain(locals().items(), kwargs.items()):
|
333
333
|
if (xk := backwards_compatibility_keys.get(k, k)) in self.ops and v != self.ops[xk]:
|
334
334
|
self.ops[xk] = v
|
335
335
|
self.ops.from_clipboard_delimiters = (
|
@@ -784,15 +784,19 @@ class Sheet(tk.Frame):
|
|
784
784
|
index_menu: bool = True,
|
785
785
|
header_menu: bool = True,
|
786
786
|
empty_space_menu: bool = True,
|
787
|
+
image: tk.PhotoImage | Literal[""] = "",
|
788
|
+
compound: Literal["top", "bottom", "left", "right", "none"] | None = None,
|
789
|
+
accelerator: str | None = None,
|
787
790
|
) -> Sheet:
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
791
|
+
dct = {"command": func, "image": image, "accelerator": accelerator, "compound": compound}
|
792
|
+
if table_menu:
|
793
|
+
self.MT.extra_table_rc_menu_funcs[label] = dct
|
794
|
+
if index_menu:
|
795
|
+
self.MT.extra_index_rc_menu_funcs[label] = dct
|
796
|
+
if header_menu:
|
797
|
+
self.MT.extra_header_rc_menu_funcs[label] = dct
|
798
|
+
if empty_space_menu:
|
799
|
+
self.MT.extra_empty_space_rc_menu_funcs[label] = dct
|
796
800
|
self.MT.create_rc_menus()
|
797
801
|
return self
|
798
802
|
|
@@ -2699,6 +2703,11 @@ class Sheet(tk.Frame):
|
|
2699
2703
|
def index_font(self, newfont: tuple[str, int, str] | None = None) -> tuple[str, int, str]:
|
2700
2704
|
return self.MT.set_index_font(newfont)
|
2701
2705
|
|
2706
|
+
def popup_menu_font(self, newfont: tuple[str, int, str] | None = None) -> tuple[str, int, str]:
|
2707
|
+
if newfont:
|
2708
|
+
self.ops.popup_menu_font = FontTuple(*(newfont[0], int(round(newfont[1])), newfont[2]))
|
2709
|
+
return self.ops.popup_menu_font
|
2710
|
+
|
2702
2711
|
def table_align(
|
2703
2712
|
self,
|
2704
2713
|
align: str | None = None,
|
@@ -4137,6 +4146,8 @@ class Sheet(tk.Frame):
|
|
4137
4146
|
self.ops.paste_can_expand_y = kwargs["expand_sheet_if_paste_too_big"]
|
4138
4147
|
if "show_top_left" in kwargs:
|
4139
4148
|
self.show("top_left")
|
4149
|
+
if "popup_menu_font" in kwargs:
|
4150
|
+
self.popup_menu_font(self.ops.popup_menu_font)
|
4140
4151
|
if "font" in kwargs:
|
4141
4152
|
self.MT.set_table_font(kwargs["font"])
|
4142
4153
|
elif "table_font" in kwargs:
|
@@ -4170,10 +4181,10 @@ class Sheet(tk.Frame):
|
|
4170
4181
|
)
|
4171
4182
|
if any(k in kwargs for k in scrollbar_options_keys):
|
4172
4183
|
self.set_scrollbar_options()
|
4173
|
-
self.MT.create_rc_menus()
|
4174
4184
|
if "treeview" in kwargs:
|
4175
4185
|
self.index_align("nw", redraw=False)
|
4176
4186
|
self.ops.paste_can_expand_y = False
|
4187
|
+
self.MT.create_rc_menus()
|
4177
4188
|
return self.set_refresh_timer(redraw)
|
4178
4189
|
|
4179
4190
|
def set_scrollbar_options(self) -> Sheet:
|
tksheet/sheet_options.py
CHANGED
@@ -1,6 +1,23 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
-
|
3
|
+
import tkinter as tk
|
4
|
+
|
5
|
+
from .constants import ( # noqa: F401
|
6
|
+
ICON_ADD,
|
7
|
+
ICON_CLEAR,
|
8
|
+
ICON_COPY,
|
9
|
+
ICON_CUT,
|
10
|
+
ICON_DEL,
|
11
|
+
ICON_EDIT,
|
12
|
+
ICON_PASTE,
|
13
|
+
ICON_REDO,
|
14
|
+
ICON_SELECT_ALL,
|
15
|
+
ICON_SORT_ASC,
|
16
|
+
ICON_SORT_DESC,
|
17
|
+
ICON_UNDO,
|
18
|
+
USER_OS,
|
19
|
+
ctrl_key,
|
20
|
+
)
|
4
21
|
from .other_classes import DotDict, FontTuple
|
5
22
|
from .sorting import fast_sort_key, natural_sort_key, version_sort_key # noqa: F401
|
6
23
|
from .themes import theme_light_blue
|
@@ -30,62 +47,111 @@ def new_sheet_options() -> DotDict:
|
|
30
47
|
13 if USER_OS == "darwin" else 11,
|
31
48
|
"normal",
|
32
49
|
),
|
33
|
-
#
|
50
|
+
# edit header
|
34
51
|
"edit_header_label": "Edit header",
|
35
52
|
"edit_header_accelerator": "",
|
53
|
+
"edit_header_image": tk.PhotoImage(data=ICON_EDIT),
|
54
|
+
"edit_header_compound": "left",
|
55
|
+
# edit index
|
36
56
|
"edit_index_label": "Edit index",
|
37
57
|
"edit_index_accelerator": "",
|
58
|
+
"edit_index_image": tk.PhotoImage(data=ICON_EDIT),
|
59
|
+
"edit_index_compound": "left",
|
60
|
+
# edit cell
|
38
61
|
"edit_cell_label": "Edit cell",
|
39
62
|
"edit_cell_accelerator": "",
|
40
|
-
|
63
|
+
"edit_cell_image": tk.PhotoImage(data=ICON_EDIT),
|
64
|
+
"edit_cell_compound": "left",
|
65
|
+
# cut
|
41
66
|
"cut_label": "Cut",
|
42
67
|
"cut_accelerator": "Ctrl+X",
|
68
|
+
"cut_image": tk.PhotoImage(data=ICON_CUT),
|
69
|
+
"cut_compound": "left",
|
70
|
+
# cut contents
|
43
71
|
"cut_contents_label": "Cut contents",
|
44
72
|
"cut_contents_accelerator": "Ctrl+X",
|
73
|
+
"cut_contents_image": tk.PhotoImage(data=ICON_CUT),
|
74
|
+
"cut_contents_compound": "left",
|
75
|
+
# copy
|
45
76
|
"copy_label": "Copy",
|
46
77
|
"copy_accelerator": "Ctrl+C",
|
78
|
+
"copy_image": tk.PhotoImage(data=ICON_COPY),
|
79
|
+
"copy_compound": "left",
|
80
|
+
# copy contents
|
47
81
|
"copy_contents_label": "Copy contents",
|
48
82
|
"copy_contents_accelerator": "Ctrl+C",
|
83
|
+
"copy_contents_image": tk.PhotoImage(data=ICON_COPY),
|
84
|
+
"copy_contents_compound": "left",
|
85
|
+
# paste
|
49
86
|
"paste_label": "Paste",
|
50
87
|
"paste_accelerator": "Ctrl+V",
|
51
|
-
|
88
|
+
"paste_image": tk.PhotoImage(data=ICON_PASTE),
|
89
|
+
"paste_compound": "left",
|
90
|
+
# delete
|
52
91
|
"delete_label": "Delete",
|
53
92
|
"delete_accelerator": "Del",
|
93
|
+
"delete_image": tk.PhotoImage(data=ICON_CLEAR),
|
94
|
+
"delete_compound": "left",
|
95
|
+
# clear contents
|
54
96
|
"clear_contents_label": "Clear contents",
|
55
97
|
"clear_contents_accelerator": "Del",
|
56
|
-
|
98
|
+
"clear_contents_image": tk.PhotoImage(data=ICON_CLEAR),
|
99
|
+
"clear_contents_compound": "left",
|
100
|
+
# del columns
|
57
101
|
"delete_columns_label": "Delete columns",
|
58
102
|
"delete_columns_accelerator": "",
|
103
|
+
"delete_columns_image": tk.PhotoImage(data=ICON_DEL),
|
104
|
+
"delete_columns_compound": "left",
|
105
|
+
# insert columns left
|
59
106
|
"insert_columns_left_label": "Insert columns left",
|
60
107
|
"insert_columns_left_accelerator": "",
|
61
|
-
"
|
62
|
-
"
|
108
|
+
"insert_columns_left_image": tk.PhotoImage(data=ICON_ADD),
|
109
|
+
"insert_columns_left_compound": "left",
|
110
|
+
# insert columns right
|
63
111
|
"insert_columns_right_label": "Insert columns right",
|
64
112
|
"insert_columns_right_accelerator": "",
|
65
|
-
|
113
|
+
"insert_columns_right_image": tk.PhotoImage(data=ICON_ADD),
|
114
|
+
"insert_columns_right_compound": "left",
|
115
|
+
# insert single column
|
116
|
+
"insert_column_label": "Insert column",
|
117
|
+
"insert_column_accelerator": "",
|
118
|
+
"insert_column_image": tk.PhotoImage(data=ICON_ADD),
|
119
|
+
"insert_column_compound": "left",
|
120
|
+
# del rows
|
66
121
|
"delete_rows_label": "Delete rows",
|
67
122
|
"delete_rows_accelerator": "",
|
123
|
+
"delete_rows_image": tk.PhotoImage(data=ICON_DEL),
|
124
|
+
"delete_rows_compound": "left",
|
125
|
+
# insert rows above
|
68
126
|
"insert_rows_above_label": "Insert rows above",
|
69
127
|
"insert_rows_above_accelerator": "",
|
128
|
+
"insert_rows_above_image": tk.PhotoImage(data=ICON_ADD),
|
129
|
+
"insert_rows_above_compound": "left",
|
130
|
+
# insert rows below
|
70
131
|
"insert_rows_below_label": "Insert rows below",
|
71
132
|
"insert_rows_below_accelerator": "",
|
133
|
+
"insert_rows_below_image": tk.PhotoImage(data=ICON_ADD),
|
134
|
+
"insert_rows_below_compound": "left",
|
135
|
+
# insert single row
|
72
136
|
"insert_row_label": "Insert row",
|
73
137
|
"insert_row_accelerator": "",
|
138
|
+
"insert_row_image": tk.PhotoImage(data=ICON_ADD),
|
139
|
+
"insert_row_compound": "left",
|
74
140
|
# sorting
|
75
141
|
# labels
|
76
|
-
"sort_cells_label": "Sort
|
77
|
-
"sort_cells_x_label": "Sort
|
78
|
-
"sort_row_label": "Sort values
|
79
|
-
"sort_column_label": "Sort values
|
80
|
-
"sort_rows_label": "Sort rows
|
81
|
-
"sort_columns_label": "Sort columns
|
142
|
+
"sort_cells_label": "Sort Asc.",
|
143
|
+
"sort_cells_x_label": "Sort row-wise Asc.",
|
144
|
+
"sort_row_label": "Sort values Asc.",
|
145
|
+
"sort_column_label": "Sort values Asc.",
|
146
|
+
"sort_rows_label": "Sort rows Asc.",
|
147
|
+
"sort_columns_label": "Sort columns Asc.",
|
82
148
|
# reverse labels
|
83
|
-
"sort_cells_reverse_label": "Sort
|
84
|
-
"sort_cells_x_reverse_label": "Sort
|
85
|
-
"sort_row_reverse_label": "Sort values
|
86
|
-
"sort_column_reverse_label": "Sort values
|
87
|
-
"sort_rows_reverse_label": "Sort rows
|
88
|
-
"sort_columns_reverse_label": "Sort columns
|
149
|
+
"sort_cells_reverse_label": "Sort Desc.",
|
150
|
+
"sort_cells_x_reverse_label": "Sort row-wise Desc.",
|
151
|
+
"sort_row_reverse_label": "Sort values Desc.",
|
152
|
+
"sort_column_reverse_label": "Sort values Desc.",
|
153
|
+
"sort_rows_reverse_label": "Sort rows Desc.",
|
154
|
+
"sort_columns_reverse_label": "Sort columns Desc.",
|
89
155
|
# accelerators
|
90
156
|
"sort_cells_accelerator": "",
|
91
157
|
"sort_cells_x_accelerator": "",
|
@@ -100,12 +166,49 @@ def new_sheet_options() -> DotDict:
|
|
100
166
|
"sort_column_reverse_accelerator": "",
|
101
167
|
"sort_rows_reverse_accelerator": "",
|
102
168
|
"sort_columns_reverse_accelerator": "",
|
169
|
+
# images
|
170
|
+
"sort_cells_image": tk.PhotoImage(data=ICON_SORT_ASC),
|
171
|
+
"sort_cells_x_image": tk.PhotoImage(data=ICON_SORT_ASC),
|
172
|
+
"sort_row_image": tk.PhotoImage(data=ICON_SORT_ASC),
|
173
|
+
"sort_column_image": tk.PhotoImage(data=ICON_SORT_ASC),
|
174
|
+
"sort_rows_image": tk.PhotoImage(data=ICON_SORT_ASC),
|
175
|
+
"sort_columns_image": tk.PhotoImage(data=ICON_SORT_ASC),
|
176
|
+
# compounds
|
177
|
+
"sort_cells_compound": "left",
|
178
|
+
"sort_cells_x_compound": "left",
|
179
|
+
"sort_row_compound": "left",
|
180
|
+
"sort_column_compound": "left",
|
181
|
+
"sort_rows_compound": "left",
|
182
|
+
"sort_columns_compound": "left",
|
183
|
+
# reverse images
|
184
|
+
"sort_cells_reverse_image": tk.PhotoImage(data=ICON_SORT_DESC),
|
185
|
+
"sort_cells_x_reverse_image": tk.PhotoImage(data=ICON_SORT_DESC),
|
186
|
+
"sort_row_reverse_image": tk.PhotoImage(data=ICON_SORT_DESC),
|
187
|
+
"sort_column_reverse_image": tk.PhotoImage(data=ICON_SORT_DESC),
|
188
|
+
"sort_rows_reverse_image": tk.PhotoImage(data=ICON_SORT_DESC),
|
189
|
+
"sort_columns_reverse_image": tk.PhotoImage(data=ICON_SORT_DESC),
|
190
|
+
# reverse compounds
|
191
|
+
"sort_cells_reverse_compound": "left",
|
192
|
+
"sort_cells_x_reverse_compound": "left",
|
193
|
+
"sort_row_reverse_compound": "left",
|
194
|
+
"sort_column_reverse_compound": "left",
|
195
|
+
"sort_rows_reverse_compound": "left",
|
196
|
+
"sort_columns_reverse_compound": "left",
|
103
197
|
# select all
|
104
198
|
"select_all_label": "Select all",
|
105
199
|
"select_all_accelerator": "Ctrl+A",
|
200
|
+
"select_all_image": tk.PhotoImage(data=ICON_SELECT_ALL),
|
201
|
+
"select_all_compound": "left",
|
106
202
|
# undo
|
107
203
|
"undo_label": "Undo",
|
108
204
|
"undo_accelerator": "Ctrl+Z",
|
205
|
+
"undo_image": tk.PhotoImage(data=ICON_UNDO),
|
206
|
+
"undo_compound": "left",
|
207
|
+
# redo
|
208
|
+
"redo_label": "Redo",
|
209
|
+
"redo_accelerator": "Ctrl+Shift+Z",
|
210
|
+
"redo_image": tk.PhotoImage(data=ICON_REDO),
|
211
|
+
"redo_compound": "left",
|
109
212
|
# bindings
|
110
213
|
"copy_bindings": [
|
111
214
|
f"<{ctrl_key}-c>",
|
tksheet/text_editor.py
CHANGED
@@ -65,39 +65,58 @@ class TextEditorTkText(tk.Text):
|
|
65
65
|
self.rc_popup_menu.add_command(
|
66
66
|
label=sheet_ops.select_all_label,
|
67
67
|
accelerator=sheet_ops.select_all_accelerator,
|
68
|
+
image=sheet_ops.select_all_image,
|
69
|
+
compound=sheet_ops.select_all_compound,
|
68
70
|
command=self.select_all,
|
69
71
|
**menu_kwargs,
|
70
72
|
)
|
71
73
|
self.rc_popup_menu.add_command(
|
72
74
|
label=sheet_ops.cut_label,
|
73
75
|
accelerator=sheet_ops.cut_accelerator,
|
76
|
+
image=sheet_ops.cut_image,
|
77
|
+
compound=sheet_ops.cut_compound,
|
74
78
|
command=self.cut,
|
75
79
|
**menu_kwargs,
|
76
80
|
)
|
77
81
|
self.rc_popup_menu.add_command(
|
78
82
|
label=sheet_ops.copy_label,
|
79
83
|
accelerator=sheet_ops.copy_accelerator,
|
84
|
+
image=sheet_ops.copy_image,
|
85
|
+
compound=sheet_ops.copy_compound,
|
80
86
|
command=self.copy,
|
81
87
|
**menu_kwargs,
|
82
88
|
)
|
83
89
|
self.rc_popup_menu.add_command(
|
84
90
|
label=sheet_ops.paste_label,
|
85
91
|
accelerator=sheet_ops.paste_accelerator,
|
92
|
+
image=sheet_ops.paste_image,
|
93
|
+
compound=sheet_ops.paste_compound,
|
86
94
|
command=self.paste,
|
87
95
|
**menu_kwargs,
|
88
96
|
)
|
89
97
|
self.rc_popup_menu.add_command(
|
90
98
|
label=sheet_ops.undo_label,
|
91
99
|
accelerator=sheet_ops.undo_accelerator,
|
100
|
+
image=sheet_ops.undo_image,
|
101
|
+
compound=sheet_ops.undo_compound,
|
92
102
|
command=self.undo,
|
93
103
|
**menu_kwargs,
|
94
104
|
)
|
105
|
+
self.rc_popup_menu.add_command(
|
106
|
+
label=sheet_ops.redo_label,
|
107
|
+
accelerator=sheet_ops.redo_accelerator,
|
108
|
+
image=sheet_ops.redo_image,
|
109
|
+
compound=sheet_ops.redo_compound,
|
110
|
+
command=self.redo,
|
111
|
+
**menu_kwargs,
|
112
|
+
)
|
95
113
|
self.align = align_helper[convert_align(align)]
|
96
114
|
self.delete(1.0, "end")
|
97
115
|
self.insert(1.0, text)
|
98
116
|
self.yview_moveto(1)
|
99
117
|
self.tag_configure("align", justify=self.align)
|
100
118
|
self.tag_add("align", 1.0, "end")
|
119
|
+
self.edit_reset()
|
101
120
|
|
102
121
|
def _proxy(self, command: Any, *args) -> Any:
|
103
122
|
try:
|
@@ -140,8 +159,8 @@ class TextEditorTkText(tk.Text):
|
|
140
159
|
return "break"
|
141
160
|
|
142
161
|
def select_all(self, event: Any = None) -> Literal["break"]:
|
143
|
-
self.tag_add(tk.SEL, "1.0",
|
144
|
-
self.mark_set(tk.INSERT,
|
162
|
+
self.tag_add(tk.SEL, "1.0", "end-1c")
|
163
|
+
self.mark_set(tk.INSERT, "end-1c")
|
145
164
|
# self.see(tk.INSERT)
|
146
165
|
return "break"
|
147
166
|
|
@@ -164,6 +183,11 @@ class TextEditorTkText(tk.Text):
|
|
164
183
|
self.event_generate("<KeyRelease>")
|
165
184
|
return "break"
|
166
185
|
|
186
|
+
def redo(self, event: Any = None) -> Literal["break"]:
|
187
|
+
self.event_generate(f"<{ctrl_key}-Shift-z>")
|
188
|
+
self.event_generate("<KeyRelease>")
|
189
|
+
return "break"
|
190
|
+
|
167
191
|
|
168
192
|
class TextEditor(tk.Frame):
|
169
193
|
def __init__(
|
tksheet/themes.py
CHANGED
@@ -183,8 +183,8 @@ theme_light_green: dict[str, str] = DotDict(
|
|
183
183
|
theme_dark: dict[str, str] = DotDict(
|
184
184
|
{
|
185
185
|
"popup_menu_fg": "white",
|
186
|
-
"popup_menu_bg": "
|
187
|
-
"popup_menu_highlight_bg": "
|
186
|
+
"popup_menu_bg": "gray5",
|
187
|
+
"popup_menu_highlight_bg": "gray20",
|
188
188
|
"popup_menu_highlight_fg": "white",
|
189
189
|
"index_hidden_rows_expander_bg": "gray30",
|
190
190
|
"header_hidden_columns_expander_bg": "gray30",
|
@@ -272,8 +272,8 @@ theme_dark: dict[str, str] = DotDict(
|
|
272
272
|
theme_black: dict[str, str] = DotDict(
|
273
273
|
{
|
274
274
|
"popup_menu_fg": "white",
|
275
|
-
"popup_menu_bg": "
|
276
|
-
"popup_menu_highlight_bg": "
|
275
|
+
"popup_menu_bg": "gray5",
|
276
|
+
"popup_menu_highlight_bg": "gray20",
|
277
277
|
"popup_menu_highlight_fg": "white",
|
278
278
|
"index_hidden_rows_expander_bg": "gray30",
|
279
279
|
"header_hidden_columns_expander_bg": "gray30",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: tksheet
|
3
|
-
Version: 7.
|
3
|
+
Version: 7.5.1
|
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
|
@@ -23,6 +23,28 @@ License: Copyright (c) 2019 ragardner and open source contributors
|
|
23
23
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
24
24
|
SOFTWARE.
|
25
25
|
|
26
|
+
---
|
27
|
+
|
28
|
+
### Third-Party Assets: Icons from Lucide Icons
|
29
|
+
|
30
|
+
Icons used in tksheet are sourced from Lucide Icons (https://lucide.dev) and are licensed under the ISC License. This license applies only to the icon assets and not to the rest of the tksheet software, which remains under the MIT License above.
|
31
|
+
|
32
|
+
ISC License
|
33
|
+
|
34
|
+
Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022.
|
35
|
+
|
36
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
37
|
+
purpose with or without fee is hereby granted, provided that the above
|
38
|
+
copyright notice and this permission notice appear in all copies.
|
39
|
+
|
40
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
41
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
42
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
43
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
44
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
45
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
46
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
47
|
+
|
26
48
|
Project-URL: Homepage, https://github.com/ragardner/tksheet
|
27
49
|
Project-URL: Documentation, https://github.com/ragardner/tksheet/wiki/Version-7
|
28
50
|
Project-URL: Changelog, https://github.com/ragardner/tksheet/blob/master/docs/CHANGELOG.md
|
@@ -0,0 +1,22 @@
|
|
1
|
+
tksheet/__init__.py,sha256=F7uCYLIy7aoFG0OTPxNeNrMTLdXNzic5D5I4xj3Azvs,2532
|
2
|
+
tksheet/colors.py,sha256=dHhmdFuQDlwohDHsAfT9VdrKoSl_R33L72a3HCin5zo,51591
|
3
|
+
tksheet/column_headers.py,sha256=S-5AQ-kmywDMsL061iWyHTVKNmikNBfHxML3zFnUD-o,103609
|
4
|
+
tksheet/constants.py,sha256=f-w31-cmBt2PNcCYWYnpWgi7vNzqpFqJKqZoE9HXlRs,25454
|
5
|
+
tksheet/find_window.py,sha256=P27qQsj9BxjALgfVfWV5tyRTDlnws-rCjnmZmoGzq1c,20917
|
6
|
+
tksheet/formatters.py,sha256=DGcRiMsDJnySNpQcjfiX84oJ7TmOSMdU6u9injIhA4g,10095
|
7
|
+
tksheet/functions.py,sha256=8d5T8UgNrJ3XmDFLGWXw19yVZQclLgMkinnTi5aDaLo,53163
|
8
|
+
tksheet/main_table.py,sha256=-Vt7N4r2Ijom1MNMf3c-hwGJbkJDlbs3s_lgkZ_YbME,378814
|
9
|
+
tksheet/other_classes.py,sha256=4VcAxiPH8SxuNbbLSve5ynqfnLwMUGSUs1ZQp0Yc1Gc,18177
|
10
|
+
tksheet/row_index.py,sha256=EHn6FJB6I5EawX0EPpz0lxqeBAPlT4EXCIh1XHB1R1g,141881
|
11
|
+
tksheet/sheet.py,sha256=j6mBRFjG_u-cWvMJs3mADevWCC01hFrnw32BOFGxixY,270167
|
12
|
+
tksheet/sheet_options.py,sha256=bB-XBs1sL2w9a47wSM6GD960ZKbvQuU2VvYIK2JRSjE,14567
|
13
|
+
tksheet/sorting.py,sha256=zcZPpRtP1h_xJGtGkG3E43H7deKQFnh9cMwZ1B2-aGc,17502
|
14
|
+
tksheet/text_editor.py,sha256=bkVRWYE3fCIo5xvwUBkmkBJ6nBGV2X1VsZ4LhQ5146I,8366
|
15
|
+
tksheet/themes.py,sha256=kUUCUmvgu8vUlzfVNk9a3BEbeBcU3asNwPB_u-OejCY,18471
|
16
|
+
tksheet/tksheet_types.py,sha256=1MjXR34EmvP1KfHlLTvKKVnf0VMz_LU_WOM2q4o5hfI,4598
|
17
|
+
tksheet/top_left_rectangle.py,sha256=A4wWL8PFl57Pn2Ek71rASCE1-bW844cTl7bgt4tLWzI,8499
|
18
|
+
tksheet-7.5.1.dist-info/licenses/LICENSE.txt,sha256=n1UvJHBr-AYNOf6ExICDsEggh9R7U4V4m_gH7FD-y-o,2305
|
19
|
+
tksheet-7.5.1.dist-info/METADATA,sha256=EkfOrjSukmE7ZUCsRf8FD0SC_PGFk5Z5hsaUWUcsync,9474
|
20
|
+
tksheet-7.5.1.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
|
21
|
+
tksheet-7.5.1.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
|
22
|
+
tksheet-7.5.1.dist-info/RECORD,,
|
@@ -0,0 +1,41 @@
|
|
1
|
+
Copyright (c) 2019 ragardner and open source contributors
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
11
|
+
copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19
|
+
SOFTWARE.
|
20
|
+
|
21
|
+
---
|
22
|
+
|
23
|
+
### Third-Party Assets: Icons from Lucide Icons
|
24
|
+
|
25
|
+
Icons used in tksheet are sourced from Lucide Icons (https://lucide.dev) and are licensed under the ISC License. This license applies only to the icon assets and not to the rest of the tksheet software, which remains under the MIT License above.
|
26
|
+
|
27
|
+
ISC License
|
28
|
+
|
29
|
+
Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022.
|
30
|
+
|
31
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
32
|
+
purpose with or without fee is hereby granted, provided that the above
|
33
|
+
copyright notice and this permission notice appear in all copies.
|
34
|
+
|
35
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
36
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
37
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
38
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
39
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
40
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
41
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
tksheet-7.4.24.dist-info/RECORD
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
tksheet/__init__.py,sha256=WfT3DhWZu7l_NqGdTEofioaUu9jaN-lGhCci1VKEYGE,2327
|
2
|
-
tksheet/colors.py,sha256=dHhmdFuQDlwohDHsAfT9VdrKoSl_R33L72a3HCin5zo,51591
|
3
|
-
tksheet/column_headers.py,sha256=cP0RImb-EgHdVLSfNmU42k5GwCol7akKgMH6xq1sZfY,103339
|
4
|
-
tksheet/constants.py,sha256=aiDvUSaPtl_TSNtRRJ_p87c9iTBz9ksMd5IsSXzz4Hk,13316
|
5
|
-
tksheet/find_window.py,sha256=w6S0FZFLRNHiM57Oq97avALT_PctIBPegSxnkNUwkwk,19982
|
6
|
-
tksheet/formatters.py,sha256=DGcRiMsDJnySNpQcjfiX84oJ7TmOSMdU6u9injIhA4g,10095
|
7
|
-
tksheet/functions.py,sha256=gwf9X9ENHmoikjbXtoj-00uUVQGRJVffkeJHoR7yB2E,52993
|
8
|
-
tksheet/main_table.py,sha256=22uUDpB1CBHRASvQUnEvhzsaZEXA580omFBJhzP98us,368944
|
9
|
-
tksheet/other_classes.py,sha256=4VcAxiPH8SxuNbbLSve5ynqfnLwMUGSUs1ZQp0Yc1Gc,18177
|
10
|
-
tksheet/row_index.py,sha256=8zuNU00ATmz5oumEqSyB_nOUAIuCS23mUfTpq3R1WOM,141611
|
11
|
-
tksheet/sheet.py,sha256=0He8YJqBO6SpC3jbXsL3prXMGIR9RoZUyb3tAU5eFa0,269718
|
12
|
-
tksheet/sheet_options.py,sha256=ob-XYgGfBoi2TaFAvUUmlWUkw9xB-yXmJw17gu9__Lw,9948
|
13
|
-
tksheet/sorting.py,sha256=zcZPpRtP1h_xJGtGkG3E43H7deKQFnh9cMwZ1B2-aGc,17502
|
14
|
-
tksheet/text_editor.py,sha256=rU8Fz0-ltkM63W9io2DoZJPyzUGzCc9Z0qBtc4D1H40,7404
|
15
|
-
tksheet/themes.py,sha256=AoNAxibnQi04MN0Zpbn9-kyDnkiiV8TDNWP9FYjpuf0,18473
|
16
|
-
tksheet/tksheet_types.py,sha256=1MjXR34EmvP1KfHlLTvKKVnf0VMz_LU_WOM2q4o5hfI,4598
|
17
|
-
tksheet/top_left_rectangle.py,sha256=A4wWL8PFl57Pn2Ek71rASCE1-bW844cTl7bgt4tLWzI,8499
|
18
|
-
tksheet-7.4.24.dist-info/licenses/LICENSE.txt,sha256=ndbcCPe9SlHfweE_W2RAueWUe2k7yudyxYLq6WjFdn4,1101
|
19
|
-
tksheet-7.4.24.dist-info/METADATA,sha256=Xmd2MJHPcpUFTYrtte0qAcBN1Wjwi8VODJkgBzHDbOY,8117
|
20
|
-
tksheet-7.4.24.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
|
21
|
-
tksheet-7.4.24.dist-info/top_level.txt,sha256=my61PXCcck_HHAc9cq3NAlyAr3A3FXxCy9gptEOaCN8,8
|
22
|
-
tksheet-7.4.24.dist-info/RECORD,,
|
@@ -1,19 +0,0 @@
|
|
1
|
-
Copyright (c) 2019 ragardner and open source contributors
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
-
of this software and associated documentation files (the "Software"), to deal
|
5
|
-
in the Software without restriction, including without limitation the rights
|
6
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
-
copies of the Software, and to permit persons to whom the Software is
|
8
|
-
furnished to do so, subject to the following conditions:
|
9
|
-
|
10
|
-
The above copyright notice and this permission notice shall be included in all
|
11
|
-
copies or substantial portions of the Software.
|
12
|
-
|
13
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19
|
-
SOFTWARE.
|
File without changes
|