mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 13:40:27 +02:00
Improve karaoke mode and update changelog
This commit is contained in:
@@ -1,3 +1,7 @@
|
|||||||
|
# 1.1.7 (ğre-release)
|
||||||
|
- Added MPS GPU acceleration support for Silicon Mac, mentioned in https://github.com/denizsafak/abogen/issues/32#issuecomment-3155902040 by @jefro108
|
||||||
|
- Added word-by-word karaoke highlighting feature by @robmckinnon in PR #65
|
||||||
|
|
||||||
# 1.1.6
|
# 1.1.6
|
||||||
- Improved EPUB chapter detection: Now reliably detects chapters from NAV HTML (TOC) files, even in non-standard EPUBs, fixes the issue mentioned by @jefro108 in #33
|
- Improved EPUB chapter detection: Now reliably detects chapters from NAV HTML (TOC) files, even in non-standard EPUBs, fixes the issue mentioned by @jefro108 in #33
|
||||||
- Fixed SRT subtitle numbering issue, mentioned by @page-muncher in #41
|
- Fixed SRT subtitle numbering issue, mentioned by @page-muncher in #41
|
||||||
|
|||||||
@@ -971,6 +971,25 @@ class abogen(QWidget):
|
|||||||
lambda i: self.set_subtitle_format(self.subtitle_format_combo.itemData(i))
|
lambda i: self.set_subtitle_format(self.subtitle_format_combo.itemData(i))
|
||||||
)
|
)
|
||||||
subtitle_format_layout.addWidget(self.subtitle_format_combo)
|
subtitle_format_layout.addWidget(self.subtitle_format_combo)
|
||||||
|
# If subtitle mode requires highlighting, SRT is not supported. Disable SRT item
|
||||||
|
# and auto-switch to a compatible ASS format if SRT is currently selected.
|
||||||
|
try:
|
||||||
|
if hasattr(self, "subtitle_mode") and self.subtitle_mode == "Sentence + Highlighting":
|
||||||
|
idx_srt = self.subtitle_format_combo.findData("srt")
|
||||||
|
if idx_srt >= 0:
|
||||||
|
item = self.subtitle_format_combo.model().item(idx_srt)
|
||||||
|
if item is not None:
|
||||||
|
item.setEnabled(False)
|
||||||
|
# If current selection is SRT, switch to centered narrow ASS
|
||||||
|
if self.subtitle_format_combo.currentData() == "srt":
|
||||||
|
new_idx = self.subtitle_format_combo.findData("ass_centered_narrow")
|
||||||
|
if new_idx >= 0:
|
||||||
|
self.subtitle_format_combo.setCurrentIndex(new_idx)
|
||||||
|
# Persist the change
|
||||||
|
self.set_subtitle_format(self.subtitle_format_combo.itemData(new_idx))
|
||||||
|
except Exception:
|
||||||
|
# Fail-safe: don't crash UI if model manipulation isn't supported on some platforms
|
||||||
|
pass
|
||||||
controls_layout.addLayout(subtitle_format_layout)
|
controls_layout.addLayout(subtitle_format_layout)
|
||||||
|
|
||||||
# Replace single newlines dropdown (acts like checkbox)
|
# Replace single newlines dropdown (acts like checkbox)
|
||||||
@@ -2472,6 +2491,30 @@ class abogen(QWidget):
|
|||||||
self.subtitle_format_combo.setEnabled(False)
|
self.subtitle_format_combo.setEnabled(False)
|
||||||
else:
|
else:
|
||||||
self.subtitle_format_combo.setEnabled(True)
|
self.subtitle_format_combo.setEnabled(True)
|
||||||
|
# If highlighting mode selected, SRT is not supported. Disable SRT option and
|
||||||
|
# switch away from it if currently selected.
|
||||||
|
try:
|
||||||
|
idx_srt = self.subtitle_format_combo.findData("srt")
|
||||||
|
if mode == "Sentence + Highlighting":
|
||||||
|
if idx_srt >= 0:
|
||||||
|
item = self.subtitle_format_combo.model().item(idx_srt)
|
||||||
|
if item is not None:
|
||||||
|
item.setEnabled(False)
|
||||||
|
# If current format is SRT, switch to a compatible ASS format
|
||||||
|
if self.subtitle_format_combo.currentData() == "srt":
|
||||||
|
new_idx = self.subtitle_format_combo.findData("ass_centered_narrow")
|
||||||
|
if new_idx >= 0:
|
||||||
|
self.subtitle_format_combo.setCurrentIndex(new_idx)
|
||||||
|
self.set_subtitle_format(self.subtitle_format_combo.itemData(new_idx))
|
||||||
|
else:
|
||||||
|
# Re-enable SRT option when not in highlighting mode
|
||||||
|
if idx_srt >= 0:
|
||||||
|
item = self.subtitle_format_combo.model().item(idx_srt)
|
||||||
|
if item is not None:
|
||||||
|
item.setEnabled(True)
|
||||||
|
except Exception:
|
||||||
|
# Ignore errors interacting with model (defensive)
|
||||||
|
pass
|
||||||
|
|
||||||
def on_format_changed(self, fmt):
|
def on_format_changed(self, fmt):
|
||||||
self.selected_format = fmt
|
self.selected_format = fmt
|
||||||
|
|||||||
Reference in New Issue
Block a user