Skip to content

Commit 504efeb

Browse files
Ver 1.1 main updates
Updates major code files to 1.1
1 parent 4c66569 commit 504efeb

8 files changed

Lines changed: 309 additions & 30 deletions

File tree

__init__.py

Whitespace-only changes.

aboutWindow.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55

66
class AboutWindow(ui_aboutWindow.Ui_Dialog, QtWidgets.QDialog):
7-
VERSION = "1.0.0"
7+
VERSION = "1.1.0"
88

99
def __init__(self, parent=None):
1010
super().__init__(parent=parent)

api.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,23 @@
11
import requests
22
import _thread
3-
import parser
3+
import sys,importlib.util
4+
if sys.version_info.minor==9:
5+
try:
6+
from . import parser
7+
except (ImportError,ModuleNotFoundError):
8+
parser=None
9+
else:
10+
import parser
11+
12+
def import_from_file(module_name, file_path):
13+
spec = importlib.util.spec_from_file_location(module_name, file_path)
14+
module = importlib.util.module_from_spec(spec)
15+
spec.loader.exec_module(module)
16+
return module
17+
18+
if not parser:
19+
parser=import_from_file("parser","./parser.py")
20+
421
import re
522
import chardet # 导入chardet库用于编码检测
623
from urllib.parse import quote, unquote

assetWindow.py

Lines changed: 55 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
from uip import ui_assetWindow
22
from PySide6 import QtWidgets, QtCore, QtGui
33
import _thread, api, browseWindow, pyperclip, downloader, typing, os, path_saver
4+
from INSLogger import Logger
45

56

67
class AssetWindow(ui_assetWindow.Ui_Dialog, QtWidgets.QDialog):
8+
logger = Logger("AssetWindow")
9+
710
def __init__(self, parent=None):
811
super().__init__(parent=parent)
912
self.setupUi(self)
@@ -44,16 +47,16 @@ def __init__(self, parent=None):
4447
def init_progress_bar(self):
4548
"""初始化进度条交互功能"""
4649
# 设置进度条范围
47-
self.horizontalSlider_playprogress.setRange(0, 100)
50+
# self.horizontalSlider_playprogress.setRange(0, 100) #Not needed in the new version
4851

49-
# 连接滑块信号
50-
self.horizontalSlider_playprogress.sliderPressed.connect(self.on_slider_pressed)
51-
self.horizontalSlider_playprogress.sliderReleased.connect(
52-
self.on_slider_released
53-
)
54-
self.horizontalSlider_playprogress.valueChanged.connect(
55-
self.on_slider_value_changed
56-
)
52+
# # 连接滑块信号
53+
# self.horizontalSlider_playprogress.sliderPressed.connect(self.on_slider_pressed)
54+
# self.horizontalSlider_playprogress.sliderReleased.connect(
55+
# self.on_slider_released
56+
# )
57+
# self.horizontalSlider_playprogress.valueChanged.connect(
58+
# self.on_slider_value_changed
59+
# )
5760

5861
def on_slider_pressed(self):
5962
"""进度条开始拖动时调用"""
@@ -154,10 +157,10 @@ def _on_font_page_loaded(self, success):
154157
self.js_code, self._on_font_js_executed
155158
)
156159
else:
157-
print("字体预览页面加载失败")
160+
self.logger.log("字体预览页面加载失败")
158161

159162
def _on_font_js_executed(self, result):
160-
print("JS执行完成,结果:", result)
163+
self.logger.log("JS执行完成,结果:", result)
161164

