def __init__(self, vw, parent=None): self.vw = vw self.fva = None self.vwgui = vw.getVivGui() self.curemu = None self.cureffects = None self.symctx = viv_sym_analysis.getSymbolikAnalysisContext(vw, consolve=True) self.symexpr = viv_sym_expression.SymbolikExpressionParser(defwidth=vw.psize) if self.symctx is None: raise Exception('No Symboliks For: %s (yet)' % vw.getMeta('Architecture')) QWidget.__init__(self, parent=parent) e_q_memory.EnviNavMixin.__init__(self) self.setEnviNavName('Symboliks%d' % next(self.viewidx)) self.exprtext = QLineEdit(parent=self) self.constraintext = QLineEdit(parent=self) self.alleffs = QCheckBox('all effects', parent=self) self.alleffs.stateChanged.connect(self.rendSymbolikPath) self.loop_count = QSpinBox(parent=self) looplabel = QLabel("Max Loops:", parent=self) self.pathview = VivSymbolikPathsView(vw, parent=self) self.memcanvas = e_q_memcanvas.VQMemoryCanvas(vw, syms=vw, parent=self) self.pathview.pathSelected.connect(self.symPathSelected) self.exprtext.returnPressed.connect(self.renderSymbolikPaths) self.constraintext.returnPressed.connect(self.renderSymbolikPaths) fvalabel = QLabel("Function VA:", parent=self) inccblabel = QLabel("Must Include VA:", parent=self) navbox = HBox(fvalabel, self.exprtext, inccblabel, self.constraintext, looplabel, self.loop_count, self.alleffs) mainbox = VBox() mainbox.addLayout(navbox) mainbox.addWidget(self.pathview) mainbox.addWidget(self.memcanvas) self.setLayout(mainbox) self.updateWindowTitle()
def initMemoryCanvas(self, memobj, syms=None): return e_memcanvas_qt.VQMemoryCanvas(memobj, syms=syms, parent=self)