/
VolcanoByte
/
vbCinema
Обзор
Документация
Войти
/
VolcanoByte
/
vbCinema
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
sources/uFormOptions.py
164 строки
6 KB
Eugene Gavrilyuk
Fix sync and options
21 апр 2026, 15:11
21 апр 2026, 15:11
e039530
Код
Авторство
О чём код?
from PyQt6.QtCore import Qt, QByteArray, QMetaObject from PyQt6.QtWidgets import QDialog, QLabel, QCheckBox, QFormLayout from formOptions import Ui_formOptions from uConsts import (AppConsts, PageConsts, StoreConsts, ThemeConsts) from uGlobal import MovieColumns, store, translators from uUtils import getBool, getInt class FormOptions(QDialog, Ui_formOptions): def __init__(self, parent): super().__init__(parent) # Индексы колонок в QGridLayout self.colIndexes = [] self.setupUi(self) self.tabOptions.setCurrentIndex(PageConsts.PageGeneral) self.buttonBox.accepted.connect(self.accept) self.buttonBox.rejected.connect(self.reject) QMetaObject.connectSlotsByName(self) self.finished.connect(self.on_close) self.readSettings() def readSettings(self): self.restoreGeometry(store.value( StoreConsts.OptionsFormGeometry, QByteArray())) # General self.cbCheckOnStart.setChecked(getBool(store.value( StoreConsts.OptionsUpdateStart, True))) self.cbCheckOnFinish.setChecked(getBool(store.value( StoreConsts.OptionsUpdateFinish, True))) # Язык language = store.value(StoreConsts.OptionsLanguage, AppConsts.DefaultLanguage) self.updateLanguageComboBox(language) # Стиль сетки gridStyle = store.value(StoreConsts.OptionsGridStyle, AppConsts.DefaultGridStyle) self.cbxGridStyle.setCurrentIndex(int(gridStyle)) # Тема theme = store.value(StoreConsts.OptionsTheme, AppConsts.DefaultTheme) self.updateThemesComboBox(theme) # Double Click indexDoubleClick = store.value(StoreConsts.OptionsDoubleClick, AppConsts.DefaultDoubleClick) self.cbxDoubleClick.setCurrentIndex(int(indexDoubleClick)) self.edViewingURL.setText( store.value(StoreConsts.OptionsViewingURL, '')) # Kinopoisk Unofficial API self.edToken.setText(store.value(StoreConsts.OptionsToken, '')) self.sbActorsCount.setValue(getInt( store.value(StoreConsts.OptionsActorsCount, AppConsts.DefaultActorsCount))) self.sbDirectorsCount.setValue(getInt( store.value(StoreConsts.OptionsDirectorsCount, AppConsts.DefaultDirectorsCount))) self.cbxNameLanguage.setCurrentIndex(getInt( store.value(StoreConsts.OptionsNameLanguage, AppConsts.DefaultNameLanguage))) # Колонки self.updateColumns() def writeSettings(self): store.setValue(StoreConsts.OptionsFormGeometry, self.saveGeometry()) if self.result(): store.setValue(StoreConsts.OptionsUpdateStart, self.cbCheckOnStart.isChecked()) store.setValue(StoreConsts.OptionsUpdateFinish, self.cbCheckOnFinish.isChecked()) store.setValue(StoreConsts.OptionsLanguage, self.cbxLanguage.currentText()) store.setValue(StoreConsts.OptionsTheme, self.cbxTheme.currentText()) store.setValue(StoreConsts.OptionsGridStyle, self.cbxGridStyle.currentIndex()) store.setValue(StoreConsts.OptionsDoubleClick, str(self.cbxDoubleClick.currentIndex())) store.setValue(StoreConsts.OptionsViewingURL, self.edViewingURL.text()) store.setValue(StoreConsts.OptionsToken, self.edToken.text()) store.setValue(StoreConsts.OptionsDirectorsCount, self.sbDirectorsCount.value()) store.setValue(StoreConsts.OptionsActorsCount, self.sbActorsCount.value()) store.setValue(StoreConsts.OptionsNameLanguage, self.cbxNameLanguage.currentIndex()) self.saveColumns() def on_close(self): self.writeSettings() def updateLanguageComboBox(self, language=None): self.cbxLanguage.clear() for _lang in translators.keys(): self.cbxLanguage.addItem(_lang) self.cbxLanguage.setCurrentText(language) def updateThemesComboBox(self, theme): self.cbxTheme.clear() self.cbxTheme.addItem(ThemeConsts.Light) self.cbxTheme.addItem(ThemeConsts.Dark) self.cbxTheme.setCurrentText(theme) def clearLayout(self, layout): """Рекурсивно очищает макет (layout)""" while layout and layout.count(): item = layout.takeAt(0) widget = item.widget() if widget: widget.deleteLater() else: sub_layout = item.layout() if sub_layout: self.clearLayout(sub_layout) def updateColumns(self): self.clearLayout( self.gridLayout) row = 0 visibleDefault = {col[0]: col[4] for col in MovieColumns} visibilities = store.value(StoreConsts.MainFormColumnVisibilities, visibleDefault) for column in MovieColumns: if column[2] and column[0] in visibilities: self.colIndexes.append(column[0]) lblName = QLabel(self) lblName.setText(column[1]) cbValue = QCheckBox(self) cbValue.setChecked(visibilities[column[0]]) self.gridLayout.addWidget(lblName, row, 0) self.gridLayout.addWidget(cbValue, row, 1, Qt.AlignmentFlag.AlignCenter) row += 1 def saveColumns(self): visibilities = dict() for _row in range(self.gridLayout.rowCount()): value = self.gridLayout.itemAtPosition(_row, 1).widget().isChecked() field = self.colIndexes[_row] visibilities[field] = value store.setValue(StoreConsts.MainFormColumnVisibilities, visibilities)