From ccdd1d345514f39ea2761b4de82fddc0b88bc29a Mon Sep 17 00:00:00 2001 From: rrooij Date: Fri, 26 May 2017 17:49:46 +0200 Subject: [PATCH] Add GUI Very simple and most likely with bugs. --- sd3save_editor/gui/__init__.py | 0 sd3save_editor/gui/main.py | 9 +++ sd3save_editor/gui/mainwindow.py | 45 ++++++++++++++ sd3save_editor/gui/mainwindow.ui | 94 +++++++++++++++++++++++++++++ sd3save_editor/gui/mainwindow_ui.py | 64 ++++++++++++++++++++ 5 files changed, 212 insertions(+) create mode 100644 sd3save_editor/gui/__init__.py create mode 100644 sd3save_editor/gui/main.py create mode 100644 sd3save_editor/gui/mainwindow.py create mode 100644 sd3save_editor/gui/mainwindow.ui create mode 100644 sd3save_editor/gui/mainwindow_ui.py diff --git a/sd3save_editor/gui/__init__.py b/sd3save_editor/gui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/sd3save_editor/gui/main.py b/sd3save_editor/gui/main.py new file mode 100644 index 0000000..dcb18e6 --- /dev/null +++ b/sd3save_editor/gui/main.py @@ -0,0 +1,9 @@ +import sys + +from PyQt5.QtWidgets import QApplication +from sd3save_editor.gui.mainwindow import MainWindow + + +app = QApplication(sys.argv) +mainwindow = MainWindow() +sys.exit(app.exec_()) diff --git a/sd3save_editor/gui/mainwindow.py b/sd3save_editor/gui/mainwindow.py new file mode 100644 index 0000000..ed9b72c --- /dev/null +++ b/sd3save_editor/gui/mainwindow.py @@ -0,0 +1,45 @@ +from PyQt5.QtWidgets import QMainWindow, QFileDialog, QMessageBox +from sd3save_editor.gui.mainwindow_ui import Ui_MainWindow + +import sd3save_editor.save as save +import sd3save_editor.locations as locations + +class MainWindow(QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + self.ui = Ui_MainWindow() + self.ui.setupUi(self) + self.init_file_open_events() + self.init_location_combobox() + self.show() + + def init_file_open_events(self): + self.ui.actionOpen.triggered.connect(self.open_file_dialog) + + def init_location_combobox(self): + self.ui.locationComboBox.addItems(locations.get_locations()) + + def init_save_event(self): + self.ui.actionSave.triggered.connect(self.save_form_values) + self.ui.saveButton.clicked.connect(self.save_form_values) + + def save_form_values(self): + location_id = self.ui.locationComboBox.currentIndex() + 1 + save.change_location(self.save_file, location_id) + save.write_checksum(self.save_file) + + def closeEvent(self, event): + if hasattr(self, 'save_file'): + self.save_file.close() + event.accept() + + + def open_file_dialog(self): + filename = QFileDialog.getOpenFileName(self, 'Open file', filter="Seiken3 Save (*.srm)")[0] + try: + self.save_file = save.read_save(filename) + self.ui.saveButton.setEnabled(True) + self.ui.actionSave.setEnabled(True) + self.init_save_event() + except Exception as ex: + QMessageBox.warning(self, "Can't open Seiken3 save", str(ex)) diff --git a/sd3save_editor/gui/mainwindow.ui b/sd3save_editor/gui/mainwindow.ui new file mode 100644 index 0000000..3f985e4 --- /dev/null +++ b/sd3save_editor/gui/mainwindow.ui @@ -0,0 +1,94 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + Seiken Densetsu 3 Save Editor + + + + + + 0 + 0 + 791 + 80 + + + + + QFormLayout::AllNonFixedFieldsGrow + + + + + Location + + + + + + + + + + + false + + + + 690 + 530 + 81 + 22 + + + + Save + + + + + + + 0 + 0 + 800 + 19 + + + + + File + + + + + + + + + + Open + + + + + false + + + Save + + + + + + diff --git a/sd3save_editor/gui/mainwindow_ui.py b/sd3save_editor/gui/mainwindow_ui.py new file mode 100644 index 0000000..c466ba6 --- /dev/null +++ b/sd3save_editor/gui/mainwindow_ui.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'mainwindow.ui' +# +# Created by: PyQt5 UI code generator 5.7 +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore, QtGui, QtWidgets + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(800, 600) + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.formLayoutWidget = QtWidgets.QWidget(self.centralwidget) + self.formLayoutWidget.setGeometry(QtCore.QRect(0, 0, 791, 80)) + self.formLayoutWidget.setObjectName("formLayoutWidget") + self.formLayout = QtWidgets.QFormLayout(self.formLayoutWidget) + self.formLayout.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow) + self.formLayout.setContentsMargins(0, 0, 0, 0) + self.formLayout.setObjectName("formLayout") + self.locationLabel = QtWidgets.QLabel(self.formLayoutWidget) + self.locationLabel.setObjectName("locationLabel") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.locationLabel) + self.locationComboBox = QtWidgets.QComboBox(self.formLayoutWidget) + self.locationComboBox.setObjectName("locationComboBox") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.locationComboBox) + self.saveButton = QtWidgets.QPushButton(self.centralwidget) + self.saveButton.setEnabled(False) + self.saveButton.setGeometry(QtCore.QRect(690, 530, 81, 22)) + self.saveButton.setObjectName("saveButton") + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 19)) + self.menubar.setObjectName("menubar") + self.menuFile = QtWidgets.QMenu(self.menubar) + self.menuFile.setObjectName("menuFile") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(MainWindow) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + self.actionOpen = QtWidgets.QAction(MainWindow) + self.actionOpen.setObjectName("actionOpen") + self.actionSave = QtWidgets.QAction(MainWindow) + self.actionSave.setEnabled(False) + self.actionSave.setObjectName("actionSave") + self.menuFile.addAction(self.actionOpen) + self.menuFile.addAction(self.actionSave) + self.menubar.addAction(self.menuFile.menuAction()) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "Seiken Densetsu 3 Save Editor")) + self.locationLabel.setText(_translate("MainWindow", "Location")) + self.saveButton.setText(_translate("MainWindow", "Save")) + self.menuFile.setTitle(_translate("MainWindow", "File")) + self.actionOpen.setText(_translate("MainWindow", "Open")) + self.actionSave.setText(_translate("MainWindow", "Save")) +