def hyperlink_dialog(self): dialog = QDialog(self.parent_window) dialog.setWindowTitle("Create a hyperlink") dialog.resize(DIALOG_SIZE_X, DIALOG_SIZE_Y) ok_button_anchor = QPushButton("&OK", dialog) ok_button_anchor.setEnabled(False) ok_button_anchor.clicked.connect( lambda: self.insert_anchor(url_edit.text(), urltext_edit.text())) ok_button_anchor.clicked.connect(dialog.hide) ok_button_anchor.setAutoDefault(True) cancel_button_anchor = QPushButton("&Cancel", dialog) cancel_button_anchor.clicked.connect(dialog.hide) cancel_button_anchor.setAutoDefault(True) url_label = QLabel("Link to:") url_edit = QLineEdit() url_edit.setPlaceholderText("URL") url_edit.textChanged.connect(lambda: self.enable_ok_button( ok_button_anchor, url_edit.text(), urltext_edit.text())) urltext_label = QLabel("Text to display:") urltext_edit = QLineEdit() urltext_edit.setPlaceholderText("Text") urltext_edit.textChanged.connect(lambda: self.enable_ok_button( ok_button_anchor, url_edit.text(), urltext_edit.text())) button_box = QHBoxLayout() button_box.addStretch(1) button_box.addWidget(cancel_button_anchor) button_box.addWidget(ok_button_anchor) dialog_vbox = QVBoxLayout() dialog_vbox.addWidget(url_label) dialog_vbox.addWidget(url_edit) dialog_vbox.addWidget(urltext_label) dialog_vbox.addWidget(urltext_edit) dialog_vbox.addLayout(button_box) dialog.setLayout(dialog_vbox) # if user already selected text, put it in urltext_edit if self.selected_text: if self.selected_is_url: url_edit.setText(self.selected_text) urltext_edit.setFocus() else: urltext_edit.setText(self.selected_text) url_edit.setFocus() dialog.exec()
def get_id_and_pass_from_user(mw: aqt.main.AnkiQt, username: str = "", password: str = "") -> tuple[str, str]: diag = QDialog(mw) diag.setWindowTitle("Anki") disable_help_button(diag) diag.setWindowModality(Qt.WindowModality.WindowModal) vbox = QVBoxLayout() info_label = QLabel( without_unicode_isolation( tr.sync_account_required( link="https://ankiweb.net/account/register"))) info_label.setOpenExternalLinks(True) info_label.setWordWrap(True) vbox.addWidget(info_label) vbox.addSpacing(20) g = QGridLayout() l1 = QLabel(tr.sync_ankiweb_id_label()) g.addWidget(l1, 0, 0) user = QLineEdit() user.setText(username) g.addWidget(user, 0, 1) l2 = QLabel(tr.sync_password_label()) g.addWidget(l2, 1, 0) passwd = QLineEdit() passwd.setText(password) passwd.setEchoMode(QLineEdit.EchoMode.Password) g.addWidget(passwd, 1, 1) vbox.addLayout(g) bb = QDialogButtonBox( QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel) # type: ignore bb.button(QDialogButtonBox.StandardButton.Ok).setAutoDefault(True) qconnect(bb.accepted, diag.accept) qconnect(bb.rejected, diag.reject) vbox.addWidget(bb) diag.setLayout(vbox) diag.show() accepted = diag.exec() if not accepted: return ("", "") return (user.text().strip(), passwd.text())
def create_link(editor): dialog = QDialog(editor.parentWindow, Qt.Dialog) form = link.Ui_Dialog() form.setupUi(dialog) # Default values # Line of text form.line_display.setText(editor.web.selectedText()) # open form.combo_open_in.setCurrentIndex({ "Browser": 0, "Previewer": 1 }.get(getUserOption("Last open in", "Browser"), 0)) # search form.combo_search_type.setCurrentIndex({ "Note": 0, "Card": 1, "Query": 2 }.get(getUserOption("Last search type", "Note"), 0)) # query def default() -> str: search_type = ["Note", "Card", "Query"][form.combo_search_type.currentIndex()] if search_type == "Note": if editor.note: return str(editor.note.id) elif search_type == "Card": if editor.card: return str(editor.card.id) elif editor.note: cards = editor.note.cards() if cards: return str(cards[0].id) else: return getUserOption("Last query", "") return "" def set_default() -> None: form.line_search.setText(default()) set_default() form.button_current.clicked.connect(set_default) ## dialog.exec() mw.setupDialogGC(dialog) # Get values # Line of text text = form.line_display.text() setUserOption("Last open in", text) # open open_in = ["Browser search", "Previewer"][form.combo_open_in.currentIndex()] setUserOption("Last open in", open_in) # search search_type = ["Note", "Card", "Query"][form.combo_search_type.currentIndex()] setUserOption("Last search type", search_type) # query query = form.line_search.text() setUserOption("Last query", query) # Replace text if search_type == "Note": query = f"nid:{query}" elif search_type == "Card": query = f"cid:{query}" text = f"""<a onclick="pycmd('{open_in}:{query}')">{text}</a>""" editor.web.eval( f"document.execCommand('insertHTML', false, {json.dumps(text)});")