Skip to content

Commit 5131e26

Browse files
committed
* Adding Keyframe checkbox to Settings menu as "Use keyframes for preview images" option (default enabled)
* Adding preview time slider to overlay at bottom of preview image * Adding time display next to preview slider in H:MM:SS format
1 parent ecd37f0 commit 5131e26

15 files changed

Lines changed: 390 additions & 49 deletions

CHANGES

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22

33
## Version 5.13.0
44

5+
* Adding Keyframe checkbox to Settings menu as "Use keyframes for preview images" option (default enabled)
6+
* Adding preview time slider to overlay at bottom of preview image
7+
* Adding time display next to preview slider in H:MM:SS format
58
* Adding #712 audio profile title options: No Title, Generate Title, and Custom Title
6-
* Adding Start/End Time tab to right-side options panel between Size and Crop tabs with compact 3-column layout
7-
* Fixing video track selector showing unnecessarily when source video has only one video track
8-
* Fixing visual border between filename area and video track selector
9-
* Fixing test suite hanging due to missing QApplication in PySide6 widget tests
109
* Adding async queue saving to prevent GUI blocking during queue operations
1110
* Adding atomic file writes for queue to prevent corruption from interrupted saves
1211
* Adding file-based locking for queue operations to prevent race conditions between instances
1312
* Adding graceful shutdown handling for worker process and background threads
13+
* Adding Start/End Time tab to right-side options panel between Size and Crop tabs with compact 3-column layout
14+
* Fixing video track selector showing unnecessarily when source video has only one video track
15+
* Fixing visual border between filename area and video track selector
16+
* Fixing test suite hanging due to missing QApplication in PySide6 widget tests
1417
* Fixing window resizing beyond screen boundaries when switching profiles on macOS
1518
* Fixing potential GUI freeze when log queue fills up during encoding
1619
* Fixing file handle leaks in command runner when process startup fails

fastflix/application.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ def create_app(enable_scaling):
3636
main_app = FastFlixApp(sys.argv)
3737
main_app.allWindows()
3838
main_app.setApplicationDisplayName("FastFlix")
39-
my_font = QtGui.QFont("Arial" if "Arial" in QtGui.QFontDatabase().families() else "Sans Serif", 9)
39+
available_fonts = QtGui.QFontDatabase().families()
40+
font_preference = ["Roboto", "Segoe UI", "Ubuntu", "Open Sans", "Sans Serif"]
41+
selected_font = next((f for f in font_preference if f in available_fonts), "Sans Serif")
42+
my_font = QtGui.QFont(selected_font, 9)
4043
main_app.setFont(my_font)
4144
main_app.setWindowIcon(QtGui.QIcon(main_icon))
4245
return main_app

