def __init__(self, parent=None, win=None, xrefs=None, headers=None):
super(XrefValueWindow, self).__init__(parent)
self.parent = parent
self.mainwin = win
self.xrefs = xrefs
self.headers = headers
self.reverse_strings = {}
self.proxyModel = QtGui.QSortFilterProxyModel()
self.proxyModel.setDynamicSortFilter(True)
self.model = QtGui.QStandardItemModel(len(self.xrefs), len(self.headers), self)
column = 0
for header in headers:
self.model.setHeaderData(column, QtCore.Qt.Horizontal, header)
column += 1
row = 0
for ref in xrefs:
for column in range(len(self.headers)):
self.model.setData(self.model.index(row, column, QtCore.QModelIndex()), "%s" % ref[column])
row += 1
self.proxyModel.setSourceModel(self.model)
self.setRootIsDecorated(False)
self.setAlternatingRowColors(True)
self.setModel(self.proxyModel)
self.setSortingEnabled(True)
self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.doubleClicked.connect(self.slotDoubleClicked)
python类QStandardItemModel()的实例源码
def __init__(self, parent=None, win=None, session=None):
super(StringsValueWindow, self).__init__(parent)
self.mainwin = win
self.session = session
self.title = "Strings"
self.reverse_strings = {}
self.proxyModel = QtGui.QSortFilterProxyModel()
self.proxyModel.setDynamicSortFilter(True)
self.model = QtGui.QStandardItemModel(self.session.get_nb_strings(), 4, self)
self.model.setHeaderData(0, QtCore.Qt.Horizontal, "String")
self.model.setHeaderData(1, QtCore.Qt.Horizontal, "Usage")
self.model.setHeaderData(2, QtCore.Qt.Horizontal, "Filename")
self.model.setHeaderData(3, QtCore.Qt.Horizontal, "Digest")
row = 0
for digest, filename, strings_analysis in self.session.get_strings():
for string_value in strings_analysis:
self.model.setData(self.model.index(row, 0, QtCore.QModelIndex()), repr(string_value))
self.model.setData(self.model.index(row, 1, QtCore.QModelIndex()), len(strings_analysis[string_value].get_xref_from()))
self.model.setData(self.model.index(row, 2, QtCore.QModelIndex()), filename)
self.model.setData(self.model.index(row, 3, QtCore.QModelIndex()), digest)
self.reverse_strings[repr(string_value) + digest] = strings_analysis[string_value]
row += 1
self.proxyModel.setSourceModel(self.model)
self.setRootIsDecorated(False)
self.setAlternatingRowColors(True)
self.setModel(self.proxyModel)
self.setSortingEnabled(True)
self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.doubleClicked.connect(self.slotDoubleClicked)
def __init__(self, parent=None, win=None, xrefs=None, headers=None):
super(XrefValueWindow, self).__init__(parent)
self.parent = parent
self.mainwin = win
self.xrefs = xrefs
self.headers = headers
self.reverse_strings = {}
self.proxyModel = QtGui.QSortFilterProxyModel()
self.proxyModel.setDynamicSortFilter(True)
self.model = QtGui.QStandardItemModel(len(self.xrefs), len(self.headers), self)
column = 0
for header in headers:
self.model.setHeaderData(column, QtCore.Qt.Horizontal, header)
column += 1
row = 0
for ref in xrefs:
for column in range(len(self.headers)):
self.model.setData(self.model.index(row, column, QtCore.QModelIndex()), "%s" % ref[column])
row += 1
self.proxyModel.setSourceModel(self.model)
self.setRootIsDecorated(False)
self.setAlternatingRowColors(True)
self.setModel(self.proxyModel)
self.setSortingEnabled(True)
self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.doubleClicked.connect(self.slotDoubleClicked)
def __init__(self, parent=None, win=None, session=None):
super(StringsValueWindow, self).__init__(parent)
self.mainwin = win
self.session = session
self.title = "Strings"
self.reverse_strings = {}
self.proxyModel = QtGui.QSortFilterProxyModel()
self.proxyModel.setDynamicSortFilter(True)
self.model = QtGui.QStandardItemModel(self.session.get_nb_strings(), 4, self)
self.model.setHeaderData(0, QtCore.Qt.Horizontal, "String")
self.model.setHeaderData(1, QtCore.Qt.Horizontal, "Usage")
self.model.setHeaderData(2, QtCore.Qt.Horizontal, "Filename")
self.model.setHeaderData(3, QtCore.Qt.Horizontal, "Digest")
row = 0
for digest, filename, strings_analysis in self.session.get_strings():
for string_value in strings_analysis:
self.model.setData(self.model.index(row, 0, QtCore.QModelIndex()), repr(string_value))
self.model.setData(self.model.index(row, 1, QtCore.QModelIndex()), len(strings_analysis[string_value].get_xref_from()))
self.model.setData(self.model.index(row, 2, QtCore.QModelIndex()), filename)
self.model.setData(self.model.index(row, 3, QtCore.QModelIndex()), digest)
self.reverse_strings[repr(string_value) + digest] = strings_analysis[string_value]
row += 1
self.proxyModel.setSourceModel(self.model)
self.setRootIsDecorated(False)
self.setAlternatingRowColors(True)
self.setModel(self.proxyModel)
self.setSortingEnabled(True)
self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.doubleClicked.connect(self.slotDoubleClicked)
def createWidgets(self):
self.item_list_model = QtGui.QStandardItemModel(self)
self.item_list_model.setSortRole(QtCore.Qt.DisplayRole)
self.item_list_model.dataChanged.connect(self.handleDataChange)
self.setModel(self.item_list_model)
self.item_selection_model = self.selectionModel()
self.setMinimumHeight(60)
self.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred))
def array_to_model(self, array):
model = QtGui.QStandardItemModel()
parentItem = model.invisibleRootItem()
for ntuple in array:
tag = ntuple[0]
value = ntuple[1]
if isinstance(value, dict):
self.recurse_dic_to_item(value, parentItem)
else:
item = QtGui.QStandardItem(tag + str(value))
parentItem.appendRow(item)
return parentItem
def dic_to_model(self, dic):
model = QtGui.QStandardItemModel()
parentItem = model.invisibleRootItem()
self.recurse_dic_to_item(dic, parentItem)
return model
def array_to_model(self, array):
model = QtGui.QStandardItemModel()
parentItem = model.invisibleRootItem()
for ntuple in array:
tag = ntuple[0]
value = ntuple[1]
if isinstance(value, dict):
self.recurse_dic_to_item(value, parentItem)
else:
item = QtGui.QStandardItem(tag + str(value))
parentItem.appendRow(item)
return parentItem
def dic_to_model(self, dic):
model = QtGui.QStandardItemModel()
parentItem = model.invisibleRootItem()
self.recurse_dic_to_item(dic, parentItem)
return model
def __init__(self, parent=None, win=None, xrefs=None):
super(XrefListView, self).__init__(parent)
self.setMinimumSize(600, 400) #TODO: adjust window depending on text displayed
self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.mainwin = win
self.parent = parent
self.doubleClicked.connect(self.doubleClickedHandler)
model = QtGui.QStandardItemModel(self)
for x in xrefs:
item = QtGui.QStandardItem(x)
model.appendRow(item)
self.setModel(model)
def __init__(self, parent=None, win=None, xrefs=None):
super(XrefListView, self).__init__(parent)
self.setMinimumSize(600, 400) #TODO: adjust window depending on text displayed
self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.mainwin = win
self.parent = parent
self.doubleClicked.connect(self.doubleClickedHandler)
model = QtGui.QStandardItemModel(self)
for x in xrefs:
item = QtGui.QStandardItem(x)
model.appendRow(item)
self.setModel(model)
def __init__(self):
super(CheckableComboBox, self).__init__()
self.view().pressed.connect(self.handleItemPressed)
self.setModel(QtGui.QStandardItemModel(self))