def __init__(self, segments=None):
"""
Initializes GUI components.
Takes either no arguments, or a dict containing segment names and starting addresses
"""
super(MemoryWindow, self).__init__()
self.setWindowTitle("Memory")
self.stack_pointer = None
self.base_pointer = None
self.retn_address = None
self.instr_pointer = None
if segments is not None:
if type(segments) is not OrderedDict:
print("Error: Use collections.OrderedDict instead of dict for segment list")
self._segments = segments.keys()
self.segment_starts = segments
self.setLayout(QtWidgets.QVBoxLayout())
self._layout = self.layout()
self._picker = QtWidgets.QComboBox()
for segment in self._segments:
self._picker.addItem(segment)
self._layout.addWidget(self._picker)
# Call change_display_segment whenever the user messes with the combobox
self._picker.currentIndexChanged.connect(self.change_display_segment)
# viewstack controls switching between the different segments views
self.viewstack = QtWidgets.QStackedWidget()
for segment in self._segments:
if self.segment_starts is None:
disp = HexDisplay()
disp.update_addr(0, "This is the " + segment + " segment")
else:
disp = HexDisplay(starting_address=self.segment_starts[segment])
self.viewstack.addWidget(disp)
self._layout.addWidget(self.viewstack)
self.setMaximumWidth(self.viewstack.widget(0).maximumWidth() + 20)
self.setMinimumWidth(self.viewstack.widget(0).minimumWidth() + 20)
self.setObjectName('Memory_Window')
评论列表
文章目录