Skip to content

Commit

Permalink
see description
Browse files Browse the repository at this point in the history
#### Added:
- New options to address [246](#246)

#### Fixed:
- Redundant code causing potential redraw error
- Wrong version number in `__init__.py`
  • Loading branch information
ragardner committed Aug 19, 2024
1 parent 03a7f5f commit 9518868
Show file tree
Hide file tree
Showing 8 changed files with 115 additions and 62 deletions.
7 changes: 6 additions & 1 deletion docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
### Version 7.2.14
####
#### Added:
- New options to address [246](https://github.com/ragardner/tksheet/issues/246)

#### Fixed:
- Redundant code causing potential redraw error
- Wrong version number in `__init__.py`

### Version 7.2.13
#### Fixed:
Expand Down
4 changes: 4 additions & 0 deletions docs/DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,8 @@ def __init__(
show_horizontal_grid: bool = True,
display_selected_fg_over_highlights: bool = False,
show_selected_cells_border: bool = True,
edit_cell_tab: Literal["right", "down", ""] = "right",
edit_cell_return: Literal["right", "down", ""] = "down",
treeview: bool = False,
treeview_indent: str | int = "3",
rounded_boxes: bool = True,
Expand Down Expand Up @@ -5347,6 +5349,8 @@ set_options(redraw: bool = True, **kwargs) -> Sheet
The list of key word arguments available for `set_options()` are as follows, [see here](https://github.com/ragardner/tksheet/wiki/Version-7#initialization-options) as a guide for argument types.
```python
edit_cell_tab
edit_cell_return
auto_resize_columns
auto_resize_rows
to_clipboard_delimiter
Expand Down
1 change: 0 additions & 1 deletion tksheet/column_headers.py
Original file line number Diff line number Diff line change
Expand Up @@ -1437,7 +1437,6 @@ def redraw_grid_and_text(
x_stop,
self.current_height,
)
draw_x = self.MT.col_positions[grid_start_col]
yend = self.current_height - 5
if (self.PAR.ops.show_vertical_grid or self.width_resizing_enabled) and col_pos_exists:
points = [
Expand Down
52 changes: 52 additions & 0 deletions tksheet/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,58 @@ def is_contiguous(iterable: Iterator[int]) -> bool:
return all(i == (prev := prev + 1) for i in itr)


def down_cell_within_box(
r: int,
c: int,
r1: int,
c1: int,
r2: int,
c2: int,
numrows: int,
numcols: int,
) -> tuple[int, int]:
moved = False
new_r = r
new_c = c
if r + 1 == r2:
new_r = r1
elif numrows > 1:
new_r = r + 1
moved = True
if not moved:
if c + 1 == c2:
new_c = c1
elif numcols > 1:
new_c = c + 1
return new_r, new_c


def cell_right_within_box(
r: int,
c: int,
r1: int,
c1: int,
r2: int,
c2: int,
numrows: int,
numcols: int,
) -> tuple[int, int]:
moved = False
new_r = r
new_c = c
if c + 1 == c2:
new_c = c1
elif numcols > 1:
new_c = c + 1
moved = True
if not moved:
if r + 1 == r2:
new_r = r1
elif numrows > 1:
new_r = r + 1
return new_r, new_c


def get_last(
it: Iterator,
) -> object:
Expand Down
108 changes: 49 additions & 59 deletions tksheet/main_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
decompress_load,
diff_gen,
diff_list,
down_cell_within_box,
event_dict,
gen_formatted,
get_data_from_clipboard,
Expand All @@ -72,6 +73,7 @@
new_tk_event,
pickle_obj,
pickled_event_dict,
cell_right_within_box,
rounded_box_coords,
span_idxs_post_move,
try_binding,
Expand Down Expand Up @@ -6782,63 +6784,63 @@ def close_text_editor(self, event: tk.Event) -> Literal["break"] | None:
numrows = r2 - r1
if numcols == 1 and numrows == 1:
if event.keysym == "Return":
self.select_cell(r + 1 if r < len(self.row_positions) - 2 else r, c)
self.see(
r + 1 if r < len(self.row_positions) - 2 else r,
c,
keep_xscroll=True,
bottom_right_corner=True,
check_cell_visibility=True,
)
if self.PAR.ops.edit_cell_return == "right":
self.select_right(r, c)
if self.PAR.ops.edit_cell_return == "down":
self.select_down(r, c)
elif event.keysym == "Tab":
if self.PAR.ops.edit_cell_tab == "right":
self.select_right(r, c)
if self.PAR.ops.edit_cell_tab == "down":
self.select_down(r, c)
else:
if event.keysym == "Return":
if self.PAR.ops.edit_cell_return == "right":
new_r, new_c = cell_right_within_box(r, c, r1, c1, r2, c2, numrows, numcols)
elif self.PAR.ops.edit_cell_return == "down":
new_r, new_c = down_cell_within_box(r, c, r1, c1, r2, c2, numrows, numcols)
else:
new_r, new_c = None, None
elif event.keysym == "Tab":
self.select_cell(r, c + 1 if c < len(self.col_positions) - 2 else c)
if self.PAR.ops.edit_cell_tab == "right":
new_r, new_c = cell_right_within_box(r, c, r1, c1, r2, c2, numrows, numcols)
elif self.PAR.ops.edit_cell_tab == "down":
new_r, new_c = down_cell_within_box(r, c, r1, c1, r2, c2, numrows, numcols)
else:
new_r, new_c = None, None
if isinstance(new_r, int):
self.set_currently_selected(new_r, new_c, item=self.selected.fill_iid)
self.see(
r,
c + 1 if c < len(self.col_positions) - 2 else c,
keep_xscroll=True,
new_r,
new_c,
keep_xscroll=False,
bottom_right_corner=True,
check_cell_visibility=True,
)
else:
moved = False
new_r = r
new_c = c
if event.keysym == "Return":
if r + 1 == r2:
new_r = r1
elif numrows > 1:
new_r = r + 1
moved = True
if not moved:
if c + 1 == c2:
new_c = c1
elif numcols > 1:
new_c = c + 1
elif event.keysym == "Tab":
if c + 1 == c2:
new_c = c1
elif numcols > 1:
new_c = c + 1
moved = True
if not moved:
if r + 1 == r2:
new_r = r1
elif numrows > 1:
new_r = r + 1
self.set_currently_selected(new_r, new_c, item=self.selected.fill_iid)
self.see(
new_r,
new_c,
keep_xscroll=False,
bottom_right_corner=True,
check_cell_visibility=True,
)
self.recreate_all_selection_boxes()
self.hide_text_editor_and_dropdown()
if event.keysym != "FocusOut":
self.focus_set()
return "break"

def select_right(self, r: int, c: int) -> None:
self.select_cell(r, c + 1 if c < len(self.col_positions) - 2 else c)
self.see(
r,
c + 1 if c < len(self.col_positions) - 2 else c,
bottom_right_corner=True,
check_cell_visibility=True,
)

def select_down(self, r: int, c: int) -> None:
self.select_cell(r + 1 if r < len(self.row_positions) - 2 else r, c)
self.see(
r + 1 if r < len(self.row_positions) - 2 else r,
c,
bottom_right_corner=True,
check_cell_visibility=True,
)

def tab_key(self, event: object = None) -> str:
if not self.selected:
return
Expand All @@ -6851,19 +6853,7 @@ def tab_key(self, event: object = None) -> str:
new_c = c + 1 if c < len(self.col_positions) - 2 else c
self.select_cell(new_r, new_c)
else:
moved = False
new_r = r
new_c = c
if c + 1 == c2:
new_c = c1
elif numcols > 1:
new_c = c + 1
moved = True
if not moved:
if r + 1 == r2:
new_r = r1
elif numrows > 1:
new_r = r + 1
new_r, new_c = cell_right_within_box(r, c, r1, c1, r2, c2, numrows, numcols)
self.set_currently_selected(new_r, new_c, item=self.selected.fill_iid)
self.see(
new_r,
Expand Down
1 change: 0 additions & 1 deletion tksheet/row_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -1535,7 +1535,6 @@ def redraw_grid_and_text(
self.hidd_tree_arrow.update(self.disp_tree_arrow)
self.disp_tree_arrow = {}
self.visible_row_dividers = {}
draw_y = self.MT.row_positions[grid_start_row]
xend = self.current_width - 6
self.row_width_resize_bbox = (
self.current_width - 2,
Expand Down
2 changes: 2 additions & 0 deletions tksheet/sheet.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,8 @@ def __init__(
show_horizontal_grid: bool = True,
display_selected_fg_over_highlights: bool = False,
show_selected_cells_border: bool = True,
edit_cell_tab: Literal["right", "down", ""] = "right",
edit_cell_return: Literal["right", "down", ""] = "down",
treeview: bool = False,
treeview_indent: str | int = "6",
rounded_boxes: bool = True,
Expand Down
2 changes: 2 additions & 0 deletions tksheet/sheet_options.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,8 @@ def new_sheet_options() -> DotDict:
"show_horizontal_grid": True,
"display_selected_fg_over_highlights": False,
"show_selected_cells_border": True,
"edit_cell_tab": "right",
"edit_cell_return": "down",
"treeview": False,
"treeview_indent": "6",
"rounded_boxes": True,
Expand Down

0 comments on commit 9518868

Please sign in to comment.