コード例 #1
0
    def _showMostReferenced(self):
        """
        Shows the most referenced functions.
        """
        self._console_output("Calculating most referenced functions...")
        self.table_label.setText("Most referenced functions")

        most_referenced = self.ba.most_referenced_functions()

        self.table.setColumnCount(3)
        self.table.setHorizontalHeaderLabels(("Address", "References", "Name"))
        self.table.clearContents()
        self.table.setRowCount(0)

        idx = 0

        # Fill with contents
        for f_ea, (ref_nr, ref_name) in most_referenced:

            self.table.insertRow(idx)
            addr_item = QTableWidgetItem("%x" % f_ea)
            addr_item.setFlags(addr_item.flags() ^ QtCore.Qt.ItemIsEditable)
            ref_item = cw.NumQTableWidgetItem("%d" % ref_nr)
            name_item = QTableWidgetItem(ref_name)

            self.table.setItem(idx, 0, addr_item)
            self.table.setItem(idx, 1, ref_item)
            self.table.setItem(idx, 2, name_item)

            idx += 1
コード例 #2
0
    def _showConnectedIO(self):
        """
        Shows a list of functions dealing with IO and
        connected to the current function
        """
        self._console_output("Calculating file & network IO...")
        io_list = self.ba.input_to_function()

        if not io_list:
            self._console_output("[!] No (obvious) IO connecting \
                to this function", err = True)
            return

        self.table.setColumnCount(2)
        self.table.setHorizontalHeaderLabels(("Caller", "Name"))

        self.table_label.setText("Connected IO")
        self.table.clearContents()
        self.table.setRowCount(0)

        for idx, caller in enumerate(io_list):
            self.table.insertRow(idx)

            addr_item = QTableWidgetItem("%08x" % caller)
            addr_item.setFlags(addr_item.flags() ^ QtCore.Qt.ItemIsEditable)
            name_item = QTableWidgetItem("%s" % misc.get_function_name(caller))

            self.table.setItem(idx, 0, addr_item)
            self.table.setItem(idx, 1, name_item)
コード例 #3
0
ファイル: menu.py プロジェクト: tinavas/FSERP
 def load_rows(self, *args):
     """
     :param args:item code
     :return:Loads the rows from the database
     """
     table = self.dialogue.menudialogue_menuIngredients_table
     if args:
         table.clearContents()
         table.setRowCount(0)
         if args[0] != 0:
             table.setRowCount(len(args))
             for i, j in enumerate(args):
                 item = QTableWidgetItem(j['code'])
                 table.setItem(i, 0, item)
                 item = QTableWidgetItem(j['item'])
                 table.setItem(i, 1, item)
                 item = QTableWidgetItem(j['category'])
                 table.setItem(i, 2, item)
                 combo = QComboBox()
                 self.fillunits(combo)
                 index = combo.findText(j['units'])
                 combo.setCurrentIndex(index)
                 table.setCellWidget(i, 3, combo)
                 quantity = QLineEdit(j['quantity'])
                 table.setCellWidget(i, 4, quantity)
     else:
         ###arranges the width each time we call this method
         table.setColumnWidth(1, table.width() / 5)
         table.setColumnWidth(2, table.width() / 5)
         table.setColumnWidth(3, table.width() / 5)
コード例 #4
0
    def set_abbreviations(self, empire):
        """ Clears the abbreviations table, then adds the abbreviations for the current 
        empire to it.

        Arguments:
            empire (lacuna.empire.MyEmpire): The empire whose abbreviations we'll show.
        """
        self.init_for_data()
        self.widget.setSortingEnabled(False)
        row = 0
        for n in sorted(empire.planet_names):
            itm_name = QTableWidgetItem(n)
            try:
                itm_abbrv = QTableWidgetItem(
                    self.parent.app.abbrv.get_abbrv(n))
            except KeyError as e:
                itm_abbrv = QTableWidgetItem("<None>")
            fl = itm_name.flags()
            fl &= ~Qt.ItemIsEditable
            itm_name.setFlags(fl)
            self.widget.insertRow(row)
            self.widget.setItem(row, 0, itm_name)
            self.widget.setItem(row, 1, itm_abbrv)
            row += 1
        self.widget.setSortingEnabled(True)
        self.widget.itemChanged.connect(self.update)
        self.resize()