162165
def setData(self, data: dict):
163166
if "H1" in data.keys():
@@ -174,6 +177,7 @@ def setData(self, data: dict):
174177
if url.startswith("/"):
175178
url = f"http://localhost:{self.parent().parent().port}" + url
176179
self.widget_image.loader.load_image(url)
180+
self.pushButton_saveimage.clicked.connect(self.save_img)
177181
else:
178182
self.tabWidget.setTabEnabled(2, False)
179183
else:
@@ -182,9 +186,9 @@ def setData(self, data: dict):
182186
self.tabWidget.setTabEnabled(6, True)
183187
full_link = f"http://localhost:{self.parent().parent().port}{data['Video']}"
184188
self.widget_video_play.load_video(full_link)
185-
self.video_check_interval = QtCore.QTimer()
186-
self.video_check_interval.timeout.connect(self.update_vdo_proc)
187-
self.video_check_interval.start(1000) # 1秒更新一次
189+
# self.video_check_interval = QtCore.QTimer()
190+
# self.video_check_interval.timeout.connect(self.update_vdo_proc)
191+
# self.video_check_interval.start(1000) # 1秒更新一次
188192
self.pushButton_savevdo.clicked.connect(self.save_vdo)
189193
else:
190194
self.pushButton_savevdo.clicked.connect(self.empty)
@@ -245,7 +249,7 @@ def save_audio(self):
245249
self.setEnabled(True)
246250

