def update_graphics_script(self, s, keywords): '''Update the graphics script in the vr pane.''' pc = self; c = pc.c force = keywords.get('force') if pc.gs and not force: return if not pc.gs: splitter = c.free_layout.get_top_splitter() # Careful: we may be unit testing. if not splitter: g.trace('no splitter') return # Create the widgets. pc.gs = QtWidgets.QGraphicsScene(splitter) pc.gv = QtWidgets.QGraphicsView(pc.gs) w = pc.gv.viewport() # A QWidget # Embed the widgets. def delete_callback(): for w in (pc.gs, pc.gv): w.deleteLater() pc.gs = pc.gv = None pc.embed_widget(w, delete_callback=delete_callback) c.executeScript( script=s, namespace={'gs': pc.gs, 'gv': pc.gv})
def __init__(self, owner=None): self.owner = owner # a = QtGui.QApplication([]) # argc, argv ); QtWidgets.QWidget.__init__(self) uiPath = g.os_path_join(g.app.leoDir, 'plugins', 'GraphCanvas', 'GraphCanvas.ui') # change directory for this to work old_dir = os.getcwd() try: os.chdir(g.os_path_join(g.computeLeoDir(), "..")) form_class, base_class = uic.loadUiType(uiPath) self.owner.c.frame.log.createTab('Graph', widget=self) self.UI = form_class() self.UI.setupUi(self) finally: os.chdir(old_dir) self.canvas = QtWidgets.QGraphicsScene() self.canvasView = GraphicsView(self.owner, self.canvas) self.canvasView.setDragMode(QtWidgets.QGraphicsView.ScrollHandDrag) self.UI.canvasFrame.addWidget(self.canvasView) self.canvasView.setSceneRect(0, 0, 300, 300) self.canvasView.setRenderHints(QtGui.QPainter.Antialiasing) u = self.UI o = self.owner u.btnUpdate.clicked.connect(lambda checked: o.do_update()) u.btnGoto.clicked.connect(lambda checked: o.goto()) u.btnLoad.clicked.connect(lambda checked: o.loadGraph()) u.btnLoadSibs.clicked.connect(lambda checked: o.loadGraph('sibs')) u.btnLoadRecur.clicked.connect(lambda checked: o.loadGraph('recur')) u.btnLoadLinked.clicked.connect(lambda checked: o.loadLinked('linked')) u.btnLoadAll.clicked.connect(lambda checked: o.loadLinked('all')) u.btnUnLoad.clicked.connect(lambda checked: o.unLoad()) u.btnClear.clicked.connect(lambda checked: o.clear()) u.btnLocate.clicked.connect(lambda checked: o.locateNode()) u.btnReset.clicked.connect(lambda checked: o.resetNode()) u.btnColor.clicked.connect(lambda checked: o.setColor()) u.btnTextColor.clicked.connect(lambda checked: o.setTextColor()) u.btnClearFormatting.clicked.connect( lambda checked: o.clearFormatting()) u.btnRect.clicked.connect(lambda checked: o.setNode(nodeRect)) u.btnEllipse.clicked.connect(lambda checked: o.setNode(nodeEllipse)) u.btnDiamond.clicked.connect(lambda checked: o.setNode(nodeDiamond)) u.btnNone.clicked.connect(lambda checked: o.setNode(nodeNone)) u.btnTable.clicked.connect(lambda checked: o.setNode(nodeTable)) u.btnComment.clicked.connect(lambda checked: o.setNode(nodeComment)) u.btnImage.clicked.connect(lambda checked: o.setNode(nodeImage)) u.btnExport.clicked.connect(lambda checked: o.exportGraph()) u.chkHierarchy.clicked.connect(lambda checked: o.do_update()) menu = QtWidgets.QMenu(u.btnLayout) for name, func in o.layouts(): menu.addAction(name, func) u.btnLayout.setMenu(menu)