Update
This commit is contained in:
@@ -81,33 +81,62 @@ class ToolbarUI(ui_utils.BaseUI):
|
||||
创建工具栏UI控件
|
||||
包括按钮、标签、输入框等
|
||||
"""
|
||||
# 标题标签
|
||||
self.controls["title_label"] = QtWidgets.QLabel(LANG.get("toolbar_title", "工具栏"))
|
||||
self.controls["title_label"].setObjectName("toolbarTitleLabel")
|
||||
self.controls["title_label"].setAlignment(QtCore.Qt.AlignCenter)
|
||||
# 创建顶部工具栏
|
||||
self.controls["toolbar_frame"] = QtWidgets.QFrame()
|
||||
self.controls["toolbar_frame"].setObjectName("toolbarFrame")
|
||||
self.controls["toolbar_frame"].setFrameShape(QtWidgets.QFrame.StyledPanel)
|
||||
self.controls["toolbar_frame"].setFrameShadow(QtWidgets.QFrame.Raised)
|
||||
|
||||
# 预设组
|
||||
self.controls["preset_group"] = QtWidgets.QGroupBox(LANG.get("preset_group", "预设"))
|
||||
self.controls["preset_group"].setObjectName("presetGroup")
|
||||
# 创建工具栏按钮
|
||||
# 第一行按钮
|
||||
self.buttons["new_file"] = self._create_tool_button("新建文件", ":/icons/new_file.png")
|
||||
self.buttons["open_file"] = self._create_tool_button("打开文件", ":/icons/open_file.png")
|
||||
self.buttons["link_file"] = self._create_tool_button("链接文件", ":/icons/link_file.png")
|
||||
self.buttons["unlink_file"] = self._create_tool_button("取消链接", ":/icons/unlink_file.png")
|
||||
self.buttons["import_file"] = self._create_tool_button("导入文件", ":/icons/import_file.png")
|
||||
self.buttons["export_file"] = self._create_tool_button("导出文件", ":/icons/export_file.png")
|
||||
self.buttons["save_file"] = self._create_tool_button("保存文件", ":/icons/save_file.png")
|
||||
self.buttons["user_info"] = self._create_tool_button("用户信息", ":/icons/user_info.png")
|
||||
self.buttons["help"] = self._create_tool_button("帮助", ":/icons/help.png")
|
||||
self.buttons["settings"] = self._create_tool_button("设置", ":/icons/settings.png")
|
||||
self.buttons["print"] = self._create_tool_button("打印", ":/icons/print.png")
|
||||
|
||||
# 预设标签和下拉框
|
||||
self.controls["preset_label"] = QtWidgets.QLabel(LANG.get("preset", "预设:"))
|
||||
self.controls["preset_combo"] = QtWidgets.QComboBox()
|
||||
self.controls["preset_combo"].setObjectName("presetCombo")
|
||||
# 第二行按钮和下拉框
|
||||
self.buttons["model_view"] = self._create_tool_button("模型视图", ":/icons/model_view.png", checkable=True)
|
||||
self.buttons["model_view"].setChecked(True)
|
||||
self.buttons["definition_view"] = self._create_tool_button("定义视图", ":/icons/definition_view.png", checkable=True)
|
||||
self.buttons["table_view"] = self._create_tool_button("表格视图", ":/icons/table_view.png", checkable=True)
|
||||
self.buttons["define_view"] = self._create_tool_button("自定义视图", ":/icons/define_view.png", checkable=True)
|
||||
|
||||
# 预设按钮
|
||||
self.buttons["load_preset"] = QtWidgets.QPushButton(LANG.get("load_preset", "加载预设"))
|
||||
self.buttons["save_preset"] = QtWidgets.QPushButton(LANG.get("save_preset", "保存预设"))
|
||||
# 下拉框
|
||||
self.controls["model_combo"] = QtWidgets.QComboBox()
|
||||
self.controls["model_combo"].setObjectName("modelCombo")
|
||||
self.controls["model_combo"].addItem("MetaHuman")
|
||||
self.controls["model_combo"].setMinimumWidth(120)
|
||||
|
||||
# DNA操作组
|
||||
self.controls["dna_group"] = QtWidgets.QGroupBox(LANG.get("dna_operations", "DNA操作"))
|
||||
self.controls["dna_group"].setObjectName("dnaGroup")
|
||||
# 帮助按钮
|
||||
self.buttons["help_button"] = QtWidgets.QPushButton()
|
||||
self.buttons["help_button"].setIcon(QtGui.QIcon(":/icons/question.png"))
|
||||
self.buttons["help_button"].setObjectName("helpButton")
|
||||
self.buttons["help_button"].setFixedSize(24, 24)
|
||||
self.buttons["help_button"].setToolTip(LANG.get("help_tooltip", "帮助"))
|
||||
|
||||
def _create_tool_button(self, tooltip, icon_path, checkable=False):
|
||||
"""
|
||||
创建工具栏按钮
|
||||
"""
|
||||
button = QtWidgets.QPushButton()
|
||||
button.setToolTip(LANG.get(tooltip, tooltip))
|
||||
# 尝试设置图标,如果图标文件不存在则使用文字
|
||||
if os.path.exists(icon_path.replace(":/icons/", f"{ICONS_PATH}/")):
|
||||
button.setIcon(QtGui.QIcon(icon_path))
|
||||
else:
|
||||
button.setText(LANG.get(tooltip, tooltip))
|
||||
|
||||
# DNA操作按钮
|
||||
self.buttons["import_dna"] = QtWidgets.QPushButton(LANG.get("import_dna", "导入DNA"))
|
||||
self.buttons["export_dna"] = QtWidgets.QPushButton(LANG.get("export_dna", "导出DNA"))
|
||||
self.buttons["create_rl4"] = QtWidgets.QPushButton(LANG.get("create_rl4", "创建RL4节点"))
|
||||
self.buttons["delete_rl4"] = QtWidgets.QPushButton(LANG.get("delete_rl4", "删除RL4节点"))
|
||||
button.setObjectName(f"{tooltip.replace(' ', '_').lower()}_button")
|
||||
button.setFixedSize(32, 32)
|
||||
button.setCheckable(checkable)
|
||||
return button
|
||||
|
||||
#========================================= LAYOUT =======================================
|
||||
def create_layouts(self):
|
||||
@@ -117,46 +146,61 @@ class ToolbarUI(ui_utils.BaseUI):
|
||||
"""
|
||||
# 主布局
|
||||
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"].setContentsMargins(0, 0, 0, 0)
|
||||
self.layouts["main_layout"].setSpacing(0)
|
||||
|
||||
# 添加标题标签
|
||||
self.layouts["main_layout"].addWidget(self.controls["title_label"])
|
||||
# 添加工具栏框架
|
||||
self.layouts["main_layout"].addWidget(self.controls["toolbar_frame"])
|
||||
|
||||
# 预设组布局
|
||||
self.layouts["preset_layout"] = QtWidgets.QVBoxLayout(self.controls["preset_group"])
|
||||
# 工具栏框架布局
|
||||
self.layouts["toolbar_layout"] = QtWidgets.QVBoxLayout(self.controls["toolbar_frame"])
|
||||
self.layouts["toolbar_layout"].setContentsMargins(5, 5, 5, 5)
|
||||
self.layouts["toolbar_layout"].setSpacing(2)
|
||||
|
||||
# 预设选择布局
|
||||
self.layouts["preset_select_layout"] = QtWidgets.QHBoxLayout()
|
||||
self.layouts["preset_select_layout"].addWidget(self.controls["preset_label"])
|
||||
self.layouts["preset_select_layout"].addWidget(self.controls["preset_combo"])
|
||||
# 第一行按钮布局
|
||||
self.layouts["toolbar_row1"] = QtWidgets.QHBoxLayout()
|
||||
self.layouts["toolbar_row1"].setSpacing(2)
|
||||
self.layouts["toolbar_row1"].addWidget(self.buttons["new_file"])
|
||||
self.layouts["toolbar_row1"].addWidget(self.buttons["open_file"])
|
||||
self.layouts["toolbar_row1"].addWidget(self.buttons["link_file"])
|
||||
self.layouts["toolbar_row1"].addWidget(self.buttons["unlink_file"])
|
||||
self.layouts["toolbar_row1"].addWidget(self._create_separator())
|
||||
self.layouts["toolbar_row1"].addWidget(self.buttons["import_file"])
|
||||
self.layouts["toolbar_row1"].addWidget(self.buttons["export_file"])
|
||||
self.layouts["toolbar_row1"].addWidget(self.buttons["save_file"])
|
||||
self.layouts["toolbar_row1"].addWidget(self._create_separator())
|
||||
self.layouts["toolbar_row1"].addWidget(self.buttons["user_info"])
|
||||
self.layouts["toolbar_row1"].addWidget(self.buttons["help"])
|
||||
self.layouts["toolbar_row1"].addWidget(self.buttons["settings"])
|
||||
self.layouts["toolbar_row1"].addWidget(self.buttons["print"])
|
||||
self.layouts["toolbar_row1"].addStretch()
|
||||
|
||||
# 预设按钮布局
|
||||
self.layouts["preset_buttons_layout"] = QtWidgets.QHBoxLayout()
|
||||
self.layouts["preset_buttons_layout"].addWidget(self.buttons["load_preset"])
|
||||
self.layouts["preset_buttons_layout"].addWidget(self.buttons["save_preset"])
|
||||
# 第二行按钮布局
|
||||
self.layouts["toolbar_row2"] = QtWidgets.QHBoxLayout()
|
||||
self.layouts["toolbar_row2"].setSpacing(2)
|
||||
self.layouts["toolbar_row2"].addWidget(self.buttons["model_view"])
|
||||
self.layouts["toolbar_row2"].addWidget(self.buttons["definition_view"])
|
||||
self.layouts["toolbar_row2"].addWidget(self.buttons["table_view"])
|
||||
self.layouts["toolbar_row2"].addWidget(self.buttons["define_view"])
|
||||
self.layouts["toolbar_row2"].addWidget(self._create_separator())
|
||||
self.layouts["toolbar_row2"].addWidget(self.controls["model_combo"])
|
||||
self.layouts["toolbar_row2"].addStretch()
|
||||
self.layouts["toolbar_row2"].addWidget(self.buttons["help_button"])
|
||||
|
||||
# 添加到预设组布局
|
||||
self.layouts["preset_layout"].addLayout(self.layouts["preset_select_layout"])
|
||||
self.layouts["preset_layout"].addLayout(self.layouts["preset_buttons_layout"])
|
||||
|
||||
# DNA操作组布局
|
||||
self.layouts["dna_layout"] = QtWidgets.QVBoxLayout(self.controls["dna_group"])
|
||||
|
||||
# DNA操作按钮布局
|
||||
self.layouts["dna_buttons_layout"] = QtWidgets.QGridLayout()
|
||||
self.layouts["dna_buttons_layout"].addWidget(self.buttons["import_dna"], 0, 0)
|
||||
self.layouts["dna_buttons_layout"].addWidget(self.buttons["export_dna"], 0, 1)
|
||||
self.layouts["dna_buttons_layout"].addWidget(self.buttons["create_rl4"], 1, 0)
|
||||
self.layouts["dna_buttons_layout"].addWidget(self.buttons["delete_rl4"], 1, 1)
|
||||
|
||||
# 添加到DNA操作组布局
|
||||
self.layouts["dna_layout"].addLayout(self.layouts["dna_buttons_layout"])
|
||||
|
||||
# 添加组到主布局
|
||||
self.layouts["main_layout"].addWidget(self.controls["preset_group"])
|
||||
self.layouts["main_layout"].addWidget(self.controls["dna_group"])
|
||||
self.layouts["main_layout"].addStretch()
|
||||
# 添加行到工具栏布局
|
||||
self.layouts["toolbar_layout"].addLayout(self.layouts["toolbar_row1"])
|
||||
self.layouts["toolbar_layout"].addLayout(self.layouts["toolbar_row2"])
|
||||
|
||||
def _create_separator(self):
|
||||
"""
|
||||
创建分隔线
|
||||
"""
|
||||
separator = QtWidgets.QFrame()
|
||||
separator.setFrameShape(QtWidgets.QFrame.VLine)
|
||||
separator.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
separator.setFixedWidth(2)
|
||||
separator.setFixedHeight(24)
|
||||
return separator
|
||||
|
||||
#======================================= CONNECTION =====================================
|
||||
def create_connections(self):
|
||||
@@ -164,13 +208,28 @@ class ToolbarUI(ui_utils.BaseUI):
|
||||
连接信号和槽
|
||||
设置UI控件的交互行为
|
||||
"""
|
||||
# 预设按钮连接
|
||||
self.buttons["load_preset"].clicked.connect(utils_toolbar.toolbar_temp_utils_function)
|
||||
self.buttons["save_preset"].clicked.connect(utils_toolbar.toolbar_temp_utils_function)
|
||||
# 第一行按钮连接
|
||||
self.buttons["new_file"].clicked.connect(utils_toolbar.new_file)
|
||||
self.buttons["open_file"].clicked.connect(utils_toolbar.open_file)
|
||||
self.buttons["link_file"].clicked.connect(utils_toolbar.link_file)
|
||||
self.buttons["unlink_file"].clicked.connect(utils_toolbar.unlink_file)
|
||||
self.buttons["import_file"].clicked.connect(utils_toolbar.import_file)
|
||||
self.buttons["export_file"].clicked.connect(utils_toolbar.export_file)
|
||||
self.buttons["save_file"].clicked.connect(utils_toolbar.save_file)
|
||||
self.buttons["user_info"].clicked.connect(utils_toolbar.show_user_info)
|
||||
self.buttons["help"].clicked.connect(utils_toolbar.show_help)
|
||||
self.buttons["settings"].clicked.connect(utils_toolbar.show_settings)
|
||||
self.buttons["print"].clicked.connect(utils_toolbar.print_file)
|
||||
|
||||
# DNA操作按钮连接
|
||||
self.buttons["import_dna"].clicked.connect(utils_toolbar.toolbar_temp_utils_function)
|
||||
self.buttons["export_dna"].clicked.connect(utils_toolbar.toolbar_temp_utils_function)
|
||||
self.buttons["create_rl4"].clicked.connect(utils_toolbar.toolbar_temp_utils_function)
|
||||
self.buttons["delete_rl4"].clicked.connect(utils_toolbar.toolbar_temp_utils_function)
|
||||
# 第二行按钮连接
|
||||
self.buttons["model_view"].clicked.connect(lambda: utils_toolbar.change_view("model"))
|
||||
self.buttons["definition_view"].clicked.connect(lambda: utils_toolbar.change_view("definition"))
|
||||
self.buttons["table_view"].clicked.connect(lambda: utils_toolbar.change_view("table"))
|
||||
self.buttons["define_view"].clicked.connect(lambda: utils_toolbar.change_view("define"))
|
||||
|
||||
# 下拉框连接
|
||||
self.controls["model_combo"].currentIndexChanged.connect(utils_toolbar.model_changed)
|
||||
|
||||
# 帮助按钮连接
|
||||
self.buttons["help_button"].clicked.connect(utils_toolbar.show_help)
|
||||
|
Reference in New Issue
Block a user