From b71e2bbb556a35e006e9e97478390fa234547b6b Mon Sep 17 00:00:00 2001 From: Bernd Date: Sun, 20 Jul 2025 17:48:18 +0500 Subject: [PATCH] 1) added option to change table scale; 2) fixed focusing issue --- frontend.py | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/frontend.py b/frontend.py index 5f3a15e..dfa4b04 100644 --- a/frontend.py +++ b/frontend.py @@ -12,7 +12,7 @@ from PyQt5.QtWidgets import ( QInputDialog, QApplication, QAbstractItemView, QSizePolicy, QHeaderView, QPushButton ) from PyQt5.QtCore import Qt, QSettings -from PyQt5.QtGui import QColor, QIcon +from PyQt5.QtGui import QColor, QIcon, QFont from backend import AnimeBackend # Set up logging @@ -94,6 +94,8 @@ Global Shortcuts: - Page Up: Previous tab - Q: Quit the program - R: Pick random anime +- Ctrl + + : Increase table scale +- Ctrl + - : Decrease table scale Table-specific Shortcuts (apply to selected entry): - Delete: Delete an anime @@ -189,12 +191,14 @@ class AnimeTracker(QMainWindow): self.status_filter = None self.type_filter = None self.search_text = None + self.table_scale = self.settings.value("tableScale", 1.0, type=float) self.create_menu() self.load_tabs() self.restoreGeometry(self.settings.value("geometry", self.saveGeometry())) last_tab = self.settings.value("lastTab", None) if last_tab is not None: self.set_current_tab_by_identifier(last_tab) + self.tab_widget.setFocus() def apply_filters(self): year_val = self.year_spin.value() @@ -212,6 +216,7 @@ class AnimeTracker(QMainWindow): def closeEvent(self, event): self.settings.setValue("geometry", self.saveGeometry()) self.settings.setValue("lastTab", self.get_current_tab_identifier()) + self.settings.setValue("tableScale", self.table_scale) super().closeEvent(event) def create_menu(self): @@ -308,6 +313,11 @@ class AnimeTracker(QMainWindow): header.setSectionResizeMode(4, QHeaderView.ResizeToContents) # Status header.setSectionResizeMode(5, QHeaderView.Stretch) # Comment header.setSectionResizeMode(6, QHeaderView.ResizeToContents) # Actions + font = QFont() + font.setPointSize(int(10 * self.table_scale)) + table.setFont(font) + table.horizontalHeader().setFont(font) + table.verticalHeader().setFont(font) for row, entry in enumerate(pre_entries): col = 0 # ID @@ -316,6 +326,7 @@ class AnimeTracker(QMainWindow): col += 1 # Year year_item = QTableWidgetItem(str(entry[2])) + year_item.setFont(font) table.setItem(row, col, year_item) col += 1 # Name @@ -328,22 +339,28 @@ class AnimeTracker(QMainWindow): name_label.setOpenExternalLinks(True) else: name_label.setText(html.escape(name)) + name_label.setFont(font) table.setCellWidget(row, col, name_label) col += 1 # Type type_item = QTableWidgetItem(entry[5] or '') + type_item.setFont(font) table.setItem(row, col, type_item) col += 1 # Status status_item = QTableWidgetItem(entry[4]) + status_item.setFont(font) table.setItem(row, col, status_item) col += 1 # Comment comment_item = QTableWidgetItem(entry[6] or '') + comment_item.setFont(font) table.setItem(row, col, comment_item) col += 1 # Actions actions_widget = self.create_actions_widget(entry[0], entry[4]) + for child in actions_widget.findChildren(QToolButton): + child.setFont(font) table.setCellWidget(row, col, actions_widget) table.resizeColumnsToContents() table.resizeRowsToContents() @@ -428,6 +445,11 @@ class AnimeTracker(QMainWindow): header.setSectionResizeMode(3, QHeaderView.ResizeToContents) # Status header.setSectionResizeMode(4, QHeaderView.Stretch) # Comment header.setSectionResizeMode(5, QHeaderView.ResizeToContents) # Actions + font = QFont() + font.setPointSize(int(10 * self.table_scale)) + table.setFont(font) + table.horizontalHeader().setFont(font) + table.verticalHeader().setFont(font) for row, entry in enumerate(entries): col = 0 # ID @@ -444,22 +466,28 @@ class AnimeTracker(QMainWindow): name_label.setOpenExternalLinks(True) else: name_label.setText(html.escape(name)) + name_label.setFont(font) table.setCellWidget(row, col, name_label) col += 1 # Type type_item = QTableWidgetItem(entry[5] or '') + type_item.setFont(font) table.setItem(row, col, type_item) col += 1 # Status status_item = QTableWidgetItem(entry[4]) + status_item.setFont(font) table.setItem(row, col, status_item) col += 1 # Comment comment_item = QTableWidgetItem(entry[6] or '') + comment_item.setFont(font) table.setItem(row, col, comment_item) col += 1 # Actions actions_widget = self.create_actions_widget(entry[0], entry[4]) + for child in actions_widget.findChildren(QToolButton): + child.setFont(font) table.setCellWidget(row, col, actions_widget) table.resizeColumnsToContents() table.resizeRowsToContents() @@ -661,6 +689,17 @@ class AnimeTracker(QMainWindow): self.close() elif key == Qt.Key_R: self.random_pick() + elif modifiers == Qt.ControlModifier: + if key == Qt.Key_Plus or key == Qt.Key_Equal: + current_id = self.get_current_tab_identifier() + self.table_scale = min(self.table_scale + 0.1, 2.0) + self.load_tabs() + self.set_current_tab_by_identifier(current_id) + elif key == Qt.Key_Minus: + current_id = self.get_current_tab_identifier() + self.table_scale = max(self.table_scale - 0.1, 0.5) + self.load_tabs() + self.set_current_tab_by_identifier(current_id) super().keyPressEvent(event) if __name__ == '__main__':