mirror of
https://github.com/Escartem/AnimeWwise.git
synced 2026-06-11 04:05:37 +08:00
update front page
This commit is contained in:
41
app.py
41
app.py
@@ -125,9 +125,12 @@ class AnimeWwise(QMainWindow):
|
|||||||
elem.setText(path)
|
elem.setText(path)
|
||||||
|
|
||||||
def setupActions(self):
|
def setupActions(self):
|
||||||
self.changeInput.clicked.connect(lambda: self.setFolder(self.inputPath, "input"))
|
|
||||||
self.changeAltInput.clicked.connect(lambda: self.setFolder(self.altInputPath, "diff"))
|
self.changeAltInput.clicked.connect(lambda: self.setFolder(self.altInputPath, "diff"))
|
||||||
|
|
||||||
|
self.pckLoadTypeCombo.addItems(["Folder", "File"])
|
||||||
|
self.pckLoadTypeCombo.currentIndexChanged.connect(self.loadTypeChange)
|
||||||
|
self.loadType = "folder"
|
||||||
|
|
||||||
self.assetMap.addItems(["No map", *[f'{e["game"]} - v{e["version"]}' for e in self.maps["maps"]]])
|
self.assetMap.addItems(["No map", *[f'{e["game"]} - v{e["version"]}' for e in self.maps["maps"]]])
|
||||||
|
|
||||||
self.setExtractionState(False)
|
self.setExtractionState(False)
|
||||||
@@ -167,6 +170,14 @@ class AnimeWwise(QMainWindow):
|
|||||||
action_group.triggered.connect(self.updateFormat)
|
action_group.triggered.connect(self.updateFormat)
|
||||||
|
|
||||||
# utils
|
# utils
|
||||||
|
def loadTypeChange(self, event):
|
||||||
|
if event == 0:
|
||||||
|
self.pckSubFold.setEnabled(True)
|
||||||
|
self.loadType = "folder"
|
||||||
|
elif event == 1:
|
||||||
|
self.pckSubFold.setEnabled(False)
|
||||||
|
self.loadType = "file"
|
||||||
|
|
||||||
def updateFormat(self, event):
|
def updateFormat(self, event):
|
||||||
text = event.text()
|
text = event.text()
|
||||||
self.format = text.split(" ")[0]
|
self.format = text.split(" ")[0]
|
||||||
@@ -191,14 +202,14 @@ class AnimeWwise(QMainWindow):
|
|||||||
return f"{size} b"
|
return f"{size} b"
|
||||||
elif size > 1024 and size < 1048576:
|
elif size > 1024 and size < 1048576:
|
||||||
return f"{size//1024} KiB"
|
return f"{size//1024} KiB"
|
||||||
elif size > 1048576:
|
elif size > 1048576 and size < 1073741824:
|
||||||
return f"{size//1048576} MiB"
|
return f"{size//1048576} MiB"
|
||||||
|
elif size > 1073741824:
|
||||||
|
return f"{size//1073741824} GiB"
|
||||||
|
|
||||||
# workers
|
# workers
|
||||||
@pyqtSlot(list)
|
@pyqtSlot(list)
|
||||||
def progressBarSlot(self, progress):
|
def progressBarSlot(self, progress):
|
||||||
if progress[0] == "load":
|
|
||||||
self.loadProgress.setValue(math.ceil(progress[1]))
|
|
||||||
if progress[0] == "total":
|
if progress[0] == "total":
|
||||||
self.totalProgress.setValue(math.ceil(progress[1]))
|
self.totalProgress.setValue(math.ceil(progress[1]))
|
||||||
elif progress[0] == "file":
|
elif progress[0] == "file":
|
||||||
@@ -216,6 +227,8 @@ class AnimeWwise(QMainWindow):
|
|||||||
if data["action"] == "error":
|
if data["action"] == "error":
|
||||||
QMessageBox.warning(None, "Warning", data["content"]["msg"], QMessageBox.Ok)
|
QMessageBox.warning(None, "Warning", data["content"]["msg"], QMessageBox.Ok)
|
||||||
state = data["content"]["state"]
|
state = data["content"]["state"]
|
||||||
|
if state == 1:
|
||||||
|
self.loadFilesButton.setEnabled(True)
|
||||||
if state == 2:
|
if state == 2:
|
||||||
self.setExtractionState(True)
|
self.setExtractionState(True)
|
||||||
if data["action"] == "extract":
|
if data["action"] == "extract":
|
||||||
@@ -227,8 +240,17 @@ class AnimeWwise(QMainWindow):
|
|||||||
|
|
||||||
# page 1 - config
|
# page 1 - config
|
||||||
def loadFiles(self):
|
def loadFiles(self):
|
||||||
if self.folders["input"] == "":
|
if self.loadType == "folder":
|
||||||
QMessageBox.warning(None, "Warning", "Missing input folder !", QMessageBox.Ok)
|
self.setFolder(folder="input")
|
||||||
|
files = []
|
||||||
|
if self.folders["input"]:
|
||||||
|
files = [os.path.join(self.folders["input"], f) for f in os.listdir(self.folders["input"]) if f.endswith(".pck")]
|
||||||
|
elif self.loadType == "file":
|
||||||
|
path = QFileDialog.getOpenFileName(self, "Select .pck File", "", "PCK Files (*.pck)", options=QFileDialog.Options())
|
||||||
|
files = [path[0]]
|
||||||
|
|
||||||
|
if len(files) == 0 or files[0] == "":
|
||||||
|
QMessageBox.warning(None, "Warning", "Nothing to load !", QMessageBox.Ok)
|
||||||
return
|
return
|
||||||
|
|
||||||
_map = self.assetMap.currentIndex()
|
_map = self.assetMap.currentIndex()
|
||||||
@@ -242,7 +264,7 @@ class AnimeWwise(QMainWindow):
|
|||||||
|
|
||||||
# why is all this required for threading damnit
|
# why is all this required for threading damnit
|
||||||
self.backgroundThread = QThread()
|
self.backgroundThread = QThread()
|
||||||
self.backgroundWorker = BackgroundWorker("load", self.extract, {"input": self.folders["input"], "map": _map, "diff": self.folders["diff"]})
|
self.backgroundWorker = BackgroundWorker("load", self.extract, {"input": files, "map": _map, "diff": self.folders["diff"]})
|
||||||
self.backgroundWorker.moveToThread(self.backgroundThread)
|
self.backgroundWorker.moveToThread(self.backgroundThread)
|
||||||
self.backgroundThread.started.connect(self.backgroundWorker.run)
|
self.backgroundThread.started.connect(self.backgroundWorker.run)
|
||||||
self.backgroundWorker.finished.connect(self.handleFinished)
|
self.backgroundWorker.finished.connect(self.handleFinished)
|
||||||
@@ -316,7 +338,6 @@ class AnimeWwise(QMainWindow):
|
|||||||
subfolder_size = self.computeFolderSize(subfolder)
|
subfolder_size = self.computeFolderSize(subfolder)
|
||||||
total_size += subfolder_size
|
total_size += subfolder_size
|
||||||
|
|
||||||
folder["size"] = total_size
|
|
||||||
return total_size
|
return total_size
|
||||||
|
|
||||||
def updateAudioPreview(self, item, column):
|
def updateAudioPreview(self, item, column):
|
||||||
@@ -344,7 +365,7 @@ class AnimeWwise(QMainWindow):
|
|||||||
parent.addChild(folder_item)
|
parent.addChild(folder_item)
|
||||||
self.addItems(folder_item, folder_content)
|
self.addItems(folder_item, folder_content)
|
||||||
|
|
||||||
for file in sorted(element.get("files", [])):
|
for file in sorted(element.get("files", []), key=lambda x: x[0]):
|
||||||
file_meta = file[1]
|
file_meta = file[1]
|
||||||
file_item = QTreeWidgetItem([file[0], f'{round(file_meta["metadata"]["duration"], 1)} seconds', self.displaySize(file_meta["size"]), file_meta["source"], str(hex(file_meta["offset"]))])
|
file_item = QTreeWidgetItem([file[0], f'{round(file_meta["metadata"]["duration"], 1)} seconds', self.displaySize(file_meta["size"]), file_meta["source"], str(hex(file_meta["offset"]))])
|
||||||
file_item.setFlags(file_item.flags() | Qt.ItemIsUserCheckable)
|
file_item.setFlags(file_item.flags() | Qt.ItemIsUserCheckable)
|
||||||
@@ -412,6 +433,8 @@ class AnimeWwise(QMainWindow):
|
|||||||
self.currentInput = None
|
self.currentInput = None
|
||||||
self.setExtractionState(False)
|
self.setExtractionState(False)
|
||||||
self.tabs.setCurrentIndex(0)
|
self.tabs.setCurrentIndex(0)
|
||||||
|
self.totalProgress.setValue(0)
|
||||||
|
self.fileProgress.setValue(0)
|
||||||
print("Reset !")
|
print("Reset !")
|
||||||
|
|
||||||
def _appendText(self, text):
|
def _appendText(self, text):
|
||||||
|
|||||||
14
extract.py
14
extract.py
@@ -20,13 +20,15 @@ class WwiseExtract:
|
|||||||
|
|
||||||
### loading files ###
|
### loading files ###
|
||||||
|
|
||||||
def load_folder(self, _map, folder_path, diff_path, progress):
|
def load_folder(self, _map, files, diff_path, progress):
|
||||||
|
self.progress = progress
|
||||||
|
self.steps = 1
|
||||||
self.mapper = None
|
self.mapper = None
|
||||||
if _map is not None:
|
if _map is not None:
|
||||||
self.mapper = Mapper(path(cwd, f"maps/{_map}"))
|
self.mapper = Mapper(path(cwd, f"maps/{_map}"))
|
||||||
self.file_structure = {"folders": {}, "files": []}
|
self.file_structure = {"folders": {}, "files": []}
|
||||||
|
|
||||||
files = [f for f in os.listdir(folder_path) if f.endswith(".pck")]
|
# files = [f for f in os.listdir(folder_path) if f.endswith(".pck")]
|
||||||
hdiff_files = []
|
hdiff_files = []
|
||||||
if diff_path != "":
|
if diff_path != "":
|
||||||
hdiff_files = [f for f in os.listdir(diff_path) if f.endswith(".pck.hdiff")]
|
hdiff_files = [f for f in os.listdir(diff_path) if f.endswith(".pck.hdiff")]
|
||||||
@@ -38,12 +40,12 @@ class WwiseExtract:
|
|||||||
print(f"\nLoading {len(files)} files...")
|
print(f"\nLoading {len(files)} files...")
|
||||||
for file in files:
|
for file in files:
|
||||||
pos += 1
|
pos += 1
|
||||||
progress(["load", pos * 100 // len(files)])
|
self.update_progress(pos, len(files), 1)
|
||||||
|
|
||||||
hdiff = None
|
hdiff = None
|
||||||
if f"{file}.hdiff" in hdiff_files:
|
if f"{os.path.basename(file)}.hdiff" in hdiff_files:
|
||||||
hdiff = path(diff_path, hdiff_files[hdiff_files.index(f"{file}.hdiff")])
|
hdiff = path(diff_path, hdiff_files[hdiff_files.index(f"{os.path.basename(file)}.hdiff")])
|
||||||
self.load_file(path(folder_path, file), hdiff)
|
self.load_file(file, hdiff)
|
||||||
|
|
||||||
return self.file_structure
|
return self.file_structure
|
||||||
|
|
||||||
|
|||||||
279
gui.ui
279
gui.ui
@@ -77,69 +77,175 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="mainVLayout">
|
<layout class="QVBoxLayout" name="mainVLayout">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" name="ioGrid">
|
<widget class="QLabel" name="paddingB">
|
||||||
<item row="1" column="2">
|
<property name="text">
|
||||||
<widget class="QPushButton" name="changeAltInput">
|
<string>
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="titleCenter">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="appTitle">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>32</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Select</string>
|
<string>Welcome to AnimeWwise !</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
<property name="alignment">
|
||||||
</item>
|
<set>Qt::AlignCenter</set>
|
||||||
<item row="0" column="2">
|
|
||||||
<widget class="QPushButton" name="changeInput">
|
|
||||||
<property name="text">
|
|
||||||
<string>Select</string>
|
|
||||||
</property>
|
|
||||||
<property name="default">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="flat">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QLineEdit" name="altInputPath">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="readOnly">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="altInputLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Diff folder (optional)</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="inputLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Input folder</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QLineEdit" name="inputPath">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="readOnly">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="paddingA">
|
||||||
|
<property name="text">
|
||||||
|
<string>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="Line" name="lineAgain">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTabWidget" name="extractsTabs">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="pckExtract">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Extract audio package (.pck)</string>
|
||||||
|
</attribute>
|
||||||
|
<widget class="QWidget" name="gridLayoutWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>1041</width>
|
||||||
|
<height>111</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="pckGrid">
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QComboBox" name="pckLoadTypeCombo"/>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLabel" name="pckLoadType">
|
||||||
|
<property name="text">
|
||||||
|
<string>What to load :</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QCheckBox" name="pckSubFold">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Include subfolders ?</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QLabel" name="pckPadding">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="hdiffExtract">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Extract update package (.hdiff)</string>
|
||||||
|
</attribute>
|
||||||
|
<widget class="QWidget" name="gridLayoutWidget_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>1041</width>
|
||||||
|
<height>111</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="hdiffGrid">
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="altInputLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Diff folder</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QPushButton" name="changeAltInput">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Select</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="altInputPath">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" colspan="3">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Select here the folder containing the .hdiff files present in the game update package. And for the input folder asked upon loading, select the game audio folder before the update !
|
||||||
|
Subfolders are disabled in this mode, make sure to be in the correct place. For any help check the README.md or ask on discord.</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="Line" name="separatorA">
|
<widget class="Line" name="separatorA">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
@@ -147,11 +253,17 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="paddingC">
|
||||||
|
<property name="text">
|
||||||
|
<string>
|
||||||
|
|
||||||
|
</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" name="settingsGrid">
|
<layout class="QGridLayout" name="settingsGrid">
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QComboBox" name="assetMap"/>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="assetMapLabel">
|
<widget class="QLabel" name="assetMapLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -159,8 +271,20 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="assetMap"/>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="paddingD">
|
||||||
|
<property name="text">
|
||||||
|
<string>
|
||||||
|
|
||||||
|
</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="Line" name="separatorB">
|
<widget class="Line" name="separatorB">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
@@ -170,6 +294,15 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QVBoxLayout" name="loadLayout">
|
<layout class="QVBoxLayout" name="loadLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="paddingE">
|
||||||
|
<property name="text">
|
||||||
|
<string>
|
||||||
|
|
||||||
|
</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="loadFilesButton">
|
<widget class="QPushButton" name="loadFilesButton">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -178,25 +311,13 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="loadProgressLayout">
|
<widget class="QLabel" name="paddingF">
|
||||||
<item>
|
<property name="text">
|
||||||
<widget class="QLabel" name="loadLabel">
|
<string>
|
||||||
<property name="text">
|
|
||||||
<string>Progress</string>
|
</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QProgressBar" name="loadProgress">
|
|
||||||
<property name="value">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="invertedAppearance">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
@@ -470,10 +591,6 @@
|
|||||||
</action>
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>inputPath</tabstop>
|
|
||||||
<tabstop>changeInput</tabstop>
|
|
||||||
<tabstop>altInputPath</tabstop>
|
|
||||||
<tabstop>changeAltInput</tabstop>
|
|
||||||
<tabstop>tabs</tabstop>
|
<tabstop>tabs</tabstop>
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|||||||
Reference in New Issue
Block a user