def addNodeItem(self, index):
        type = index.internalPointer().typeInfo()

        if type in [
                typ.SEQUENCE_NODE, typ.SELECTOR_NODE, typ.FAILURE_NODE,
                typ.SUCCESS_NODE
        ]:
            item = NodeGraphicsItem(type)

        elif type == typ.SET_NODE:
            item = SetNodeGraphicsItem(type)
            item.setIndexValues(index.siblingAtColumn(col.SET_VALUES_BY_NAME))

        elif type == typ.WAIT_TIME_NODE:
            item = WaitTimeNodeGraphicsItem(type)
            item.setIndexWaitTime(index.siblingAtColumn(col.WAIT_TIME))

        else:
            item = NodeGraphicsItem(type)
            print("Node not defined in behavior view", str(type))

        if not index.internalPointer().isLeaf():
            item.setIsBranch()

        item.setIndexXPos(
            QtCore.QPersistentModelIndex(index.siblingAtColumn(col.X)))
        item.setIndexYPos(
            QtCore.QPersistentModelIndex(index.siblingAtColumn(col.Y)))

        item.setCallback(self.setData)
        item.setDeleteCallback(self.removeGraphicItem)
        item.setAddCallback(self.addGraphicItem)

        if index.internalPointer().parent().typeInfo() == 'root':
            item.setIsRoot(True)

        self._scene.addItem(item)
        p_index = QtCore.QPersistentModelIndex(index)
        #self._scene_items.append((QtCore.QPersistentModelIndex(index), item))
        self._scene_items.append((p_index, item))

        self.updateNodeItem(index)

        #Add lines between nodes
        if index.parent().internalPointer():
            parent_item = self.graphicItemFromIndex(index.parent())

            new_path = Path(parent_item.centerBottomPos(), item.centerTopPos())
            self._scene.addItem(new_path)
            self._paths.append((QtCore.QPersistentModelIndex(index), new_path))

            item.addLine(new_path, 1)
            parent_item.addLine(new_path, 0)
示例#2
0
    def highlight_item_row(self, item):
        """
        highlight the entire row containing a table item
        @param item: table item
        """
        try:
            if not item.index().isValid():
                return

            parent = item.parent()
            if parent is None:
                parent = item

            if not parent.hasChildren():
                self.highlight_item(parent)
                return

            row = item.row()
            column_num = parent.columnCount()

            for column in xrange(0, column_num):
                if self.functionModel.hasIndex(row, column, parent.index()):
                    cur_index = self.functionModel.index(row, column, parent.index())

                    self.highlight_item(self.functionModel.itemFromIndex(cur_index))
                    persistent_index = QtCore.QPersistentModelIndex(cur_index)
                    self.highligthed_items.append(persistent_index)

        except Exception as ex:
            idaapi.msg("Error while highlighting item row: %s\n" % ex)
示例#3
0
    def detect_button_click(self):

        detect_form = Detect_Dialog()
        detect_form.setupUi(detect_form)
        ap_number_list = list()
        for currentRows in self.ScantableWidget.selectionModel().selectedRows(
        ):
            row = QtCore.QPersistentModelIndex(currentRows).row()
            ap_number_list.append(row)
        if len(ap_number_list) <= 1:
            QtWidgets.QMessageBox.critical(self, "Error",
                                           "Select at least two item")
        else:
            ap_str_list = [str(i + 1) for i in ap_number_list]
            ap_str = ','.join(ap_str_list)
            detect_form.AP_list.setText(ap_str)
            detect_form.Listen_card.addItems(items)
            detect_form.Send_card.addItems(items)
            if ap_number_list[0]:
                target_akm = self.ScantableWidget.item(ap_number_list[0], 4)
                if target_akm:
                    detect_form.AP_akm.setText(target_akm.text())
            if detect_form.exec():
                listen_card = detect_form.get_listen_card()
                send_card = detect_form.get_send_card()
                key = detect_form.get_ap_key()
                self.detect_thread = DetectThread(listen_card, send_card, key,
                                                  ap_number_list,
                                                  self.scan_list)
                self.detect_thread.TextBrowser_text_signal.connect(
                    self.__on_TextBroswer)
                self.detect_thread.TextBrowser_div_signal.connect(
                    self.__on_div_Broswer)
                self.detect_thread.start()
