update
This commit is contained in:
@@ -52,6 +52,7 @@ TOOL_HEIGHT = config.TOOL_HEIGHT
|
||||
#========================================= LOCATION =======================================
|
||||
from scripts.ui import localization
|
||||
LANG = localization.LANG
|
||||
get_text = localization.get_text
|
||||
|
||||
class DefinitionUI(ui_utils.BaseUI):
|
||||
"""
|
||||
@@ -59,43 +60,31 @@ class DefinitionUI(ui_utils.BaseUI):
|
||||
继承自BaseUI类,实现DNA定义相关的UI功能
|
||||
"""
|
||||
#========================================== INIT ========================================
|
||||
def __init__(self):
|
||||
def __init__(self, parent=None):
|
||||
"""
|
||||
初始化定义系统UI
|
||||
创建主控件和布局,并连接信号和槽
|
||||
"""
|
||||
super(DefinitionUI, self).__init__()
|
||||
super(DefinitionUI, self).__init__() # 不传递parent参数给BaseUI
|
||||
|
||||
# 设置单例实例
|
||||
DefinitionUI._instance = self
|
||||
|
||||
# 创建主控件
|
||||
self.main_widget = QtWidgets.QWidget()
|
||||
self.main_widget = QtWidgets.QWidget(parent)
|
||||
self.main_widget.setObjectName("definitionMainWidget")
|
||||
|
||||
# 初始化字典
|
||||
# 初始化控件、布局和按钮字典
|
||||
self.controls = {}
|
||||
self.layouts = {}
|
||||
self.splitters = {}
|
||||
self.buttons = {}
|
||||
self.splitters = {}
|
||||
|
||||
# 初始化UI
|
||||
# 创建UI组件
|
||||
self.create_widgets()
|
||||
self.create_layouts()
|
||||
self.create_connections()
|
||||
|
||||
# 添加左右面板到分割器
|
||||
self.splitters["main_splitter"].addWidget(self.controls["left_panel"])
|
||||
self.splitters["main_splitter"].addWidget(self.controls["right_panel"])
|
||||
|
||||
# 设置分割器所有子元素的最小尺寸为0,确保可以自由调整
|
||||
ui_utils.set_splitter_children_minimum_size(self, recursive=True)
|
||||
|
||||
# 设置所有控件的最小尺寸为0,确保分割器可以自由移动
|
||||
ui_utils.set_all_controls_minimum_size(self)
|
||||
|
||||
# 使用ui_utils中的函数强制设置均等大小
|
||||
ui_utils.force_equal_splitter_sizes(self)
|
||||
# 注意:移除了这里的分割器元素添加代码
|
||||
|
||||
#========================================= WIDGET =======================================
|
||||
def create_widgets(self):
|
||||
@@ -104,7 +93,7 @@ class DefinitionUI(ui_utils.BaseUI):
|
||||
包括按钮、标签、列表等
|
||||
"""
|
||||
# 标题标签 - 使用HTML格式化标题
|
||||
title_text = f"<h4 style='margin:0;padding:5px;'>{LANG.get('definition_title', 'DNA定义')}</h4>"
|
||||
title_text = f"<h4 style='margin:0;padding:5px;'>{get_text('definition_title', 'DNA定义')}</h4>"
|
||||
self.controls["title_label"] = QtWidgets.QLabel(title_text)
|
||||
self.controls["title_label"].setObjectName("definitionTitleLabel")
|
||||
self.controls["title_label"].setAlignment(QtCore.Qt.AlignCenter)
|
||||
@@ -135,7 +124,8 @@ class DefinitionUI(ui_utils.BaseUI):
|
||||
self.controls["lods_list"].setObjectName("lodsList")
|
||||
|
||||
# 定义LOD关联按钮
|
||||
self.buttons["define_lod_relations"] = QtWidgets.QPushButton(LANG.get("define_lod_relations", "定义LOD关联"))
|
||||
self.buttons["define_lod_relations"] = QtWidgets.QPushButton(get_text("define_lod_relations", "定义LOD关联"))
|
||||
self.buttons["define_lod_relations"].setIcon(ui_utils.load_icon("layerEditor.png"))
|
||||
self.buttons["define_lod_relations"].setObjectName("defineLodRelationsButton")
|
||||
|
||||
# Meshes组
|
||||
@@ -147,7 +137,8 @@ class DefinitionUI(ui_utils.BaseUI):
|
||||
self.controls["meshes_list"].setObjectName("meshesList")
|
||||
|
||||
# 创建几何体按钮
|
||||
self.buttons["create_geometry"] = QtWidgets.QPushButton(LANG.get("create_geometry", "创建几何体"))
|
||||
self.buttons["create_geometry"] = QtWidgets.QPushButton(get_text("create_geometry", "创建几何体"))
|
||||
self.buttons["create_geometry"].setIcon(ui_utils.load_icon("polyCube.png"))
|
||||
self.buttons["create_geometry"].setObjectName("createGeometryButton")
|
||||
|
||||
# 右侧面板控件
|
||||
@@ -176,63 +167,64 @@ class DefinitionUI(ui_utils.BaseUI):
|
||||
self.controls["animatedmap_list"].setObjectName("animatedmapList")
|
||||
|
||||
# 底部工具面板
|
||||
# 导入部分
|
||||
self.controls["import_label"] = QtWidgets.QLabel(LANG.get("import", "导入"))
|
||||
self.controls["import_label"].setObjectName("importLabel")
|
||||
self.controls["import_label"].setAlignment(QtCore.Qt.AlignCenter)
|
||||
# 写入部分
|
||||
self.controls["write_label"] = QtWidgets.QLabel(get_text("Write", "写入"))
|
||||
self.controls["write_label"].setObjectName("WriteLabel")
|
||||
self.controls["write_label"].setAlignment(QtCore.Qt.AlignCenter)
|
||||
|
||||
self.buttons["import_joint_system"] = QtWidgets.QPushButton(LANG.get("import_joint_system", "导入关节系统"))
|
||||
self.buttons["import_joint_system"].setObjectName("importJointSystemButton")
|
||||
self.buttons["write_neutral_pose_joint_position"] = QtWidgets.QPushButton(get_text("Write Neutral Pose Joint Position", "写入中性Pose关节位置"))
|
||||
self.buttons["write_neutral_pose_joint_position"].setIcon(ui_utils.load_icon("HIKCharacterToolBodyPart.png"))
|
||||
self.buttons["write_neutral_pose_joint_position"].setObjectName("WriteNeutralPoseJointPositionButton")
|
||||
|
||||
self.buttons["import_geometry"] = QtWidgets.QPushButton(LANG.get("import_geometry", "导入几何体"))
|
||||
self.buttons["import_geometry"].setObjectName("importGeometryButton")
|
||||
self.buttons["write_geometry"] = QtWidgets.QPushButton(get_text("Write Geometry", "写入几何体"))
|
||||
self.buttons["write_geometry"].setIcon(ui_utils.load_icon("polyCube.png"))
|
||||
self.buttons["write_geometry"].setObjectName("WriteGeometryButton")
|
||||
|
||||
self.buttons["import_blendshape_target"] = QtWidgets.QPushButton(LANG.get("import_blendshape_target", "导入形状混合目标"))
|
||||
self.buttons["import_blendshape_target"].setObjectName("importBlendshapeTargetButton")
|
||||
self.buttons["write_skin_weight"] = QtWidgets.QPushButton(get_text("Write Skin Weight", "写入蒙皮权重"))
|
||||
self.buttons["write_skin_weight"].setIcon(ui_utils.load_icon("paintSkinWeights.png"))
|
||||
self.buttons["write_skin_weight"].setObjectName("WriteSkinWeightButton")
|
||||
|
||||
self.buttons["import_animated_map"] = QtWidgets.QPushButton(LANG.get("import_animated_map", "导入动画贴图"))
|
||||
self.buttons["import_animated_map"].setObjectName("importAnimatedMapButton")
|
||||
self.buttons["write_blendshape_target"] = QtWidgets.QPushButton(get_text("Write Blendshape Target", "写入BS对象"))
|
||||
self.buttons["write_blendshape_target"].setIcon(ui_utils.load_icon("blendShape.png"))
|
||||
self.buttons["write_blendshape_target"].setObjectName("WriteBlendshapeTargetButton")
|
||||
|
||||
# 创建部分
|
||||
self.controls["create_label"] = QtWidgets.QLabel(LANG.get("create", "创建"))
|
||||
self.controls["create_label"].setObjectName("createLabel")
|
||||
self.controls["create_label"] = QtWidgets.QLabel(get_text("Create", "创建"))
|
||||
self.controls["create_label"].setObjectName("CreateLabel")
|
||||
self.controls["create_label"].setAlignment(QtCore.Qt.AlignCenter)
|
||||
|
||||
self.buttons["create_neutral_pose"] = QtWidgets.QPushButton(LANG.get("create_neutral_pose", "创建中性姿势"))
|
||||
self.buttons["create_neutral_pose"].setObjectName("createNeutralPoseButton")
|
||||
self.buttons["create_blendshapes_for_mesh"] = QtWidgets.QPushButton(get_text("Create Blendshapes For Mesh", "为模型创建Blendshape"))
|
||||
self.buttons["create_blendshapes_for_mesh"].setIcon(ui_utils.load_icon("blendShapeEditor.png"))
|
||||
self.buttons["create_blendshapes_for_mesh"].setObjectName("CreateBlendshapeForMeshButton")
|
||||
|
||||
self.buttons["bind_geometry"] = QtWidgets.QPushButton(LANG.get("bind_geometry", "绑定几何体"))
|
||||
self.buttons["bind_geometry"].setObjectName("bindGeometryButton")
|
||||
self.buttons["create_skin_for_mesh"] = QtWidgets.QPushButton(get_text("Create Skin For Mesh", "为模型创建绑定蒙皮"))
|
||||
self.buttons["create_skin_for_mesh"].setIcon(ui_utils.load_icon("smoothSkin.png"))
|
||||
self.buttons["create_skin_for_mesh"].setObjectName("CreateSkinForMeshButton")
|
||||
|
||||
self.buttons["take_pose"] = QtWidgets.QPushButton(LANG.get("take_pose", "取消姿势"))
|
||||
self.buttons["take_pose"].setObjectName("takePoseButton")
|
||||
self.buttons["unbind_skin_for_mesh"] = QtWidgets.QPushButton(get_text("Unbind Skin For Mesh", "为模型取消绑定蒙皮"))
|
||||
self.buttons["unbind_skin_for_mesh"].setIcon(ui_utils.load_icon("detachSkin.png"))
|
||||
self.buttons["unbind_skin_for_mesh"].setObjectName("UnbindSkinForMeshButton")
|
||||
|
||||
# 工具部分
|
||||
self.controls["tools_label"] = QtWidgets.QLabel(LANG.get("tools", "工具"))
|
||||
self.controls["tools_label"].setObjectName("toolsLabel")
|
||||
self.controls["tools_label"] = QtWidgets.QGroupBox(get_text("Tools", "工具"))
|
||||
self.controls["tools_label"].setObjectName("ToolsLabel")
|
||||
self.controls["tools_label"].setAlignment(QtCore.Qt.AlignCenter)
|
||||
|
||||
self.buttons["reposition_all_joints"] = QtWidgets.QPushButton(LANG.get("reposition_all_joints", "重新定位所有关节"))
|
||||
self.buttons["reposition_all_joints"].setObjectName("repositionAllJointsButton")
|
||||
|
||||
self.buttons["reposition_selected_joints"] = QtWidgets.QPushButton(LANG.get("reposition_selected_joints", "重新定位选定关节"))
|
||||
self.buttons["reposition_selected_joints"].setObjectName("repositionSelectedJointsButton")
|
||||
|
||||
self.buttons["reposition_all_head_joints"] = QtWidgets.QPushButton(LANG.get("reposition_all_head_joints", "重新定位所有头部关节"))
|
||||
self.buttons["reposition_all_head_joints"].setObjectName("repositionAllHeadJointsButton")
|
||||
|
||||
self.buttons["quick_preset"] = QtWidgets.QPushButton(LANG.get("quick_preset", "快速预设"))
|
||||
self.buttons["quick_preset"].setObjectName("quickPresetButton")
|
||||
self.buttons["unbind_skin"] = QtWidgets.QPushButton(LANG.get("unbind_skin", "取消蒙皮"))
|
||||
|
||||
# 工具组
|
||||
self.controls["tools_group"] = QtWidgets.QGroupBox(LANG.get("tools_group", "工具"))
|
||||
self.controls["tools_group"].setObjectName("toolsGroup")
|
||||
# 工具按钮
|
||||
self.buttons["reposition_head_joints"] = QtWidgets.QPushButton(LANG.get("reposition_head_joints", "重新定位头部关节"))
|
||||
self.buttons["reposition_body_joints"] = QtWidgets.QPushButton(LANG.get("reposition_body_joints", "重新定位身体关节"))
|
||||
self.buttons["reposition_all_joints"] = QtWidgets.QPushButton(LANG.get("reposition_all_joints", "重新定位全身关节"))
|
||||
self.buttons["quick_preset"] = QtWidgets.QPushButton(LANG.get("quick_preset", "快速创建预设"))
|
||||
|
||||
self.buttons["new_head_netural_joint_transform"] = QtWidgets.QPushButton(get_text("New Head Netural Joint Transform", "重新定位头部关节"))
|
||||
self.buttons["new_head_netural_joint_transform"].setIcon(ui_utils.load_icon("HIKCharacterToolSkeleton.png"))
|
||||
self.buttons["new_head_netural_joint_transform"].setObjectName("NewHeadNeturalJointTransformButton")
|
||||
|
||||
self.buttons["new_body_netural_joint_transform"] = QtWidgets.QPushButton(get_text("New Body Netural Joint Transform", "重新定位身体关节"))
|
||||
self.buttons["new_body_netural_joint_transform"].setIcon(ui_utils.load_icon("HIKCharacterToolSkeleton.png"))
|
||||
self.buttons["new_body_netural_joint_transform"].setObjectName("NewBodyNeturalJointTransformButton")
|
||||
|
||||
self.buttons["new_netural_joint_transform"] = QtWidgets.QPushButton(get_text("New Netural Joint Transform", "重新定位全身关节"))
|
||||
self.buttons["new_netural_joint_transform"].setIcon(ui_utils.load_icon("HIKCharacterToolSkeleton.png"))
|
||||
self.buttons["new_netural_joint_transform"].setObjectName("NewNeturalJointTransformButton")
|
||||
|
||||
self.buttons["quick_create_preset"] = QtWidgets.QPushButton(get_text("Quick Create Preset", "快速创建预设"))
|
||||
self.buttons["quick_create_preset"].setIcon(ui_utils.load_icon("QR_QuickRigTool.png"))
|
||||
self.buttons["quick_create_preset"].setObjectName("QuickCreatePreset")
|
||||
|
||||
#========================================= LAYOUT =======================================
|
||||
def create_layouts(self):
|
||||
@@ -240,22 +232,16 @@ class DefinitionUI(ui_utils.BaseUI):
|
||||
创建定义系统UI布局
|
||||
组织控件的排列和层次结构
|
||||
"""
|
||||
# 主布局
|
||||
# 创建主布局
|
||||
self.layouts["main_layout"] = QtWidgets.QVBoxLayout(self.main_widget)
|
||||
self.layouts["main_layout"].setContentsMargins(5, 5, 5, 5)
|
||||
self.layouts["main_layout"].setSpacing(5)
|
||||
|
||||
# 添加标题标签
|
||||
# 添加标题标签到主布局
|
||||
self.layouts["main_layout"].addWidget(self.controls["title_label"])
|
||||
|
||||
# 主分割器布局
|
||||
self.layouts["main_splitter_layout"] = QtWidgets.QHBoxLayout()
|
||||
self.layouts["main_splitter_layout"].setContentsMargins(0, 0, 0, 0)
|
||||
self.layouts["main_splitter_layout"].setSpacing(0)
|
||||
self.layouts["main_splitter_layout"].addWidget(self.splitters["main_splitter"])
|
||||
|
||||
# 添加主分割器布局到主布局
|
||||
self.layouts["main_layout"].addLayout(self.layouts["main_splitter_layout"])
|
||||
# 添加主分割器到主布局
|
||||
self.layouts["main_layout"].addWidget(self.splitters["main_splitter"])
|
||||
|
||||
# 左侧面板布局
|
||||
self.layouts["left_layout"] = QtWidgets.QVBoxLayout(self.controls["left_panel"])
|
||||
@@ -337,41 +323,56 @@ class DefinitionUI(ui_utils.BaseUI):
|
||||
self.layouts["bottom_panel"].setContentsMargins(0, 10, 0, 0)
|
||||
self.layouts["bottom_panel"].setSpacing(10)
|
||||
|
||||
# 导入部分布局
|
||||
self.layouts["import_layout"] = QtWidgets.QVBoxLayout()
|
||||
self.layouts["import_layout"].setSpacing(5)
|
||||
self.layouts["import_layout"].addWidget(self.controls["import_label"])
|
||||
self.layouts["import_layout"].addWidget(self.buttons["import_joint_system"])
|
||||
self.layouts["import_layout"].addWidget(self.buttons["import_geometry"])
|
||||
self.layouts["import_layout"].addWidget(self.buttons["import_blendshape_target"])
|
||||
self.layouts["import_layout"].addWidget(self.buttons["import_animated_map"])
|
||||
|
||||
# 创建部分布局
|
||||
# 写入部分QGroupBox
|
||||
self.controls["write_group"] = QtWidgets.QGroupBox(get_text("Write", "写入"))
|
||||
self.controls["write_group"].setObjectName("writeGroup")
|
||||
self.layouts["write_layout"] = QtWidgets.QVBoxLayout()
|
||||
self.layouts["write_layout"].setSpacing(5)
|
||||
self.layouts["write_layout"].addWidget(self.buttons["write_neutral_pose_joint_position"])
|
||||
self.layouts["write_layout"].addWidget(self.buttons["write_geometry"])
|
||||
self.layouts["write_layout"].addWidget(self.buttons["write_skin_weight"])
|
||||
self.layouts["write_layout"].addWidget(self.buttons["write_blendshape_target"])
|
||||
self.layouts["write_layout"].addStretch(1)
|
||||
self.controls["write_group"].setLayout(self.layouts["write_layout"])
|
||||
|
||||
# 创建部分QGroupBox
|
||||
self.controls["create_group"] = QtWidgets.QGroupBox(get_text("Create", "创建"))
|
||||
self.controls["create_group"].setObjectName("createGroup")
|
||||
self.layouts["create_layout"] = QtWidgets.QVBoxLayout()
|
||||
self.layouts["create_layout"].setSpacing(5)
|
||||
self.layouts["create_layout"].addWidget(self.controls["create_label"])
|
||||
self.layouts["create_layout"].addWidget(self.buttons["create_neutral_pose"])
|
||||
self.layouts["create_layout"].addWidget(self.buttons["bind_geometry"])
|
||||
self.layouts["create_layout"].addWidget(self.buttons["take_pose"])
|
||||
self.layouts["create_layout"].addWidget(self.buttons["unbind_skin"])
|
||||
|
||||
# 工具部分布局
|
||||
self.layouts["create_layout"].addWidget(self.buttons["create_blendshapes_for_mesh"])
|
||||
self.layouts["create_layout"].addWidget(self.buttons["create_skin_for_mesh"])
|
||||
self.layouts["create_layout"].addWidget(self.buttons["unbind_skin_for_mesh"])
|
||||
self.layouts["create_layout"].addStretch(1)
|
||||
self.controls["create_group"].setLayout(self.layouts["create_layout"])
|
||||
|
||||
# 工具部分QGroupBox
|
||||
self.controls["tools_group"] = QtWidgets.QGroupBox(get_text("Tools", "工具"))
|
||||
self.controls["tools_group"].setObjectName("toolsGroup")
|
||||
self.layouts["tools_layout"] = QtWidgets.QVBoxLayout()
|
||||
self.layouts["tools_layout"].setSpacing(5)
|
||||
self.layouts["tools_layout"].addWidget(self.controls["tools_label"])
|
||||
self.layouts["tools_layout"].addWidget(self.buttons["reposition_all_joints"])
|
||||
self.layouts["tools_layout"].addWidget(self.buttons["reposition_selected_joints"])
|
||||
self.layouts["tools_layout"].addWidget(self.buttons["reposition_all_head_joints"])
|
||||
self.layouts["tools_layout"].addWidget(self.buttons["quick_preset"])
|
||||
|
||||
# 添加三列到底部面板
|
||||
self.layouts["bottom_panel"].addLayout(self.layouts["import_layout"])
|
||||
self.layouts["bottom_panel"].addLayout(self.layouts["create_layout"])
|
||||
self.layouts["bottom_panel"].addLayout(self.layouts["tools_layout"])
|
||||
|
||||
self.layouts["tools_layout"].addWidget(self.buttons["new_head_netural_joint_transform"])
|
||||
self.layouts["tools_layout"].addWidget(self.buttons["new_body_netural_joint_transform"])
|
||||
self.layouts["tools_layout"].addWidget(self.buttons["new_netural_joint_transform"])
|
||||
self.layouts["tools_layout"].addWidget(self.buttons["quick_create_preset"])
|
||||
self.layouts["tools_layout"].addStretch(1)
|
||||
self.controls["tools_group"].setLayout(self.layouts["tools_layout"])
|
||||
|
||||
# 添加三组到底部面板
|
||||
self.layouts["bottom_panel"].addWidget(self.controls["write_group"])
|
||||
self.layouts["bottom_panel"].addWidget(self.controls["create_group"])
|
||||
self.layouts["bottom_panel"].addWidget(self.controls["tools_group"])
|
||||
|
||||
# 添加底部面板到主布局
|
||||
self.layouts["main_layout"].addLayout(self.layouts["bottom_panel"])
|
||||
|
||||
# 添加左右面板到分割器 - 移动到这里
|
||||
self.splitters["main_splitter"].addWidget(self.controls["left_panel"])
|
||||
self.splitters["main_splitter"].addWidget(self.controls["right_panel"])
|
||||
|
||||
# 强制更新分割器大小 - 添加这一行,使用比例设置
|
||||
QtCore.QTimer.singleShot(100, lambda: ui_utils.set_splitter_proportions(self.splitters["main_splitter"], [0.5, 0.5]))
|
||||
|
||||
#======================================= CONNECTION =====================================
|
||||
def create_connections(self):
|
||||
"""
|
||||
@@ -408,19 +409,18 @@ class DefinitionUI(ui_utils.BaseUI):
|
||||
|
||||
# 底部工具面板连接
|
||||
# 导入部分按钮连接
|
||||
self.buttons["import_joint_system"].clicked.connect(utils_definition.import_joint_system)
|
||||
self.buttons["import_geometry"].clicked.connect(utils_definition.import_geometry)
|
||||
self.buttons["import_blendshape_target"].clicked.connect(utils_definition.import_blendshape_target)
|
||||
self.buttons["import_animated_map"].clicked.connect(utils_definition.import_animated_map)
|
||||
self.buttons["write_neutral_pose_joint_position"].clicked.connect(utils_definition.write_neutral_pose_joint_position)
|
||||
self.buttons["write_geometry"].clicked.connect(utils_definition.write_geometry)
|
||||
self.buttons["write_skin_weight"].clicked.connect(utils_definition.write_skin_weight)
|
||||
self.buttons["write_blendshape_target"].clicked.connect(utils_definition.write_blendshape_target)
|
||||
|
||||
# 创建部分按钮连接
|
||||
self.buttons["create_neutral_pose"].clicked.connect(utils_definition.create_neutral_pose)
|
||||
self.buttons["bind_geometry"].clicked.connect(utils_definition.bind_geometry)
|
||||
self.buttons["take_pose"].clicked.connect(utils_definition.take_pose)
|
||||
self.buttons["unbind_skin"].clicked.connect(utils_definition.unbind_skin)
|
||||
self.buttons["create_blendshapes_for_mesh"].clicked.connect(utils_definition.create_blendshapes_for_mesh)
|
||||
self.buttons["create_skin_for_mesh"].clicked.connect(utils_definition.create_skin_for_mesh)
|
||||
self.buttons["unbind_skin_for_mesh"].clicked.connect(utils_definition.unbind_skin_for_mesh)
|
||||
|
||||
# 工具部分按钮连接
|
||||
self.buttons["reposition_all_joints"].clicked.connect(utils_definition.reposition_all_joints)
|
||||
self.buttons["reposition_selected_joints"].clicked.connect(utils_definition.reposition_selected_joints)
|
||||
self.buttons["reposition_all_head_joints"].clicked.connect(utils_definition.reposition_all_head_joints)
|
||||
self.buttons["quick_preset"].clicked.connect(utils_definition.quick_preset)
|
||||
self.buttons["new_head_netural_joint_transform"].clicked.connect(utils_definition.new_head_netural_joint_transform)
|
||||
self.buttons["new_body_netural_joint_transform"].clicked.connect(utils_definition.new_body_netural_joint_transform)
|
||||
self.buttons["new_netural_joint_transform"].clicked.connect(utils_definition.new_netural_joint_transform)
|
||||
self.buttons["quick_create_preset"].clicked.connect(utils_definition.quick_create_preset)
|
Reference in New Issue
Block a user