def __init__(self, parent=ka_qtWidgets.getMayaWindow()): '''A custom window with a demo set of ui widgets''' #init our ui using the MayaWindow as parent super(UI, self).__init__(parent) #uic adds a function to our class called setupUi, calling this creates all the widgets from the .ui file self.setupUi(self) self.setObjectName('ka_renameUIWindow') self.setWindowTitle(self.title) ##name and number #self.connect(self.search_lineEdit, QtCore.SIGNAL('returnPressed(const QString&)'), self.update) self.connect(self.search_lineEdit, QtCore.SIGNAL('textChanged(const QString&)'), self.loadPreviewResults) #self.connect(self.search_lineEdit, QtCore.SIGNAL('returnPressed(const QString&)'), self.loadPreviewResults) self.connect(self.searchCaseSensitive_comboBox, QtCore.SIGNAL('currentIndexChanged (int)'), self.loadPreviewResults) self.connect(self.scopeKeepPrune_comboBox, QtCore.SIGNAL('currentIndexChanged (int)'), self.loadPreviewResults) self.connect(self.searchScope_comboBox, QtCore.SIGNAL('currentIndexChanged (int)'), self.loadPreviewResults) self.connect(self.rule1_comboBoxKeepPrune_comboBox, QtCore.SIGNAL('currentIndexChanged (int)'), self.loadPreviewResults) self.connect(self.rule1_comboBox, QtCore.SIGNAL('currentIndexChanged (int)'), self.loadPreviewResults) self.connect(self.rule1_considerShapecheckBox, QtCore.SIGNAL('stateChanged (int)'), self.loadPreviewResults) self.connect(self.rule2_comboBoxKeepPrune_comboBox, QtCore.SIGNAL('currentIndexChanged (int)'), self.loadPreviewResults) self.connect(self.rule2_comboBox, QtCore.SIGNAL('currentIndexChanged (int)'), self.loadPreviewResults) self.connect(self.rule2_considerShapecheckBox, QtCore.SIGNAL('stateChanged (int)'), self.loadPreviewResults) self.connect(self.filter_button, QtCore.SIGNAL('clicked()'), self.filter) self.selection = {} self.selectionNodeTypes = {} self.selectionInheritedNodeTypes = {} self.selectionShapeNodeTypes = {} self.selectedNodeNames = {} self.update() self.search_lineEdit.setFocus()
def __init__(self): '''A custom window with a demo set of ui widgets''' #init our ui using the MayaWindow as parent parent = ka_qtWidgets.getMayaWindow() super(UI, self).__init__(parent) #uic adds a function to our class called setupUi, calling this creates all the widgets from the .ui file self.setupUi(self) self.setObjectName('ka_renameUIWindow') self.setWindowTitle(self.title) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.connect(self.searchAndReplace_renameButton, QtCore.SIGNAL('clicked()'), self.rename_searchAndReplace) self.connect(self.prefixSuffix_renameButton, QtCore.SIGNAL('clicked()'), self.rename_prefixSuffix) self.connect(self.nameAndNumber_renameButton, QtCore.SIGNAL('clicked()'), self.rename_nameAndNumber) self.connect(self.renameMode_tabWidget, QtCore.SIGNAL('currentChanged(int)'), self.update) #name and number self.connect(self.nameAndNumber_lineEdit, QtCore.SIGNAL('textChanged(const QString&)'), self.update) self.connect(self.buffer_spinBox, QtCore.SIGNAL('valueChanged(int)'), self.update) self.connect(self.numberWith_comboBox, QtCore.SIGNAL('currentIndexChanged (int)'), self.update) self.connect(self.numberBy_comboBox, QtCore.SIGNAL('currentIndexChanged (int)'), self.update) # self.connect(self.reload_pushButton, QtCore.SIGNAL('clicked()'), self.update) #search and replace self.connect(self.searchAndReplace_search_lineEdit, QtCore.SIGNAL('returnPressed()'), self.rename_searchAndReplace) self.connect(self.searchAndReplace_replace_lineEdit, QtCore.SIGNAL('returnPressed()'), self.rename_searchAndReplace) self.connect(self.prefix_lineEdit, QtCore.SIGNAL('returnPressed()'), self.rename_prefixSuffix) self.connect(self.suffix_lineEdit, QtCore.SIGNAL('returnPressed()'), self.rename_prefixSuffix) self.connect(self.nameAndNumber_lineEdit, QtCore.SIGNAL('returnPressed()'), self.rename_nameAndNumber) self.connect(self.searchAndReplace_search_lineEdit, QtCore.SIGNAL('textChanged(const QString&)'), self.update) self.connect(self.searchAndReplace_replace_lineEdit, QtCore.SIGNAL('textChanged(const QString&)'), self.update) self.connect(self.prefix_lineEdit, QtCore.SIGNAL('textChanged(const QString&)'), self.update) self.connect(self.suffix_lineEdit, QtCore.SIGNAL('textChanged(const QString&)'), self.update) self.connect(self.searchMode_comboBox, QtCore.SIGNAL('currentIndexChanged (int)'), self.update) self.connect(self.searchScope_comboBox, QtCore.SIGNAL('currentIndexChanged (int)'), self.update) # self.connect(self.searchAndReplace_reload_pushButton, QtCore.SIGNAL('clicked()'), self.update) self.searchAndReplace_search_lineEdit.setTabOrder(self.searchAndReplace_search_lineEdit, self.searchAndReplace_replace_lineEdit) self.searchAndReplace_search_lineEdit.setTabOrder(self.searchAndReplace_replace_lineEdit, self.prefix_lineEdit) self.searchAndReplace_search_lineEdit.setTabOrder(self.prefix_lineEdit, self.suffix_lineEdit) self.searchAndReplace_search_lineEdit.setTabOrder(self.suffix_lineEdit, self.nameAndNumber_lineEdit) # self.update() self.nameAndNumber_lineEdit.setFocus()
def getAllKaMenuWidgets(): allKMenuWidgets = [] #for widget in PyQt.QtGui.qApp.topLevelWidgets(): #if hasattr(widget, '__class__'): #if widget.__class__.__name__ == 'KMenuWidget': #allKMenuWidgets.append(widget) for widget in ka_qtWidgets.getMayaWindow().children(): if hasattr(widget, '__class__'): if widget.__class__.__name__ == 'Ka_menuWidget': allKMenuWidgets.append(widget) return allKMenuWidgets
def __init__(self, *args, **kwargs): #parse ars label = kwargs.get('label', None) if 'parentMenuItem' in kwargs: self.parentMenuItem = kwargs.pop('parentMenuItem') else: self.parentMenuItem = None # get parent parent = kwargs.get('parent', None) if not parent: parent = ka_qtWidgets.getMayaWindow() super(Ka_menuWidget, self).__init__(parent=parent, ) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) # style sheet self.setStyleSheet(self.STYLE_SHEET) # obj variables self.menuItems = [] self.dragMoveState = False self.dragMoveStartCursorOffset = None self.pinState = False self.titleBar = None # focus #self.setFocusPolicy(QtCore.Qt.ClickFocus) self.setFocusPolicy(QtCore.Qt.NoFocus) # main widget self.mainWidget = QtGui.QWidget(parent=self) self.setCentralWidget(self.mainWidget) # create Layout self.vLayout = QtGui.QVBoxLayout() self.vLayout.setSpacing(0) self.vLayout.setContentsMargins(QtCore.QMargins(0,0,0,0)) self.mainWidget.setLayout(self.vLayout)
def getScrubSlider(): mayaWindow = ka_qtWidgets.getMayaWindow() for child in mayaWindow.children(): if hasattr(child, 'objectName'): if child.objectName() == 'ka_scrubSlider': return child
def __init__(self, sliderRange=[-100, 100], defaultValues=[0], width=500, step=1.0, shiftStep=25, startCommand=None, changeCommand=None, finishCommand=None, hotkeyDict={}, rightClickCommand=None, visible=True, graphKwargs={}): """ constructor of scrubSlider. Kwargs: sliderRange (start int, end int): The slider range defaultValues (tuple of ints): the values to start the slider at. The number of default values will detirmin how many values the slider has. These values also do not need to be passed in order of value. The first item will be the value being edited by default width (int in pixels): the width of the slider (this also effects the sensitivity of it indirectly) step (int): not yet impimented mode (string): acceptable values are "clickDrag", and "toggle". startCommand (function): a passed in function to run at the start of the scrub changeCommand (function): a passed in function to run when the slider changes. The current Value of the slider will be the first argument passed to the function finishCommand (function): a passed in function to run at the end of the scrub (right before the mouse is released back to the user) hotkeyDict (dictionary of string(key) function(value) pairs): This dictionary gives the slider functions to assign to keypresses that will override maya hotkeys while the slider is in use. visible: bool - if False, will not show the slider bar on screen graphKwargs (dict) - args to be passed when creating the ka_qtWidgets.GraphWidget widget """ super(ScrubWidget, self).__init__(parent=ka_qtWidgets.getMayaWindow()) self.setFocusPolicy(QtCore.Qt.StrongFocus) # store signals self.scrubWidgetSignals = ScrubWidgetSignals() # vars width = 400 height = 400 offsetFromMouse = 100 # get cursor pos cursorPos = QtGui.QCursor().pos() # size window self.setFixedSize(width,height) #self.setMask(QtGui.QRegion(-1,-1, self.width()+2, self.height()+2)) # posistion window self.move(cursorPos.x()-(self.width()*0.5), cursorPos.y()+offsetFromMouse) cursorPos = self.mapFromGlobal(cursorPos) # slider setup math self.previousValue = defaultValues[0] self.currentValues = defaultValues #self.startValues = tuple(defaultValues) self.currentValueIndex = 0 mouseInitialPositionX = cursorPos.x() #self.mouseGrabOffset = 0.0 self.step = step self.shiftStep = shiftStep self.sliderMax = sliderRange[1] self.sliderMin = sliderRange[0] self.sliderRange = self.sliderMax - self.sliderMin #defaultPercentOfSliderRange = (float(defaultValues[0]) - self.sliderMin) / float(self.sliderRange) #self.pixelMin = mouseInitialPositionX - (width * defaultPercentOfSliderRange) #self.pixelMax = self.pixelMin + width #self.pixelRange = self.pixelMax - self.pixelMin self.setMouseMapping() # main widget self.mainWidget = QtGui.QWidget(parent=self) self.setCentralWidget(self.mainWidget) # create Layout self.vLayout = QtGui.QVBoxLayout() self.vLayout.setSpacing(0) self.vLayout.setContentsMargins(QtCore.QMargins(0,0,0,0)) self.mainWidget.setLayout(self.vLayout) #if curveFunction: #def curveFunctionWrapper(x, curveFunction=curveFunction, scrubWidget=self): #"""This funciton's only purpose is so make this object availible to the original function command""" #return curveFunction(scrubWidget, x) #curveFunction = curveFunctionWrapper graphKwargs['min'] = (self.sliderMin, 0) graphKwargs['max'] = (self.sliderMax, 1) graphKwargs['timeMarkers'] = defaultValues self.graphWidget = ka_qtWidgets.GraphWidget(**graphKwargs) #self.graphWidget.setFixedSize(width,height) self.vLayout.addWidget(self.graphWidget) # ACTIONS --------------------------------------------------------------- # store input commands self.hotkeyDict = hotkeyDict self.changeCommand = changeCommand self.finishCommand = finishCommand @QtCore.Slot(int) def scubValueChangedCmd(value, self=self): """commands to run when the value of the slider has changed""" try: #print value # get stepped value if SHIFT modifier is down modifiers = QtGui.QApplication.keyboardModifiers() if modifiers == QtCore.Qt.ShiftModifier: value = self.getSteppedValue(value, self.shiftStep) print 'shift down' # update internal variables self.previousValue = value self.currentValues[self.currentValueIndex] = value # update the marker lines in the graph widget if it is visible if self.isVisible(): self.graphWidget.setTimeMarker(self.currentValueIndex, value) # run the change command with the given value if changeCommand is not None: values = list(self.currentValues) values.sort() self.changeCommand(self, values) except: ka_python.printError() self.finish() @QtCore.Slot(int) def scrubFinishedCmd(self=self): """commands to run as finishing""" print 'finish22' self.releaseMouse() self.releaseKeyboard() if self.finishCommand is not None: self.finishCommand(self) self.close() self.scrubWidgetSignals.valueChangedSignal.connect(scubValueChangedCmd) self.scrubWidgetSignals.finishSignal.connect(scrubFinishedCmd) # track mouse and keyboard self.setMouseTracking(True) self.grabMouse() self.grabKeyboard() # start command if startCommand is not None: startCommand(self) # popWindow self.activateWindow() self.setFocus() if visible: self.show() # emit first changed signal scrubValue = int(round(self.getScrubValue(mouseInitialPositionX))) self.scrubWidgetSignals.valueChangedSignal.emit(scrubValue)