Skip to content

Commit

Permalink
Refactor: Deduplication in pagination.py's "Set Elipses Sizes" section (
Browse files Browse the repository at this point in the history
  • Loading branch information
SylviaSK committed May 8, 2024
1 parent b6ccb88 commit f9ea20e
Showing 1 changed file with 22 additions and 195 deletions.
217 changes: 22 additions & 195 deletions tagstudio/src/qt/pagination.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,13 +133,19 @@ def __init__(self, parent=None) -> None:
# self.update_buttons(page_count=9, index=0)

def update_buttons(self, page_count: int, index: int, emit: bool = True):
# Guard
if index < 0:
raise ValueError("Negative index detected")

# Screw it
for i in range(0, 10):
if self.start_buffer_layout.itemAt(i):
self.start_buffer_layout.itemAt(i).widget().setHidden(True)
if self.end_buffer_layout.itemAt(i):
self.end_buffer_layout.itemAt(i).widget().setHidden(True)

end_page = page_count - 1

if page_count <= 1:
# Hide everything if there are only one or less pages.
# [-------------- HIDDEN --------------]
Expand Down Expand Up @@ -172,7 +178,7 @@ def update_buttons(self, page_count: int, index: int, emit: bool = True):
# self.start_buffer_layout.setContentsMargins(3,0,3,0)
self._assign_click(self.prev_button, index - 1)
self.prev_button.setDisabled(False)
if index == page_count - 1:
if index == end_page:
self.next_button.setDisabled(True)
# self.end_buffer_layout.setContentsMargins(0,0,0,0)
else:
Expand All @@ -181,201 +187,22 @@ def update_buttons(self, page_count: int, index: int, emit: bool = True):
self.next_button.setDisabled(False)

# Set Ellipses Sizes
if page_count == 8:
if index == 0:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 2 + 3)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 2 + 3)
else:
self.end_ellipses.setMinimumWidth(self.button_size.width())
self.end_ellipses.setMaximumWidth(self.button_size.width())
if index == page_count - 1:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 2 + 3
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 2 + 3
)
else:
self.start_ellipses.setMinimumWidth(self.button_size.width())
self.start_ellipses.setMaximumWidth(self.button_size.width())
elif page_count == 9:
if index == 0:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 3 + 6)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 3 + 6)
elif index == 1:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 2 + 3)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 2 + 3)
else:
self.end_ellipses.setMinimumWidth(self.button_size.width())
self.end_ellipses.setMaximumWidth(self.button_size.width())
if index == page_count - 1:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 3 + 6
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 3 + 6
)
elif index == page_count - 2:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 2 + 3
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 2 + 3
)
else:
self.start_ellipses.setMinimumWidth(self.button_size.width())
self.start_ellipses.setMaximumWidth(self.button_size.width())
elif page_count == 10:
if index == 0:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 4 + 9)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 4 + 9)
elif index == 1:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 3 + 6)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 3 + 6)
elif index == 2:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 2 + 3)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 2 + 3)
else:
self.end_ellipses.setMinimumWidth(self.button_size.width())
self.end_ellipses.setMaximumWidth(self.button_size.width())
if index == page_count - 1:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 4 + 9
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 4 + 9
)
elif index == page_count - 2:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 3 + 6
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 3 + 6
)
elif index == page_count - 3:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 2 + 3
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 2 + 3
)
else:
self.start_ellipses.setMinimumWidth(self.button_size.width())
self.start_ellipses.setMaximumWidth(self.button_size.width())
elif page_count == 11:
if index == 0:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 5 + 12)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 5 + 12)
elif index == 1:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 4 + 9)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 4 + 9)
elif index == 2:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 3 + 6)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 3 + 6)
elif index == 3:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 2 + 3)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 2 + 3)
else:
self.end_ellipses.setMinimumWidth(self.button_size.width())
self.end_ellipses.setMaximumWidth(self.button_size.width())
if index == page_count - 1:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 5 + 12
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 5 + 12
)
elif index == page_count - 2:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 4 + 9
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 4 + 9
)
elif index == page_count - 3:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 3 + 6
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 3 + 6
)
elif index == page_count - 4:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 2 + 3
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 2 + 3
)
else:
self.start_ellipses.setMinimumWidth(self.button_size.width())
self.start_ellipses.setMaximumWidth(self.button_size.width())
# I do not know where these magic values were derived from, but
# this is better than the chain elif's that were here before
if 8 <= page_count <= 11:
end_scale = max(1, page_count - index - 6)
srt_scale = max(1, index - 5)
elif page_count > 11:
if index == 0:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 7 + 18)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 7 + 18)
elif index == 1:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 6 + 15)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 6 + 15)
elif index == 2:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 5 + 12)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 5 + 12)
elif index == 3:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 4 + 9)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 4 + 9)
elif index == 4:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 3 + 6)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 3 + 6)
elif index == 5:
self.end_ellipses.setMinimumWidth(self.button_size.width() * 2 + 3)
self.end_ellipses.setMaximumWidth(self.button_size.width() * 2 + 3)
else:
self.end_ellipses.setMinimumWidth(self.button_size.width())
self.end_ellipses.setMaximumWidth(self.button_size.width())
if index == page_count - 1:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 7 + 18
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 7 + 18
)
elif index == page_count - 2:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 6 + 15
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 6 + 15
)
elif index == page_count - 3:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 5 + 12
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 5 + 12
)
elif index == page_count - 4:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 4 + 9
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 4 + 9
)
elif index == page_count - 5:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 3 + 6
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 3 + 6
)
elif index == page_count - 6:
self.start_ellipses.setMinimumWidth(
self.button_size.width() * 2 + 3
)
self.start_ellipses.setMaximumWidth(
self.button_size.width() * 2 + 3
)
else:
self.start_ellipses.setMinimumWidth(self.button_size.width())
self.start_ellipses.setMaximumWidth(self.button_size.width())
end_scale = max(1, 7 - index)
srt_scale = max(1, (7 - (end_page - index)))

if page_count >= 8:
end_size = self.button_size.width() * end_scale + (3 * (end_scale - 1))
srt_size = self.button_size.width() * srt_scale + (3 * (srt_scale - 1))
self.end_ellipses.setMinimumWidth(end_size)
self.end_ellipses.setMaximumWidth(end_size)
self.start_ellipses.setMinimumWidth(srt_size)
self.start_ellipses.setMaximumWidth(srt_size)

# Enable/Disable Ellipses
# if index <= max(self.buffer_page_count, 5)+1:
Expand Down

0 comments on commit f9ea20e

Please sign in to comment.