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...
+
+