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