コード例 #5
0
ファイル: FoamBoundaryWidget.py プロジェクト: xj361685640/Cfd
 def insertRow(self):
     nRows = self.tableWidget.rowCount()
     self.tableWidget.insertRow(nRows)  # inset one row at the end
     kitem = QTableWidgetItem("")  # also set flags and state, type
     vitem = QTableWidgetItem("")
     self.tableWidget.setItem(nRows, 0, kitem)
     self.tableWidget.setItem(nRows, 1, vitem)
コード例 #6
0
    def _patchBinary(self):
        """
        Exports the current function code, ascii hex encoded
        This is useful to import into tools like miasm and alike
        """
        self._console_output("Patching the original binary...")
        pl = patch_binary()

        if not pl:
            self._console_output("[!] No bytes to patch", err=True)
            return

        self.table.setColumnCount(3)
        self.table.setHorizontalHeaderLabels(
            ('File offset', 'Original', 'Patched'))
        self.table_label.setText("Patched bytes exported to file")
        self.table.clearContents()
        self.table.setRowCount(0)

        # Fill with contents
        for idx, (fpos, o, p) in enumerate(pl):

            self.table.insertRow(idx)
            fpos_item = QTableWidgetItem("%x" % fpos)
            fpos_item.setFlags(fpos_item.flags() ^ QtCore.Qt.ItemIsEditable)
            orig_item = QTableWidgetItem("%x" % o)
            patch_item = QTableWidgetItem("%x" % p)

            self.table.setItem(idx, 0, fpos_item)
            self.table.setItem(idx, 1, orig_item)
            self.table.setItem(idx, 2, patch_item)

        self._console_output(
            "Done patching. Look in the same directory as the original for a .patched file"
        )
    def subscriberChanged(self):
        subPaths = self.subscriber.subPaths()

        if self.listWidget:
            self.listWidget.clear()
        elif self.tableWidget:
            self.tableWidget.clearContents()
            self.tableWidget.setRowCount(len(subPaths))

        for i in xrange(len(subPaths)):
            v = self.subscriber.value(subPaths[i])
            if self.listWidget:
                item = QListWidgetItem('%s (%s)\n%s' %
                                       (subPaths[i], str(type(v)), str(v)))
                item.setFlags(item.flags() & ~Qt.ItemIsEditable)
                self.listWidget.addItem(item)
            elif self.tableWidget:
                pathItem = QTableWidgetItem(subPaths[i])
                pathItem.setFlags(pathItem.flags() & ~Qt.ItemIsEditable)
                valueItem = QTableWidgetItem(str(v))
                valueItem.setFlags(pathItem.flags() & ~Qt.ItemIsEditable)
                typeItem = QTableWidgetItem(str(type(v)))
                typeItem.setFlags(pathItem.flags() & ~Qt.ItemIsEditable)

                self.tableWidget.setItem(i, 0, pathItem)
                self.tableWidget.setItem(i, 1, valueItem)
                self.tableWidget.setItem(i, 2, typeItem)
コード例 #8
0
    def __init__(self, updates, streetdb):
        QDialog.__init__(self)
        self.setupUi(self)
        table = self.tableWidget
        table.setRowCount(len(updates)+1)
        table.setColumnCount(len(common.ATT))
        self.setWindowTitle("Overview")

        for i in range(len(common.ATT)):
            item = QTableWidgetItem(common.ATT_HR[common.ATT[i]])
            table.setItem(0, i, item)
        for i, street in enumerate(updates):
            changes = updates[street]
            row = []
            for z in range(len(common.ATT)):
                found = False
                att = common.ATT[z]
                print(att)
                for change in changes:
                    split = change.split(":")
                    if split[0] == att:
                        row.append(split[1])
                        found = True
                if not found:
                    try:
                        row.append(streetdb[street][att])
                    except KeyError:
                        """print("Error building diagram in Street:", street, " Attribute: ", att) ## Missing field"""
            for x, update in enumerate(row):
                item = QTableWidgetItem(update)
                if "->" in update:
                    item.setForeground(Qt.red)
                print(i+1, x, update)
                table.setItem(i+1, x, item)
        self.load_settings()
