2025-02-03 22:58:41 +08:00
|
|
|
|
#!/usr/bin/env python
|
2025-02-04 00:13:31 +08:00
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
|
|
import os
|
2025-02-04 16:29:33 +08:00
|
|
|
|
import sys
|
|
|
|
|
from PySide2 import QtCore, QtGui, QtWidgets
|
|
|
|
|
|
|
|
|
|
# 添加项目根目录到 Python 路径
|
|
|
|
|
ROOT_DIR = os.path.dirname(os.path.dirname(__file__))
|
|
|
|
|
if ROOT_DIR not in sys.path:
|
|
|
|
|
sys.path.insert(0, ROOT_DIR)
|
2025-02-04 00:13:31 +08:00
|
|
|
|
from config import data
|
|
|
|
|
QtCore, QtGui, QtWidgets = data.Qt()
|
|
|
|
|
|
2025-02-04 16:29:33 +08:00
|
|
|
|
#===================================== 2. Global Variables =====================================
|
|
|
|
|
TOOL_NAME = data.TOOL_NAME
|
|
|
|
|
TOOL_VERSION = data.TOOL_VERSION
|
|
|
|
|
TOOL_AUTHOR = data.TOOL_AUTHOR
|
|
|
|
|
TOOL_LANG = data.TOOL_LANG
|
|
|
|
|
TOOL_WSCL_NAME = data.TOOL_WSCL_NAME
|
|
|
|
|
TOOL_HELP_URL = data.TOOL_HELP_URL
|
|
|
|
|
SCRIPTS_PATH = data.SCRIPTS_PATH
|
|
|
|
|
ICONS_PATH = data.ICONS_PATH
|
|
|
|
|
|
|
|
|
|
TOOL_MAIN_SCRIPT = data.TOOL_MAIN_SCRIPT
|
|
|
|
|
TOOL_MOD_FILENAME = data.TOOL_MOD_FILENAME
|
|
|
|
|
TOOL_ICON = data.TOOL_ICON
|
|
|
|
|
TOOL_COMMAND_ICON = data.TOOL_COMMAND_ICON
|
2025-02-04 00:13:31 +08:00
|
|
|
|
|
|
|
|
|
main_window = None
|
|
|
|
|
|
|
|
|
|
class MetaFusionWindow(QtWidgets.QMainWindow):
|
|
|
|
|
def __init__(self, parent=None):
|
|
|
|
|
super(MetaFusionWindow, self).__init__(parent)
|
|
|
|
|
self.setWindowTitle("MetaFusion")
|
|
|
|
|
self.resize(800, 600)
|
|
|
|
|
|
|
|
|
|
# 加载样式表
|
|
|
|
|
self.load_stylesheet()
|
|
|
|
|
|
|
|
|
|
# 创建UI
|
|
|
|
|
self.setup_ui()
|
|
|
|
|
|
|
|
|
|
def load_stylesheet(self):
|
|
|
|
|
"""加载QSS样式表"""
|
|
|
|
|
style_file = os.path.join(os.path.dirname(os.path.dirname(__file__)), "resources", "styles", "style.qss")
|
|
|
|
|
if os.path.exists(style_file):
|
|
|
|
|
with open(style_file, 'r', encoding='utf-8') as f:
|
|
|
|
|
self.setStyleSheet(f.read())
|
|
|
|
|
|
|
|
|
|
def setup_ui(self):
|
|
|
|
|
"""设置UI结构"""
|
|
|
|
|
# 创建中心部件
|
|
|
|
|
central_widget = QtWidgets.QWidget()
|
|
|
|
|
self.setCentralWidget(central_widget)
|
|
|
|
|
|
|
|
|
|
# 创建主布局
|
|
|
|
|
main_layout = QtWidgets.QVBoxLayout(central_widget)
|
|
|
|
|
|
|
|
|
|
# 创建菜单栏
|
|
|
|
|
self.create_menu_bar()
|
|
|
|
|
|
|
|
|
|
# 创建工具栏
|
|
|
|
|
self.create_tool_bar()
|
|
|
|
|
|
|
|
|
|
# 创建标签页
|
|
|
|
|
self.create_tabs()
|
|
|
|
|
|
|
|
|
|
def create_menu_bar(self):
|
|
|
|
|
"""创建菜单栏"""
|
|
|
|
|
menubar = self.menuBar()
|
|
|
|
|
|
|
|
|
|
# 文件菜单
|
|
|
|
|
file_menu = menubar.addMenu("文件")
|
|
|
|
|
file_menu.addAction("新建")
|
|
|
|
|
file_menu.addAction("打开")
|
|
|
|
|
file_menu.addAction("保存")
|
|
|
|
|
file_menu.addSeparator()
|
|
|
|
|
file_menu.addAction("退出")
|
|
|
|
|
|
|
|
|
|
# 编辑菜单
|
|
|
|
|
edit_menu = menubar.addMenu("编辑")
|
|
|
|
|
edit_menu.addAction("撤销")
|
|
|
|
|
edit_menu.addAction("重做")
|
|
|
|
|
|
|
|
|
|
# 帮助菜单
|
|
|
|
|
help_menu = menubar.addMenu("帮助")
|
|
|
|
|
help_menu.addAction("关于")
|
|
|
|
|
|
|
|
|
|
def create_tool_bar(self):
|
|
|
|
|
"""创建工具栏"""
|
|
|
|
|
toolbar = self.addToolBar("主工具栏")
|
|
|
|
|
toolbar.setMovable(False)
|
|
|
|
|
|
|
|
|
|
# 添加工具栏按钮
|
|
|
|
|
toolbar.addAction(QtGui.QIcon(":/icons/new.png"), "新建")
|
|
|
|
|
toolbar.addAction(QtGui.QIcon(":/icons/open.png"), "打开")
|
|
|
|
|
toolbar.addAction(QtGui.QIcon(":/icons/save.png"), "保存")
|
|
|
|
|
|
|
|
|
|
def create_tabs(self):
|
|
|
|
|
"""创建标签页"""
|
|
|
|
|
self.tab_widget = QtWidgets.QTabWidget()
|
|
|
|
|
self.centralWidget().layout().addWidget(self.tab_widget)
|
|
|
|
|
|
|
|
|
|
# 创建四个主要标签页
|
|
|
|
|
self.model_tab = QtWidgets.QWidget()
|
|
|
|
|
self.rig_tab = QtWidgets.QWidget()
|
|
|
|
|
self.adjust_tab = QtWidgets.QWidget()
|
|
|
|
|
self.define_tab = QtWidgets.QWidget()
|
|
|
|
|
|
|
|
|
|
# 添加标签页到标签页控件
|
|
|
|
|
self.tab_widget.addTab(self.model_tab, "模型")
|
|
|
|
|
self.tab_widget.addTab(self.rig_tab, "绑定")
|
|
|
|
|
self.tab_widget.addTab(self.adjust_tab, "调整")
|
|
|
|
|
self.tab_widget.addTab(self.define_tab, "定义")
|
|
|
|
|
|
|
|
|
|
# 设置各个标签页的内容
|
|
|
|
|
self.setup_model_tab()
|
|
|
|
|
self.setup_rig_tab()
|
|
|
|
|
self.setup_adjust_tab()
|
|
|
|
|
self.setup_define_tab()
|
|
|
|
|
|
|
|
|
|
def setup_model_tab(self):
|
|
|
|
|
"""设置模型标签页内容"""
|
|
|
|
|
layout = QtWidgets.QVBoxLayout(self.model_tab)
|
|
|
|
|
# 在这里添加模型标签页的具体控件
|
|
|
|
|
|
|
|
|
|
def setup_rig_tab(self):
|
|
|
|
|
"""设置绑定标签页内容"""
|
|
|
|
|
layout = QtWidgets.QVBoxLayout(self.rig_tab)
|
|
|
|
|
# 在这里添加绑定标签页的具体控件
|
|
|
|
|
|
|
|
|
|
def setup_adjust_tab(self):
|
|
|
|
|
"""设置调整标签页内容"""
|
|
|
|
|
layout = QtWidgets.QVBoxLayout(self.adjust_tab)
|
|
|
|
|
# 在这里添加调整标签页的具体控件
|
|
|
|
|
|
|
|
|
|
def setup_define_tab(self):
|
|
|
|
|
"""设置定义标签页内容"""
|
|
|
|
|
layout = QtWidgets.QVBoxLayout(self.define_tab)
|
|
|
|
|
# 在这里添加定义标签页的具体控件
|
|
|
|
|
|
|
|
|
|
def show():
|
|
|
|
|
"""显示主窗口"""
|
|
|
|
|
global main_window
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
main_window.close()
|
|
|
|
|
except:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
main_window = MetaFusionWindow()
|
|
|
|
|
main_window.show()
|
|
|
|
|
return main_window
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
app = QtWidgets.QApplication([])
|
|
|
|
|
window = show()
|
|
|
|
|
app.exec_()
|
|
|
|
|
|