mirror of
https://github.com/Escartem/AnimeWwise.git
synced 2026-06-05 16:00:27 +08:00
add search bar
This commit is contained in:
28
app.py
28
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)
|
||||
|
||||
19
gui.ui
19
gui.ui
@@ -39,7 +39,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="usesScrollButtons">
|
||||
<bool>true</bool>
|
||||
@@ -208,9 +208,9 @@
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<y>20</y>
|
||||
<width>1081</width>
|
||||
<height>611</height>
|
||||
<height>591</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="columnCount">
|
||||
@@ -222,6 +222,19 @@
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="searchAsset">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>2</x>
|
||||
<y>1</y>
|
||||
<width>1081</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>Search something...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="extractTab">
|
||||
<attribute name="title">
|
||||
|
||||
Reference in New Issue
Block a user