コード例 #9
0
    def _showStringXrefs(self):
        """
        Displays string references in a table
        Optionally Shannon's misc.entropy as well
        """

        # Retrieve some config values
        show_misc_entropy = self.config.calculate_entropy
        show_unique_s = self.config.display_unique_strings

        self._console_output("Calculating string references...")

        self.ba.calculate_strings_list()
        s_ref_list = self.ba.get_string_references()

        # Found any references at all?
        nrows = len(s_ref_list)
        if not nrows:
            self._console_output("[!] No string references found", err=True)
            return

        if show_misc_entropy:
            self.table.setColumnCount(3)
            self.table.setHorizontalHeaderLabels(
                ("Address", "String", "Entropy"))

        else:
            self.table.setColumnCount(2)
            self.table.setHorizontalHeaderLabels(("Address", "String"))

        self.table_label.setText("String references in current function")
        self.table.clearContents()
        self.table.setRowCount(0)

        # Fill the table
        displayed_strings = []

        idx = 0
        for (addr, s) in s_ref_list:
            if show_unique_s and s in displayed_strings:
                continue

            displayed_strings.append(s)

            self.table.insertRow(idx)
            addr_item = QTableWidgetItem("%08x" % addr)
            addr_item.setFlags(addr_item.flags() ^ QtCore.Qt.ItemIsEditable)
            string_item = QTableWidgetItem(s.decode('utf-8'))
            string_item.setFlags(string_item.flags()
                                 ^ QtCore.Qt.ItemIsEditable)

            self.table.setItem(idx, 0, addr_item)
            self.table.setItem(idx, 1, string_item)

            if show_misc_entropy:
                misc_entropy_item = cw.NumQTableWidgetItem("%.4f" %
                                                           misc.entropy(s))
                self.table.setItem(idx, 2, misc_entropy_item)

            idx += 1
コード例 #10
0
    def add_link(self, url):
        """
            Adds a link to the link widget.

            Only adds if its not already present.
        """

        if url not in self.links:

            self.links.add(url)

            rowCounts = self.links_ui.rowCount()
            nextRow = rowCounts + 1
            nextPosition = rowCounts  # row count is the length, but position is zero-based

            self.links_ui.setRowCount(nextRow)

            urlEntry = QTableWidgetItem(url)
            statusEntry = QTableWidgetItem('')

            statusEntry.setTextAlignment(Qt.AlignCenter)

            urlEntry.setFlags(urlEntry.flags()
                              & ~Qt.ItemIsEditable)  # not editable
            statusEntry.setFlags(statusEntry.flags()
                                 & ~Qt.ItemIsEditable)  # not editable

            self.links_ui.setItem(nextPosition, 0, urlEntry)
            self.links_ui.setItem(nextPosition, 1, statusEntry)

            # check if online
            stream = Stream(url.split())

            stream.is_online(statusEntry)
コード例 #11
0
    def createCustomEntry(self, model):
        """
        :type model: FileEntry
        :rtype: QTableWidgetItem
        """
        nameItem = QTableWidgetItem(model.name)
        dateItem = QTableWidgetItem(str(model.lastUpdate.date()))
        iconItem = QTableWidgetItem()

        if model.status in [
                Status.Seen_user.value, Status.Download_seen_user.value
        ]:
            iconItem.setIcon(QIcon(resource_filepath("viewed.svg")))
        elif model.status in [
                Status.Update_server.value,
                Status.Download_updated_server.value
        ]:
            iconItem.setIcon(QIcon(resource_filepath("updated.svg")))
        elif model.status == Status.Download_same.value:
            iconItem.setIcon(QIcon(resource_filepath("downloaded.svg")))

        if model.status == 1:
            nameItem.setBackground(RGBColors.Emerald.value)
            dateItem.setBackground(RGBColors.Emerald.value)
            iconItem.setBackground(RGBColors.Emerald.value)

        return [iconItem, nameItem, dateItem]
コード例 #12
0
ファイル: TraceWidget.py プロジェクト: ntddk/idasec
 def add_chunk_trace_table(self, table, trace, k, index):
     i = index
     while trace.instrs.has_key(k):
         inst = trace.instrs[k]
         if trace.metas.has_key(k):
             for name, arg1, arg2 in trace.metas[k]:
                 if name == "wave":
                     infos = ["=", "========",
                              "> Wave:" + str(arg1)]  #,"=","========"
                 elif name == "exception":
                     infos = [
                         "", "", "Exception type:" + str(arg1) +
                         " @handler:" + str(arg2)
                     ]  #,"",""
                 elif name == "module":
                     infos = ["", "Module", arg1]  #,"",""
                 else:
                     infos = ["", "", "Invalid"]  #,"",""
                 for col_id, cell in enumerate(infos):
                     newitem = QTableWidgetItem(cell)
                     newitem.setFlags(newitem.flags() ^ Qt.ItemIsEditable)
                     table.setItem(i, col_id, newitem)
                 i += 1
         info = [str(k), hex(inst.address)[:-1], inst.opcode
                 ]  #str(inst.thread), idc.GetFunctionName(inst.address)
         for col_id, cell in enumerate(info):
             newitem = QTableWidgetItem(cell)
             newitem.setFlags(newitem.flags() ^ Qt.ItemIsEditable)
             table.setItem(i, col_id, newitem)
         i += 1
         k += 1
