1
0
Fork 0
mirror of synced 2024-06-26 10:11:19 +12:00

Save window size

This commit is contained in:
Dummerle 2021-04-10 14:58:34 +02:00
parent 6bf11b5d2d
commit e67629e8f8
4 changed files with 40 additions and 26 deletions

View file

@ -8,17 +8,29 @@ from rare.components.tab_widget import TabWidget
class MainWindow(QMainWindow):
def __init__(self, core):
super(MainWindow, self).__init__()
self.setGeometry(0, 0, 1200, 800)
settings = QSettings()
width, height = 1200, 800
if settings.value("save_size", False):
width, height = settings.value("window_size", (1200, 800), tuple)
self.setGeometry(0, 0, width, height)
self.setWindowTitle("Rare - GUI for legendary")
self.tab_widget = TabWidget(core)
self.setCentralWidget(self.tab_widget)
self.show()
def closeEvent(self, e: QCloseEvent):
if QSettings().value("sys_tray", True, bool):
settings = QSettings()
if settings.value("sys_tray", True, bool):
self.hide()
e.ignore()
elif self.tab_widget.downloadTab.active_game is not None and QMessageBox.question(self, "Close", self.tr("There is a download active. Do you really want to exit app?"), QMessageBox.Yes, QMessageBox.No) == QMessageBox.Yes:
e.accept()
else:
e.accept()
return
elif self.tab_widget.downloadTab.active_game is not None:
if not QMessageBox.question(self, "Close", self.tr("There is a download active. Do you really want to exit app?"), QMessageBox.Yes, QMessageBox.No) == QMessageBox.Yes:
e.ignore()
return
if settings.value("save_size", False, bool):
size = self.size().width(), self.size().height()
settings.setValue("window_size", size)
e.accept()

View file

@ -56,9 +56,9 @@ class GameInfo(QScrollArea):
self.layout = QVBoxLayout()
self.setWidgetResizable(True)
# TODO More Information: Image text settings needs_verification platform
top_layout = QHBoxLayout()
# No Game at start. Game is set when clicked info
self.image = QLabel()
top_layout.addWidget(self.image)

View file

@ -26,9 +26,9 @@ class RareSettings(QScrollArea):
self.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.setWidgetResizable(True)
self.layout = QVBoxLayout()
settings = QSettings()
img_dir = settings.value("img_dir", os.path.expanduser("~/.cache/rare/images/"), type=str)
language = settings.value("language", get_lang(), type=str)
self.settings = QSettings()
img_dir = self.settings.value("img_dir", os.path.expanduser("~/.cache/rare/images/"), type=str)
language = self.settings.value("language", get_lang(), type=str)
# select Image dir
self.select_path = PathEdit(img_dir, type_of_file=QFileDialog.DirectoryOnly)
self.select_path.text_edit.textChanged.connect(lambda t: self.save_path_button.setDisabled(False))
@ -50,43 +50,48 @@ class RareSettings(QScrollArea):
self.layout.addWidget(self.lang_widget)
self.exit_to_sys_tray = QCheckBox(self.tr("Hide to System Tray Icon"))
self.exit_to_sys_tray.setChecked(settings.value("sys_tray", True, bool))
self.exit_to_sys_tray.stateChanged.connect(lambda x: self.update_checkbox(x, "sys_tray"))
self.exit_to_sys_tray.setChecked(self.settings.value("sys_tray", True, bool))
self.exit_to_sys_tray.stateChanged.connect(lambda: self.settings.setValue("sys_tray", self.exit_to_sys_tray.isChecked()))
self.sys_tray_widget = SettingsWidget(self.tr("Exit to System Tray Icon"), self.exit_to_sys_tray)
self.layout.addWidget(self.sys_tray_widget)
self.game_start_accept = QCheckBox(self.tr("Confirm launch of game"))
self.game_start_accept.stateChanged.connect(lambda x: self.update_checkbox(x, "confirm_start"))
self.game_start_accept.stateChanged.connect(lambda x: self.settings.setValue("confirm_start", self.game_start_accept.isChecked()))
self.game_start_accept_widget = SettingsWidget(self.tr("Confirm launch of game"), self.game_start_accept)
self.layout.addWidget(self.game_start_accept_widget)
self.cloud_sync = QCheckBox("Sync with cloud")
self.cloud_sync.setChecked(settings.value("auto_sync_cloud", True, bool))
self.cloud_sync = QCheckBox(self.tr("Sync with cloud"))
self.cloud_sync.setChecked(self.settings.value("auto_sync_cloud", True, bool))
self.cloud_sync_widget = SettingsWidget(self.tr("Auto sync with cloud"), self.cloud_sync)
self.layout.addWidget(self.cloud_sync_widget)
self.cloud_sync.stateChanged.connect(lambda: self.settings.setValue(f"auto_sync_cloud",
self.cloud_sync.isChecked()))
self.save_size = QCheckBox(self.tr("Save size"))
self.save_size.setChecked(self.settings.value("save_size", False, bool))
self.save_size_widget = SettingsWidget(self.tr("Save size of window after restart"), self.save_size)
self.layout.addWidget(self.save_size_widget)
self.save_size.stateChanged.connect(self.save_window_size)
self.layout.addWidget(self.save_size_widget)
self.layout.addStretch()
self.widget.setLayout(self.layout)
self.setWidget(self.widget)
def update_checkbox(self, checked, setting_name):
settings = QSettings()
settings.setValue(setting_name, checked != 0)
def save_window_size(self):
self.settings.setValue("save_size", self.save_size.isChecked())
self.settings.remove("window_size")
def save_path(self):
self.save_path_button.setDisabled(True)
self.update_path()
def update_lang(self, i: int):
settings = QSettings()
settings.setValue("language", languages[i][0])
self.settings.setValue("language", languages[i][0])
self.lang_widget.info_text.setText(self.tr("Restart Application to activate changes"))
def update_path(self):
settings = QSettings()
old_path = settings.value("img_dir", type=str)
old_path = self.settings.value("img_dir", type=str)
new_path = self.select_path.text()
if old_path != new_path:
@ -99,4 +104,4 @@ class RareSettings(QScrollArea):
for i in os.listdir(old_path):
shutil.move(os.path.join(old_path, i), os.path.join(new_path, i))
os.rmdir(old_path)
settings.setValue("img_dir", new_path)
self.settings.setValue("img_dir", new_path)

View file

@ -5,9 +5,6 @@ class SettingsWidget(QGroupBox):
def __init__(self, text: str, widget: QWidget, accept_button: QPushButton = None):
super(SettingsWidget, self).__init__()
self.setObjectName("settings_widget")
self.setStyleSheet("""QGroupBox{border: 1px solid gray;
border-radius: 3px;
margin-top: 1ex;}""")
self.layout = QVBoxLayout()
self.info_text = QLabel("")
self.setTitle(text)