fastflix/data/languages.yaml

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5421,6 +5421,21 @@ Use Sane Audio Selection (customizable in config file):
54215421
ukr: Використовуйте Sane Audio Selection (налаштовується у файлі конфігурації)
54225422
kor: 정상 오디오 선택 사용(구성 파일에서 사용자 지정 가능)
54235423
ron: Utilizați selecția audio Sane (personalizabilă în fișierul de configurare)
5424+
Use keyframes for preview images:
5425+
deu: Keyframes für Vorschaubilder verwenden
5426+
eng: Use keyframes for preview images
5427+
fra: Utiliser les images clés pour les images de prévisualisation
5428+
ita: Usa i fotogrammi chiave per le immagini di anteprima
5429+
spa: Usar fotogramas clave para las imágenes de vista previa
5430+
chs: 使用关键帧作为预览图像
5431+
jpn: プレビュー画像にキーフレームを使用する
5432+
rus: Использовать ключевые кадры для предварительного просмотра
5433+
por: Usar quadros-chave para imagens de pré-visualização
5434+
swe: Använd nyckelbilder för förhandsgranskningsbilder
5435+
pol: Użyj klatek kluczowych dla obrazów podglądu
5436+
ukr: Використовувати ключові кадри для зображень попереднього перегляду
5437+
kor: 미리보기 이미지에 키프레임 사용
5438+
ron: Utilizați cadrele cheie pentru imaginile de previzualizare
54245439
Useful when there is a desire to signal 0 values for max-cll and max-fall.:
54255440
deu: Nützlich, wenn der Wunsch besteht, 0-Werte für max-cll und max-fall zu signalisieren.
54265441
eng: Useful when there is a desire to signal 0 values for max-cll and max-fall.
@@ -11379,25 +11394,181 @@ Custom Title:
1137911394
ron: Titlu personalizat
1138011395
Flip:
1138111396
eng: Flip
11397+
deu: Flip
11398+
fra: Retournement
11399+
ita: Capovolgere
11400+
spa: Flip
11401+
jpn: フリップ
11402+
rus: Флип
11403+
por: Flip
11404+
swe: Vändning
11405+
pol: Klapka
11406+
chs: 翻转
11407+
ukr: Переверни.
11408+
kor: 플립
11409+
ron: Flip
1138211410
V Flip:
1138311411
eng: V Flip
11412+
deu: V Flip
11413+
fra: V Flip
11414+
ita: V Flip
11415+
spa: V Voltear
11416+
jpn: Vフリップ
11417+
rus: V Флип
11418+
por: V Flip
11419+
swe: V Vändning
11420+
pol: V Flip
11421+
chs: V 翻转
11422+
ukr: V-образне сальто
11423+
kor: V 플립
11424+
ron: V Flip
1138411425
H Flip:
1138511426
eng: H Flip
11427+
deu: H Flip
11428+
fra: H Flip
11429+
ita: H Flip
11430+
spa: H Flip
11431+
jpn: Hフリップ
11432+
rus: H Flip
11433+
por: H Flip
11434+
swe: H Flip
11435+
pol: H Flip
11436+
chs: 翻转
11437+
ukr: Переворот H.
11438+
kor: H 플립
11439+
ron: H Flip
1138611440
V+H Flip:
1138711441
eng: V+H Flip
11442+
deu: V+H Flip
11443+
fra: V+H Flip
11444+
ita: V+H Flip
11445+
spa: V+H Flip
11446+
jpn: V+Hフリップ
11447+
rus: V+H Flip
11448+
por: V+H Flip
11449+
swe: V+H Vändning
11450+
pol: V+H Flip
11451+
chs: V+H 翻转
11452+
ukr: V+H Flip
11453+
kor: V+H 플립
11454+
ron: V+H Flip
1138811455
Size:
1138911456
eng: Size
11457+
deu: Größe
11458+
fra: Taille
11459+
ita: Dimensione
11460+
spa: Talla
11461+
jpn: サイズ
11462+
rus: Размер
11463+
por: Tamanho
11464+
swe: Storlek
11465+
pol: Rozmiar
11466+
chs: 尺寸
11467+
ukr: Розмір
11468+
kor: 크기
11469+
ron: Mărime
1139011470
Reset:
1139111471
eng: Reset
11472+
deu: Zurücksetzen
11473+
fra: Remise à zéro
11474+
ita: Reset
11475+
spa: Restablecer
11476+
jpn: リセット
11477+
rus: Сброс
11478+
por: Reiniciar
11479+
swe: Återställning
11480+
pol: Reset
11481+
chs: 重置
11482+
ukr: Перезавантаження
11483+
kor: 초기화
11484+
ron: Resetare
1139211485
Reset start and end times:
1139311486
eng: Reset start and end times
11487+
deu: Start- und Endzeiten zurücksetzen
11488+
fra: Réinitialisation des heures de début et de fin
11489+
ita: Azzeramento degli orari di inizio e fine
11490+
spa: Restablecer las horas de inicio y fin
11491+
jpn: 開始時間と終了時間をリセット
11492+
rus: Сброс времени начала и окончания
11493+
por: Repor as horas de início e de fim
11494+
swe: Återställ start- och sluttider
11495+
pol: Resetowanie czasu rozpoczęcia i zakończenia
11496+
chs: 重置开始和结束时间
11497+
ukr: Скинути час початку та закінчення
11498+
kor: 시작 및 종료 시간 재설정
11499+
ron: Resetați orele de început și de sfârșit
1139411500
Fast:
1139511501
eng: Fast
11502+
deu: Schnell
11503+
fra: Rapide
11504+
ita: Veloce
11505+
spa: Rápido
11506+
jpn: 速い
11507+
rus: Быстрый
11508+
por: Rápido
11509+
swe: Snabb
11510+
pol: Szybko
11511+
chs: 快速
11512+
ukr: Швидко
11513+
kor: 빠른
11514+
ron: Rapid
1139611515
Exact:
1139711516
eng: Exact
11517+
deu: Genau
11518+
fra: Exactement
11519+
ita: Esattamente
11520+
spa: Exacto
11521+
jpn: 正確
11522+
rus: Точный адрес
11523+
por: Exato
11524+
swe: Exakt
11525+
pol: Dokładny
11526+
chs: 精确
11527+
ukr: Точно.
11528+
kor: 정확한
11529+
ron: Exact
1139811530
Start/End Time:
1139911531
eng: Start/End Time
11532+
deu: Beginn/Ende Uhrzeit
11533+
fra: Heure de début/fin
11534+
ita: Ora di inizio/fine
11535+
spa: Hora de inicio/fin
11536+
jpn: 開始/終了時間
11537+
rus: Время начала/окончания
11538+
por: Hora de início/fim
11539+
swe: Start- och sluttid
11540+
pol: Czas rozpoczęcia/zakończenia
11541+
chs: 开始/结束时间
11542+
ukr: Час початку/закінчення
11543+
kor: 시작/종료 시간
11544+
ron: Ora de începere/finalizare
1140011545
Reset crop:
1140111546
eng: Reset crop
11547+
deu: Ernte zurücksetzen
11548+
fra: Réinitialiser la culture
11549+
ita: Azzeramento del raccolto
11550+
spa: Restablecer cultivo
11551+
jpn: 作物をリセットする
11552+
rus: Сброс урожая
11553+
por: Redefinir a cultura
11554+
swe: Återställ grödan
11555+
pol: Resetowanie zbiorów
11556+
chs: 重置作物
11557+
ukr: Скинути врожай
11558+
kor: 자르기 초기화
11559+
ron: Resetarea culturii
1140211560
Options:
1140311561
eng: Options
11562+
deu: Optionen
11563+
fra: Options
11564+
ita: Opzioni
11565+
spa: Opciones
11566+
jpn: オプション
11567+
rus: Опции
11568+
por: Opções
11569+
swe: Alternativ
11570+
pol: Opcje
11571+
chs: 选项
11572+
ukr: Параметри
11573+
kor: 옵션
11574+
ron: Opțiuni

