1) added option to change table scale;

2) fixed focusing issue
This commit is contained in:
Bernd 2025-07-20 17:48:18 +05:00
parent 6fc4f716b7
commit b71e2bbb55

View File

@ -12,7 +12,7 @@ from PyQt5.QtWidgets import (
QInputDialog, QApplication, QAbstractItemView, QSizePolicy, QHeaderView, QPushButton QInputDialog, QApplication, QAbstractItemView, QSizePolicy, QHeaderView, QPushButton
) )
from PyQt5.QtCore import Qt, QSettings from PyQt5.QtCore import Qt, QSettings
from PyQt5.QtGui import QColor, QIcon from PyQt5.QtGui import QColor, QIcon, QFont
from backend import AnimeBackend from backend import AnimeBackend
# Set up logging # Set up logging
@ -94,6 +94,8 @@ Global Shortcuts:
- Page Up: Previous tab - Page Up: Previous tab
- Q: Quit the program - Q: Quit the program
- R: Pick random anime - R: Pick random anime
- Ctrl + + : Increase table scale
- Ctrl + - : Decrease table scale
Table-specific Shortcuts (apply to selected entry): Table-specific Shortcuts (apply to selected entry):
- Delete: Delete an anime - Delete: Delete an anime
@ -189,12 +191,14 @@ class AnimeTracker(QMainWindow):
self.status_filter = None self.status_filter = None
self.type_filter = None self.type_filter = None
self.search_text = None self.search_text = None
self.table_scale = self.settings.value("tableScale", 1.0, type=float)
self.create_menu() self.create_menu()
self.load_tabs() self.load_tabs()
self.restoreGeometry(self.settings.value("geometry", self.saveGeometry())) self.restoreGeometry(self.settings.value("geometry", self.saveGeometry()))
last_tab = self.settings.value("lastTab", None) last_tab = self.settings.value("lastTab", None)
if last_tab is not None: if last_tab is not None:
self.set_current_tab_by_identifier(last_tab) self.set_current_tab_by_identifier(last_tab)
self.tab_widget.setFocus()
def apply_filters(self): def apply_filters(self):
year_val = self.year_spin.value() year_val = self.year_spin.value()
@ -212,6 +216,7 @@ class AnimeTracker(QMainWindow):
def closeEvent(self, event): def closeEvent(self, event):
self.settings.setValue("geometry", self.saveGeometry()) self.settings.setValue("geometry", self.saveGeometry())
self.settings.setValue("lastTab", self.get_current_tab_identifier()) self.settings.setValue("lastTab", self.get_current_tab_identifier())
self.settings.setValue("tableScale", self.table_scale)
super().closeEvent(event) super().closeEvent(event)
def create_menu(self): def create_menu(self):
@ -308,6 +313,11 @@ class AnimeTracker(QMainWindow):
header.setSectionResizeMode(4, QHeaderView.ResizeToContents) # Status header.setSectionResizeMode(4, QHeaderView.ResizeToContents) # Status
header.setSectionResizeMode(5, QHeaderView.Stretch) # Comment header.setSectionResizeMode(5, QHeaderView.Stretch) # Comment
header.setSectionResizeMode(6, QHeaderView.ResizeToContents) # Actions 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): for row, entry in enumerate(pre_entries):
col = 0 col = 0
# ID # ID
@ -316,6 +326,7 @@ class AnimeTracker(QMainWindow):
col += 1 col += 1
# Year # Year
year_item = QTableWidgetItem(str(entry[2])) year_item = QTableWidgetItem(str(entry[2]))
year_item.setFont(font)
table.setItem(row, col, year_item) table.setItem(row, col, year_item)
col += 1 col += 1
# Name # Name
@ -328,22 +339,28 @@ class AnimeTracker(QMainWindow):
name_label.setOpenExternalLinks(True) name_label.setOpenExternalLinks(True)
else: else:
name_label.setText(html.escape(name)) name_label.setText(html.escape(name))
name_label.setFont(font)
table.setCellWidget(row, col, name_label) table.setCellWidget(row, col, name_label)
col += 1 col += 1
# Type # Type
type_item = QTableWidgetItem(entry[5] or '') type_item = QTableWidgetItem(entry[5] or '')
type_item.setFont(font)
table.setItem(row, col, type_item) table.setItem(row, col, type_item)
col += 1 col += 1
# Status # Status
status_item = QTableWidgetItem(entry[4]) status_item = QTableWidgetItem(entry[4])
status_item.setFont(font)
table.setItem(row, col, status_item) table.setItem(row, col, status_item)
col += 1 col += 1
# Comment # Comment
comment_item = QTableWidgetItem(entry[6] or '') comment_item = QTableWidgetItem(entry[6] or '')
comment_item.setFont(font)
table.setItem(row, col, comment_item) table.setItem(row, col, comment_item)
col += 1 col += 1
# Actions # Actions
actions_widget = self.create_actions_widget(entry[0], entry[4]) 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.setCellWidget(row, col, actions_widget)
table.resizeColumnsToContents() table.resizeColumnsToContents()
table.resizeRowsToContents() table.resizeRowsToContents()
@ -428,6 +445,11 @@ class AnimeTracker(QMainWindow):
header.setSectionResizeMode(3, QHeaderView.ResizeToContents) # Status header.setSectionResizeMode(3, QHeaderView.ResizeToContents) # Status
header.setSectionResizeMode(4, QHeaderView.Stretch) # Comment header.setSectionResizeMode(4, QHeaderView.Stretch) # Comment
header.setSectionResizeMode(5, QHeaderView.ResizeToContents) # Actions 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): for row, entry in enumerate(entries):
col = 0 col = 0
# ID # ID
@ -444,22 +466,28 @@ class AnimeTracker(QMainWindow):
name_label.setOpenExternalLinks(True) name_label.setOpenExternalLinks(True)
else: else:
name_label.setText(html.escape(name)) name_label.setText(html.escape(name))
name_label.setFont(font)
table.setCellWidget(row, col, name_label) table.setCellWidget(row, col, name_label)
col += 1 col += 1
# Type # Type
type_item = QTableWidgetItem(entry[5] or '') type_item = QTableWidgetItem(entry[5] or '')
type_item.setFont(font)
table.setItem(row, col, type_item) table.setItem(row, col, type_item)
col += 1 col += 1
# Status # Status
status_item = QTableWidgetItem(entry[4]) status_item = QTableWidgetItem(entry[4])
status_item.setFont(font)
table.setItem(row, col, status_item) table.setItem(row, col, status_item)
col += 1 col += 1
# Comment # Comment
comment_item = QTableWidgetItem(entry[6] or '') comment_item = QTableWidgetItem(entry[6] or '')
comment_item.setFont(font)
table.setItem(row, col, comment_item) table.setItem(row, col, comment_item)
col += 1 col += 1
# Actions # Actions
actions_widget = self.create_actions_widget(entry[0], entry[4]) 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.setCellWidget(row, col, actions_widget)
table.resizeColumnsToContents() table.resizeColumnsToContents()
table.resizeRowsToContents() table.resizeRowsToContents()
@ -661,6 +689,17 @@ class AnimeTracker(QMainWindow):
self.close() self.close()
elif key == Qt.Key_R: elif key == Qt.Key_R:
self.random_pick() 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) super().keyPressEvent(event)
if __name__ == '__main__': if __name__ == '__main__':