Implement session-based language overrides for the viewer
This commit is contained in:
@@ -126,6 +126,7 @@ class MainWindow(QMainWindow):
|
||||
self.undo_stack = []
|
||||
self.redo_stack = []
|
||||
self.is_modified = False
|
||||
self.language_overrides = {} # Session-based viewer overrides: (mag, pnum) -> lang_idx
|
||||
|
||||
# UI Components
|
||||
self.central_widget = QWidget()
|
||||
@@ -442,6 +443,12 @@ class MainWindow(QMainWindow):
|
||||
if action:
|
||||
idx = action.data()
|
||||
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.update()
|
||||
self.update_language_label()
|
||||
@@ -480,6 +487,7 @@ class MainWindow(QMainWindow):
|
||||
|
||||
self.undo_stack.clear()
|
||||
self.redo_stack.clear()
|
||||
self.language_overrides.clear()
|
||||
|
||||
self.status_label.setText("File closed.")
|
||||
QTimer.singleShot(3000, lambda: self.status_label.setText("Ready"))
|
||||
@@ -770,6 +778,14 @@ class MainWindow(QMainWindow):
|
||||
if isinstance(page, Page):
|
||||
self.current_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.canvas.setFocus()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user