This commit is contained in:
2025-11-23 23:31:18 +08:00
parent d60cdc52fd
commit 9f7667a475
710 changed files with 252869 additions and 6 deletions

View File

@@ -0,0 +1,176 @@
import os
import sys
from maya import cmds
AUTO_FOCUS_BEHAVIORS = ['off', 'bilateral', 'pickertomaya']
ZOOM_BUTTONS = ["left", "middle", "right"]
AUTO_FOCUS_BEHAVIOR = 'dwpicker_auto_focus_behavior'
AUTO_COLLAPSE_IMG_PATH_FROM_ENV = 'dwpicker_auto_collapse_image_path_from_env'
AUTO_SET_NAMESPACE = 'dwpicker_auto_set_namespace'
AUTO_RESIZE_NAMESPACE_COMBO = 'dwpicker_auto_resize_namespace_combo'
AUTO_SWITCH_TAB = 'dwpicker_auto_switch_tab'
BG_LOCKED = 'dwpicker_designer_background_items_locked'
CHECK_IMAGES_PATHS = 'dwpicker_check_images_paths'
CHECK_FOR_UPDATE = 'dwpicker_check_for_update'
CUSTOM_PROD_PICKER_DIRECTORY = 'dwpicker_custom_prod_picker_directory'
DEFAULT_BG_COLOR = 'dwpicker_default_background_color'
DEFAULT_HOTKEYS = 'dwpicker_default_hotkeys'
DEFAULT_LABEL = 'dwpicker_default_label_color'
DEFAULT_HEIGHT = 'dwpicker_default_height'
DEFAULT_TEXT_COLOR = 'dwpicker_default_text_color'
DEFAULT_WIDTH = 'dwpicker_default_width'
DISABLE_IMPORT_CALLBACKS = 'dwpicker_disable_import_callbacks'
DISPLAY_QUICK_OPTIONS = 'dwpicker_display_quick_options'
DISPLAY_HIERARCHY_IN_CANVAS = 'dwpicker_display_hierarchy_in_canvas'
DISPLAY_HIERARCHY_IN_PICKER = 'dwpicker_display_hierarchy_in_picker'
OVERRIDE_PROD_PICKER_DIRECTORY_ENV = 'dwpicker_override_picker_directory_env'
INSERT_TAB_AFTER_CURRENT = 'dwpicker_insert_tab_after_current'
ISOLATE_CURRENT_PANEL_SHAPES = 'dwpicker_isolate_current_panel_shapes'
LAST_COMMAND_LANGUAGE = 'dwpicker_last_command_language_used'
LAST_IMAGE_DIRECTORY_USED = 'dwpicker_last_directory_used'
LAST_IMPORT_DIRECTORY = 'dwpicker_last_file_import_directory'
LAST_OPEN_DIRECTORY = 'dwpicker_last_file_open_directory'
LAST_SAVE_DIRECTORY = 'dwpicker_last_file_save_directory'
OPENED_FILES = 'dwpicker_opened_files'
NAMESPACE_TOOLBAR = 'dwpicker_display_dwtoolbar'
RECENT_FILES = 'dwpicker_recent_files'
SEARCH_FIELD_INDEX = 'dwpicker_designer_search_field_index'
SETTINGS_GROUP_TO_COPY = 'dwpicker_settings_group_to_copy'
SETTINGS_TO_COPY = 'dwpicker_settings_to_copy'
SHAPES_FILTER_INDEX = 'dwpicker_designer_shape_filter_index'
SHAPE_PATH_ROTATION_STEP_ANGLE = 'dwpicker_shape_path_rotation_step_angle'
SNAP_ITEMS = 'dwpicker_designer_snap_items'
SNAP_GRID_X = 'dwpicker_designer_snap_x'
SNAP_GRID_Y = 'dwpicker_designer_snap_y'
SYNCHRONYZE_SELECTION = 'dwpicker_synchronize_selection'
TRIGGER_REPLACE_ON_MIRROR = 'dwpicker_trigger_search_and_replace_on_mirror'
USE_BASE64_DATA_ENCODING = 'dwpicker_use_base64_data_encoding'
USE_ICON_FOR_UNSAVED_TAB = 'dwpicker_use_icon_for_unsaved_tab'
USE_PROD_PICKER_DIR_AS_DEFAULT = 'dwpicker_user_prod_picker_dir_for_import'
ZOOM_BUTTON = 'dwpicker_picker_zoom_mouse_button'
WARN_ON_TAB_CLOSED = 'dwpicker_warn_on_tab_closed'
ZOOM_SENSITIVITY = 'dwpicker_zoom_sensitivity'
try:
check_for_update = int(cmds.about(majorVersion=True) != '2023')
# cmds.about command for Maya prio 2022 does not have majorVersion argument.
except TypeError:
check_for_update = 0
OPTIONVARS = {
AUTO_FOCUS_BEHAVIOR: AUTO_FOCUS_BEHAVIORS[-1],
AUTO_SWITCH_TAB: 0,
AUTO_RESIZE_NAMESPACE_COMBO: 0,
AUTO_SET_NAMESPACE: 0,
AUTO_COLLAPSE_IMG_PATH_FROM_ENV: 1,
BG_LOCKED: 1,
CHECK_IMAGES_PATHS: 1,
# We disable this default feature for maya 2023. It seems that the github
# request can cause a maya crash due to an incompatibility with the python
# with this specific version of Maya.
CHECK_FOR_UPDATE: check_for_update,
CUSTOM_PROD_PICKER_DIRECTORY: '',
DEFAULT_BG_COLOR: '#777777',
DEFAULT_HEIGHT: 20,
DEFAULT_LABEL: '',
DEFAULT_TEXT_COLOR: '#000000',
DEFAULT_HOTKEYS: (
'focus=F,1;new=CTRL+N,1;open=CTRL+O,1;save=CTRL+S,1;close=CTRL+Q,1;'
'undo=CTRL+Z,1;redo=CTRL+Y,1;edit=CTRL+E,1;next_tab=None,0;'
'previous_tab=None,0;toggle_display=T,1;display_hierarchy=Y,1'),
DISPLAY_HIERARCHY_IN_CANVAS: 1,
DEFAULT_WIDTH: 30,
DISABLE_IMPORT_CALLBACKS: 1,
DISPLAY_HIERARCHY_IN_PICKER: 1,
DISPLAY_QUICK_OPTIONS: 1,
OVERRIDE_PROD_PICKER_DIRECTORY_ENV: 0,
INSERT_TAB_AFTER_CURRENT: 0,
ISOLATE_CURRENT_PANEL_SHAPES: 0,
LAST_OPEN_DIRECTORY: os.path.expanduser("~"),
LAST_SAVE_DIRECTORY: os.path.expanduser("~"),
LAST_IMPORT_DIRECTORY: os.path.expanduser("~"),
LAST_COMMAND_LANGUAGE: 0, # 0 = python, 1 = mel
LAST_IMAGE_DIRECTORY_USED: os.path.expanduser("~"),
NAMESPACE_TOOLBAR: 0,
OPENED_FILES: '',
RECENT_FILES: '',
SEARCH_FIELD_INDEX: 0,
SHAPES_FILTER_INDEX: 0,
SHAPE_PATH_ROTATION_STEP_ANGLE: 15,
SETTINGS_GROUP_TO_COPY: 'bordercolor;text;image;bgcolor;shape;borderwidth;border',
SETTINGS_TO_COPY: (
'bgcolor.clicked;bgcolor.hovered;bgcolor.normal;bgcolor.transparency;'
'border;bordercolor.clicked;bordercolor.hovered;bordercolor.normal;'
'bordercolor.transparency;borderwidth.clicked;borderwidth.hovered;'
'borderwidth.normal;image.fit;image.height;image.width;shape;'
'shape.cornersx;shape.cornersy;shape.height;shape.left;'
'shape.top;shape.width;text.bold;text.color;text.halign;text.italic;'
'text.size;text.valign'),
SNAP_ITEMS: 0,
SNAP_GRID_X: 10,
SNAP_GRID_Y: 10,
SYNCHRONYZE_SELECTION: 1,
TRIGGER_REPLACE_ON_MIRROR: 0,
USE_BASE64_DATA_ENCODING: 0,
USE_ICON_FOR_UNSAVED_TAB: 1,
USE_PROD_PICKER_DIR_AS_DEFAULT: 0,
WARN_ON_TAB_CLOSED: 0,
ZOOM_BUTTON: ZOOM_BUTTONS[2],
ZOOM_SENSITIVITY: 50
}
TYPES = {
int: 'intValue',
float: 'floatValue',
str: 'stringValue'}
# Ensure backward compatibility.
if sys.version_info[0] == 2:
TYPES[unicode] = 'stringValue'
def ensure_optionvars_exists():
for optionvar, default_value in OPTIONVARS.items():
if cmds.optionVar(exists=optionvar):
continue
save_optionvar(optionvar, default_value)
def save_optionvar(optionvar, value):
kwargs = {TYPES.get(type(value)): [optionvar, value]}
cmds.optionVar(**kwargs)
def save_opened_filenames(filenames):
save_optionvar(OPENED_FILES, ";".join(filenames))
def append_recent_filename(filename):
filename = os.path.normpath(filename)
stored_filenames = cmds.optionVar(query=RECENT_FILES)
if not stored_filenames:
cmds.optionVar(stringValue=[RECENT_FILES, filename + ';'])
return
# Just reorder list if the filename is already in the recent filenames.
stored_filenames = stored_filenames.split(';')
for stored_filename in stored_filenames:
if os.path.normpath(stored_filename) == filename:
stored_filenames.remove(stored_filename)
stored_filenames.insert(0, filename)
cmds.optionVar(
stringValue=[RECENT_FILES, ';'.join(stored_filenames)])
return
# Append to list if new filename.
if len(stored_filenames) >= 10:
stored_filenames = stored_filenames[:9]
stored_filenames.insert(0, filename)
cmds.optionVar(stringValue=[RECENT_FILES, ';'.join(stored_filenames)])