def showResultsWindow(self, data): ''' :param ResultsData data: data to show for results window ''' BaseToolWindow.destroyWindow(self.WINDOW_NAME) w = BaseToolWindow.getWindowInstance(self.WINDOW_NAME, UpdateCheckWindow) w.setTopLabel( 'Update Available' if data.updateAvailable else 'No Updates Found') if data.updateAvailable: w.addMessage("New plugin version available: {0}".format( data.versionAvailable)) else: w.addMessage("Plugin is up to date") w.addMessage("Released date: %s" % data.updateDate.strftime("%d %B, %Y")) def linkOpener(url): def result(*args): import webbrowser webbrowser.open(url) return result w.addButton("ngskintools.com", linkOpener("https://www.ngskintools.com")) w.showWindow()
def __init__(self, windowName): log.debug("creating main window") BaseToolWindow.__init__(self, windowName) self.windowTitle = self.createWindowTitle() self.mainTabLayout = None self.tabs = [] # layer target UI - compound for layers list/no layer data ui self.targetUI = None self.actions = None self.preferedWidth = PersistentValueModel( 'ngSkinToolsMainWindow_preferedWidth', 400) self.preferedHeight = PersistentValueModel( 'ngSkinToolsMainWindow_preferedHeight', 400) self.preferedTop = PersistentValueModel( 'ngSkinToolsMainWindow_preferedTop') self.preferedLeft = PersistentValueModel( 'ngSkinToolsMainWindow_preferedLeft') self.preferedFloating = PersistentValueModel( 'ngSkinToolsMainWindow_preferedFloating', False) self.useUserPrefSize = False self.defaultWidth = self.preferedWidth.get() self.defaultHeight = self.preferedHeight.get() self.sizeable = True
def showInfoWindow(self, title, message): BaseToolWindow.destroyWindow(self.WINDOW_NAME) w = BaseToolWindow.getWindowInstance(self.WINDOW_NAME, UpdateCheckWindow) w.setTopLabel(title) w.addMessage(message) w.showWindow()
def __init__(self,windowName): log.debug("creating main window") BaseToolWindow.__init__(self,windowName) self.windowTitle = self.createWindowTitle() self.mainTabLayout = None self.tabs = [] # layer target UI - compound for layers list/no layer data ui self.targetUI = None self.actions = None self.preferedWidth = PersistentValueModel('ngSkinToolsMainWindow_preferedWidth', 400); self.preferedHeight = PersistentValueModel('ngSkinToolsMainWindow_preferedHeight',400); self.preferedTop = PersistentValueModel('ngSkinToolsMainWindow_preferedTop'); self.preferedLeft = PersistentValueModel('ngSkinToolsMainWindow_preferedLeft'); self.preferedFloating = PersistentValueModel('ngSkinToolsMainWindow_preferedFloating',False) self.useUserPrefSize = False self.defaultWidth = self.preferedWidth.get() self.defaultHeight = self.preferedHeight.get() self.sizeable = True
def __init__(self, windowName): BaseToolWindow.__init__(self, windowName) self.updateAvailable = False self.windowTitle = 'NgSkinTools Update' self.defaultWidth = 500 self.defaultHeight = 400 self.sizeable = True self.useUserPrefSize = False
def __init__(self,windowName): BaseToolWindow.__init__(self,windowName) self.updateAvailable = False self.windowTitle = 'NgSkinTools Update' self.defaultWidth = 500 self.defaultHeight = 400 self.sizeable = True self.useUserPrefSize = False
def createWindow(self): ''' creates main GUI window and it's contents ''' BaseToolWindow.createWindow(self) self.targetUI = TargetDataDisplay() self.actions = MainUiActions(self.windowName) self.mainMenu = MainMenu() self.mainMenu.create() # putting tabs in a from targetUiLayout is needed to workaround maya2011 # bug with an additional empty tab appearing otherwise # form = FormLayout(parent=self.windowName) # targetUiLayout = self.targetUI.create(form) # form.attachForm(targetUiLayout, 0, Constants.MARGIN_SPACING_HORIZONTAL,None,Constants.MARGIN_SPACING_HORIZONTAL) # # self.mainTabLayout = cmds.tabLayout(childResizable=True,parent=form,scrollable=False,innerMarginWidth=3) # form.attachControl(self.mainTabLayout, targetUiLayout, Constants.MARGIN_SPACING_VERTICAL, None,None,None) # form.attachForm(self.mainTabLayout, None, 0,0,0) self.splitPosition = PersistentValueModel( name="ngSkinTools_mainWindow_splitPosition", defaultValue=50) def updateSplitPosition(*args): size = cmds.paneLayout(horizontalSplit, q=True, paneSize=True) # returns (widht, height, width, height) self.splitPosition.set(size[1]) horizontalSplit = cmds.paneLayout( configuration="horizontal2", width=100, height=200, separatorMovedCommand=updateSplitPosition) if Utils.getMayaVersion() >= Utils.MAYA2011: cmds.paneLayout(horizontalSplit, e=True, staticHeightPane=2) cmds.paneLayout(horizontalSplit, e=True, paneSize=(1, 100, self.splitPosition.get())) cmds.paneLayout(horizontalSplit, e=True, paneSize=(2, 100, 100 - self.splitPosition.get())) targetUiLayout = self.targetUI.create(horizontalSplit) self.mainTabLayout = cmds.tabLayout(childResizable=True, parent=horizontalSplit, scrollable=False, innerMarginWidth=3) self.tabPaint = self.addTab(TabPaint()) self.tabMirror = self.addTab(TabMirror()) self.tabRelax = self.addTab(TabSkinRelax()) self.tabAssignWeights = self.addTab(TabAssignWeights()) self.tabSettings = self.addTab(TabSettings()) self.actions.updateEnabledAll()
def __init__(self,windowName): BaseToolWindow.__init__(self,windowName) self.useUserPrefSize = False self.windowTitle = 'Init Skin Transfer' self.sizeable = True self.defaultHeight = 600 self.defaultWidth = 450 self.content = TransferWeightsTab() self.content.parentWindow = self
def execute(self): from maya import utils as mu from ngSkinTools.ui.mainwindow import MainWindow BaseToolWindow.closeAllWindows() deleteCustomOptions() mu.executeDeferred(MainWindow.open)
def __init__(self, windowName): BaseToolWindow.__init__(self, windowName) self.useUserPrefSize = False self.windowTitle = 'Init Skin Transfer' self.sizeable = True self.defaultHeight = 600 self.defaultWidth = 450 self.content = TransferWeightsTab() self.content.parentWindow = self
def createWindow(self): ''' creates main GUI window and it's contents ''' BaseToolWindow.createWindow(self) self.targetUI = TargetDataDisplay() self.actions = MainUiActions(self.windowName) self.mainMenu = MainMenu() self.mainMenu.create(); # putting tabs in a from targetUiLayout is needed to workaround maya2011 # bug with an additional empty tab appearing otherwise # form = FormLayout(parent=self.windowName) # targetUiLayout = self.targetUI.create(form) # form.attachForm(targetUiLayout, 0, Constants.MARGIN_SPACING_HORIZONTAL,None,Constants.MARGIN_SPACING_HORIZONTAL) # # self.mainTabLayout = cmds.tabLayout(childResizable=True,parent=form,scrollable=False,innerMarginWidth=3) # form.attachControl(self.mainTabLayout, targetUiLayout, Constants.MARGIN_SPACING_VERTICAL, None,None,None) # form.attachForm(self.mainTabLayout, None, 0,0,0) self.splitPosition = PersistentValueModel(name="ngSkinTools_mainWindow_splitPosition", defaultValue=50) def updateSplitPosition(*args): size = cmds.paneLayout(horizontalSplit,q=True,paneSize=True) # returns (widht, height, width, height) self.splitPosition.set(size[1]) horizontalSplit = cmds.paneLayout(configuration="horizontal2",width=100,height=200,separatorMovedCommand=updateSplitPosition) if Utils.getMayaVersion()>=Utils.MAYA2011: cmds.paneLayout(horizontalSplit,e=True,staticHeightPane=2) cmds.paneLayout(horizontalSplit,e=True,paneSize=(1,100,self.splitPosition.get())) cmds.paneLayout(horizontalSplit,e=True,paneSize=(2,100,100-self.splitPosition.get())) targetUiLayout = self.targetUI.create(horizontalSplit) self.mainTabLayout = cmds.tabLayout(childResizable=True,parent=horizontalSplit,scrollable=False,innerMarginWidth=3) self.tabPaint = self.addTab(TabPaint()) self.tabMirror = self.addTab(TabMirror()) self.tabRelax = self.addTab(TabSkinRelax()) self.tabAssignWeights = self.addTab(TabAssignWeights()) self.tabSettings = self.addTab(TabSettings()) self.actions.updateEnabledAll()
def execute(self): from maya import utils as mu from ngSkinTools.ui.mainwindow import MainWindow BaseToolWindow.closeAllWindows() variablePrefix = "ngSkinTools" for varName in cmds.optionVar(list=True): if varName.startswith(variablePrefix): cmds.optionVar(remove=varName) mu.executeDeferred(MainWindow.open)
def __init__(self, windowName): BaseToolWindow.__init__(self, windowName) self.useUserPrefSize = False self.windowTitle = 'Edit Mirror Influences' self.sizeable = True self.defaultHeight = 400 self.defaultWidth = 450 self.influenceMappingPreview = InfluencesMappingPreview() self.influencesManualMapping = InfluencesManualMapping() self.buildMapper = None self.mapper = InfluenceMapping()
def getInstance(): ''' returns instance of a main window; returned value is only valid while window is opened. ''' return BaseToolWindow.getWindowInstance(MainWindow.WINDOW_NAME, MainWindow)
def showResultsWindow(self,checker): BaseToolWindow.destroyWindow(self.WINDOW_NAME) w = BaseToolWindow.getWindowInstance(self.WINDOW_NAME, UpdateCheckWindow) w.setTopLabel('Update Available' if checker.updateAvailable else 'No Updates Found') if checker.updateAvailable: w.addMessage("New plugin version available: %s"%checker.updateTitle) else: w.addMessage("Plugin is up to date") time = datetime.strptime(checker.updateDate,"%Y-%m-%dT%H:%M:%S+00:00") w.addMessage("Released date: %s"%time.strftime("%d %B, %Y")) for i in checker.links: w.addButton(i.title,LinkOpener(i.url)) w.showWindow()
def getInstance(): ''' returns instance of a main window; returned value is only valid while window is opened. :rtype: MainWindow ''' return BaseToolWindow.getWindowInstance(MainWindow.WINDOW_NAME,MainWindow)
def createWindow(self): BaseToolWindow.createWindow(self) buttons = [('Close', self.closeWindow, '')] self.cmdLayout = CommandLayout(SkinToolsDocs.MIRRORWEIGHTS_INTERFACE, buttons) contentRoot = self.cmdLayout.innerLayout self.influenceMappingPreview.mirrorMode = True self.influenceMappingPreview.createUI(contentRoot) self.influenceMappingPreview.onDelete.addHandler( self.influencesManualMapping.removeSelectedManualMappings, contentRoot) manualGroup = uiGroup.create(contentRoot, 'Manual influence mapping') self.influencesManualMapping.mirrorMode = True self.influencesManualMapping.createUI(manualGroup) self.influencesManualMapping.getSelectedInfluences = lambda: self.influenceMappingPreview.currentInfluencesSelection def onManualOverridesChanged(): mll = MllInterface() mll.setManualMirrorInfluences( self.influencesManualMapping.manualOverrides) self.previewInfluenceMapping() self.influencesManualMapping.manualOverridesChanged.addHandler( onManualOverridesChanged, contentRoot) def updateForSelectionInfoChange(): log.info("updating for selection change") layersAvailable = selectionState.getLayersAvailable() cmds.layout(contentRoot, e=True, enable=layersAvailable) if not layersAvailable: log.info("layers unavailable") return self.previewInfluenceMapping() selectionState.selectionInfo.changed.addHandler( updateForSelectionInfoChange, contentRoot) selectionState.mirrorInfo.changed.addHandler( self.previewInfluenceMapping, contentRoot) updateForSelectionInfoChange()
def __init__(self, windowName): log.debug("creating main window") BaseToolWindow.__init__(self, windowName) self.windowTitle = self.createWindowTitle() self.mainTabLayout = None self.tabs = [] # layer target UI - compound for layers list/no layer data ui self.targetUI = None self.actions = None self.defaultWidth = MainWindow.WINDOW_DEFAULT_WIDTH self.defaultHeight = MainWindow.WINDOW_DEFAULT_HEIGHT self.sizeable = True
def createWindow(self): BaseToolWindow.createWindow(self) margin1 = 5 margin2 = 10 form = cmds.formLayout(parent=self.windowName) self.topLabel = cmds.text(label='',font='boldLabelFont') self.customUIContainer = cmds.columnLayout(adjustableColumn=1,rowSpacing=margin2) cmds.separator() cmds.setParent('..') lowerRow = cmds.formLayout(height=Constants.BUTTON_HEIGHT) checkBox = CheckBoxField(Options.OPTION_CHECKFORUPDATES,label='Automatically check for updates', annotation='Check for updates automatically when ngSkinTools window is opened (once per Maya application session)') closeButton = cmds.button(label='Close',align='center',width=80,command=lambda *args:self.closeWindow()) cmds.formLayout(lowerRow,e=True,attachForm=[(closeButton,'top',0)]) cmds.formLayout(lowerRow,e=True,attachNone=[(closeButton,'left')]) cmds.formLayout(lowerRow,e=True,attachForm=[(closeButton,'right',margin1)]) cmds.formLayout(lowerRow,e=True,attachForm=[(closeButton,'bottom',0)]) cmds.formLayout(lowerRow,e=True,attachForm=[(checkBox.field,'top',0)]) cmds.formLayout(lowerRow,e=True,attachForm=[(checkBox.field,'left',margin1)]) cmds.formLayout(lowerRow,e=True,attachControl=[(checkBox.field,'right',margin1,closeButton)]) cmds.formLayout(lowerRow,e=True,attachForm=[(checkBox.field,'bottom',0)]) cmds.formLayout(form,e=True,attachForm=[(self.topLabel,'top',margin2)]) cmds.formLayout(form,e=True,attachForm=[(self.topLabel,'left',margin1)]) cmds.formLayout(form,e=True,attachNone=[(self.topLabel,'right')]) cmds.formLayout(form,e=True,attachNone=[(self.topLabel,'bottom')]) cmds.formLayout(form,e=True,attachNone=[(lowerRow,'top')]) cmds.formLayout(form,e=True,attachForm=[(lowerRow,'left',margin1)]) cmds.formLayout(form,e=True,attachForm=[(lowerRow,'right',margin1)]) cmds.formLayout(form,e=True,attachForm=[(lowerRow,'bottom',margin1)]) cmds.formLayout(form,e=True,attachControl=[(self.customUIContainer,'top',margin2,self.topLabel)]) cmds.formLayout(form,e=True,attachForm=[(self.customUIContainer,'left',margin1)]) cmds.formLayout(form,e=True,attachForm=[(self.customUIContainer,'right',margin1)]) cmds.formLayout(form,e=True,attachControl=[(self.customUIContainer,'bottom',margin2,lowerRow)])
def showResultsWindow(self, checker): BaseToolWindow.destroyWindow(self.WINDOW_NAME) w = BaseToolWindow.getWindowInstance(self.WINDOW_NAME, UpdateCheckWindow) w.setTopLabel('Update Available' if checker. updateAvailable else 'No Updates Found') if checker.updateAvailable: w.addMessage("New plugin version available: %s" % checker.updateTitle) else: w.addMessage("Plugin is up to date") time = datetime.strptime(checker.updateDate, "%Y-%m-%dT%H:%M:%S+00:00") w.addMessage("Released date: %s" % time.strftime("%d %B, %Y")) for i in checker.links: w.addButton(i.title, LinkOpener(i.url)) w.showWindow()
def __init__(self,windowName): log.debug("creating main window") BaseToolWindow.__init__(self,windowName) self.windowTitle = self.createWindowTitle() self.mainTabLayout = None self.tabs = [] # layer target UI - compound for layers list/no layer data ui self.targetUI = None self.actions = None self.defaultWidth = MainWindow.WINDOW_DEFAULT_WIDTH self.defaultHeight = MainWindow.WINDOW_DEFAULT_HEIGHT self.sizeable = True
def __init__(self,windowName): BaseToolWindow.__init__(self,windowName) self.windowTitle = 'Init Skin Transfer' self.sizeable = True self.defaultHeight = 350 self.defaultWidth = 300
def createWindow(self): BaseToolWindow.createWindow(self) self.content = TransferWeightsTab() self.content.parentWindow = self self.content.createUI(self.windowName)
def getInstance(): return BaseToolWindow.rebuildWindow('TransferWeightsWindow', TransferWeightsWindow)
def createWindow(self): BaseToolWindow.createWindow(self) self.content.createUI(self.windowName)
def getInstance(): return BaseToolWindow.getWindowInstance('InitTransferWindow', InitTransferWindow)
def getInstance(): return BaseToolWindow.rebuildWindow('MirrorWeightsWindow', MirrorWeightsWindow)
def getInstance(): return BaseToolWindow.getWindowInstance('EditMirrorInfluencesWindow', EditMirrorInfluencesWindow)
def showInfoWindow(self,title,message): BaseToolWindow.destroyWindow(self.WINDOW_NAME) w = BaseToolWindow.getWindowInstance(self.WINDOW_NAME, UpdateCheckWindow) w.setTopLabel(title) w.addMessage(message) w.showWindow()
def __init__(self, windowName): BaseToolWindow.__init__(self, windowName) self.windowTitle = 'Copy Skin Layers' self.sizeable = True self.defaultHeight = 350 self.defaultWidth = 300
def createWindow(self): BaseToolWindow.createWindow(self) self.content = CopyLayersTab() self.content.parentWindow = self self.content.createUI(self.windowName)
def onWindowDeleted(self): self.content.releaseUI() return BaseToolWindow.onWindowDeleted(self)
def createWindow(self): BaseToolWindow.createWindow(self) margin1 = 5 margin2 = 10 form = cmds.formLayout(parent=self.windowName) self.topLabel = cmds.text(label='', font='boldLabelFont') self.customUIContainer = cmds.columnLayout(adjustableColumn=1, rowSpacing=margin2) cmds.separator() cmds.setParent('..') lowerRow = cmds.formLayout(height=Constants.BUTTON_HEIGHT) checkBox = CheckBoxField( Options.OPTION_CHECKFORUPDATES, label='Automatically check for updates', annotation= 'Check for updates automatically when ngSkinTools window is opened (once per Maya application session)' ) closeButton = cmds.button(label='Close', align='center', width=80, command=lambda *args: self.closeWindow()) cmds.formLayout(lowerRow, e=True, attachForm=[(closeButton, 'top', 0)]) cmds.formLayout(lowerRow, e=True, attachNone=[(closeButton, 'left')]) cmds.formLayout(lowerRow, e=True, attachForm=[(closeButton, 'right', margin1)]) cmds.formLayout(lowerRow, e=True, attachForm=[(closeButton, 'bottom', 0)]) cmds.formLayout(lowerRow, e=True, attachForm=[(checkBox.field, 'top', 0)]) cmds.formLayout(lowerRow, e=True, attachForm=[(checkBox.field, 'left', margin1)]) cmds.formLayout(lowerRow, e=True, attachControl=[(checkBox.field, 'right', margin1, closeButton)]) cmds.formLayout(lowerRow, e=True, attachForm=[(checkBox.field, 'bottom', 0)]) cmds.formLayout(form, e=True, attachForm=[(self.topLabel, 'top', margin2)]) cmds.formLayout(form, e=True, attachForm=[(self.topLabel, 'left', margin1)]) cmds.formLayout(form, e=True, attachNone=[(self.topLabel, 'right')]) cmds.formLayout(form, e=True, attachNone=[(self.topLabel, 'bottom')]) cmds.formLayout(form, e=True, attachNone=[(lowerRow, 'top')]) cmds.formLayout(form, e=True, attachForm=[(lowerRow, 'left', margin1)]) cmds.formLayout(form, e=True, attachForm=[(lowerRow, 'right', margin1)]) cmds.formLayout(form, e=True, attachForm=[(lowerRow, 'bottom', margin1)]) cmds.formLayout(form, e=True, attachControl=[(self.customUIContainer, 'top', margin2, self.topLabel)]) cmds.formLayout(form, e=True, attachForm=[(self.customUIContainer, 'left', margin1)]) cmds.formLayout(form, e=True, attachForm=[(self.customUIContainer, 'right', margin1) ]) cmds.formLayout(form, e=True, attachControl=[(self.customUIContainer, 'bottom', margin2, lowerRow)])
def __init__(self, windowName): BaseToolWindow.__init__(self, windowName) self.windowTitle = 'Init Skin Transfer' self.sizeable = True self.defaultHeight = 350 self.defaultWidth = 300
def getInstance(): return BaseToolWindow.getWindowInstance('CopySkinLayersWindow', CopySkinLayersWindow)