示例#4
0
    def edit_record(self, sourceIdx):

        if len(self.treeView.selectionModel().selectedRows()) > 1:
            reply = QtWidgets.QMessageBox.question(
                self,
                f"Editing multiple records",
                f"Do you want to edit *all* the selected records?\rYes = Edit all records, No = Edit only current recaord",
                QtWidgets.QMessageBox.Yes
                | QtWidgets.QMessageBox.No
                | QtWidgets.QMessageBox.Cancel,
                QtWidgets.QMessageBox.Yes,
            )
            if reply == QtWidgets.QMessageBox.Yes:
                for proxy_index in self.treeView.selectionModel().selectedRows():
                    proxy_model = proxy_index.model()
                    index = proxy_model.mapToSource(proxy_index)
                    p_index = QtCore.QPersistentModelIndex(index)
                    dlgDetail(self, p_index)
                return True
        
        if not sourceIdx:
            sourceIdx = self.treeView.currentIndex()
            if not sourceIdx.isValid():
            	trace("not selection")
            	return False
        # only single selection
        trace("single selection")
        proxy_model = sourceIdx.model()
        index = proxy_model.mapToSource(sourceIdx)
        dlgDetail(self, index)
        self.updateStatus()
示例#5
0
 def _get_selected_rows(self):
     index_list = []
     for model_index in self.table_pulse_params.selectionModel(
     ).selectedRows():
         index = QtCore.QPersistentModelIndex(model_index)
         index_list.append(index)
     return index_list
示例#6
0
    def createRowEditWidget(self, 
            tableWidget, 
            row, 
            col, 
            editCallback, 
            deleteCallback
        ):
        wd = QtWidgets.QWidget()
        layout = QtWidgets.QHBoxLayout(wd)
        index = QtCore.QPersistentModelIndex(tableWidget.model().index(row, col))

        editBtn = self.createToolButton( tableWidget, 'Editar', self.getEditIconPath() )
        editBtn.clicked.connect(
            lambda *args, index=index: editCallback(index)
        )
        layout.addWidget(editBtn)

        deleteBtn = self.createToolButton( tableWidget, 'Deletar', self.getDeleteIconPath() )
        deleteBtn.clicked.connect(
            lambda *args, index=index: deleteCallback(index)
        )
        layout.addWidget(deleteBtn)

        layout.setAlignment(QtCore.Qt.AlignCenter)
        layout.setContentsMargins(0,0,0,0)
        return wd
示例#7
0
    def cell_hover(self, index):
        if index != self._last_hover_index:
            self.cellExited.emit(self._last_hover_index.row(),
                                 self._last_hover_index.column())
            self.cellEntered.emit(index.row(), index.column())

            self._last_hover_index = QtCore.QPersistentModelIndex(index)
示例#8
0
文件: library.py 项目: wangjs/Lector
    def prune_models(self, valid_paths):
        # To be executed when the library is updated by folder
        # All files in unselected directories will have to be removed
        # from both of the models
        # They will also have to be deleted from the library
        valid_paths = set(valid_paths)

        # Get all paths
        all_paths = set()
        for i in range(self.view_model.rowCount()):
            item = self.view_model.item(i, 0)
            item_metadata = item.data(QtCore.Qt.UserRole + 3)
            book_path = item_metadata['path']
            all_paths.add(book_path)

        invalid_paths = all_paths - valid_paths

        deletable_persistent_indexes = []
        for i in range(self.view_model.rowCount()):
            item = self.view_model.item(i)
            path = item.data(QtCore.Qt.UserRole + 3)['path']
            if path in invalid_paths:
                deletable_persistent_indexes.append(
                    QtCore.QPersistentModelIndex(item.index()))

        if deletable_persistent_indexes:
            for i in deletable_persistent_indexes:
                self.view_model.removeRow(i.row())

        # Remove invalid paths from the database as well
        database.DatabaseFunctions(
            self.parent.database_path).delete_from_database(
                'Path', invalid_paths)
