#!/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()