This commit is contained in:
Jeffreytsai1004 2025-01-13 23:36:50 +08:00
parent 102f0bce6a
commit 691a4ffe69
2 changed files with 92 additions and 78 deletions

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#===================================== IMPORTS =====================================
@ -18,18 +18,26 @@ import maya.cmds as cmds
import maya.mel as mel
#===================================== IMPORT MODULES =====================================
# Standard library imports
import BodyPrep
import BatchImport
import DNA_Viewer
<<<<<<< Updated upstream
=======
>>>>>>> Stashed changes
#===================================== CONSTANTS =====================================
# Tool info
TOOL_NAME = "MetaFusion"
TOOL_VERSION = "Beta v1.0.0"
TOOL_AUTHOR = "Virtuos"
TOOL_AUTHOR = "CGNICO"
TOOL_LANG = 'en_US'
# UI Constants
TOOL_WSCL_NAME = "MetaFusionWorkSpaceControl"
<<<<<<< Updated upstream
TOOL_HELP_URL = f"http://10.72.61.59:3000/ArtGroup/{TOOL_NAME}/wiki"
=======
TOOL_HELP_URL = f"https://gitea.cgnico.com/CGNICO/MetaFusion/wiki"
>>>>>>> Stashed changes
DEFAULT_WINDOW_SIZE = (500, 800)
# Paths
@ -75,46 +83,35 @@ SUPPORTED_LANGUAGES = ['en_US', 'zh_CN']
LANG = {
"en_US": {
"MetaFusion": "MetaFusion",
"Load DNA": "Load DNA",
"Prepare Body": "Prepare Body",
"Prepare": "Prepare",
"Body Prepare": "Body Prepare",
"DNA Edit": "DNA Edit",
"Open DNA Viewer": "Open DNA Viewer",
"Import": "Import",
"Batch Import": "Batch Import",
"Help": "Help",
"Switch Language": "Switch Language",
"Language switched": "Language switched",
"EN": "EN",
"ZH": "ZH",
"English": "English",
"Chinese": "Chinese",
"Language switched": "Language switched",
"DNA Samples": "DNA Samples",
"Prepare": "Prepare",
"Import": "Import",
"Body Prepare": "Body Prepare",
"Batch Import": "Batch Import",
"DNA Edit": "DNA Edit",
"Open DNA Viewer": "Open DNA Viewer",
"Load DNA": "Load DNA",
"DNA File:": "DNA File:"
"Chinese": "Chinese"
},
"zh_CN": {
"MetaFusion": "MetaFusion",
"DNA Samples": "DNA 样本",
"Load DNA": "加载 DNA",
"Prepare Body": "准备身体",
"Prepare": "准备",
"Body Prepare": "身体准备",
"DNA Edit": "DNA 编辑",
"Open DNA Viewer": "打开 DNA 查看器",
"Import": "导入",
"Batch Import": "批量导入",
"Help": "帮助",
"Switch Language": "切换语言",
"Language switched": "语言已切换",
"EN": "英文",
"ZH": "中文",
"English": "英语",
"Chinese": "中文",
"Language switched": "语言已切换",
"DNA Samples": "DNA 样本",
"Prepare": "准备",
"Import": "导入",
"Body Prepare": "身体准备",
"Batch Import": "批量导入",
"DNA Edit": "DNA 编辑",
"Open DNA Viewer": "打开 DNA 查看器",
"Load DNA": "加载 DNA",
"DNA File:": "DNA 文件:"
"Chinese": "中文"
}
}
@ -131,11 +128,7 @@ def maya_main_window():
#===================================== UI COMPONENTS =====================================
class MainButton(QtWidgets.QPushButton):
DEFAULT_COLORS = {
"normal": "#D0D0D0",
"hover": "#E0E0E0",
"pressed": "#C0C0C0"
}
DEFAULT_COLORS = {"normal": "#D0D0D0", "hover": "#E0E0E0", "pressed": "#C0C0C0"}
def __init__(self, text="", icon=None, color=None, hover_color=None, pressed_color=None):
super().__init__(text)
@ -250,12 +243,9 @@ class MainWindow(QtWidgets.QWidget):
cls.instance.deleteLater()
except Exception:
pass
cls.instance = cls()
cls.instance.dock_to_maya()
return cls.instance
except Exception as e:
print(f"Error showing {TOOL_NAME} window: {e}")
return None
@ -281,18 +271,29 @@ class MainWindow(QtWidgets.QWidget):
#===================================== UI COMPONENTS =====================================
def create_widgets(self):
<<<<<<< Updated upstream
# DNA Edit group
self.dna_edit_btn = MainButton(LANG[TOOL_LANG]["DNA Edit"])
self.dna_viewer_btn = MainButton(LANG[TOOL_LANG]["Open DNA Viewer"], color="#B8E6B3", hover_color="#C4F2BF", pressed_color="#A3D99E")
=======
>>>>>>> Stashed changes
# Prepare group
self.prepare_btn = MainButton(LANG[TOOL_LANG]["Prepare"])
self.body_prepare_btn = MainButton(LANG[TOOL_LANG]["Body Prepare"], color="#FFEBA1", hover_color="#FFF5B3", pressed_color="#FFE68A")
<<<<<<< Updated upstream
=======
# DNA Edit group
self.dna_edit_btn = MainButton(LANG[TOOL_LANG]["DNA Edit"])
self.dna_viewer_btn = MainButton(LANG[TOOL_LANG]["Open DNA Viewer"], color="#B8E6B3", hover_color="#C4F2BF", pressed_color="#A3D99E")
# Import group
self.import_btn = MainButton(LANG[TOOL_LANG]["Import"])
self.batch_import_btn = MainButton(LANG[TOOL_LANG]["Batch Import"], color="#A7C6ED", hover_color="#B2D3F0", pressed_color="#8BB8E0")
>>>>>>> Stashed changes
# Bottom buttons (existing code)
self.help_btn = BottomButton(LANG[TOOL_LANG]["Help"])
self.help_btn.setToolTip(LANG[TOOL_LANG]["Help"])
@ -308,29 +309,22 @@ class MainWindow(QtWidgets.QWidget):
def create_layouts(self):
main_layout = QtWidgets.QVBoxLayout(self)
main_layout.setContentsMargins(2, 2, 2, 2)
# Content layout
content_layout = QtWidgets.QVBoxLayout()
content_layout.setContentsMargins(5, 5, 5, 5)
bottom_layout = QtWidgets.QHBoxLayout()
bottom_layout.setContentsMargins(5, 0, 5, 5)
# DNA Edit group
dna_edit_group = QtWidgets.QGroupBox(LANG[TOOL_LANG]["DNA Edit"])
dna_edit_layout = QtWidgets.QVBoxLayout(dna_edit_group)
dna_edit_layout.addWidget(self.dna_viewer_btn)
content_layout.addWidget(dna_edit_group)
# Prepare group
prepare_group = QtWidgets.QGroupBox(LANG[TOOL_LANG]["Prepare"])
prepare_group = QtWidgets.QGroupBox("Prepare")
prepare_layout = QtWidgets.QVBoxLayout(prepare_group)
prepare_layout.addWidget(self.body_prepare_btn)
content_layout.addWidget(prepare_group)
# Import group
import_group = QtWidgets.QGroupBox(LANG[TOOL_LANG]["Import"])
import_group = QtWidgets.QGroupBox("Import")
import_layout = QtWidgets.QVBoxLayout(import_group)
import_layout.addWidget(self.batch_import_btn)
content_layout.addWidget(import_group)
<<<<<<< Updated upstream
main_layout.addLayout(content_layout)
main_layout.addStretch()
@ -338,49 +332,58 @@ class MainWindow(QtWidgets.QWidget):
bottom_layout = QtWidgets.QHBoxLayout()
bottom_layout.setContentsMargins(5, 0, 5, 5)
=======
dna_edit_group = QtWidgets.QGroupBox("DNA Edit")
dna_edit_layout = QtWidgets.QVBoxLayout(dna_edit_group)
dna_edit_layout.addWidget(self.dna_viewer_btn)
content_layout.addWidget(dna_edit_group)
>>>>>>> Stashed changes
icon_label = QtWidgets.QLabel()
if os.path.exists(TOOL_ICON):
icon = QtGui.QPixmap(TOOL_ICON).scaled(24, 24, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
icon_label.setPixmap(icon)
version_label = QtWidgets.QLabel(f"{TOOL_VERSION}")
version_label.setStyleSheet("color: gray; font-size: 12px;")
bottom_layout.addWidget(icon_label)
bottom_layout.addWidget(version_label)
bottom_layout.addStretch()
bottom_layout.addWidget(self.help_btn)
bottom_layout.addWidget(self.lang_btn)
main_layout.addLayout(content_layout)
main_layout.addLayout(bottom_layout)
main_layout.addStretch()
def create_connections(self):
# Connect function buttons
self.body_prepare_btn.clicked.connect(self.run_body_prepare)
self.batch_import_btn.clicked.connect(self.run_batch_import)
self.dna_viewer_btn.clicked.connect(self.run_dna_viewer)
<<<<<<< Updated upstream
# Existing connections
=======
self.batch_import_btn.clicked.connect(self.run_batch_import)
>>>>>>> Stashed changes
self.help_btn.clicked.connect(self.help)
self.lang_btn.clicked.connect(self.switch_language)
#===================================== FUNCTIONS =====================================
#===================================== MAIN FUNCTIONS =====================================
# Prepare group
def run_body_prepare(self):
import BodyPrep
BodyPrep.run()
# Import group
def run_batch_import(self):
import BatchImport
BatchImport.run()
# DNA Edit group
def run_dna_viewer(self):
<<<<<<< Updated upstream
import DNA_Viewer
DNA_Viewer.show()
=======
DNA_Viewer.show()
>>>>>>> Stashed changes
#===================================== BOTTOM LAYOUT =====================================
def help(self):
@ -391,7 +394,6 @@ class MainWindow(QtWidgets.QWidget):
TOOL_LANG = 'en_US' if TOOL_LANG == 'zh_CN' else 'zh_CN'
self.lang_btn.setText("ZH" if TOOL_LANG == 'en_US' else "EN")
self.retranslate_ui()
QtWidgets.QToolTip.showText(
self.lang_btn.mapToGlobal(QtCore.QPoint(0, -30)),
"Language switched" if TOOL_LANG == 'en_US' else "语言已切换",
@ -399,27 +401,23 @@ class MainWindow(QtWidgets.QWidget):
)
def retranslate_ui(self):
<<<<<<< Updated upstream
# Update function button translations
=======
>>>>>>> Stashed changes
self.load_dna_btn.setText(LANG[TOOL_LANG]["Load DNA"])
self.body_prepare_btn.setText(LANG[TOOL_LANG]["Body Prepare"])
self.batch_import_btn.setText(LANG[TOOL_LANG]["Batch Import"])
self.dna_viewer_btn.setText(LANG[TOOL_LANG]["Open DNA Viewer"])
for button in [
self.body_prepare_btn,
self.batch_import_btn,
self.dna_viewer_btn
]:
button.setFont(QtGui.QFont("Microsoft YaHei", 10))
self.batch_import_btn.setText(LANG[TOOL_LANG]["Batch Import"])
# Update bottom button translations
self.help_btn.setText(LANG[TOOL_LANG]["Help"])
self.lang_btn.setText("ZH" if TOOL_LANG == 'en_US' else "EN")
for button in [
self.help_btn,
self.lang_btn
]:
for button in [self.body_prepare_btn, self.dna_viewer_btn, self.batch_import_btn]:
button.setFont(QtGui.QFont("Microsoft YaHei", 10))
for button in [self.help_btn, self.lang_btn]:
button.setFont(QtGui.QFont("Microsoft YaHei", 10))
self.dna_file_label.setText(LANG[TOOL_LANG]["DNA File:"])
@ -439,4 +437,4 @@ class MainWindow(QtWidgets.QWidget):
#===================================== LAUNCH FUNCTIONS =====================================
def show():
return MainWindow.show_window()
return MainWindow.show_window()

View File

@ -1,3 +1,9 @@
<<<<<<< Updated upstream
=======
#!/usr/bin/env python
# -*- coding: utf-8 -*-
>>>>>>> Stashed changes
import logging
import os
import webbrowser
@ -39,10 +45,17 @@ def show() -> None:
DnaViewerWindow.show_window()
<<<<<<< Updated upstream
TOOL_NAME = "Delos"
WINDOW_TITLE = "DNA Viewer"
WINDOW_OBJECT = "dnaviewer"
TOOL_HELP_URL = f"http://10.72.61.59:3000/ArtGroup/{TOOL_NAME}/wiki"
=======
TOOL_NAME = "DNA Viewer"
WINDOW_TITLE = "DNA Viewer"
WINDOW_OBJECT = "dnaviewer"
TOOL_HELP_URL = f"https://gitea.cgnico.com/CGNICO/MetaFusion/wiki"
>>>>>>> Stashed changes
SPACING = 6
WINDOW_SIZE_WIDTH_MIN = 800
WINDOW_SIZE_WIDTH_MAX = 1200
@ -194,7 +207,10 @@ class DNABrowser(QWidget):
img_file = img_path
break
<<<<<<< Updated upstream
# If no corresponding image is found, use default preview image
=======
>>>>>>> Stashed changes
if not img_file and os.path.exists(default_preview):
img_file = default_preview
@ -1015,4 +1031,4 @@ class DnaViewerWindow(QMainWindow):
and all_total_meshes
and self.is_enabled_and_checked(self.skin_cb)
)
self.rig_logic_cb.setEnabled(enabled)
self.rig_logic_cb.setEnabled(enabled)