def __init__(self, elements=None, parent=None): ''' Common interface for the labelListModel and the boxListModel see concrete implementations for details :param elements: :param parent: ''' QAbstractTableModel.__init__(self, parent) if elements is None: elements = [] self._elements = list(elements) self._selectionModel = QItemSelectionModel(self) def onSelectionChanged(selected, deselected): if selected: ind = selected[0].indexes() if len(ind)>0: self.elementSelected.emit(ind[0].row()) self._selectionModel.selectionChanged.connect(onSelectionChanged) self._allowRemove = True self._toolTipSuffixes = {} self.unremovable_rows=[] #rows in this list cannot be removed from the gui,
def __init__(self, parent=None): QAbstractListModel.__init__(self, parent) self._layerStack = [] self.selectionModel = QItemSelectionModel(self) self.selectionModel.selectionChanged.connect(self.updateGUI) self.selectionModel.selectionChanged.connect(self._onSelectionChanged) self._movingRows = False QTimer.singleShot(0, self.updateGUI)
def onAnnotationsLoaded(self): self.labeltool.model().dirtyChanged.connect(self.onModelDirtyChanged) self.onModelDirtyChanged(self.labeltool.model().dirty()) self.treeview.setModel(self.labeltool.model()) self.scene.setModel(self.labeltool.model()) self.selectionmodel = QItemSelectionModel(self.labeltool.model()) self.treeview.setSelectionModel(self.selectionmodel) self.treeview.selectionModel().currentChanged.connect(self.labeltool.setCurrentImage) self.property_editor.onModelChanged(self.labeltool.model()) self.startBackgroundLoading()
def __init__(self, labels=[], parent=None): QAbstractTableModel.__init__(self, parent) self._labels = labels self._selectionModel = QItemSelectionModel(self) def onSelectionChanged(selected, deselected): if selected: self.labelSelected.emit(selected[0].indexes()[0].row()) self._selectionModel.selectionChanged.connect(onSelectionChanged) self._allowRemove = True self._toolTipSuffixes = {}
def __init__(self, parent=None, name=None, editable=False): QComboBox.__init__(self, parent) self.setMaxVisibleItems(20) self.setEditable(editable) self.maxWidth = 0 if name is not None: self.setObjectName(name) # save the model, use our view, create a new selection model model = self.model() oldview = self.view() self.setView(ComboListView(self, self)) self.view().setModel(model) self.view().setSelectionModel(QItemSelectionModel(model, self.view()))
def __init__(self, parent=None): super(Games, self).__init__(parent) self.selectedGame = None self.onlyPending = True self.setWindowTitle(m18nc('kajongg', 'Games') + ' - Kajongg') self.setObjectName('Games') self.resize(700, 400) self.model = GamesModel(self) if Debug.modelTest: self.modelTest = ModelTest(self.model, self) self.view = MJTableView(self) self.view.setModel(self.model) self.selection = QItemSelectionModel(self.model, self.view) self.view.setSelectionModel(self.selection) self.view.setSelectionBehavior(QAbstractItemView.SelectRows) self.view.setSelectionMode(QAbstractItemView.SingleSelection) self.buttonBox = QDialogButtonBox(self) self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel) self.newButton = self.buttonBox.addButton( m18nc('start a new game', "&New"), QDialogButtonBox.ActionRole) self.newButton.setIcon(KIcon("document-new")) self.newButton.clicked.connect(self.accept) self.loadButton = self.buttonBox.addButton(m18n("&Load"), QDialogButtonBox.AcceptRole) self.loadButton.clicked.connect(self.loadGame) self.loadButton.setIcon(KIcon("document-open")) self.deleteButton = self.buttonBox.addButton( m18n("&Delete"), QDialogButtonBox.ActionRole) self.deleteButton.setIcon(KIcon("edit-delete")) self.deleteButton.clicked.connect(self.delete) chkPending = QCheckBox(m18n("Show only pending games"), self) chkPending.setChecked(True) cmdLayout = QHBoxLayout() cmdLayout.addWidget(chkPending) cmdLayout.addWidget(self.buttonBox) layout = QVBoxLayout() layout.addWidget(self.view) layout.addLayout(cmdLayout) self.setLayout(layout) StateSaver(self) self.selection.selectionChanged.connect(self.selectionChanged) self.buttonBox.accepted.connect(self.accept) self.buttonBox.rejected.connect(self.reject) self.view.doubleClicked.connect(self.loadGame) chkPending.stateChanged.connect(self.pendingOrNot)
def __init__(self, parent=None): QAbstractListModel.__init__(self, parent) self._layerStack = [] self.selectionModel = QItemSelectionModel(self) self.selectionModel.selectionChanged.connect(self.updateGUI) self.selectionModel.selectionChanged.connect(self._onSelectionChanged) self._movingRows = False QTimer.singleShot(0, self.updateGUI) def _handleRemovedLayer(layer): # Layerstacks *own* the layers they hold, and thus are # responsible for cleaning them up when they are removed: layer.clean_up() self.layerRemoved.connect(_handleRemovedLayer)
def loadTables(self, tables): """build and use a model around the tables. Show all new tables (no gameid given yet) and all suspended tables that also exist locally. In theory all suspended games should exist locally but there might have been bugs or somebody might have removed the local database like when reinstalling linux""" if not Internal.field: return if Debug.traffic: for table in tables: if table.gameid and not table.gameExistsLocally(): logDebug('%s does not exist locally' % table) tables = [x for x in tables if not x.gameid or x.gameExistsLocally()] tables.sort(key=lambda x: x.tableid) preselectTableId = self.__preselectTableId(tables) self.__keepChatWindows(tables) model = TablesModel(tables) self.view.setModel(model) if Debug.modelTest: self.debugModelTest = ModelTest(model, self.view) selection = QItemSelectionModel(model, self.view) self.view.initView() self.view.setSelectionModel(selection) self.view.setSelectionBehavior(QAbstractItemView.SelectRows) self.view.setSelectionMode(QAbstractItemView.SingleSelection) selection.selectionChanged.connect(self.selectionChanged) if len(tables) == 1: self.selectTable(0) self.startButton.setFocus() elif not tables: self.newButton.setFocus() else: _ = [x for x in tables if x.tableid >= preselectTableId] self.selectTable(tables.index(_[0]) if _ else 0) self.updateButtonsForTable(self.selectedTable()) self.view.setFocus()
def __init__(self, parent=None, aptinkerQSettings=None): """Constructor""" QDialog.__init__(self, parent=parent) self.setupUi(self) self.setWindowFlags(Qt.Window) # To add Maximize & Minimize buttons self.setWindowTitle('Select Snapshot from Database') # Load Startup Preferences for Snapshot Table self.default_ss_pref = dict( vis_col_key_list=config.DEF_VIS_COL_KEYS['snapshot_DB'][:]) if osp.exists(PREF_SS_JSON_FILEPATH): with open(PREF_SS_JSON_FILEPATH, 'r') as f: self.ss_pref = json.load(f) else: self.ss_pref = self.default_ss_pref # Load Startup Preferences for Snapshot Meta Table self.default_ss_meta_pref = dict(vis_col_key_list=[ 'ss_id', 'config_id', 'ss_ctime', 'ss_name', 'ss_username' ]) if osp.exists(PREF_SS_META_JSON_FILEPATH): with open(PREF_SS_META_JSON_FILEPATH, 'r') as f: self.ss_meta_pref = json.load(f) else: self.ss_meta_pref = self.default_ss_meta_pref self.ssDBViewWidget = SnapshotDBViewWidget(self.groupBox_selected_ss, DB_selector=True) self.tableView_ss = self.ssDBViewWidget.tableView self.ssMetaDBViewWidget = SnapshotMetaDBViewWidget( self.groupBox_search_result) self.tableView_ss_meta = self.ssMetaDBViewWidget.tableView self.textEdit_description = \ self.ssMetaDBViewWidget.textEdit_description self.settings = QSettings('APHLA', 'TinkerSSDBSelector') self.loadViewSettings() self._aptinkerQSettings = aptinkerQSettings self.pushButton_search.setIcon(QIcon(':/search.png')) all_ctime_operators = [ self.comboBox_time_created_1.itemText(i) for i in range(self.comboBox_time_created_1.count()) ] self.comboBox_time_created_1.setCurrentIndex( all_ctime_operators.index('')) self.dateTimeEdit_time_created_1.setDateTime( QDateTime.currentDateTime()) self.dateTimeEdit_time_created_2.setDateTime( QDateTime.currentDateTime()) self.search_params = dict(ss_id_1='', ss_id_2='', config_id_1='', config_id_2='', ss_ref_step_size_1='', ss_ref_step_size_2='', ss_name='', ss_desc='', ss_username='', ss_ctime_1='', ss_ctime_2='', ss_synced_gruop_weight='', ss_masar_id_1='', ss_masar_id_2='') db_id_validator = QIntValidator() db_id_validator.setBottom(1) self.lineEdit_ss_id_1.setValidator(db_id_validator) self.lineEdit_ss_id_2.setValidator(db_id_validator) self.lineEdit_config_id_1.setValidator(db_id_validator) self.lineEdit_config_id_2.setValidator(db_id_validator) self.lineEdit_masar_id_1.setValidator(db_id_validator) self.lineEdit_masar_id_2.setValidator(db_id_validator) self.prev_valid_ref_step_sizes = dict(lineEdit_ref_step_size_1=np.nan, lineEdit_ref_step_size_2=np.nan) # Set up Snapshot Table self.ss_model = SnapshotModel(self.ss_pref['vis_col_key_list']) self.tableModel_ss = self.ss_model.table proxyModel = QSortFilterProxyModel() proxyModel.setSourceModel(self.tableModel_ss) proxyModel.setDynamicSortFilter(False) tbV = self.tableView_ss tbV.setModel(proxyModel) tbV.setItemDelegate( SnapshotDBTableViewItemDelegate(tbV, self.tableModel_ss, tbV.parent())) #self.db = TinkerMainDatabase() self.db = self.ss_model.db if '[ss_meta_table text view]' not in self.db.getViewNames( square_brackets=True): self.db.create_temp_ss_meta_table_text_view() # Set up Snapshot Meta Table self.ss_meta_all_col_keys = self.ssMetaDBViewWidget.all_col_keys self.search_result = {k: [] for k in self.ss_meta_all_col_keys} self.tableModel_ss_meta = MetaTableModel(self.search_result, self.ssMetaDBViewWidget) proxyModel = QSortFilterProxyModel() proxyModel.setSourceModel(self.tableModel_ss_meta) proxyModel.setDynamicSortFilter(False) tbV = self.tableView_ss_meta tbV.setModel(proxyModel) self.selectionModel = QItemSelectionModel(proxyModel) tbV.setSelectionModel(self.selectionModel) # Apply Visible Column Preference to Snapshot Meta Table ss_meta_vis_col_name_list = [ self.ssMetaDBViewWidget.col_names_wo_desc[ self.ssMetaDBViewWidget.col_keys_wo_desc.index(k)] for k in self.ss_meta_pref['vis_col_key_list'] ] self.ssMetaDBViewWidget.on_column_selection_change( ss_meta_vis_col_name_list, force_visibility_update=True) # Make connection self.connect(self.lineEdit_ref_step_size_1, SIGNAL('editingFinished()'), self.validate_ref_step_size) self.connect(self.lineEdit_ref_step_size_2, SIGNAL('editingFinished()'), self.validate_ref_step_size) self.connect(self.pushButton_search, SIGNAL('clicked()'), self.update_search) self.connect( self.selectionModel, SIGNAL( 'currentRowChanged(const QModelIndex &, const QModelIndex &)'), self.on_selection_change)
def createWidgets(self): ## Message Table self.table = QTableView() self.table.setEditTriggers(QAbstractItemView.NoEditTriggers) self.table.setSelectionBehavior(QAbstractItemView.SelectRows) self.table.setGridStyle(Qt.NoPen) self.model = QStandardItemModel(8, 3, self) self.model.setHeaderData(0, Qt.Horizontal, "From") self.model.setHeaderData(1, Qt.Horizontal, "Subject") self.model.setHeaderData(2, Qt.Horizontal, "Received") self.table.setModel(self.model) self.selectionModel = QItemSelectionModel(self.model) self.selectionModel.SelectionFlag = 0x0020 self.table.setSelectionModel(self.selectionModel) self.table.horizontalHeader().setStretchLastSection(True) self.table.verticalHeader().setVisible(False) self.table.setSortingEnabled(True) self.table.setAlternatingRowColors(True) ## Folder Tree View self.folderTree = QTreeWidget() self.folderTree.setColumnCount(1) self.folderTree.setHeaderLabel(QString('Folders')) self.treeItem = QTreeWidgetItem() self.treeItem.setText(0, 'Folders') self.inbox = QTreeWidgetItem() self.inbox.setText(0, 'Inbox') self.deletedItems = QTreeWidgetItem() self.deletedItems.setText(0, 'Deleted Items') self.drafts = QTreeWidgetItem() self.drafts.setText(0, 'Drafts') self.junk = QTreeWidgetItem() self.junk.setText(0, 'Junk') self.outbox = QTreeWidgetItem() self.outbox.setText(0, 'Outbox') self.sent = QTreeWidgetItem() self.sent.setText(0, 'Sent') self.treeItem.addChild(self.inbox) self.treeItem.addChild(self.deletedItems) self.treeItem.addChild(self.drafts) self.treeItem.addChild(self.junk) self.treeItem.addChild(self.outbox) self.treeItem.addChild(self.sent) self.folderTree.addTopLevelItem(self.treeItem) self.folderTree.expandAll() self.folderTree.setAnimated(True) self.folderTree.setMaximumWidth(150) ## Temp. placeholders self.textEdit = QTextEdit() self.textEdit2 = QTextEdit()