From 9fc7bb98fbc495f88405bbeb0057abc20b6afd69 Mon Sep 17 00:00:00 2001 From: Escartem Date: Mon, 22 Jul 2024 12:52:49 +0200 Subject: [PATCH] fix many display and naming issues --- app.py | 45 +++++++++++++++++++++++-------- gui.ui | 84 ++++++++++++++++++++++++++++++---------------------------- 2 files changed, 78 insertions(+), 51 deletions(-) diff --git a/app.py b/app.py index f02de50..f864584 100644 --- a/app.py +++ b/app.py @@ -7,7 +7,7 @@ import extract from PyQt5 import uic from PyQt5.QtGui import QTextCursor, QStandardItemModel, QStandardItem from PyQt5.QtWidgets import QMessageBox, QMainWindow, QApplication, QFileDialog, QHeaderView -from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, QThread, QMetaType +from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, QThread, QMetaType, Qt QMetaType.type('QTextCursor') @@ -37,14 +37,17 @@ class BackgroundWorker(QObject): def __init__(self, action, folders, _map, _format): super().__init__() self.action = action + # TODO: dynamic args depending on action self.folders = folders self.map = _map self.format = _format def run(self): - fileStructure = extract.WwiseExtract(self.map, "mp3", *self.folders, progress="").load_folder() - - self.finished.emit(fileStructure) + if self.action == "load": + print("Loading files and mapping if necessary...") + fileStructure = extract.WwiseExtract(self.map, "mp3", *self.folders, progress=self.progress.emit).load_folder() + print("Done !") + self.finished.emit({"action": "load", "content": fileStructure}) class AnimeWwise(QMainWindow): def __init__(self): @@ -62,8 +65,6 @@ class AnimeWwise(QMainWindow): # utils self.selectFolder = lambda: QFileDialog.getExistingDirectory(self, "Select Folder") - # self.updateTreeView() - def setFolder(self, elem, folder): path = self.selectFolder() self.folders[folder] = path @@ -77,7 +78,13 @@ class AnimeWwise(QMainWindow): self.outputFormat.addItems(["mp3", "ogg"]) self.assetMap.addItems(["No map", *[f'{e["game"]} - v{e["version"]}' for e in self.maps["maps"]]]) - self.startButton.clicked.connect(lambda: self.start()) + self.tabs.setTabEnabled(1, False) + self.tabs.setTabEnabled(2, False) + + self.loadFilesButton.clicked.connect(lambda: self.start()) + + self.actionClearTreeView.triggered.connect(lambda: self.resetTreeView()) + self.actionExit.triggered.connect(lambda: self.close()) def getMaps(self): with open("maps/index.json", "r") as f: @@ -104,6 +111,9 @@ class AnimeWwise(QMainWindow): else: _map = None + self.tabs.setTabEnabled(0, False) + self.resetTreeView() + self.extractThread = QThread() self.extractWorker = BackgroundWorker("load", self.folders, _map, self.outputFormat.currentText()) self.extractWorker.moveToThread(self.extractThread) @@ -118,9 +128,12 @@ class AnimeWwise(QMainWindow): @pyqtSlot(dict) def handleFinished(self, data): - self.fileStructure = data - self.updateTreeView() - self.tabs.setCurrentIndex(1) + if data["action"] == "load": + self.fileStructure = data["content"] + self.updateTreeView() + self.tabs.setTabEnabled(0, True) + self.tabs.setTabEnabled(1, True) + self.tabs.setCurrentIndex(1) def _appendText(self, text): cursor = self.console.textCursor() @@ -129,9 +142,15 @@ class AnimeWwise(QMainWindow): self.console.setTextCursor(cursor) self.console.ensureCursorVisible() + def resetTreeView(self): + model = QStandardItemModel() + self.treeView.setModel(model) + self.tabs.setTabEnabled(1, False) + def updateTreeView(self): model = QStandardItemModel() model.setHorizontalHeaderLabels(["Name", "Offset", "Size"]) + # TODO: non swappable columns root_item = model.invisibleRootItem() self.addItems(root_item, self.fileStructure) @@ -147,11 +166,15 @@ class AnimeWwise(QMainWindow): for folder_name in sorted(element.get("folders", {}).keys()): folder_content = element["folders"][folder_name] folder_item = QStandardItem(folder_name) + folder_item.setCheckable(True) + # folder_item.setTristate(True) parent.appendRow([folder_item, QStandardItem(""), QStandardItem("")]) self.addItems(folder_item, folder_content) for file in sorted(element.get("files", [])): - parent.appendRow([QStandardItem(str(e)) for e in file]) + file_item = QStandardItem(str(file[0])) + file_item.setCheckable(True) + parent.appendRow([file_item, QStandardItem(str(file[1])), QStandardItem(str(file[2]))]) if __name__ == "__main__": app = QApplication(sys.argv) diff --git a/gui.ui b/gui.ui index a5ddc06..91da4e8 100644 --- a/gui.ui +++ b/gui.ui @@ -56,12 +56,12 @@ false - + true - Extract + Config @@ -161,6 +161,16 @@ + + + + Output format + + + + + + @@ -168,13 +178,24 @@ - - + + + + + + - + + + Qt::Horizontal + + + + + Load file(s) @@ -198,9 +219,9 @@ - + - Page + Extract @@ -250,32 +271,6 @@ - - - - 529 - 400 - 261 - 22 - - - - - - - - - - 260 - 400 - 262 - 22 - - - - Output format - - @@ -317,10 +312,14 @@ File - - + + + + + false + Extract @@ -337,17 +336,22 @@ - all + All files - selected + Selected files - + - clear table + Clear Table + + + + + Exit @@ -358,7 +362,7 @@ changeAltInput outputPath changeOutput - startButton + loadFilesButton tabs