コード例 #13
0
    def readTableFromList(self, mytable, mylist):
        """
        mylist contains triples of (name, value, modifyable)
        """
        mytable.clear()
        mytable.setRowCount(0)
        for (ind, (name, string_value, modifyable,
                   var_type)) in enumerate(sorted(mylist, key=lambda x: x[0])):
            # sort list to get a reproducible table
            mytable.insertRow(ind)
            mytable.setItem(ind, 0, QTableWidgetItem(name))
            value_item = QTableWidgetItem(string_value)
            if not modifyable:
                value_item.setFlags(value_item.flags() & Qt.ItemIsEditable)
            mytable.setItem(ind, 1, value_item)
            type_item = QTableWidgetItem(str(var_type))
            type_item.setFlags(type_item.flags() & Qt.ItemIsEditable)

            mytable.setItem(ind, 2, type_item)

        header = mytable.horizontalHeader()

        try:
            # this is Qt4
            header.setResizeMode(0, QHeaderView.ResizeToContents)
            header.setResizeMode(1, QHeaderView.Stretch)
        except AttributeError:
            # this is Qt5
            header.setSectionResizeMode(0, QHeaderView.ResizeToContents)
            header.setSectionResizeMode(1, QHeaderView.Stretch)
コード例 #14
0
ファイル: menu.py プロジェクト: tinavas/FSERP
 def add_row(self, *args):
     """adds a new row entry"""
     table = self.addeachweek.add_eachweek_table
     table.setSelectionBehavior(QAbstractItemView.SelectRows)
     table.setEditTriggers(QAbstractItemView.NoEditTriggers)
     table.setShowGrid(False)
     table.setAlternatingRowColors(True)
     table.setStyleSheet("color:#000000;")
     if args:
         table.setRowCount(len(args))
         for i, j in enumerate(args):
             checkbox = QCheckBox()
             table.setCellWidget(i, 0, checkbox)
             item = QTableWidgetItem(j['item_no'])
             table.setItem(i, 1, item)
             item = QTableWidgetItem(j['item'])
             table.setItem(i, 2, item)
             item = QTableWidgetItem(j['category'])
             table.setItem(i, 3, item)
             item = QTableWidgetItem(j['rate'])
             table.setItem(i, 4, item)
             quantity = QLineEdit()
             quantity.setValidator(QIntValidator(0, 99999))
             table.setCellWidget(i, 5, quantity)
     table.setColumnWidth(0, table.width() / 9)
     table.setColumnWidth(1, table.width() / 5)
     table.setColumnWidth(2, table.width() / 5)
     table.setColumnWidth(3, table.width() / 5)
     table.setColumnWidth(4, table.width() / 5)
コード例 #15
0
 def populateClipsList(self, clipsList):
     self.selected_clip = None
     self.btnSelect.setEnabled(False)
     self.clipTable.clearContents()
     self.clipTable.setRowCount(len(clipsList))
     for idx, (clip_id, val) in enumerate(clipsList.iteritems()):
         self.clipTable.setItem(idx, 0, QTableWidgetItem(str(clip_id)))
         self.clipTable.setItem(idx, 1, QTableWidgetItem(val['name']))