示例#9
0
 def remove_row():
     index_list = [
         QtCore.QPersistentModelIndex(row)
         for row in self.clients_table.selectionModel().selectedRows()
     ]
     for index in index_list:
         self.clients_table.removeRow(index.row())
    def printAppResult(self, vals, lines, searched_word_indices):
        val_1 = val_2 = val_3 = val_4 = val_5 = 0
        self.lcdBereshit.display(vals[0])
        self.lcdShemot.display(vals[1])
        self.lcdVaykra.display(vals[2])
        self.lcdBamidbar.display(vals[3])
        self.lcdDevarim.display(vals[4])
        self.lcdSomma.display(sum(vals))

        #immette il modello (i dati elaborati da Pandas) nella QTableView "listOutput"
        lines.data(lines.index(7, 2), role=QtCore.Qt.BackgroundRole)
        self.listOutput.setModel(lines)
        # self.listOutput.setShowGrid(False)

        # -> pyhton pandas code per lista di index di valori in tabella -> df.index[df["column name"] == "wanted_data"]
        #list cohomprension per ottenere lista di indici relativi alla parola cercata (identità di lemma) nel df di output
        # NB: 2 è il numero della colonna "words" -> cambia solo se si riduce il numero di colonne! Al posto di "2" immettere SOLO il numero della colonna "words"
        # (col count starts from "0")
        # lista come oggetto QT
        searched_word_matches = [
            QtCore.QPersistentModelIndex(self.listOutput.model().index(
                item, 2)) for item in searched_word_indices
        ]
        # lista resa leggibile con le funzioni index.row() ..column() e ...data()
        # struttura lista: lvl1: gruppo [row, column, word] lvl2: 0 riga, 1, colonna, 2 parola. la visualizzazione in console viene ribaltata a causa dell'uso dei caratteri ebraici
        searched_word_matches = [[item.row(),
                                  item.column(),
                                  item.data()]
                                 for item in searched_word_matches]
示例#11
0
文件: library.py 项目: pydawan/Lector
    def prune_models(self, valid_paths):
        # To be executed when the library is updated by folder
        # All files in unselected directories will have to be removed
        # from both of the models
        # They will also have to be deleted from the library
        invalid_paths = []
        deletable_persistent_indexes = []

        for i in range(self.libraryModel.rowCount()):
            item = self.libraryModel.item(i)

            item_metadata = item.data(QtCore.Qt.UserRole + 3)
            book_path = item_metadata['path']
            try:
                addition_mode = item_metadata['addition_mode']
            except KeyError:
                addition_mode = 'automatic'
                print('Libary: Error setting addition mode for prune')

            if (book_path not in valid_paths
                    and (addition_mode != 'manual' or addition_mode is None)):

                invalid_paths.append(book_path)
                deletable_persistent_indexes.append(
                    QtCore.QPersistentModelIndex(item.index()))

        if deletable_persistent_indexes:
            for i in deletable_persistent_indexes:
                self.libraryModel.removeRow(i.row())

        # Remove invalid paths from the database as well
        database.DatabaseFunctions(
            self.main_window.database_path).delete_from_database(
                'Path', invalid_paths)
示例#12
0
    def cleanprocess(self):
        self.taskmanagerui.tasks.setSelectionMode(
            QAbstractItemView.MultiSelection)
        indextoremove = []
        for i, v in enumerate(self.mylistofprocesses):
            if v.state() == 0:
                indextoremove.append(i)
                self.taskmanagerui.tasks.selectRow(i)
                self.rowcount = self.rowcount - 1
            else:
                print(v.pid())
                #self.taskmanagerui.tasks.repaint()
        index_list = []
        for model_index in self.taskmanagerui.tasks.selectionModel(
        ).selectedRows():
            index = QtCore.QPersistentModelIndex(model_index)
            index_list.append(index)
        for index in index_list:
            self.taskmanagerui.tasks.removeRow(index.row())

        self.mylistofprocesses = [
            i for j, i in enumerate(self.mylistofprocesses)
            if j not in indextoremove
        ]
        self.taskmanagerui.tasks.setSelectionMode(
            QAbstractItemView.NoSelection)
        self.taskmanagerui.tasks.repaint()
