限制材质名称长度防止属性面板各项属性宽度过长
This commit is contained in:
parent
bc90a4521e
commit
ce43355167
@ -378,10 +378,21 @@ class MainWindow(QMainWindow):
|
||||
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.aboutAction = self.helpMenu.addAction('关于')
|
||||
|
||||
def refreshAssetsView(self):
|
||||
""""刷新资源视图"""
|
||||
if hasattr(self,'fileView') and self.fileView:
|
||||
self.fileView.refreshView()
|
||||
print("资源视图已刷新")
|
||||
|
||||
def setupCreateMenuActions(self):
|
||||
"""统一设置创建菜单的所有动作 - 避免重复代码"""
|
||||
# 基础对象
|
||||
|
||||
@ -3412,6 +3412,9 @@ class PropertyPanelManager:
|
||||
material_layout = QGridLayout()
|
||||
|
||||
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.setStyleSheet("color: #FF6B6B; font-weight: bold;")
|
||||
material_layout.addWidget(name_label, 0, 1, 1, 3)
|
||||
|
||||
@ -315,6 +315,9 @@ class CustomFileView(QTreeView):
|
||||
print("不支持的文件类型")
|
||||
super().mouseDoubleClickEvent(event)
|
||||
|
||||
from PyQt5.QtCore import QFileSystemWatcher,QTimer
|
||||
import os
|
||||
|
||||
class CustomAssetsTreeWidget(QTreeWidget):
|
||||
def __init__(self, world, parent=None):
|
||||
if parent is None:
|
||||
@ -325,6 +328,18 @@ class CustomAssetsTreeWidget(QTreeWidget):
|
||||
self.setupUI()
|
||||
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()
|
||||
# 设置右键菜单
|
||||
@ -624,6 +639,9 @@ class CustomAssetsTreeWidget(QTreeWidget):
|
||||
# 加载当前目录内容
|
||||
self.load_directory_tree(self.current_path, root_item)
|
||||
|
||||
#添加目录到监控器
|
||||
self.addWatchedDirectory(self.current_path)
|
||||
|
||||
# 展开根节点
|
||||
root_item.setExpanded(True)
|
||||
|
||||
@ -631,6 +649,54 @@ class CustomAssetsTreeWidget(QTreeWidget):
|
||||
error_item = QTreeWidgetItem(["❌ 无权限访问此目录"])
|
||||
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):
|
||||
"""递归加载目录树(类似左侧导航面板)"""
|
||||
if current_depth >= max_depth:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user