コード例 #16
0
    def _showImportTrace(self, restrict=True):
        """
        This is the GUI part of the PIN trace import functionality
        """
        self._console_output("Importing PIN trace information from file...")

        # Color for the basic blocks hit during the trace
        col = QtGui.QColorDialog.getColor()
        if col.isValid():
            # IDA works with BGR (annoying)
            ida_color = misc.pyside_to_ida_color(col.name())

        else:
            # Probably closed the QColorDialog
            self._console_output(
                "[!] Problem getting color for trace. Aborting.")
            return

        try:
            imported_info_dict = self.ie.ti.import_data(ida_color)

        except:
            self._console_output("[!] Problem importing from file", err=True)
            self._console_output(traceback.format_exc(), err=True)
            return

        self.table.setColumnCount(5)
        self.table.setHorizontalHeaderLabels(
            ('Thread ID', 'From', 'To', 'From (name)', 'To (name)'))
        self.table_label.setText("Imported information from PIN trace")
        self.table.clearContents()
        self.table.setRowCount(0)

        # Fill with contents
        # TODO: This could be better in a QTree or maybe adding
        # a dropdown to select the thread id...
        idx = 0
        for tid, call_list in imported_info_dict.iteritems():
            self._console_output("Processing Thread ID %d" % tid)

            for u_ea, v_ea in call_list:

                self.table.insertRow(idx)
                tid_item = QTableWidgetItem("%d" % tid)
                u_item = QTableWidgetItem("%x" % u_ea)
                u_item.setFlags(u_item.flags() ^ QtCore.Qt.ItemIsEditable)
                v_item = QTableWidgetItem("%x" % v_ea)
                v_item.setFlags(v_item.flags() ^ QtCore.Qt.ItemIsEditable)
                from_item = QTableWidgetItem(misc.get_function_name(u_ea))
                to_item = QTableWidgetItem(misc.get_function_name(v_ea))

                self.table.setItem(idx, 0, tid_item)
                self.table.setItem(idx, 1, u_item)
                self.table.setItem(idx, 2, v_item)
                self.table.setItem(idx, 3, from_item)
                self.table.setItem(idx, 4, to_item)

                idx += 1
コード例 #17
0
ファイル: marker.py プロジェクト: Radymus/label-marker
 def showData(self):
     self.tableView.setRowCount(len(self.root))        
     for ix, child in enumerate(self.root):
         s = u""+child.attrib["priceForFull"]+u"Kè/"+child.attrib["mainUnitDescription"]
         self.tableView.setItem(ix, 0, QTableWidgetItem(s))
         s = u""+child.attrib["priceForUnit"]+u"Kè"
         self.tableView.setItem(ix, 1, QTableWidgetItem(s))
         self.tableView.setItem(ix, 2, QTableWidgetItem(child.attrib["weight"]+child.attrib["unitDescription"]))
         self.tableView.setItem(ix, 3, QTableWidgetItem(unicode(u""+child.attrib["description"])))   
コード例 #18
0
 def create_rows(self, users):
     self.users_table.setRowCount(len(users))
     for i in range(len(users)):
         name = QTableWidgetItem(users[i].name)
         surname = QTableWidgetItem(users[i].surname)
         job = QTableWidgetItem(users[i].job)
         self.users_table.setItem(i, 0, name)
         self.users_table.setItem(i, 1, surname)
         self.users_table.setItem(i, 2, job)