示例#13
0
 def connectWidgetExpression(self, row, col, ruleValue, widgetExpression):
     index = QtCore.QPersistentModelIndex(self.tableWidget.model().index(
         row, col))
     widgetExpression.setExpression(ruleValue)
     widgetExpression.expressionChanged.connect(
         lambda *args, index=index, widget=widgetExpression: self.
         handleWidgetExpression(index, widget))
     return widgetExpression
示例#14
0
 def on_clicked(self, index):
     if not self.model.hasChildren(index):
         self.clicked.emit(index)
         return
     action = self.toolbar.addAction(index.data())
     action.setData(QtCore.QPersistentModelIndex(index))
     self.listview.setRootIndex(index)
     print(index.data())
示例#15
0
 def removeIngredient(self):
     indexes = [QtCore.QPersistentModelIndex(index) for index in self.doseTableView.selectionModel().selectedRows()]
     if indexes == []:
         return 'Выберите дозу.'
     for index in indexes:
         RecordRemoverService.removeRecord(self, self.doseTableView.model(), index.row())
     self.doseTableView.model().select()
     self.fillComboBox()
示例#16
0
 def del_Item(self, type):
     index_list = []
     for model_index in self.tableWidget.selectionModel().selectedRows():
         index = QtCore.QPersistentModelIndex(model_index)
         index_list.append(index)
     for self.index in index_list:
         if type == 1:
             self.tableWidget.removeRow(self.index.row())
示例#17
0
 def remove_disk(self):
     index_list = []
     for model_index in self.disksListView.selectionModel().selectedRows():
         index = QtCore.QPersistentModelIndex(model_index)
         index_list.append(index)
     for index in index_list:
         self.disksModel.removeRow(index.row())
     self.get_targets_disks()
    def del_vector(self):
        index_list = []
        for model_index in self.vectorTbl.selectionModel().selectedRows():
            index = QtCore.QPersistentModelIndex(model_index)
            index_list.append(index)

        for index in index_list:
            self.vectorTbl.removeRow(index.row())
示例#19
0
    def remove_row(self):
        index_list = []
        for model_index in self.view.table.selectionModel().selectedRows():
            index = QtCore.QPersistentModelIndex(model_index)
            index_list.append(index)

        for index in index_list:
            self.model.removeRow(index.row())
        self.view.update_view()
示例#20
0
 def data(self, index, role):  # return data in a single cell
     if not index.isValid():
         return False
     if role == qtc.Qt.TextAlignmentRole:
         return qtc.Qt.AlignCenter
     if role == qtc.Qt.CheckStateRole and index.column() == self.VIS_COL:
         return self.checkState(qtc.QPersistentModelIndex(index))
     if role in [qtc.Qt.DisplayRole, qtc.Qt.EditRole]:
         return self.character_table[index.row()][index.column()]
     return None
    def selectedFiles(self):
        indexes = []
        count = self.list.model().rowCount()
        for row in range(count):
            item = self.list.model().item(row)
            if item.checkState() == QtCore.Qt.Checked:
                index = QtCore.QPersistentModelIndex(item.index())
                indexes.append((index, item.text()))

        return indexes
