def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) self.setWindowIcon(QIcon('img/cloverball.png')) editDir = QDir.homePath() editDir += '/documents/KONAMI/Pro Evolution Soccer 2016/save' if (os.path.isdir(editDir)): self._directory = editDir else: self._directory = QDir.currentPath() self._editFile = EditFile() self._editData = None # Handle open/save buttons if (EditFile.crypterAvailable()): self.actionOpen_Edit_File.setEnabled(True) else: self.actionOpen_Edit_File.setEnabled(False) self.actionSave_As_Edit_File.setEnabled(False) self.actionOpen_Edit_data.setEnabled(True) self.actionSave_As_Edit_data.setEnabled(False) self.actionOpen_Edit_File.triggered.connect(lambda: self.openEdit(False)) self.actionSave_As_Edit_File.triggered.connect(lambda: self.saveEdit(False)) self.actionOpen_Edit_data.triggered.connect(lambda: self.openEdit(True)) self.actionSave_As_Edit_data.triggered.connect(lambda: self.saveEdit(True)) self.actionExit.triggered.connect(self.close)
from modules.mainwindow import MainWindow # import after compilation app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.setWindowTitle(name + ' v' + version) # Prepare status bar versionString = '<a href=\'' + repository + '\'>' + 'v' + version + '</a>' versionLabel = QLabel(versionString) versionLabel.setOpenExternalLinks(True) mainWindow.statusbar.insertPermanentWidget(0, versionLabel) websiteLabel = QLabel('<a href=\'' + wiki + '\'>' + wiki + '</a>') websiteLabel.setOpenExternalLinks(True) mainWindow.statusbar.insertPermanentWidget(0, websiteLabel) decrypterText = '<a href="https://github.com/tunabrain4cc/pes16decrypter">' decrypterText += 'pes16decrypter</a> status: ' if (EditFile.crypterAvailable()): decrypterText += 'found' else: decrypterText += 'missing' pes16decrypterLabel = QLabel(decrypterText) mainWindow.statusbar.insertPermanentWidget(0, pes16decrypterLabel) mainWindow.statusbar.showMessage(welcomeText) # Add tabs and show main window #TODO: do this by searching the directory? from modules.players import PlayersWidget playersTab = PlayersWidget(mainWindow) mainWindow.mainTabs.addTab(playersTab, playersTab.windowTitle()) from modules.batchplayerediting4cc import BatchPlayerEditing4ccWidget batchTab = BatchPlayerEditing4ccWidget(mainWindow) mainWindow.mainTabs.addTab(batchTab, batchTab.windowTitle()) mainWindow.show()
class MainWindow(QMainWindow, Ui_MainWindow): loadedEditData = pyqtSignal(EditData) savedEditFile = pyqtSignal() def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) self.setWindowIcon(QIcon('img/cloverball.png')) editDir = QDir.homePath() editDir += '/documents/KONAMI/Pro Evolution Soccer 2016/save' if (os.path.isdir(editDir)): self._directory = editDir else: self._directory = QDir.currentPath() self._editFile = EditFile() self._editData = None # Handle open/save buttons if (EditFile.crypterAvailable()): self.actionOpen_Edit_File.setEnabled(True) else: self.actionOpen_Edit_File.setEnabled(False) self.actionSave_As_Edit_File.setEnabled(False) self.actionOpen_Edit_data.setEnabled(True) self.actionSave_As_Edit_data.setEnabled(False) self.actionOpen_Edit_File.triggered.connect(lambda: self.openEdit(False)) self.actionSave_As_Edit_File.triggered.connect(lambda: self.saveEdit(False)) self.actionOpen_Edit_data.triggered.connect(lambda: self.openEdit(True)) self.actionSave_As_Edit_data.triggered.connect(lambda: self.saveEdit(True)) self.actionExit.triggered.connect(self.close) @pyqtSlot(bool, str) def openEdit(self, dataOnly, filename=None): if (self._editData != None): QMessageBox.warning(None, 'Warning', 'You will lose any unsaved changes!') # Get open filename if needed if (filename == None): if (dataOnly): filter = 'Edit data file (*.dat *)' else: filter = 'Edit file (*)' filename = getOpenFileName(self, self._directory, filter) if (filename == None): return # Parse data if (dataOnly): # Read input file #TODO: move outside of block with proper cryptor try: with open(filename, 'rb') as f: data = bytearray(f.read()) except FileNotFoundError: QMessageBox.critical(None, 'Error', 'File not found!') return False self._editData = EditData(data) #TODO: needs error handling else: #TODO: needs error handling self._editFile.fromEditFile(filename) self._editData = EditData(self._editFile.data) self.actionSave_As_Edit_File.setEnabled(True) # we got an edit file self._directory = os.path.dirname(filename) # Update GUI self.actionSave_As_Edit_data.setEnabled(True) self.loadedEditData.emit(self._editData) self.statusbar.showMessage('Loaded ' + os.path.basename(filename) + ' successfully.') @pyqtSlot(bool, str) def saveEdit(self, dataOnly, filename=None): # Get save filename if needed if (filename == None): if (dataOnly): filter = 'Edit data file (*.dat *)' else: filter = 'Edit file (*)' filename = getSaveFileName(self, self._directory, filter) if (filename == None): return # Write to file #TODO: error handling if (dataOnly): with open(filename, 'wb') as f: f.write(self._editData.toBytearray()) else: self._editFile.data = self._editData.toBytearray() self._editFile.saveToEditFile(filename) self._directory = os.path.dirname(filename) self.savedEditFile.emit() self.statusbar.showMessage('Saved ' + os.path.basename(filename) + ' successfully.')