コード例 #19
0
ファイル: menu.py プロジェクト: tinavas/FSERP
 def __init__(self):
     ####
     logger.info('Inside MenuDetails')
     self.menudetail_tab_1 = QWidget()
     self.menudetail_tab_1.setObjectName("menudetail_tab_1")
     self.gridLayout_20 = QGridLayout(self.menudetail_tab_1)
     self.gridLayout_20.setObjectName("gridLayout_20")
     self.menu_table = QTableWidget(self.menudetail_tab_1)
     self.menu_table.setSortingEnabled(True)
     self.menu_table.setObjectName("menu_table")
     self.menu_table.setColumnCount(4)
     self.menu_table.setRowCount(0)
     item = QTableWidgetItem()
     self.menu_table.setHorizontalHeaderItem(0, item)
     item = QTableWidgetItem()
     self.menu_table.setHorizontalHeaderItem(1, item)
     item = QTableWidgetItem()
     self.menu_table.setHorizontalHeaderItem(2, item)
     item = QTableWidgetItem()
     self.menu_table.setHorizontalHeaderItem(3, item)
     self.menu_table.horizontalHeader().setCascadingSectionResizes(False)
     self.menu_table.horizontalHeader().setStretchLastSection(True)
     self.menu_table.verticalHeader().setVisible(True)
     self.menu_table.verticalHeader().setCascadingSectionResizes(True)
     self.gridLayout_20.addWidget(self.menu_table, 0, 0, 1, 2)
     spacerItem22 = QSpacerItem(612, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
     self.gridLayout_20.addItem(spacerItem22, 1, 0, 1, 1)
     self.menu_table_add_button = QPushButton(self.menudetail_tab_1)
     self.menu_table_add_button.setObjectName("menu_table_add_button")
     self.gridLayout_20.addWidget(self.menu_table_add_button, 1, 1, 1, 1)
     ####retranslate
     self.menu_table.horizontalHeaderItem(0).setText(
         QApplication.translate("MainWindow", "Code", None, QApplication.UnicodeUTF8))
     self.menu_table.horizontalHeaderItem(1).setText(
         QApplication.translate("MainWindow", "Item", None, QApplication.UnicodeUTF8))
     self.menu_table.horizontalHeaderItem(2).setText(
         QApplication.translate("MainWindow", "Category", None, QApplication.UnicodeUTF8))
     self.menu_table.horizontalHeaderItem(3).setText(
         QApplication.translate("MainWindow", "Rate", None, QApplication.UnicodeUTF8))
     self.menu_table_add_button.setText(
         QApplication.translate("MainWindow", "Add New Dish", None, QApplication.UnicodeUTF8))
     # self.menu_table_add_button.setShortcut(
     # QApplication.translate("MainWindow", "Ctrl+E", None, QApplication.UnicodeUTF8))
     ###signals and slots && other stuffs
     # self.mainwindow = Ui_MainWindow  # just for the ease of finding the attributes in pycharm
     self.menu = MenuProduct()
     self.menu_table_add_button.clicked.connect(self.add_menu)
     self.menu_table.itemDoubleClicked.connect(self.popup_edit)
     self.menu_table.setSelectionBehavior(QAbstractItemView.SelectRows)
     self.menu_table.setEditTriggers(QAbstractItemView.NoEditTriggers)
     self.menu_table.setShowGrid(False)
     self.menu_table.setAlternatingRowColors(True)
     self.update_menu()
     self.popup = object
     self.menudetail_tab_1.setFocusPolicy(Qt.StrongFocus)
     self.menudetail_tab_1.focusInEvent = self.load_rows
     self.assign_shortcuts()
コード例 #20
0
 def createCustomEntry(self, model):
     """
     :type model: TypeEntry
     :rtype: QTableWidgetItem
     """
     return [
         QTableWidgetItem(model.name),
         QTableWidgetItem(str(model.news))
     ]
コード例 #21
0
 def _addObjectToTable(self, row, name, obj):
     typeName = obj.typeName
     print(typeName)
     print(name)
     tableItem = QTableWidgetItem(name)
     tableItem.setCheckState(Qt.Checked)
     self._ui.tableWidget.setItem(row,
                                  self.objectTableHeaderColumns['visible'],
                                  tableItem)
     self._ui.tableWidget.setItem(row,
                                  self.objectTableHeaderColumns['type'],
                                  QTableWidgetItem(typeName))
コード例 #22
0
ファイル: gui.py プロジェクト: tuxberlin/python-keyctl
    def _refresh_table(self):
        self._keylist = Key.list()

        self.ui.table1.setRowCount(len(self._keylist))

        for row, key in enumerate(self._keylist):
            self.ui.table1.setItem(row, 0, QTableWidgetItem(str(key.id)))
            self.ui.table1.setItem(row, 1, QTableWidgetItem(key.name))
            self.ui.table1.setItem(row, 2, QTableWidgetItem(key.data_hex))

        self.ui.table1.resizeColumnsToContents()

        self.ui.table1.clearSelection()
コード例 #23
0
ファイル: FoamBoundaryWidget.py プロジェクト: xj361685640/Cfd
 def updateDictView(self, varible_settings):
     i = 0
     self.clearDict()  # will clear contents, but leave row text empty
     N = self.tableWidget.rowCount()
     for k,v in varible_settings.items():
         # translate seq into unicode
         if i>=N:
             self.tableWidget.insertRow(i)
         kitem = QTableWidgetItem(k)  # also set flags and state, type
         vitem = QTableWidgetItem(v)  # automaticall convert str to unicode to feed QWidget?
         self.tableWidget.setItem(i, 0, kitem)
         self.tableWidget.setItem(i, 1, vitem)  # currently only works for string value !
         i += 1
コード例 #24
0
 def del_device(self):
     """
     delete all devices
     """
     global deviceList
     deviceList = []
     common.Log.info("delete all devices")
     deviceObj = device.Device()
     deviceObj.del_device()
     for i in range(2):
         self.device.setItem(i, 0, QTableWidgetItem(""))
         for j in range(2):
             self.device.setItem(i, j, QTableWidgetItem(""))
     self.statusEdit.setText("")
コード例 #25
0
 def updateDictView(self, varible_settings):
     i = 0
     self.clearDict()  # will clear contents, but leave row text empty
     N = self.tableWidget.rowCount()
     for k, v in varible_settings.items():
         # translate seq into unicode
         if i >= N:
             self.tableWidget.insertRow(i)
         kitem = QTableWidgetItem(
             unicode(k))  # also set flags and state, type
         vitem = QTableWidgetItem(unicode(v))
         #print(i, self.tableWidget.item(i, 0)) # debug: None
         self.tableWidget.setItem(i, 0, kitem)
         self.tableWidget.setItem(i, 1, vitem)
         i += 1
コード例 #26
0
    def widgets(self):

        access_type_str = self._variable_access.access_type
        ident_str = self._variable_access.variable.ident

        widgets = [
            QTableWidgetItem(access_type_str),
            QTableWidgetItem(ident_str),
            QTableWidgetItem(AddressTableWidgetItem(self._variable_access.location.ins_addr)),
            QTableWidgetItem("TODO"),
        ]

        for w in widgets:
            w.setFlags(w.flags() & ~Qt.ItemIsEditable)

        return widgets
コード例 #27
0
    def _markImmCompares(self):
        """
        Marks the immediate compares within the current function
        """
        self.output_window.append("Marking all immediate compares...")
        self.table_label.setText("Immediate compares within current function")

        INS_COLOR = 0x2020c0

        self.table.setColumnCount(2)
        self.table.setHorizontalHeaderLabels(("Address", "Disassembly"))
        self.table.clearContents()
        self.table.setRowCount(0)

        idx = 0
        for cmp_ea, dis in self.ba.find_imm_compares():

            self.table.insertRow(idx)

            addr_item = QTableWidgetItem("%x" % cmp_ea)
            addr_item.setFlags(addr_item.flags() ^ QtCore.Qt.ItemIsEditable)
            dis_item = cw.NumQTableWidgetItem("%s" % dis)

            self.table.setItem(idx, 0, addr_item)
            self.table.setItem(idx, 1, dis_item)

            misc.set_ins_color(cmp_ea, INS_COLOR)
            idx += 1
コード例 #28
0
 def _configureTable(self, item):
     # setup the various columns
     self.setColumnCount(
         len(item)
     )  # TODO: this might be buggy to set the columns only from the first item, which might be incomplete
     images_in_item = "images" in item.keys(
     )  #the item may not have images_in_item
     ordered_item = collections.OrderedDict()
     keys = item.keys()
     if images_in_item:
         keys.remove("images")
         self._images_in_items = True
     keys.sort(key=lambda key: key.lower())
     # bring the images key to be the first
     if images_in_item: keys = ["images"] + keys
     for key in keys:
         ordered_item[key] = item[key]
     headers = []
     self._orig_headers = keys[
         1:] if self._images_in_items else keys  # those are the headers before using capital first and so on
     for key in keys:
         first, rest = key[0], key[1:]
         header = first.upper() + rest.lower()
         headers.append(header)
     self._headers = headers
     for (i, header) in enumerate(headers):
         self.setHorizontalHeaderItem(i, QTableWidgetItem(header))
     self.horizontalHeader().setMovable(True)
    def _addObjectToTable(self, row, name, obj, checked=True):
        typeName = obj.typeName
        # print(typeName)
        # print(name)
        tableItem = QTableWidgetItem(name)
        if checked:
            tableItem.setCheckState(Qt.Checked)
        else:
            tableItem.setCheckState(Qt.Unchecked)

        self._ui.tableWidget.setItem(row,
                                     self.objectTableHeaderColumns['visible'],
                                     tableItem)
        self._ui.tableWidget.setItem(row,
                                     self.objectTableHeaderColumns['type'],
                                     QTableWidgetItem(typeName))
コード例 #30
0
    def _addTableItem(self, row, col, text=None):
        tableItem = QTableWidgetItem()
        if text is not None:
            tableItem.setText(text)

        self.table.setItem(row, col, tableItem)
        return tableItem