def context_menu(self, position): menu = QMenu() def copy_key(index): text = self.model.keyForIndex(index).toString() QApplication.clipboard().setText(str(text)) def copy_value(index): text = self.model.valueForIndex(index).toString() QApplication.clipboard().setText(str(text)) def delete_key(index): name = self.model.keyForIndex(index).toString() self.remove_key(str(name)) menu.addAction('Copy Key', lambda: copy_key(self.view.currentIndex())) menu.addAction('Copy Value', lambda: copy_value(self.view.currentIndex())) menu.addAction('Delete', lambda: delete_key(self.view.currentIndex())) idx = self.view.currentIndex() row = idx.row() idx = self.model.createIndex(row, 1) data_value = str(self.model.data(idx).toString()) # Add context menu actions for all applicable variable types. data_categories = map(lambda x: variable_types[str(x.toString())], self.model.data(idx, role=QtCore.Qt.UserRole).toList()) for i in data_categories: self.handler.add_plugin_actions(self, menu, i.category, data_value) menu.exec_(self.view.viewport().mapToGlobal(position))
def hide_unused_category_names(self): filters = list(self.filters) used_categories = set() for i in range(self.model.rowCount()): categories = [str(x.toString()) for x in self.model.dataAt(i, 1, QtCore.Qt.UserRole).toList()] used_categories.update(categories) filters = filter(lambda x: x in used_categories, filters) filters.insert(0, 'None') self.filter_category.clear() self.filter_category.addItems(filters)