UNPKG

dazscript-framework

Version:

The **DazScript Framework** is a TypeScript-based framework for writing Daz Studio scripts. It provides all the advantages of a typed language such as autocompletion, error checking, and method parameter documentation and hinting. The framework also inclu

82 lines (68 loc) 2.66 kB
import { debug, warn } from '@dsf/common/log' import { mainWindow } from '@dsf/core/global' import { isGUID } from './string-helper' const actionMgr = mainWindow.getActionMgr() export const isCustomAction = (action: string | DzAction): boolean => { return typeof action === 'string' ? isGUID(action) : action.inherits('DzCustomAction') } export const findAction = (name: string): DzAction | null => { return isCustomAction(name) ? findCustomAction(name) : actionMgr.findAction(name) } const findCustomAction = (name: string): DzCustomAction | null => { let index = actionMgr.findCustomAction(name) return index >= 0 ? actionMgr.getCustomActionByIndex(index) : null } export const triggerAction = (name: string) => { findAction(name)?.trigger() } export const setActionShortcut = (name: string, shortcut: string) => { let action = findAction(name) if (!action) return if (isCustomAction(action)) { actionMgr.setCustomActionShortcut(actionMgr.findCustomAction(name), shortcut) debug(`Shortcut set for Custom Action ${action.text}: ${shortcut}`) } else { actionMgr.setAccel(name, shortcut) debug(`Shortcut set for Action ${action.text}: ${shortcut}`) } } export const clearActionShorcut = (name: string) => { let action = findAction(name) if (!action) return if (isCustomAction(action)) { actionMgr.setCustomActionShortcut(actionMgr.findCustomAction(name), '') } else { actionMgr.setAccel(name, '') } } export const getActionPixmap = (action: string, icon: string, maxSize?: number): QPixmap | null => { try { if (!action) return null; let isCustom = isCustomAction(action) if (isCustom && icon && typeof icon === 'string' && icon) { let image: DzImageTexture = (App.getImageMgr() as any)['getImage(QString)'](icon) if (image) { let size = image.getOriginalImageSize(); let pixmap = size.width > maxSize || size.height > maxSize ? image.getPreviewPixmap(Math.min(size.width, maxSize), Math.min(size.height, maxSize)) : new Pixmap(image.getFilename()) return pixmap } } else if (!isCustom) { let pixmap = App.getStyle().actionPixmap(action, 0, 0) return pixmap?.height === 0 ? null : pixmap } } catch (error) { warn(`Error while trying to get icon pixmap: ${error}`) } return null }