139 lines
5.8 KiB
Python
139 lines
5.8 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
Toolbar UI Module for Plugin
|
||
工具栏UI模块 - 负责显示工具栏界面和基础操作
|
||
基本功能:
|
||
- 加载预设
|
||
- 保存预设
|
||
- 导入DNA
|
||
- 导出DNA
|
||
- 创建RL4节点(用于切换DNA编辑的状态)
|
||
- 删除RL4节点(用于切换DNA编辑的状态)
|
||
"""
|
||
|
||
#===================================== IMPORT MODULES =====================================
|
||
from Qt import QtWidgets, QtCore, QtGui
|
||
from Qt.QtCompat import wrapInstance
|
||
from maya import OpenMayaUI as omui
|
||
import sys
|
||
import os
|
||
|
||
#===================================== IMPORT FUNCTIONS ===================================
|
||
from scripts.utils import utils_toolbar as utils_toolbar
|
||
from scripts.ui import ui_utils
|
||
|
||
#========================================== WIDGETS ==========================================
|
||
# 全局变量存储UI控件
|
||
toolbar_buttons = {}
|
||
dna_dropdown = None
|
||
status_label = None
|
||
|
||
def widgets():
|
||
"""
|
||
创建工具栏UI控件
|
||
"""
|
||
global toolbar_buttons, dna_dropdown, status_label
|
||
|
||
# 工具栏按钮
|
||
toolbar_buttons["load_preset"] = QtWidgets.QPushButton("加载预设")
|
||
toolbar_buttons["load_preset"].setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
||
toolbar_buttons["load_preset"].setMinimumWidth(80)
|
||
|
||
toolbar_buttons["save_preset"] = QtWidgets.QPushButton("保存预设")
|
||
toolbar_buttons["save_preset"].setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
||
toolbar_buttons["save_preset"].setMinimumWidth(80)
|
||
|
||
toolbar_buttons["import_dna"] = QtWidgets.QPushButton("导入DNA")
|
||
toolbar_buttons["import_dna"].setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
||
toolbar_buttons["import_dna"].setMinimumWidth(80)
|
||
|
||
toolbar_buttons["export_dna"] = QtWidgets.QPushButton("导出DNA")
|
||
toolbar_buttons["export_dna"].setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
||
toolbar_buttons["export_dna"].setMinimumWidth(80)
|
||
|
||
toolbar_buttons["create_rl4"] = QtWidgets.QPushButton("创建RL4节点")
|
||
toolbar_buttons["create_rl4"].setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
||
toolbar_buttons["create_rl4"].setMinimumWidth(100)
|
||
|
||
toolbar_buttons["delete_rl4"] = QtWidgets.QPushButton("删除RL4节点")
|
||
toolbar_buttons["delete_rl4"].setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
||
toolbar_buttons["delete_rl4"].setMinimumWidth(100)
|
||
|
||
# DNA下拉菜单
|
||
dna_dropdown = QtWidgets.QComboBox()
|
||
dna_dropdown.addItem("选择DNA文件...")
|
||
dna_dropdown.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
|
||
dna_dropdown.setMinimumWidth(150)
|
||
|
||
# 状态标签
|
||
status_label = QtWidgets.QLabel("就绪")
|
||
status_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
|
||
status_label.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
|
||
|
||
#========================================== LAYOUTS ==========================================
|
||
def layouts(parent_frame=None):
|
||
"""
|
||
创建工具栏UI布局
|
||
|
||
Args:
|
||
parent_frame: 父容器控件,由Main.py传入
|
||
"""
|
||
# 获取父容器(在Main.py中创建的toolbar_frame)
|
||
if not parent_frame:
|
||
parent_frame = ui_utils.get_parent_widget("toolbar_frame")
|
||
if not parent_frame:
|
||
print("无法获取父容器,布局创建失败")
|
||
return
|
||
|
||
# 创建主布局
|
||
main_layout = parent_frame.layout()
|
||
if not main_layout:
|
||
print("父容器没有布局,布局创建失败")
|
||
return
|
||
|
||
# 创建工具栏布局
|
||
toolbar_layout = QtWidgets.QHBoxLayout()
|
||
toolbar_layout.setContentsMargins(2, 2, 2, 2)
|
||
toolbar_layout.setSpacing(4)
|
||
toolbar_layout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint) # 设置布局约束为默认,允许自适应
|
||
|
||
# 添加按钮到工具栏
|
||
toolbar_layout.addWidget(toolbar_buttons["load_preset"])
|
||
toolbar_layout.addWidget(toolbar_buttons["save_preset"])
|
||
toolbar_layout.addWidget(QtWidgets.QLabel("|"))
|
||
toolbar_layout.addWidget(toolbar_buttons["import_dna"])
|
||
toolbar_layout.addWidget(toolbar_buttons["export_dna"])
|
||
toolbar_layout.addWidget(QtWidgets.QLabel("|"))
|
||
toolbar_layout.addWidget(toolbar_buttons["create_rl4"])
|
||
toolbar_layout.addWidget(toolbar_buttons["delete_rl4"])
|
||
toolbar_layout.addWidget(QtWidgets.QLabel("|"))
|
||
toolbar_layout.addWidget(QtWidgets.QLabel("DNA文件:"))
|
||
toolbar_layout.addWidget(dna_dropdown)
|
||
toolbar_layout.addStretch()
|
||
toolbar_layout.addWidget(status_label)
|
||
|
||
# 添加到主布局
|
||
main_layout.addLayout(toolbar_layout)
|
||
|
||
#========================================== CONNECTIONS ==========================================
|
||
def connections():
|
||
"""
|
||
连接工具栏UI信号和槽
|
||
"""
|
||
# 连接按钮点击事件到占位函数
|
||
toolbar_buttons["load_preset"].clicked.connect(lambda: print("加载预设功能待实现"))
|
||
toolbar_buttons["save_preset"].clicked.connect(lambda: print("保存预设功能待实现"))
|
||
toolbar_buttons["import_dna"].clicked.connect(lambda: print("导入DNA功能待实现"))
|
||
toolbar_buttons["export_dna"].clicked.connect(lambda: print("导出DNA功能待实现"))
|
||
toolbar_buttons["create_rl4"].clicked.connect(lambda: print("创建RL4节点功能待实现"))
|
||
toolbar_buttons["delete_rl4"].clicked.connect(lambda: print("删除RL4节点功能待实现"))
|
||
|
||
# 连接下拉菜单选择事件
|
||
dna_dropdown.currentIndexChanged.connect(lambda index: print(f"选择的DNA文件索引: {index}"))
|
||
|
||
#===================================== PLACEHOLDER FUNCTION ===================================
|
||
def toolbar_temp_function():
|
||
return utils_toolbar.toolbar_temp_utils_function()
|