def updatawindow(self): templineeditor_label3Text ="" currentfatherIconName ="" try: templineeditor_label3Text =self.readCurrentNameArr[-1][1] iconIndex = self.readCurrentNameArr[-1][0] currentfatherIconName = self.fatherIconNameArr[iconIndex] except: pass #select inside self.lineeditor_label3.setText(templineeditor_label3Text) self.addItem_Father.setEditText(templineeditor_label3Text) self.addItem_FatherIcon.setEditText(currentfatherIconName.split("/")[0]) self.currentIconClassName = currentfatherIconName.split("/")[0] #select outside self.lineeditor_label3_children.setText(self.runPythonName) self.addItem_childrenNewName.setEditText(self.runPythonName) try: self.IconCurrentFilelistL =Hot7getIconF(houdiniHotPathIconPath + self.currentIconClassName) self.IconCurrentFilelistLCom = QtWidgets.QCompleter(self.IconCurrentFilelistL) self.addItem_FatherIconName.setCompleter(self.IconCurrentFilelistLCom) self.additemFromNode(self.addItem_FatherIconName,self.IconCurrentFilelistL) self.addItem_FatherIconName.setEditText(currentfatherIconName.split("/")[1]) self.tempCurrentIconName =currentfatherIconName.split("/")[1] except: self.addItem_FatherIconName.setEditText("None") #set selectIconClass and Png Name self.addItem_childrenIconPath = "OBJ/switcher" try: self.addItem_childrenIconPath =self.childrenCurrentImageArr[self.outSelectIndexArr[-1]] except: pass #set Out Select Class self.addItem_childrenIconClass.setEditText(self.addItem_childrenIconPath.split("/")[0]) self.currentIconChildrenClassName =self.addItem_childrenIconPath.split("/")[0] ##set out select iCON Name try: self.IconCurrentChildrenFilelistL =Hot7getIconF(houdiniHotPathIconPath + self.currentIconChildrenClassName) self.IconCurrentChildrenFilelistLCom = QtWidgets.QCompleter(self.IconCurrentChildrenFilelistL) self.addItem_ChildrenIconName.setCompleter(self.IconCurrentChildrenFilelistLCom) self.additemFromNode(self.addItem_ChildrenIconName,self.IconCurrentChildrenFilelistL) self.addItem_ChildrenIconName.setEditText(self.addItem_childrenIconPath.split("/")[1]) self.tempCurrentChildrenIconName =self.addItem_childrenIconPath.split("/")[1] except: self.addItem_ChildrenIconName.setEditText("None") ##setcurrentIcon self.fatherIconViewPath = houdiniHotPathIconPath +self.addItem_FatherIcon.currentText()+"/" +self.addItem_FatherIconName.currentText() self.ChildrenIconViewPath =houdiniHotPathIconPath +self.addItem_childrenIconClass.currentText()+"/" +self.addItem_ChildrenIconName.currentText() self.slider_outSideIndex.setValue(self.childrenindex) self.update()
def __init__(self, parent=None): super(SettingsDialog, self).__init__(parent) self.settings = QSettings( QStandardPaths.writableLocation(QStandardPaths.ConfigLocation) + "/settings.ini", QSettings.IniFormat) self.usernames = set() self.engines = set() self.newUsername = "" self.newEnginePath = "" self._loadSettings() self.mainLayout = QtWidgets.QFormLayout() self.usernameLineEdit = QtWidgets.QLineEdit(self.newUsername) self.usernameLineEdit.setPlaceholderText("Username (a-zA-Z0-9_)") self.usernameLineEdit.setMinimumHeight(35) self.usernameLineEdit.setValidator(self.validator) self.usernameLineEdit.textChanged.connect(self.validateFields) self.usernameLineEdit.selectAll() self.usernameLineEdit.setCompleter( QtWidgets.QCompleter(list(self.usernames), self)) self.engineEdit = _EngineEdit(self.newEnginePath) self.engineEdit.pathEdit.textChanged.connect(self.validateFields) self.engineEdit.pathEdit.selectAll() self.engineEdit.pathEdit.setCompleter( QtWidgets.QCompleter(list(self.engines), self)) self.resetButton = QtWidgets.QPushButton("Reset") self.resetButton.clicked.connect(self._reset) buttonBox = QtWidgets.QDialogButtonBox() self.okButton = buttonBox.addButton( "Ok", QtWidgets.QDialogButtonBox.AcceptRole) self.cancelButton = buttonBox.addButton( "Cancel", QtWidgets.QDialogButtonBox.RejectRole) self.okButton.clicked.connect(self._ok) self.cancelButton.clicked.connect(self.reject) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setAlignment(Qt.AlignBottom) self.mainLayout.addRow("Username", self.usernameLineEdit) self.mainLayout.addRow("Engine", self.engineEdit) self.mainLayout.addWidget(self.resetButton) self.mainLayout.addWidget(buttonBox) self.setLayout(self.mainLayout) self.validateFields()
def __init__(self, rootpath, *args, **kwargs): super(DetailsPane, self).__init__() self.dpifactor = 2 if kwargs['highdpi'] else 1 # build icon completer categories = hou.nodeTypeCategories() strlist = [] for category in categories.keys(): node_types = categories[category].nodeTypes() for node_type in node_types.keys(): strlist.append(node_types[node_type].icon()) jsondict = {} jsonfile = os.path.join(hou.getenv('HOUDINI_USER_PREF_DIR'), 'python2.7libs', 'houdini_markingmenu', 'json', 'icons.json') with open(jsonfile, 'r') as f: jsondict = json.load(f) for x in jsondict.keys(): for item in jsondict[x]: if item not in strlist: strlist.append(item) comp = QtWidgets.QCompleter(list(set(strlist))) comp.popup().setStyleSheet(hou.qt.styleSheet()) comp.setCompletionMode(QtWidgets.QCompleter.PopupCompletion) self.iconCompleter = comp self.initUI()
def __init__(self, editor): super(MarkingMenuEditor, self).__init__() self.setParent(hou.qt.mainWindow(), QtCore.Qt.Window) self.setWindowTitle('Marking Menu Editor') # UI fixed sizes self.HIGH_DPI = cmds.HIGH_DPI self.dpifactor = 2 if self.HIGH_DPI else 1 self.setGeometry(300, 250, 900, 700) self.setStyleSheet('background-color: rgb(58,58,58);') self.setFixedSize(1150 * self.dpifactor, 850 * self.dpifactor) self._rootpath = os.path.join( os.path.abspath(hou.getenv('HOUDINI_USER_PREF_DIR')), 'python2.7libs', 'houdini_markingmenu') self._contexts = sorted( ['SOP', 'OBJ', 'DOP', 'VOP', 'ROP', 'SHOP', 'CHOP', 'COP']) self._collections = [] self._currentContext = 'SOP' self.editor = editor self._collectionsDir = os.path.join(self._rootpath, 'json', self._currentContext) self._fullcpath = '' # full path to the current collection on disk self._menuPrefs = utils.loadMenuPreferences( os.path.join(self._rootpath, 'json', 'menuprefs.json')) self._detailIndices = [] self._loadedCollection = [] self._virtualCollection = [] self._unfreezeVirtualUpdate = 0 self._unsaved = 0 self._prevCollection = '' self.legendmenus = [] self.legendcollections = [] self.legendactions = [] self.legendHistory = 0 # button functions auto completer readfile = [] funcList = [] with open(os.path.join(self._rootpath, 'buttonfunctions.py'), 'r') as f: readfile = f.readlines() for line in readfile: if '**kwargs' in line: funcList.append(line.split('def ')[-1].split('(')[0]) funcList.append('launchEditor') funcList += hou.shelves.tools().keys() self._funcCompleter = QtWidgets.QCompleter(funcList) self._funcCompleter.popup().setStyleSheet(hou.qt.styleSheet()) self._funcCompleter.setCompletionMode( QtWidgets.QCompleter.PopupCompletion) self.__initUI()
def try_connect(self): bad = False if self.model_filename is None: self.lmodel_label.setText( '<font color=red>Please select a model first</font>') bad = True if self.db_filename is None: self.ldb_label.setText( '<font color=red>Please select a database first</font>') bad = True if not bad: self.model = tf.keras.models.load_model( self.model_filename, custom_objects={'SpecialEmbedding': SpecialEmbedding}) self.db = sqlite3.connect(self.db_filename) self.embeddings = get_all_embeddings(self.db, self.model) if os.path.exists('precomputed_tsne.npy'): self.coordinates = np.load('precomputed_tsne.npy') else: self.coordinates = TSNE(n_components=2).fit_transform( list(self.embeddings.values())) comp = QtWidgets.QCompleter(list(self.embeddings.keys())) comp.setCaseSensitivity(QtCore.Qt.CaseInsensitive) self.blue_0_textbox.setCompleter(comp) self.red_0_textbox.setCompleter(comp) self.connect_label.setText('<font color=green>Connected</font>')
def __init__(self): # call super super(Panel, self).__init__() self.label = qtw.QLabel('Username') self.button = qtw.QPushButton('Start') self.button.setIcon(qtg.QIcon('example_icon.png')) self.button.setToolTip('shortcut: u') self.button.setShortcut('u') self.checkbox = qtw.QCheckBox('agree to GDPR') self.checkbox.setChecked(True) # A QCompleter helps users by giving autocompletion self.user_line = qtw.QLineEdit() self.users = ['harry', 'hermione', 'ron', 'hagrid'] self.completer_line = qtw.QCompleter(self.users) self.user_line.setCompleter(self.completer_line) self.user_line.setPlaceholderText('enter you name here..') self.combobox = qtw.QComboBox() self.permissions_combobox = ['r', 'w', 'rx', 'rw', 'rwx'] self.combobox.addItems(self.permissions_combobox) self.vlayout = qtw.QVBoxLayout() self.vlayout.addWidget(self.label) self.vlayout.addWidget(self.user_line) self.vlayout.addWidget(self.checkbox) self.vlayout.addWidget(self.combobox) self.vlayout.addSpacing(25) self.vlayout.addWidget(self.button) self.setLayout(self.vlayout)
def refresh(self): slist = opencue.api.getJobNames() slist.sort() self.__c = QtWidgets.QCompleter(slist, self) self.__c.setCaseSensitivity(QtCore.Qt.CaseInsensitive) self.setCompleter(self.__c)
def currentTextChange(self): self.currentIconClassName1 =self.addItem_FatherIcon.currentText() self.IconCurrentFilelistL =Hot7getIconF(houdiniHotPathIconPath + self.currentIconClassName1) self.IconCurrentFilelistLCom = QtWidgets.QCompleter(self.IconCurrentFilelistL) self.addItem_FatherIconName.setCompleter(self.IconCurrentFilelistLCom) self.additemFromNode(self.addItem_FatherIconName,self.IconCurrentFilelistL) self.addItem_FatherIconName.setEditText(self.tempCurrentIconName)
def setAutocompleteFinanceiro(self): # Setando Auto complete self.completer = QtWidgets.QCompleter(self) self.completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) self.completer.setCompletionMode(QtWidgets.QCompleter.PopupCompletion) self.model = QtCore.QStringListModel(self) self.completer.setModel(self.model) self.tx_NomeFantasia.setCompleter(self.completer)
def _reset(self): status = QtWidgets.QMessageBox.warning( self, "Reset", "Are you sure to reset the settings?", buttons=QtWidgets.QMessageBox.Cancel | QtWidgets.QMessageBox.Ok, defaultButton=QtWidgets.QMessageBox.Ok) if status == QtWidgets.QMessageBox.Ok: self.usernameLineEdit.clear() self.engineEdit.pathEdit.clear() self.usernames.clear() self.engines.clear() self.usernameLineEdit.setCompleter(QtWidgets.QCompleter()) self.engineEdit.pathEdit.setCompleter(QtWidgets.QCompleter()) self.settings.clear() self._loadSettings()
def __init__(self, *args, **kwargs): super(CompleterCombobox, self).__init__(*args, **kwargs) # set completer for search self.completer = QtWidgets.QCompleter() self.completer.setFilterMode(QtCore.Qt.MatchContains) self.completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) self.setEditable(True) self.setCompleter(self.completer)
def setCompleter(self, names): # definimos un completer con los nombres especificados self.names = names completer = QtWidgets.QCompleter(names) # hacemos que no sea case sensible completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) self.intro_inicio.setCompleter(completer) self.intro_destino.setCompleter(completer)
def _initialiseCompleter(self): completer = QtWidgets.QCompleter(self._ui.lineEditSearch) completer.setCompletionMode(QtWidgets.QCompleter.UnfilteredPopupCompletion) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) completer.setModel(self._list_model) completer.setCompletionColumn(0) completer.setCompletionRole(QtCore.Qt.DisplayRole) return completer
def _set_completer(self): """Add the current list of assets to the name editor's completer. """ source = '/'.join((self.server, self.job, self.root)) items = [f.name for f in os.scandir(source) if f.is_dir()] completer = QtWidgets.QCompleter(items, parent=self) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) common.set_stylesheet(completer.popup()) self.name_editor.setCompleter(completer)
def init_data(self): items = [] for name, path in self.parent().job_editor.item_generator(self.server): items.append(name) completer = QtWidgets.QCompleter(items, parent=self) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) common.set_stylesheet(completer.popup()) self.name_editor.setCompleter(completer)
def _add_completer(self): items = [] for info in QtCore.QStorageInfo.mountedVolumes(): if info.isValid(): items.append(info.rootPath()) items += common.servers.values() completer = QtWidgets.QCompleter(items, parent=self) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) common.set_stylesheet(completer.popup()) self.editor.setCompleter(completer)
def __init__(self, defaultText=None, completerStrings=None, parent=None): super(CueLineEdit, self).__init__(parent=parent) self.setText(defaultText) self.index = -1 self.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed) self.completer = QtWidgets.QCompleter() try: self.completerModel = QtCore.QStringListModel() except AttributeError: self.completerModel = QtGui.QStringListModel() self.completerStrings = completerStrings or [] self.setupCompleter() self.setStyleSheet(Style.LINE_EDIT)
def __init__(self, model, separator=' ', addSpaceAfterCompleting=True): super(AutoCompleteEdit, self).__init__() self._separator = separator self._addSpaceAfterCompleting = addSpaceAfterCompleting self._completer = QtWidgets.QCompleter(model) self._completer.setWidget(self) self.connect( self._completer, QtCore.SIGNAL('activated(QString)'), self._insertCompletion) self._keysToIgnore = [QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return, QtCore.Qt.Key_Escape, QtCore.Qt.Key_Tab]
def collection_active(self): """collection_active""" select = self.se_collection_cbox.currentText() if select in ['刷新']: self.collec.refresh_name_list() self.se_collection_cbox.clear() self.se_collection_cbox.addItems(self.collec.get_name_list()) self.se_collection_cbox.addItems(['刷新', '自定义']) completer = QtWidgets.QCompleter(self.collec.get_name_list()) completer.setCompletionMode(QtWidgets.QCompleter.PopupCompletion) self.se_collection_cbox.setCompleter(completer) elif select in ['自定义']: self.collec.open_collection_file(self) else: self.get_current_se_box().setPlainText(self.collec.get_msg(select))
def buildCompleter(jsonfile): """Create QCompleter from jsonfile.""" strlist = [] jsondict = {} with open(jsonfile, 'r') as f: jsondict = json.load(f) for x in jsondict.keys(): for item in jsondict[x]: strlist.append(item) comp = QtWidgets.QCompleter(strlist) comp.popup().setStyleSheet(hou.qt.styleSheet()) comp.setCompletionMode(QtWidgets.QCompleter.PopupCompletion) return comp
def additional_gui_setup(self): # Additional GUI setup self.setWindowTitle('{} v{} ({})'.format(__appname__, __version__, last_update)) self.banner_image.mouseReleaseEvent = MainWindow.banner_click self.banner_button.mouseReleaseEvent = MainWindow.banner_click self._path_message("", MainWindow.MSG_OK) self._avoid_message("", MainWindow.MSG_OK) self.lineEdit_source.setFocus() self.lineEdit_short_format.mousePressEvent = partial( MainWindow.short_format_click, self) # Auto-completion system_list = self.nav.eve_db.system_name_list() for line_edit_field in [ self.lineEdit_source, self.lineEdit_destination, self.lineEdit_avoid_name, self.lineEdit_set_dest, ]: completer = QtWidgets.QCompleter(system_list, self) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) line_edit_field.setCompleter(completer) # Signals self.pushButton_eve_login.clicked.connect(self.btn_eve_login_clicked) self.pushButton_player_location.clicked.connect( self.btn_player_location_clicked) self.pushButton_find_path.clicked.connect(self.btn_find_path_clicked) self.pushButton_trip_config.clicked.connect( self.btn_trip_config_clicked) self.pushButton_trip_get.clicked.connect(self.btn_trip_get_clicked) self.pushButton_avoid_add.clicked.connect(self.btn_avoid_add_clicked) self.pushButton_avoid_delete.clicked.connect( self.btn_avoid_delete_clicked) self.pushButton_avoid_clear.clicked.connect( self.btn_avoid_clear_clicked) self.pushButton_set_dest.clicked.connect(self.btn_set_dest_clicked) self.pushButton_reset.clicked.connect(self.btn_reset_clicked) self.lineEdit_source.returnPressed.connect( self.line_edit_source_return) self.lineEdit_destination.returnPressed.connect( self.line_edit_destination_return) self.lineEdit_avoid_name.returnPressed.connect( self.line_edit_avoid_name_return) self.lineEdit_set_dest.returnPressed.connect(self.btn_set_dest_clicked) self.tableWidget_path.itemSelectionChanged.connect( self.table_item_selection_changed)
def set_completer(self): proxy = self.parent().model() model = proxy.sourceModel() v = model.get_local_setting(common.TextFilterKeyHistory) v = v.split(';') if v else [] v.reverse() v = [f for f in v if f] completer = QtWidgets.QCompleter(v, parent=self.editor) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) common.set_stylesheet(completer.popup()) self.editor.setCompleter(completer) self.history_button.clicked.connect(self.show_history)
def init_gui(self): # set search field self.lineEdit = QtWidgets.QLineEdit(self) action = QtWidgets.QWidgetAction(self) action.setDefaultWidget(self.lineEdit) self.addAction(action) self.lineEdit.setFocus() # completion items = list_scripts() items.extend(list_commands()) completer = QtWidgets.QCompleter(items, self) completer.setCompletionMode(QtWidgets.QCompleter.PopupCompletion) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) self.lineEdit.setCompleter(completer) # connect signals self.lineEdit.returnPressed.connect(self.accept)
def __init__(self, options: OptionsWidget, parent: QtWidgets.QWidget = None): super().__init__(options, parent=parent) self.element = ValidColorLineEdit( color_bad=QtGui.QColor(255, 255, 172)) self.element.setValid(False) self.element.setCompleter( QtWidgets.QCompleter(list(npdata.data.keys()))) self.element.textChanged.connect(self.elementChanged) self.density = UnitsWidget( { "g/cm³": 1e-3 * 1e6, "kg/m³": 1.0 }, default_unit="g/cm³", ) self.molarmass = UnitsWidget( { "g/mol": 1e-3, "kg/mol": 1.0 }, default_unit="g/mol", invalid_color=QtGui.QColor(255, 255, 172), ) self.molarratio = ValidColorLineEdit("1.0") self.molarratio.setValidator(QtGui.QDoubleValidator(0.0, 1.0, 4)) self.element.setToolTip("Input formula for density and molarratio.") self.density.setToolTip("Sample particle density.") self.molarmass.setToolTip( "Molecular weight, used to calcullate # atoms per particle.") self.molarratio.setToolTip( "Ratio of the mass of the particle to the analyte.") self.density.valueChanged.connect(self.optionsChanged) self.molarmass.valueChanged.connect(self.optionsChanged) self.molarratio.textChanged.connect(self.optionsChanged) self.inputs.layout().addRow("Formula:", self.element) self.inputs.layout().addRow("Density:", self.density) self.inputs.layout().addRow("Molar mass:", self.molarmass) self.inputs.layout().addRow("Molar ratio:", self.molarratio)
def _read_success(self): """Actions when _read_files has run without error""" self._table_model = MainTableModel(self._csv_set.df, self._filter_manager) self._filter_manager.set_model(self._table_model) self._filter_manager.file_opened() self._table_view.setModel(self._table_model) # self._table_view.resizeColumnsToContents() # too slow self._completer = QtWidgets.QCompleter(self._table_model.df_columns) self._completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) self._filter_le.setCompleter(self._completer) self.setWindowTitle(self._csv_set.title) # display self._logo_widget.hide() self._csv_widget.show() self._update_hits()
def __init__(self, parent=None, flags=QtCore.Qt.Window): super().__init__(parent=parent, f=flags) self.setWindowTitle("Build a formula") self.setWindowModality(QtCore.Qt.ApplicationModal) self.interpreter = None self.key = ("", "") # 6 broad by 6 deep. grid = QtWidgets.QGridLayout(self) self.text_field = QtWidgets.QLineEdit(self) self.text_field.textChanged.connect(self.validate_formula) self.buttons = QtWidgets.QDialogButtonBox( QtWidgets.QDialogButtonBox.Save | QtWidgets.QDialogButtonBox.Cancel) self.buttons.setSizePolicy( QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.ButtonBox)) self.parameters = QtWidgets.QTableView(self) model = QtGui.QStandardItemModel(self) self.parameters.setModel(model) completer = QtWidgets.QCompleter(model, self) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) self.text_field.setCompleter(completer) self.parameters.doubleClicked.connect(self.append_parameter_name) self.new_parameter = QtWidgets.QPushButton(qicons.add, "New parameter", self) self.new_parameter.clicked.connect(self.create_parameter) self.calculator = CalculatorButtons(self) self.calculator.button_press.connect(self.text_field.insert) self.calculator.clear.connect(self.text_field.clear) grid.addWidget(self.text_field, 0, 0, 5, 1) grid.addWidget(self.buttons, 5, 0, 1, 1) grid.addWidget(self.calculator, 0, 1, 5, 1) grid.addWidget(self.parameters, 0, 2, 5, 1) grid.addWidget(self.new_parameter, 5, 2, 1, 1) self.buttons.accepted.connect(self.accept) self.buttons.rejected.connect(self.reject) self.show()
def initialise(self) -> None: elements = self.widget.laser.elements self.combo_element.clear() self.combo_element.addItem("Elements") self.combo_element.addItems(elements) name = "calc0" i = 1 while name in elements: name = f"calc{i}" i += 1 self.lineedit_name.setText(name) self.formula.parser.variables = elements self.formula.setCompleter( QtWidgets.QCompleter( list(self.formula.parser.variables) + [k + "(" for k in CalculatorTool.functions.keys()] ) ) self.formula.valid = True self.formula.setText(self.widget.combo_element.currentText()) # refreshes
def nmz_only_changed(self): if self.nmz_only.isChecked(): opponents = [] for item_id, data in self.monster_data.items(): if any(name.lower() in data['name'].lower() for name in NMZ_BOSSES): opponents.append((data['id'], {'name': data['name']})) else: opponents = self.monster_data.items() items = [ f"{data['name'].lower()}{self.SEPERATOR}{ID}" for ID, data in opponents ] self.search.clear() completer = QtWidgets.QCompleter([i.lower() for i in items]) self.search.addItems(items) self.search.setCompleter(completer) self.search.completer().setCompletionMode( QtWidgets.QCompleter.PopupCompletion) self.on_select()
def set_completer_name(self): names = [n[0] for n in db.query(db.Participant.name).all()] completer = QtWidgets.QCompleter(names) self.line_edit_participant.setCompleter(completer)
def __contextAction(self): # self._prevCollection = self._menuToolbar.collectionComboBox.currentText() self.__updateLegendHistory() if self._unsaved: self.__unsavedPrompt( self._menuToolbar.collectionComboBox.currentText()) # if context is changed, update collectionComboBox and ModifierComboBoxes self._currentContext = self._menuToolbar.contextComboBox.currentText() self._collectionsDir = os.path.join(self._rootpath, 'json', self._currentContext) if self._currentContext in [ 'SOP', 'VOP', 'DOP', 'COP', 'CHOP', 'OBJ', 'ROP' ]: # build completer based on current context strlist = [] jsondict = {} # add HDAs to strlist context2 = self._currentContext[0] + self._currentContext[ 1:].lower() all_types = [] categories = hou.nodeTypeCategories() for category in categories.keys(): node_types = categories[category].nodeTypes() for node_type in node_types.keys(): all_types.append(node_types[node_type].nameWithCategory()) # split off version and namespace temp = [] for a in all_types: asplit = a.split('::') if len(asplit) == 1: temp.append(asplit[0]) elif len(asplit) == 2: if len(asplit[0]) > len(asplit[1]): temp.append(asplit[0]) else: temp.append(asplit[1]) elif len(asplit) == 3: temp.append(asplit[1]) all_types = temp alltypeset = set(all_types) contextHDAs = [a.split('/')[-1] for a in alltypeset] strlist = strlist + list(set(contextHDAs) - set(strlist)) # assign completer self.nodeCompleter = QtWidgets.QCompleter(strlist) self.nodeCompleter.popup().setStyleSheet(hou.qt.styleSheet()) self.nodeCompleter.setCompletionMode( QtWidgets.QCompleter.PopupCompletion) # refilter collections by context self._collections = utils.filterCollections(self._collectionsDir, self._currentContext) self.collectionsLabels = [ os.path.splitext(a)[0] for a in self._collections ] self._menuToolbar.collectionComboBox.clear() self._menuToolbar.collectionComboBox.insertItems( 0, self.collectionsLabels) # modifier combo boxes self._menuPrefs = utils.loadMenuPreferences( os.path.join(self._rootpath, 'json', 'menuprefs.json')) try: shiftItem = self._menuPrefs[self._currentContext]['Shift'] self._modifierComboBoxes.shift.comboBox.clear() self._modifierComboBoxes.shift.comboBox.insertItems( 0, self.collectionsLabels) self._modifierComboBoxes.shift.comboBox.setCurrentIndex( self._collections.index(shiftItem)) controlItem = self._menuPrefs[self._currentContext]['Control'] self._modifierComboBoxes.ctrl.comboBox.clear() self._modifierComboBoxes.ctrl.comboBox.insertItems( 0, self.collectionsLabels) self._modifierComboBoxes.ctrl.comboBox.setCurrentIndex( self._collections.index(controlItem)) except ValueError: pass