Update
This commit is contained in:
176
2023/scripts/animation_tools/dwpicker/optionvar.py
Normal file
176
2023/scripts/animation_tools/dwpicker/optionvar.py
Normal 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)])
|
||||
Reference in New Issue
Block a user