fastflix/models/config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,8 @@ class Config(BaseModel):
183183

184184
disable_cover_extraction: bool = False
185185

186+
use_keyframes_for_preview: bool = True
187+
186188
def encoder_opt(self, profile_name, profile_option_name):
187189
encoder_settings = getattr(self.profiles[self.selected_profile], profile_name)
188190
if encoder_settings:

fastflix/resources.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def get_icon(name: str, theme: str):
6262

6363

6464
def get_text_color(theme: str):
65-
if theme.lower() == "dark":
65+
if theme.lower() in ("dark", "onyx"):
6666
return "255, 255, 255"
6767
return "0, 0, 0"
6868

fastflix/ui_constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class BaseHeights:
4343
TOP_BAR_BUTTON: int = 38
4444
PATH_WIDGET: int = 20
4545
COMBO_BOX: int = 22
46-
PANEL_ITEM: int = 45
46+
PANEL_ITEM: int = 62
4747
SCROLL_MIN: int = 150
4848
PREVIEW_MIN: int = 195
4949
OUTPUT_DIR: int = 18

fastflix/ui_styles.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@ def get_scaled_stylesheet(theme: str) -> str:
1818

1919
if theme == "onyx":
2020
base += f"""
21-
QAbstractItemView {{ background-color: #4b5054; }}
21+
QAbstractItemView {{ background-color: #4f5962; }}
2222
QComboBox QAbstractItemView {{ background-color: #1d2023; border: 2px solid #76797c; }}
2323
QPushButton {{ border-radius: {border_radius}px; }}
2424
QLineEdit {{
25-
background-color: #707070;
25+
background-color: #4a555e;
2626
color: black;
2727
border-radius: {border_radius}px;
2828
}}
29-
QTextEdit {{ background-color: #707070; color: black; }}
30-
QTabBar::tab {{ background-color: #4b5054; }}
29+
QTextEdit {{ background-color: #4a555e; color: black; }}
30+
QTabBar::tab {{ background-color: #4f5962; }}
3131
QComboBox {{ border-radius: {border_radius}px; }}
3232
QScrollArea {{ border: 1px solid #919191; }}
3333
"""
@@ -42,8 +42,8 @@ def get_video_options_stylesheet(theme: str) -> str:
4242

4343
if theme == "onyx":
4444
return f"""
45-
* {{ background-color: #4b5054; color: white; }}
46-
QTabWidget {{ margin-top: {scaler.scale(34)}px; background-color: #4b5054; }}
45+
* {{ background-color: #4f5962; color: white; }}
46+
QTabWidget {{ margin-top: {scaler.scale(34)}px; background-color: #4f5962; }}
4747
QTabBar {{ font-size: {tab_font_size}px; background-color: #4f5962; }}
4848
QComboBox {{ min-height: {combo_min_height}px; }}
4949
"""

0 commit comments

Comments
 (0)