diff --git a/app.py b/app.py index 4e1ec88..310a53a 100644 --- a/app.py +++ b/app.py @@ -114,6 +114,8 @@ class AnimeWwise(QMainWindow): self.extractSelected.clicked.connect(lambda: self.extractItems(False)) self.extractAll.clicked.connect(lambda: self.extractItems(True)) + self.searchAsset.textChanged.connect(lambda: self.filterAsset()) + # workers @pyqtSlot(list) def progressBarSlot(self, progress): @@ -128,7 +130,7 @@ class AnimeWwise(QMainWindow): def handleFinished(self, data): if data["action"] == "load": self.fileStructure = data["content"] - self.updateTreeWidget() + self.updateTreeWidget(self.fileStructure) self.tabs.setTabEnabled(0, False) self.tabs.setTabEnabled(1, True) self.tabs.setTabEnabled(2, True) @@ -178,16 +180,36 @@ class AnimeWwise(QMainWindow): self.backgroundThread.start() # page 2 - browsing + def filterAsset(self): + search = self.searchAsset.text() + if search == "": + self.updateTreeWidget(self.fileStructure) + return + result = self.searchFiles(self.fileStructure, search) + self.updateTreeWidget(result) + + def searchFiles(self, data, substring, current_path=""): + result = {"folders": {}, "files": []} + + result["files"] = [file for file in data.get("files", []) if substring in file[0]] + + for folder_name, folder_data in data.get("folders", {}).items(): + subfolder_result = self.searchFiles(folder_data, substring) + if subfolder_result["files"] or subfolder_result["folders"]: + result["folders"][folder_name] = subfolder_result + + return result + def resetTreeWidget(self): self.treeWidget.clear() self.tabs.setTabEnabled(1, False) - def updateTreeWidget(self): + def updateTreeWidget(self, structure): self.treeWidget.clear() self.treeWidget.setColumnCount(3) self.treeWidget.setHeaderLabels(["Name", "Offset", "Size", "Source"]) - self.addItems(None, self.fileStructure) + self.addItems(None, structure) self.treeWidget.expandAll() self.treeWidget.header().setSectionResizeMode(0, QHeaderView.Stretch) diff --git a/gui.ui b/gui.ui index 9654c12..5b633ec 100644 --- a/gui.ui +++ b/gui.ui @@ -39,7 +39,7 @@ - 0 + 1 true @@ -208,9 +208,9 @@ 0 - 0 + 20 1081 - 611 + 591 @@ -222,6 +222,19 @@ + + + + 2 + 1 + 1081 + 21 + + + + Search something... + +