247251
save_name: str = self.audio_name
248-
filters = f"{save_name.split(".")[1]} File (*.{save_name.split(".")[1]})"
252+
filters = f"{save_name.split('.')[1]} File (*.{save_name.split('.')[1]})"
249253
save_path = QtWidgets.QFileDialog.getSaveFileName(
250254
self,
251255
"Save File...",
@@ -258,7 +262,7 @@ def save_audio(self):
258262
self.saving_dialogs.append(downloader.Downloader(self))
259263
self.saving_dialogs[-1].show()
260264
full_url = (
261-
f"http://localhost:{self.parent().parent().port}{self._data["Audio"]}"
265+
f"http://localhost:{self.parent().parent().port}{self._data['Audio']}"
262266
)
263267
self.saving_dialogs[-1].file_download(full_url, save_path)
264268

@@ -284,7 +288,7 @@ def save_vdo(self):
284288
self.setEnabled(True)
285289

286290
save_name: str = self.vdo_name
287-
filters = f"{save_name.split(".")[1]} File (*.{save_name.split(".")[1]})"
291+
filters = f"{save_name.split('.')[1]} File (*.{save_name.split('.')[1]})"
288292
save_path = QtWidgets.QFileDialog.getSaveFileName(
289293
self,
290294
"Save File...",
@@ -297,7 +301,7 @@ def save_vdo(self):
297301
self.saving_dialogs.append(downloader.Downloader(self))
298302
self.saving_dialogs[-1].show()
299303
full_url = (
300-
f"http://localhost:{self.parent().parent().port}{self._data["Video"]}"
304+
f"http://localhost:{self.parent().parent().port}{self._data['Video']}"
301305
)
302306
self.saving_dialogs[-1].file_download(full_url, save_path)
303307

@@ -307,6 +311,31 @@ def _get_file_name(self):
307311
)
308312
self.vdo_name_got = True
309313

314+
def save_img(self):
315+
if not self._data["Image"]:
316+
return
317+
save_name: str = list(self._data["Image"].keys())[0]
318+
ext = self._get_img_ext(list(self._data["Image"].values())[0])
319+
self.logger.debug("savename:", save_name, "ext:", ext)
320+
filters = f"{ext} File(*.{ext})"
321+
save_path = QtWidgets.QFileDialog.getSaveFileName(
322+
self,
323+
"Save File...",
324+
dir=os.path.join(path_saver.get_last_export_path(), save_name),
325+
filter=filters,
326+
)[0]
327+
if not save_path:
328+
return
329+
path_saver.save_last_export_path(path_saver.get_file_dir(save_path))
330+
self.saving_dialogs.append(downloader.Downloader(self))
331+
self.saving_dialogs[-1].show()
332+
full_url = f"http://localhost:{self.parent().parent().port}{list(self._data['Image'].values())[0]}"
333+
self.saving_dialogs[-1].file_download(full_url, save_path)
334+
335+
_get_img_ext = staticmethod(
336+
lambda lnk: str(lnk).lower().split("extension=")[-1].split("&")[0]
337+
)
338+
310339
def save_yaml(self):
311340
if not self._data["Yaml"]:
312341
return
@@ -323,7 +352,7 @@ def save_yaml(self):
323352
path_saver.save_last_export_path(path_saver.get_file_dir(save_path))
324353
self.saving_dialogs.append(downloader.Downloader(self))
325354
self.saving_dialogs[-1].show()
326-
full_url = f"http://localhost:{self.parent().parent().port}{list(self._data["Yaml"].values())[0]}"
355+
full_url = f"http://localhost:{self.parent().parent().port}{list(self._data['Yaml'].values())[0]}"
327356
self.saving_dialogs[-1].file_download(full_url, save_path)
328357

329358
def save_json(self):
@@ -342,14 +371,14 @@ def save_json(self):
342371
path_saver.save_last_export_path(path_saver.get_file_dir(save_path))
343372
self.saving_dialogs.append(downloader.Downloader(self))
344373
self.saving_dialogs[-1].show()
345-
full_url = f"http://localhost:{self.parent().parent().port}{list(self._data["Json"].values())[0]}"
374+
full_url = f"http://localhost:{self.parent().parent().port}{list(self._data['Json'].values())[0]}"
346375
self.saving_dialogs[-1].file_download(full_url, save_path)
347376

348377
def save_text(self):
349378
if not self._data["Text"]:
350379
return # 没有
351380
save_name: str = list(self._data["Text"].keys())[0]
352-
filters = f"{save_name.split(".")[1]} File (*.{save_name.split(".")[1]});;Text File (*.txt);;All Files(*.*)"
381+
filters = f"{save_name.split('.')[1]} File (*.{save_name.split('.')[1]});;Text File (*.txt);;All Files(*.*)"
353382
save_path = QtWidgets.QFileDialog.getSaveFileName(
354383
self,
355384
"Save File...",
@@ -360,7 +389,7 @@ def save_text(self):
360389
return # 取消了
361390
path_saver.save_last_export_path(path_saver.get_file_dir(save_path))
362391
self.saving_dialogs.append(downloader.Downloader(self))
363-
full_url = f"http://localhost:{self.parent().parent().port}{list(self._data["Text"].values())[0]}"
392+
full_url = f"http://localhost:{self.parent().parent().port}{list(self._data['Text'].values())[0]}"
364393
self.saving_dialogs[-1].show()
365394
self.saving_dialogs[-1].file_download(full_url, save_path)
366395

@@ -517,6 +546,9 @@ def dependencies_context_menu(self):
517546

518547
def open_content(self, table: QtWidgets.QTableWidget, selection_text: str):
519548
link = self._data[f"{selection_text}_links"][table.selectedItems()[0].row()]
549+
if not link:
550+
# 没有就退出
551+
return
520552
if "Assets" in link:
521553
self.is_data_loaded = False
522554
self.loaded_data = None
@@ -548,7 +580,7 @@ def _open_assets(self, link):
548580
self.loaded_data = api.get_loaded_assets(
549581
self.parent().parent().port, from_url=True, url=link
550582
)
551-
# print(self.loaded_data)
583+
# self.logger.log(self.loaded_data)
552584
self.is_data_loaded = True
553585

554586
def closeEvent(self, arg__1):

searcher.py

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
from PySide6 import QtCore, QtWidgets
2+
from INSLogger import Logger
3+
4+
5+
class TreeSearcher(QtCore.QObject):
6+
logger = Logger("Searcher")
7+
8+
def __init__(self, search_bar: QtWidgets.QLineEdit):
9+
super().__init__(parent=search_bar)
10+
self._orig_dic = dict()
11+
self._treeWidget = None
12+
self._last_text = str()
13+
self._last_dict = None
14+
15+
self.parent().textChanged.connect(self.search)
16+
17+
def search(self):
18+
txt = self.parent().text()
19+
# self.logger.debug(self._last_text,self._last_dict)
20+
if self._last_text in txt and self._last_dict:
21+
data = self.searchedDict(self._last_dict, txt)
22+
self.setData(data)
23+
self._last_dict = data
24+
self.logger.log("finished fast search")
25+
else:
26+
data = self.searchedDict(self._orig_dic, txt)
27+
self.setData(data)
28+
self._last_dict = data
29+
self.logger.log("finished normal search")
30+
self._last_text = txt
31+
32+
@staticmethod
33+
def searchedDict(orig: dict, text: str) -> dict:
34+
out = dict()
35+
for k, v in orig.items():
36+
if not type(v) == dict:
37+
continue
38+
out[k] = dict()
39+
for i, j in v.items():
40+
if text in i:
41+
out[k][i] = j
42+
return out
43+
44+
def origDict(self) -> dict:
45+
return self._orig_dic
46+
47+
def setOrigDict(self, dic: dict):
48+
self._orig_dic = dic
49+
50+
def __bool__(self):
51+
return bool(self._orig_dic) and bool()
52+
53+
def treeWidget(self) -> QtWidgets.QTreeWidget:
54+
return self._treeWidget
55+
56+
def setTreeWidget(self, widget: QtWidgets.QTreeWidget):
57+
self._treeWidget = widget
58+
59+
def setData(self, data: dict):
60+
# self.logger.log(data)
61+
self._treeWidget.clear()
62+
self._treeWidget.setHeaderLabel("items")
63+
tvs = list()
64+
for k, v in data.items():
65+
trans = QtCore.QCoreApplication.translate("Dialog", k)
66+
qte = QtWidgets.QTreeWidgetItem([trans])
67+
if type(v) != dict:
68+
continue
69+
for l in v.keys():
70+
c = QtWidgets.QTreeWidgetItem([l])
71+
qte.addChild(c)
72+
tvs += [qte]
73+
self._treeWidget.insertTopLevelItems(0, tvs)
74+
self._treeWidget.expandAll()
75+
76+
77+
class TableSearcher(QtCore.QObject): # TODO:横竖反了,想紫砂了
78+
def __init__(self, search_bar: QtWidgets.QLineEdit):
79+
super().__init__(parent=search_bar)
80+
self._orig_list = list()
81+
self._tableWidget = None
82+
self.parent().textChanged.connect(self.search)
83+
84+
def setOrigList(self, lis: list):
85+
self._orig_list = lis
86+
87+
def origList(self) -> list:
88+
return self._orig_list
89+
90+
def setTableWidget(self, tab: QtWidgets.QListWidget):
91+
self._tableWidget = tab
92+
93+
def tableWidget(self) -> QtWidgets.QTableWidget:
94+
return self._tableWidget
95+
96+
@staticmethod
97+
def searchedList(orig: list, text: str):
98+
out = list()
99+
set_index = list()
100+
set_index.append(0)
101+
for i in range(len(orig)):
102+
for j in range(len(orig[i])):
103+
if text in orig[i][j]:
104+
set_index.append(j)
105+
_j2l = list()
106+
for i2 in range(len(orig)):
107+
_j2l = list()
108+
for j2 in range(len(orig[i2])):
109+
if j2 in set_index:
110+
_j2l.append(orig[i2][j2])
111+
if not _j2l:
112+
continue
113+
out.append(_j2l)
114+
return out
115+
116+
def search(self):
117+
self.setData(self.searchedList(self._orig_list, self.parent().text()))
118+
119+
def setData(self, data):
120+
assets_data: list = data
121+
self._tableWidget.clear()
122+
self._tableWidget.setColumnCount(len(assets_data))
123+
if assets_data[0]:
124+
self._tableWidget.setRowCount(len(assets_data[0]) - 1)
125+
vlabel = list()
126+
index = 0
127+
for i in assets_data:
128+
for j in range(len(i)):
129+
if not j:
130+
vlabel.append(i[j])
131+
continue
132+
item = QtWidgets.QTableWidgetItem(i[j])
133+
self._tableWidget.setItem(j - 1, index, item)
134+
index += 1
135+
self._tableWidget.setHorizontalHeaderLabels(vlabel)
136+
self._tableWidget.horizontalHeader().setSectionResizeMode(
137+
QtWidgets.QHeaderView.Stretch
138+
)

0 commit comments

Comments
 (0)