Implement session-based language overrides for the viewer
All checks were successful
Build Linux / Build Linux (push) Successful in 1m39s
Build Windows / Build Windows (push) Successful in 4m53s

This commit is contained in:
2026-01-31 13:11:12 +01:00
parent 988178f1c6
commit fa195f2695

View File

@@ -126,6 +126,7 @@ class MainWindow(QMainWindow):
self.undo_stack = [] self.undo_stack = []
self.redo_stack = [] self.redo_stack = []
self.is_modified = False self.is_modified = False
self.language_overrides = {} # Session-based viewer overrides: (mag, pnum) -> lang_idx
# UI Components # UI Components
self.central_widget = QWidget() self.central_widget = QWidget()
@@ -442,6 +443,12 @@ class MainWindow(QMainWindow):
if action: if action:
idx = action.data() idx = action.data()
self.canvas.subset_idx = idx self.canvas.subset_idx = idx
# Store session override for the current page (magazine + page number)
if self.current_page:
key = (self.current_page.magazine, self.current_page.page_number)
self.language_overrides[key] = idx
self.canvas.redraw() self.canvas.redraw()
self.canvas.update() self.canvas.update()
self.update_language_label() self.update_language_label()
@@ -480,6 +487,7 @@ class MainWindow(QMainWindow):
self.undo_stack.clear() self.undo_stack.clear()
self.redo_stack.clear() self.redo_stack.clear()
self.language_overrides.clear()
self.status_label.setText("File closed.") self.status_label.setText("File closed.")
QTimer.singleShot(3000, lambda: self.status_label.setText("Ready")) QTimer.singleShot(3000, lambda: self.status_label.setText("Ready"))
@@ -770,6 +778,14 @@ class MainWindow(QMainWindow):
if isinstance(page, Page): if isinstance(page, Page):
self.current_page = page self.current_page = page
self.canvas.set_page(page) self.canvas.set_page(page)
# Apply session language override if it exists for this page
key = (page.magazine, page.page_number)
if key in self.language_overrides:
self.canvas.subset_idx = self.language_overrides[key]
self.canvas.redraw()
self.canvas.update()
self.update_language_label() self.update_language_label()
self.canvas.setFocus() self.canvas.setFocus()