限制材质名称长度防止属性面板各项属性宽度过长
This commit is contained in:
parent
bc90a4521e
commit
ce43355167
@ -378,10 +378,21 @@ class MainWindow(QMainWindow):
|
|||||||
self.addModelToCesiumAction.triggered.connect(self.onAddModelClicked)
|
self.addModelToCesiumAction.triggered.connect(self.onAddModelClicked)
|
||||||
|
|
||||||
|
|
||||||
|
#资源菜单
|
||||||
|
self.assetsMenu = menubar.addMenu('资源')
|
||||||
|
self.refreshAssetsAction = self.assetsMenu.addAction('刷新资源')
|
||||||
|
self.refreshAssetsAction.triggered.connect(self.refreshAssetsView)
|
||||||
|
|
||||||
# 帮助菜单
|
# 帮助菜单
|
||||||
self.helpMenu = menubar.addMenu('帮助')
|
self.helpMenu = menubar.addMenu('帮助')
|
||||||
self.aboutAction = self.helpMenu.addAction('关于')
|
self.aboutAction = self.helpMenu.addAction('关于')
|
||||||
|
|
||||||
|
def refreshAssetsView(self):
|
||||||
|
""""刷新资源视图"""
|
||||||
|
if hasattr(self,'fileView') and self.fileView:
|
||||||
|
self.fileView.refreshView()
|
||||||
|
print("资源视图已刷新")
|
||||||
|
|
||||||
def setupCreateMenuActions(self):
|
def setupCreateMenuActions(self):
|
||||||
"""统一设置创建菜单的所有动作 - 避免重复代码"""
|
"""统一设置创建菜单的所有动作 - 避免重复代码"""
|
||||||
# 基础对象
|
# 基础对象
|
||||||
|
|||||||
@ -3412,6 +3412,9 @@ class PropertyPanelManager:
|
|||||||
material_layout = QGridLayout()
|
material_layout = QGridLayout()
|
||||||
|
|
||||||
material_layout.addWidget(QLabel("名称:"), 0, 0)
|
material_layout.addWidget(QLabel("名称:"), 0, 0)
|
||||||
|
limited_length = 25
|
||||||
|
if len(display_name) > limited_length:
|
||||||
|
display_name = f"{display_name[:limited_length - 3]}..."
|
||||||
name_label = QLabel(display_name)
|
name_label = QLabel(display_name)
|
||||||
# name_label.setStyleSheet("color: #FF6B6B; font-weight: bold;")
|
# name_label.setStyleSheet("color: #FF6B6B; font-weight: bold;")
|
||||||
material_layout.addWidget(name_label, 0, 1, 1, 3)
|
material_layout.addWidget(name_label, 0, 1, 1, 3)
|
||||||
|
|||||||
@ -315,6 +315,9 @@ class CustomFileView(QTreeView):
|
|||||||
print("不支持的文件类型")
|
print("不支持的文件类型")
|
||||||
super().mouseDoubleClickEvent(event)
|
super().mouseDoubleClickEvent(event)
|
||||||
|
|
||||||
|
from PyQt5.QtCore import QFileSystemWatcher,QTimer
|
||||||
|
import os
|
||||||
|
|
||||||
class CustomAssetsTreeWidget(QTreeWidget):
|
class CustomAssetsTreeWidget(QTreeWidget):
|
||||||
def __init__(self, world, parent=None):
|
def __init__(self, world, parent=None):
|
||||||
if parent is None:
|
if parent is None:
|
||||||
@ -325,6 +328,18 @@ class CustomAssetsTreeWidget(QTreeWidget):
|
|||||||
self.setupUI()
|
self.setupUI()
|
||||||
self.setupDragDrop()
|
self.setupDragDrop()
|
||||||
|
|
||||||
|
#添加文件系统监控器
|
||||||
|
self.file_watcher = QFileSystemWatcher()
|
||||||
|
self.file_watcher.directoryChanged.connect(self.onDirectoryChanged)
|
||||||
|
self.file_watcher.fileChanged.connect(self.onFileChanged)
|
||||||
|
|
||||||
|
self.refresh_timer = QTimer()
|
||||||
|
self.refresh_timer.setSingleShot(True)
|
||||||
|
self.refresh_timer.timeout.connect(self.refreshView)
|
||||||
|
|
||||||
|
#存储监控的目录
|
||||||
|
self.watched_directories = set()
|
||||||
|
|
||||||
# 默认加载项目根路径
|
# 默认加载项目根路径
|
||||||
self.load_file_tree()
|
self.load_file_tree()
|
||||||
# 设置右键菜单
|
# 设置右键菜单
|
||||||
@ -624,6 +639,9 @@ class CustomAssetsTreeWidget(QTreeWidget):
|
|||||||
# 加载当前目录内容
|
# 加载当前目录内容
|
||||||
self.load_directory_tree(self.current_path, root_item)
|
self.load_directory_tree(self.current_path, root_item)
|
||||||
|
|
||||||
|
#添加目录到监控器
|
||||||
|
self.addWatchedDirectory(self.current_path)
|
||||||
|
|
||||||
# 展开根节点
|
# 展开根节点
|
||||||
root_item.setExpanded(True)
|
root_item.setExpanded(True)
|
||||||
|
|
||||||
@ -631,6 +649,54 @@ class CustomAssetsTreeWidget(QTreeWidget):
|
|||||||
error_item = QTreeWidgetItem(["❌ 无权限访问此目录"])
|
error_item = QTreeWidgetItem(["❌ 无权限访问此目录"])
|
||||||
self.addTopLevelItem(error_item)
|
self.addTopLevelItem(error_item)
|
||||||
|
|
||||||
|
def addWatchedDirectory(self,directory):
|
||||||
|
"""添加监控目录"""
|
||||||
|
if os.path.exists(directory) and directory not in self.watched_directories:
|
||||||
|
if self.file_watcher.addPath(directory):
|
||||||
|
self.watched_directories.add(directory)
|
||||||
|
print(f"开始监控目录:{directory}")
|
||||||
|
try:
|
||||||
|
for item in os.listdir(directory):
|
||||||
|
item_path = os.path.join(directory,item)
|
||||||
|
if os.path.isdir(item_path):
|
||||||
|
self.addWatchedDirectory(item_path)
|
||||||
|
except Exception as e:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
print(f"无法监控目录:{directory}")
|
||||||
|
|
||||||
|
def removeWatchedDirectory(self,directory):
|
||||||
|
"""移除监控目录"""
|
||||||
|
if directory in self.watched_directories:
|
||||||
|
if self.file_watcher.removePath(directory):
|
||||||
|
self.watched_directories.discard(directory)
|
||||||
|
print(f"停止监控目录:{directory}")
|
||||||
|
else:
|
||||||
|
print(f"无法停止监控目录:{directory}")
|
||||||
|
|
||||||
|
def onDirectoryChanged(self,path):
|
||||||
|
"""目录发生变化时处理"""
|
||||||
|
print(f"目录变化{path}")
|
||||||
|
if not self.refresh_timer.isActive():
|
||||||
|
self.refresh_timer.start(1000)
|
||||||
|
|
||||||
|
def onFileChanged(self,path):
|
||||||
|
"""目录发生变化时的处理"""
|
||||||
|
print(f"目录变化{path}")
|
||||||
|
if not self.refresh_timer.isActive():
|
||||||
|
self.refresh_timer.start(1000)
|
||||||
|
|
||||||
|
def refreshView(self):
|
||||||
|
"""刷新视图"""
|
||||||
|
print("刷新资源视图...")
|
||||||
|
try:
|
||||||
|
expanded_paths = self._saveExpandedState()
|
||||||
|
self.load_file_tree()
|
||||||
|
self._restoreExpandedState(expanded_paths)
|
||||||
|
print("资源视图刷新完成")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"刷新资源视图失败{e}")
|
||||||
|
|
||||||
def load_directory_tree(self, path, parent_item, max_depth=3, current_depth=0):
|
def load_directory_tree(self, path, parent_item, max_depth=3, current_depth=0):
|
||||||
"""递归加载目录树(类似左侧导航面板)"""
|
"""递归加载目录树(类似左侧导航面板)"""
|
||||||
if current_depth >= max_depth:
|
if current_depth >= max_depth:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user