def _build_gui(self): self.w = w = QtWidgets.QWidget() w.setObjectName('show_livecode') w.setLayout(QtWidgets.QVBoxLayout()) self.status = QtWidgets.QLabel() w.layout().addWidget(self.status) self.text = QtWidgets.QTextBrowser() w.layout().addWidget(self.text) h = QtWidgets.QHBoxLayout() w.layout().addLayout(h) self.activate = QtWidgets.QPushButton("Stop") self.activate.setToolTip("Start / stop live code display") h.addWidget(self.activate) self.activate.clicked.connect(lambda checked: self.toggle_active()) b = QtWidgets.QPushButton("Run here") b.setToolTip("Show live code for this node") h.addWidget(b) b.clicked.connect(lambda checked: self.run_here()) b = QtWidgets.QPushButton("Go to node") b.setToolTip("Jump to node where live code is shown") h.addWidget(b) b.clicked.connect(lambda checked: self.goto_node()) b = QtWidgets.QPushButton("Dump") b.setToolTip("AST dump to stdout (devel. option)") h.addWidget(b) b.clicked.connect( lambda checked, self=self: setattr(self, 'dump', True))
def ensure_text_widget(self): '''Swap a text widget into the rendering pane if necessary.''' c, pc = self.c, self if pc.must_change_widget(QtWidgets.QTextBrowser): # Instantiate a new QTextBrowser. # Allow non-ctrl clicks to open url's. w = QtWidgets.QTextBrowser() def handleClick(url, w=w): import leo.plugins.qt_text as qt_text wrapper = qt_text.QTextEditWrapper(w, name='vr-body', c=c) event = g.Bunch(c=c, w=wrapper) g.openUrlOnClick(event, url=url) # if self.w and hasattr(self.w, 'anchorClicked'): # try: # self.w.anchorClicked.disconnect() # except Exception: # g.es_exception() w.anchorClicked.connect(handleClick) w.setOpenLinks(False) pc.embed_widget(w) # Creates w.wrapper assert(w == pc.w) return pc.w
def create_widgets(self): '''Create the big-text buttons and text warning area.''' c = self.c self.active_flag = True warning = self.warning_message() self.old_w.setPlainText(self.p.b) # essential. self.w = w = QtWidgets.QWidget() # No parent needed. layout = QtWidgets.QVBoxLayout() # No parent needed. w.setLayout(layout) w.text = tw = QtWidgets.QTextBrowser() tw.setText(warning) tw.setObjectName('bigtextwarning') self.widgets['bigtextwarning'] = tw layout.addWidget(tw) table = [ ('remove', 'Remove These Buttons', self.remove), ('load_nc', 'Load Text With @killcolor', self.load_nc), ('more', 'Double limit for this session', self.more), ('copy', 'Copy body to clipboard', self.copy), ] if self.s.startswith('@killcolor'): del table[1] for key, label, func in table: self.widgets[key] = button = QtWidgets.QPushButton(label) layout.addWidget(button) def button_callback(checked, func=func): func() button.clicked.connect(button_callback) # layout.addItem(QtWidgets.QSpacerItem( # 10, 10, vPolicy=QtWidgets.QSizePolicy.Expanding)) self.layout.addWidget(w) w.show()
def ensure_text_widget(self): '''Swap a text widget into the rendering pane if necessary.''' c, pc = self.c, self if pc.must_change_widget(QtWidgets.QTextBrowser): # Instantiate a new QTextBrowser. # Allow non-ctrl clicks to open url's. w = QtWidgets.QTextBrowser() def handleClick(url, w=w): event = g.Bunch(c=c, w=w) g.openUrlOnClick(event, url=url) w.anchorClicked.connect(handleClick) w.setOpenLinks(False) pc.embed_widget(w) # Creates w.wrapper assert(w == pc.w) return pc.w
def create_ui(self): self.w = w = QtWidgets.QWidget() w.setWindowTitle("Leo search") lay = QtWidgets.QVBoxLayout() if (not QtWebKitWidgets # Workaround #1114: https://github.com/leo-editor/leo-editor/issues/1114 or isQt5 and sys.platform.startswith('win') # Workaround #304: https://github.com/leo-editor/leo-editor/issues/304 ): self.web = web = QtWidgets.QTextBrowser(w) else: self.web = web = QtWebKitWidgets.QWebView(w) try: # PyQt4 self.web.linkClicked.connect(self._lnk_handler) # AttributeError: 'QWebEngineView' object has no attribute 'linkClicked' except AttributeError: # PyQt5 pass # Not clear what to do. self.led = led = QtWidgets.QLineEdit(w) led.returnPressed.connect(self.docmd) lay.addWidget(led) lay.addWidget(web) self.lc = lc = LeoConnector() try: web.page().mainFrame().addToJavaScriptWindowObject("leo", lc) web.page().setLinkDelegationPolicy( QtWebKitWidgets.QWebPage.DelegateAllLinks) except AttributeError: # PyQt5 pass # Not clear what to do. w.setLayout(lay) #web.load(QUrl("http://google.fi")) self.show_help() # w.show() def help_handler(tgt, qs): if qs == "help": self.show_help() return True return False self.add_cmd_handler(help_handler) self.led.setFocus()