示例#22
0
    def actionDeleteHandler(self):
        index_list = []
        for model_idx in self.tableWidget.selectionModel().selectedRows():
            index = QtCore.QPersistentModelIndex(model_idx)
            index_list.append(index)

        # 绝对不可以一边遍历一边删除,会删不完
        for index in index_list:
            self.logging_signal.emit(
                f"从候选区删除{self.tableWidget.item(index.row(), 3).text()}")
            self.tableWidget.removeRow(index.row())
    def delete(self):
        # print("delete")
        index_list = []
        for model_index in self.tableWidget.selectionModel().selectedRows():
            index = QtCore.QPersistentModelIndex(model_index)
            index_list.append(index)

        self.rowNo = self.rowNo - len(index_list)

        for index in index_list:
            self.tableWidget.removeRow(index.row())
示例#24
0
 def removeRAW(self):
     index_list = []                                                          
     for row_index in self.tableCasos.selectionModel().selectedRows():       
         index = QtCore.QPersistentModelIndex(row_index)         
         index_list.append(index)   
     for index in index_list:                                      
         filename = index.data()
         self.scenarios.pop(filename)
         self.tableCasos.removeRow(index.row())
         self.printOutputBar("Caso Removido: " + filename)
     self.enableButtons()         
    def del_action(self):
        # for items in self.selectionModel().selectedRows():
        #     print(self.model.item(items.row(), 0).child(0,1))
        #     self.model.removeRow(items.row())

        index_list = []
        for model_index in self.selectionModel().selectedRows():
            index = QtCore.QPersistentModelIndex(model_index)
            index_list.append(index)

        for index in index_list:
            self.model.removeRow(index.row())
示例#26
0
 def removeRow(self):
     if self.dataTableView.model(
     ) == None or self.dataTableView.selectionModel().hasSelection(
     ) == False:
         return 'Выберите строку для удаления.'
     indexes = [
         QtCore.QPersistentModelIndex(index)
         for index in self.dataTableView.selectionModel().selectedRows()
     ]
     for index in indexes:
         RecordRemoverService.removeRecord(self, self.dataTableView.model(),
                                           index.row())
 def removeFiles(self):
     table = self.ui.tbl_fileList
     index_list = []
     for model_index in table.selectionModel().selectedRows():
         index = QtCore.QPersistentModelIndex(model_index)
         index_list.append(index)
     for index in index_list:
         ind = index.row()
         table.removeRow(ind)
     if table.rowCount() < 1:
         self.ui.btn_Remove.setEnabled(False)
         self.ui.btn_Convert.setEnabled(False)
     self.verSelected()
示例#28
0
    def onClickButtonDelete(self):
        # 删除tableWidget选中的行
        index_list = []
        for model_idx in self.tableWidget.selectionModel().selectedRows():
            index = QtCore.QPersistentModelIndex(model_idx)
            index_list.append(index)

        # 绝对不可以一边遍历一边删除,会删不完
        for index in index_list:
            self.logging_signal.emit(
                f"删除{self.tableWidget.item(index.row(), 0).text()}-"
                f"{self.tableWidget.item(index.row(), 1).text()}")
            self.tableWidget.removeRow(index.row())
示例#29
0
 def createColorBtn(self, row, col, colorRgb):
     wd = QtWidgets.QWidget()
     layout = QtWidgets.QHBoxLayout(wd)
     button = QtWidgets.QPushButton('', self.tableWidget)
     button.setStyleSheet("QPushButton {background-color: rgb(" + colorRgb +
                          ")}")
     index = QtCore.QPersistentModelIndex(self.tableWidget.model().index(
         row, col))
     button.clicked.connect(
         lambda *args, index=index: self.handleColorBtn(index))
     layout.addWidget(button)
     layout.setContentsMargins(0, 0, 0, 0)
     return wd
示例#30
0
    def deleteInvalidEntry(self):
        indexList = []
        indexes = self.invalidTable.selectionModel().selectedRows()

        for index in sorted(indexes):
            user = index.sibling(index.row(), index.column()).data()
            question = index.sibling(index.row(), index.column() + 1).data()
            answer = index.sibling(index.row(), index.column() + 2).data()
            row = QtCore.QPersistentModelIndex(index)
            indexList.append(row)
            self.db.deleteTableData(user, question, answer)

        for rowIndex in indexList:
            self.invalidTable.removeRow(rowIndex.row())