def miMessage(text, parent=False):
    title = "Migaku"
    if parent is False:
        parent = aqt.mw.app.activeWindow() or aqt.mw
    icon = QIcon(join(addon_path, 'icons', 'migaku.png'))
    mb = QMessageBox(parent)
    mb.setWindowIcon(icon)
    mb.setWindowTitle(title)
    cb = QCheckBox("Don't show me the notice about this video again.")
    wv = AnkiWebView()
    wv._page._bridge.onCmd = attemptOpenLink
    wv.setFixedSize(680, 450)
    wv.page().setHtml(text)
    wide = QWidget()
    wide.setFixedSize(18, 18)
    mb.layout().addWidget(wv, 0, 1)
    mb.layout().addWidget(wide, 0, 2)
    mb.layout().setColumnStretch(0, 3)
    mb.layout().addWidget(cb, 1, 1)
    b = mb.addButton(QMessageBox.Ok)
    b.setFixedSize(100, 30)
    b.setDefault(True)
    mb.exec_()
    wv.deleteLater()
    if cb.isChecked():
        return True
    else:
        return False
Exemple #2
0
    def setup_preview(self) -> None:
        pform = self.pform
        self.preview_web = AnkiWebView(title="card layout")
        pform.verticalLayout.addWidget(self.preview_web)
        pform.verticalLayout.setStretch(1, 99)
        pform.preview_front.isChecked()
        qconnect(pform.preview_front.clicked, self.on_preview_toggled)
        qconnect(pform.preview_back.clicked, self.on_preview_toggled)
        pform.preview_settings.setText(
            f"{tr.card_templates_preview_settings()} {downArrow()}")
        qconnect(pform.preview_settings.clicked, self.on_preview_settings)

        self.preview_web.stdHtml(
            self.mw.reviewer.revHtml(),
            css=["css/reviewer.css"],
            js=[
                "js/mathjax.js",
                "js/vendor/mathjax/tex-chtml.js",
                "js/reviewer.js",
            ],
            context=self,
        )
        self.preview_web.set_bridge_command(self._on_bridge_cmd, self)

        if self._isCloze():
            nums = list(self.note.cloze_numbers_in_fields())
            if self.ord + 1 not in nums:
                # current card is empty
                nums.append(self.ord + 1)
            self.cloze_numbers = sorted(nums)
            self.setup_cloze_number_box()
        else:
            self.cloze_numbers = []
            self.pform.cloze_number_combo.setHidden(True)
Exemple #3
0
    def _create_gui(self):
        self.setWindowTitle(_("Preview"))

        qconnect(self.finished, self._on_finished)
        self.silentlyClose = True
        self.vbox = QVBoxLayout()
        self.vbox.setContentsMargins(0, 0, 0, 0)
        self._web = AnkiWebView(title="previewer")
        self.vbox.addWidget(self._web)
        self.bottombar = QHBoxLayout()
        self.bbox = QDialogButtonBox()

        self._replay = self.bbox.addButton(
            _("Replay Audio"), QDialogButtonBox.ActionRole
        )
        self._replay.setAutoDefault(False)
        self._replay.setShortcut(QKeySequence("R"))
        self._replay.setToolTip(_("Shortcut key: %s" % "R"))
        qconnect(self._replay.clicked, self._on_replay_audio)

        self.both_sides_button = QCheckBox(_("Show Both Sides"))
        self.both_sides_button.setShortcut(QKeySequence("B"))
        self.both_sides_button.setToolTip(_("Shortcut key: %s" % "B"))
        self.bbox.addButton(self.both_sides_button, QDialogButtonBox.ActionRole)
        self._show_both_sides = self.check_preview_both_config()
        self.both_sides_button.setChecked(self._show_both_sides)
        qconnect(self.both_sides_button.toggled, self._on_show_both_sides)

        self.bottombar.addWidget(self.bbox)
        self.vbox.addLayout(self.bottombar)
        self.setLayout(self.vbox)
        restoreGeom(self, "preview")
Exemple #4
0
    def _create_gui(self) -> None:
        self.setWindowTitle(tr.actions_preview())

        self.close_shortcut = QShortcut(QKeySequence("Ctrl+Shift+P"), self)
        qconnect(self.close_shortcut.activated, self.close)

        qconnect(self.finished, self._on_finished)
        self.silentlyClose = True
        self.vbox = QVBoxLayout()
        self.vbox.setContentsMargins(0, 0, 0, 0)
        self._web = AnkiWebView(title="previewer")
        self.vbox.addWidget(self._web)
        self.bbox = QDialogButtonBox()

        self._replay = self.bbox.addButton(tr.actions_replay_audio(),
                                           QDialogButtonBox.ActionRole)
        self._replay.setAutoDefault(False)
        self._replay.setShortcut(QKeySequence("R"))
        self._replay.setToolTip(tr.actions_shortcut_key(val="R"))
        qconnect(self._replay.clicked, self._on_replay_audio)

        both_sides_button = QCheckBox(tr.qt_misc_back_side_only())
        both_sides_button.setShortcut(QKeySequence("B"))
        both_sides_button.setToolTip(tr.actions_shortcut_key(val="B"))
        self.bbox.addButton(both_sides_button, QDialogButtonBox.ActionRole)
        self._show_both_sides = self.mw.col.get_config_bool(
            Config.Bool.PREVIEW_BOTH_SIDES)
        both_sides_button.setChecked(self._show_both_sides)
        qconnect(both_sides_button.toggled, self._on_show_both_sides)

        self.vbox.addWidget(self.bbox)
        self.setLayout(self.vbox)
        restoreGeom(self, "preview")
Exemple #5
0
    def _create_gui(self):
        self.setWindowTitle(tr(TR.ACTIONS_PREVIEW))

        qconnect(self.finished, self._on_finished)
        self.silentlyClose = True
        self.vbox = QVBoxLayout()
        self.vbox.setContentsMargins(0, 0, 0, 0)
        self._web = AnkiWebView(title="previewer")
        self.vbox.addWidget(self._web)
        self.bbox = QDialogButtonBox()

        self._replay = self.bbox.addButton(
            tr(TR.ACTIONS_REPLAY_AUDIO), QDialogButtonBox.ActionRole
        )
        self._replay.setAutoDefault(False)
        self._replay.setShortcut(QKeySequence("R"))
        self._replay.setToolTip(tr(TR.ACTIONS_SHORTCUT_KEY, val="R"))
        qconnect(self._replay.clicked, self._on_replay_audio)

        both_sides_button = QCheckBox(tr(TR.QT_MISC_BACK_SIDE_ONLY))
        both_sides_button.setShortcut(QKeySequence("B"))
        both_sides_button.setToolTip(tr(TR.ACTIONS_SHORTCUT_KEY, val="B"))
        self.bbox.addButton(both_sides_button, QDialogButtonBox.ActionRole)
        self._show_both_sides = self.mw.col.conf.get("previewBothSides", False)
        both_sides_button.setChecked(self._show_both_sides)
        qconnect(both_sides_button.toggled, self._on_show_both_sides)

        self.vbox.addWidget(self.bbox)
        self.setLayout(self.vbox)
        restoreGeom(self, "preview")
Exemple #6
0
    def setupUi(self, About):
        About.setObjectName("About")
        About.resize(410, 664)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(About.sizePolicy().hasHeightForWidth())
        About.setSizePolicy(sizePolicy)
        self.vboxlayout = QtWidgets.QVBoxLayout(About)
        self.vboxlayout.setContentsMargins(0, 0, 0, 0)
        self.vboxlayout.setObjectName("vboxlayout")
        self.label = AnkiWebView(About)
        self.label.setProperty("url", QtCore.QUrl("about:blank"))
        self.label.setObjectName("label")
        self.vboxlayout.addWidget(self.label)
        self.buttonBox = QtWidgets.QDialogButtonBox(About)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.vboxlayout.addWidget(self.buttonBox)

        self.retranslateUi(About)
        self.buttonBox.accepted.connect(About.accept)
        self.buttonBox.rejected.connect(About.reject)
        QtCore.QMetaObject.connectSlotsByName(About)
Exemple #7
0
 def setupWebviews(self):
     pform = self.pform
     pform.frontWeb = AnkiWebView()
     pform.frontPrevBox.addWidget(pform.frontWeb)
     pform.backWeb = AnkiWebView()
     pform.backPrevBox.addWidget(pform.backWeb)
     jsinc = [
         "jquery.js", "browsersel.js", "mathjax/conf.js",
         "mathjax/MathJax.js", "reviewer.js"
     ]
     pform.frontWeb.stdHtml(self.mw.reviewer.revHtml(),
                            css=["reviewer.css"],
                            js=jsinc)
     pform.backWeb.stdHtml(self.mw.reviewer.revHtml(),
                           css=["reviewer.css"],
                           js=jsinc)
Exemple #8
0
 def addTab(self, t):
     w = QWidget()
     l = QHBoxLayout()
     l.setContentsMargins(0,0,0,0)
     l.setSpacing(3)
     left = QWidget()
     # template area
     tform = aqt.forms.template.Ui_Form()
     tform.setupUi(left)
     tform.label1.setText(" →")
     tform.label2.setText(" →")
     tform.labelc1.setText(" ↗")
     tform.labelc2.setText(" ↘")
     if self.style().objectName() == "gtk+":
         # gtk+ requires margins in inner layout
         tform.tlayout1.setContentsMargins(0, 11, 0, 0)
         tform.tlayout2.setContentsMargins(0, 11, 0, 0)
         tform.tlayout3.setContentsMargins(0, 11, 0, 0)
     if len(self.cards) > 1:
         tform.groupBox_3.setTitle(_(
             "Styling (shared between cards)"))
     tform.front.textChanged.connect(self.saveCard)
     tform.css.textChanged.connect(self.saveCard)
     tform.back.textChanged.connect(self.saveCard)
     l.addWidget(left, 5)
     # preview area
     right = QWidget()
     pform = aqt.forms.preview.Ui_Form()
     pform.setupUi(right)
     if self.style().objectName() == "gtk+":
         # gtk+ requires margins in inner layout
         pform.frontPrevBox.setContentsMargins(0, 11, 0, 0)
         pform.backPrevBox.setContentsMargins(0, 11, 0, 0)
     # for cloze notes, show that it's one of n cards
     if self.model['type'] == MODEL_CLOZE:
         cnt = len(self.mm.availOrds(
             self.model, joinFields(self.note.fields)))
         for g in pform.groupBox, pform.groupBox_2:
             g.setTitle(g.title() + _(" (1 of %d)") % max(cnt, 1))
     pform.frontWeb = AnkiWebView()
     pform.frontPrevBox.addWidget(pform.frontWeb)
     pform.backWeb = AnkiWebView()
     pform.backPrevBox.addWidget(pform.backWeb)
     l.addWidget(right, 5)
     w.setLayout(l)
     self.forms.append({'tform': tform, 'pform': pform})
     self.tabs.addTab(w, t['name'])
Exemple #9
0
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(607, 556)
        self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.web = AnkiWebView(Dialog)
        self.web.setProperty("url", QtCore.QUrl("about:blank"))
        self.web.setObjectName("web")
        self.verticalLayout.addWidget(self.web)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setContentsMargins(6, 6, 6, 6)
        self.horizontalLayout_3.setSpacing(8)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem)
        self.groupBox_2 = QtWidgets.QGroupBox(Dialog)
        self.groupBox_2.setTitle("")
        self.groupBox_2.setObjectName("groupBox_2")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.groupBox_2)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.groups = QtWidgets.QRadioButton(self.groupBox_2)
        self.groups.setChecked(True)
        self.groups.setObjectName("groups")
        self.horizontalLayout_2.addWidget(self.groups)
        self.all = QtWidgets.QRadioButton(self.groupBox_2)
        self.all.setObjectName("all")
        self.horizontalLayout_2.addWidget(self.all)
        self.horizontalLayout_3.addWidget(self.groupBox_2)
        self.groupBox = QtWidgets.QGroupBox(Dialog)
        self.groupBox.setTitle("")
        self.groupBox.setObjectName("groupBox")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.groupBox)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.month = QtWidgets.QRadioButton(self.groupBox)
        self.month.setChecked(True)
        self.month.setObjectName("month")
        self.horizontalLayout.addWidget(self.month)
        self.year = QtWidgets.QRadioButton(self.groupBox)
        self.year.setObjectName("year")
        self.horizontalLayout.addWidget(self.year)
        self.life = QtWidgets.QRadioButton(self.groupBox)
        self.life.setObjectName("life")
        self.horizontalLayout.addWidget(self.life)
        self.horizontalLayout_3.addWidget(self.groupBox)
        self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Close)
        self.buttonBox.setObjectName("buttonBox")
        self.horizontalLayout_3.addWidget(self.buttonBox)
        self.verticalLayout.addLayout(self.horizontalLayout_3)

        self.retranslateUi(Dialog)
        self.buttonBox.accepted.connect(Dialog.accept)
        self.buttonBox.rejected.connect(Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
Exemple #10
0
 def show(self):
     if not self.shown:
         self.web = AnkiWebView(self.mw)
         self.web.setMaximumWidth(400)
         self.shown = self.mw.addDockable(_("Card Info"), self.web)
         self.shown.connect(self.shown, SIGNAL("visibilityChanged(bool)"),
                            self._visChange)
     self._update()
 def getUserGuideTab(self):
     guide = AnkiWebView()
     guide._page.profile().setHttpUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36')
     guide._page._bridge.onCmd = attemptOpenLink
     html, url = self.getHTML()
     guide._page.setHtml(html, url)
     guide.setObjectName("tab_4")
     return guide
Exemple #12
0
    def ui(self):
        self.web = AnkiWebView()

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.addWidget(self.web)
        layout.addLayout(self.ui_buttons())

        return layout
Exemple #13
0
    def startReport(self):
        self.report = QDialog(mw)
        self.report.setWindowTitle('List of Words - Report')
        self.report.layout = QVBoxLayout(self.report)
        self.webView = AnkiWebView()
        self.report.layout.addWidget(self.webView)

        self.printButton = self.saveButton = QPushButton("Save List")
        self.printButton.pressed.connect(self.printWordList)
Exemple #14
0
 def showCards(self):
     global chapters
     for chap in chapters:
         self.cards[chap] = AnkiWebView()
         self.cards[chap].setLinkHandler(self.linkHandler)
         base = getBase(mw.col)
         self.cards[chap].stdHtml(self._cardHTML % chap, head=base)
         self.nextTodo(chap)
         self.ui.form.chapters.addItem(self.cards[chap], chap)
         self.cards[chap].show()
Exemple #15
0
 def setupWebviews(self):
     pform = self.pform
     pform.frontWeb = AnkiWebView(title="card layout front")
     pform.frontPrevBox.addWidget(pform.frontWeb)
     pform.backWeb = AnkiWebView(title="card layout back")
     pform.backPrevBox.addWidget(pform.backWeb)
     jsinc = [
         "jquery.js",
         "browsersel.js",
         "mathjax/conf.js",
         "mathjax/MathJax.js",
         "reviewer.js",
     ]
     pform.frontWeb.stdHtml(
         self.mw.reviewer.revHtml(), css=["reviewer.css"], js=jsinc, context=self,
     )
     pform.backWeb.stdHtml(
         self.mw.reviewer.revHtml(), css=["reviewer.css"], js=jsinc, context=self,
     )
     pform.frontWeb.set_bridge_command(self._on_bridge_cmd, self)
     pform.backWeb.set_bridge_command(self._on_bridge_cmd, self)
    def displaygrid(self, units, timeNow):
        autoModTime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        currentTimeTemp = autoModTime.replace(":", "")
        currentTime = currentTimeTemp.replace(" ", "-")

        self.generate(units, timeNow, autoModTime)
        self.win = QDialog(mw)
        self.wv = AnkiWebView()
        self.wv.setHtml(self.html)
        self.wv.show()
        #self.savepng(currentTime)
        return 0
Exemple #17
0
 def setupWebviews(self):
     pform = self.pform
     pform.frontWeb = AnkiWebView()
     pform.frontPrevBox.addWidget(pform.frontWeb)
     pform.backWeb = AnkiWebView()
     pform.backPrevBox.addWidget(pform.backWeb)
     jsinc = [
         "jquery.js",
         "browsersel.js",
         "mathjax/conf.js",
         "mathjax/MathJax.js",
         "reviewer.js",
     ]
     pform.frontWeb.stdHtml(
         self.mw.reviewer.revHtml(), css=["reviewer.css"], js=jsinc
     )
     pform.backWeb.stdHtml(
         self.mw.reviewer.revHtml(), css=["reviewer.css"], js=jsinc
     )
     # specify a context for add-ons
     pform.frontWeb.set_bridge_command(lambda msg: None, "card_layout")
     pform.backWeb.set_bridge_command(lambda msg: None, "card_layout")
Exemple #18
0
    def setupUi(self, NewAbout):
        NewAbout.setObjectName("Dialog")
        NewAbout.resize(609, 490)
        self.pushButton = QtWidgets.QPushButton(NewAbout)
        self.pushButton.setGeometry(QtCore.QRect(530, 460, 75, 23))
        self.pushButton.setObjectName("pushButton")
        # self.label = QtWidgets.QLabel(Dialog)
        # self.label.setGeometry(QtCore.QRect(20, 20, 54, 12))
        self.label = AnkiWebView(NewAbout)
        self.label.setProperty("url", QtCore.QUrl("about:blank"))
        self.label.setObjectName("label")

        self.retranslateUi(NewAbout)
        self.pushButton.clicked.connect(NewAbout.accept)
        QtCore.QMetaObject.connectSlotsByName(NewAbout)
Exemple #19
0
def onhanziStats():
    mw.progress.start(immediate=True)
    rep = genhanziStats()
    d = QDialog(mw)
    l = QVBoxLayout()
    w = AnkiWebView()
    l.addWidget(w)
    css = "font{word-wrap:break-word;} div{display:none;}"
    w.stdHtml(rep, css)
    d.setLayout(l)
    d.resize(500, 400)
    restoreGeom(d, "hanzistats")
    mw.progress.finish()
    d.exec_()
    saveGeom(d, "hanzistats")
    def __init__(self):
        self.mw = mw
        self.models = self.mw.col.models.all()

        self.window = QDialog(mw)
        self.window.setWindowTitle('List of Words - Choose')
        self.window.layout = QVBoxLayout(self.window)
        self.webView = AnkiWebView()
        self.window.layout.addWidget(self.webView)

        report = self.getHeisingStats()
        self.webView.stdHtml(report)

        self.window.show()
        self.window.exec_()
Exemple #21
0
 def onRevlog(self):
     data = self._revlogData()
     d = QDialog(self)
     l = QVBoxLayout()
     l.setMargin(0)
     w = AnkiWebView()
     l.addWidget(w)
     w.stdHtml(data)
     bb = QDialogButtonBox(QDialogButtonBox.Close)
     l.addWidget(bb)
     bb.connect(bb, SIGNAL("rejected()"), d, SLOT("reject()"))
     d.setLayout(l)
     d.setWindowModality(Qt.WindowModal)
     d.resize(500, 400)
     restoreGeom(d, "revlog")
     d.exec_()
     saveGeom(d, "revlog")
Exemple #22
0
def onKanjiStats():
    mw.progress.start(immediate=True)
    rep = genKanjiStats()
    d = QDialog(mw)
    l = QVBoxLayout()
    l.setContentsMargins(0,0,0,0)
    w = AnkiWebView()
    l.addWidget(w)
    w.stdHtml(rep)
    bb = QDialogButtonBox(QDialogButtonBox.Close)
    l.addWidget(bb)
    bb.rejected.connect(d.reject)
    d.setLayout(l)
    d.resize(500, 400)
    restoreGeom(d, "kanjistats")
    mw.progress.finish()
    d.show()
    saveGeom(d, "kanjistats")
Exemple #23
0
def onKanjiStats():
    mw.progress.start(immediate=True)
    rep = genKanjiStats()
    d = QDialog(mw)
    l = QVBoxLayout()
    l.setMargin(0)
    w = AnkiWebView()
    l.addWidget(w)
    w.stdHtml(rep)
    bb = QDialogButtonBox(QDialogButtonBox.Close)
    l.addWidget(bb)
    bb.connect(bb, SIGNAL("rejected()"), d, SLOT("reject()"))
    d.setLayout(l)
    d.resize(500, 400)
    restoreGeom(d, "kanjistats")
    mw.progress.finish()
    d.exec_()
    saveGeom(d, "kanjistats")
Exemple #24
0
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(531, 345)
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(Dialog)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.fields = QtWidgets.QComboBox(Dialog)
        self.fields.setObjectName("fields")
        self.gridLayout.addWidget(self.fields, 1, 2, 1, 2)
        self.label_2 = QtWidgets.QLabel(Dialog)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 2, 1, 1, 1)
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 1, 1, 1, 1)
        self.search = QtWidgets.QLineEdit(Dialog)
        self.search.setObjectName("search")
        self.gridLayout.addWidget(self.search, 2, 2, 1, 2)
        self.verticalLayout_2.addLayout(self.gridLayout)
        self.frame = QtWidgets.QFrame(Dialog)
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.frame)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.webView = AnkiWebView(self.frame)
        self.webView.setProperty("url", QtCore.QUrl("about:blank"))
        self.webView.setObjectName("webView")
        self.verticalLayout.addWidget(self.webView)
        self.verticalLayout_2.addWidget(self.frame)
        self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Close)
        self.buttonBox.setObjectName("buttonBox")
        self.verticalLayout_2.addWidget(self.buttonBox)

        self.retranslateUi(Dialog)
        self.buttonBox.accepted.connect(Dialog.accept)
        self.buttonBox.rejected.connect(Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
        Dialog.setTabOrder(self.fields, self.webView)
        Dialog.setTabOrder(self.webView, self.buttonBox)
Exemple #25
0
    def setupUI(self):
        mainLayout = QVBoxLayout()
        self.setLayout(mainLayout)

        self.web = AnkiWebView(parent=self, title="Annotate Image")
        url = QUrl.fromLocalFile(method_draw_path)
        self.web._page = myPage(self.web._onBridgeCmd)
        self.web.setPage(self.web._page)
        self.web.setUrl(url)
        self.web.set_bridge_command(self.on_bridge_cmd, self)
        mainLayout.addWidget(self.web, stretch=1)

        btnLayout = QHBoxLayout()
        btnLayout.addStretch(1)

        replaceAll = QCheckBox("Replace All")
        self.replaceAll = replaceAll
        ch = get_config("replace_all", hidden=True, notexist=False)
        replaceAll.setCheckState(checked(ch))
        replaceAll.stateChanged.connect(self.check_changed)
        btnLayout.addWidget(replaceAll)

        okButton = QPushButton("Save")
        okButton.clicked.connect(self.save)
        btnLayout.addWidget(okButton)
        cancelButton = QPushButton("Discard")
        cancelButton.clicked.connect(self.discard)
        btnLayout.addWidget(cancelButton)
        resetButton = QPushButton("Reset")
        resetButton.clicked.connect(self.reset)
        btnLayout.addWidget(resetButton)

        mainLayout.addLayout(btnLayout)

        self.setWindowTitle("Annotate Image")
        self.setMinimumWidth(100)
        self.setMinimumHeight(100)
        self.setGeometry(0, 0, 640, 640)
        geom = load_geom("anno_dial")
        if geom:
            self.restoreGeometry(geom)
        if not self.close_queued:
            # When image isn't selected js side
            self.show()
Exemple #26
0
def deckStatsInit20(self, mw):
    """Custom stats window that uses AnkiWebView instead of QWebView"""
    # self is aqt.stats.DeckWindow
    import aqt
    from aqt.webview import AnkiWebView
    from aqt.utils import restoreGeom, maybeHideClose, addCloseShortcut
    #########################################################
    QDialog.__init__(self, mw, Qt.Window)
    self.mw = mw
    self.name = "deckStats"
    self.period = 0
    self.form = aqt.forms.stats.Ui_Dialog()
    self.oldPos = None
    self.wholeCollection = False
    self.setMinimumWidth(700)
    f = self.form
    f.setupUi(self)
    #########################################################
    # remove old webview created in form:
    # (TODO: find a less hacky solution)
    f.verticalLayout.removeWidget(f.web)
    f.web.deleteLater()
    f.web = AnkiWebView()  # need to use AnkiWebView for linkhandler to work
    f.web.setLinkHandler(self._linkHandler)
    self.form.verticalLayout.insertWidget(0, f.web)
    addHook('reset', self.refresh)
    #########################################################
    restoreGeom(self, self.name)
    b = f.buttonBox.addButton(_("Save Image"), QDialogButtonBox.ActionRole)
    b.clicked.connect(self.browser)
    b.setAutoDefault(False)
    c = self.connect
    s = SIGNAL("clicked()")
    c(f.groups, s, lambda: self.changeScope("deck"))
    f.groups.setShortcut("g")
    c(f.all, s, lambda: self.changeScope("collection"))
    c(f.month, s, lambda: self.changePeriod(0))
    c(f.year, s, lambda: self.changePeriod(1))
    c(f.life, s, lambda: self.changePeriod(2))
    c(f.web, SIGNAL("loadFinished(bool)"), self.loadFin)
    maybeHideClose(self.form.buttonBox)
    addCloseShortcut(self)
    self.refresh()
    self.show()  # show instead of exec in order for browser to open properly
Exemple #27
0
    def __init__(self, parent: QWidget, mw: aqt.AnkiQt, card: Card) -> None:
        super().__init__(parent)
        disable_help_button(self)
        cs = CardStats(mw.col, card)
        info = cs.report(include_revlog=True)

        l = QVBoxLayout()
        l.setContentsMargins(0, 0, 0, 0)
        w = AnkiWebView(title="browser card info")
        l.addWidget(w)
        w.stdHtml(info + "<p>", context=self)
        bb = QDialogButtonBox(QDialogButtonBox.Close)
        l.addWidget(bb)
        qconnect(bb.rejected, self.reject)
        self.setLayout(l)
        self.setWindowModality(Qt.WindowModal)
        self.resize(500, 400)
        restoreGeom(self, "revlog")
        self.show()
Exemple #28
0
    def _setup_ui(self, card_id: CardId | None) -> None:
        self.mw.garbage_collect_on_dialog_finish(self)
        disable_help_button(self)
        restoreGeom(self, self.GEOMETRY_KEY)
        addCloseShortcut(self)
        setWindowIcon(self)

        self.web = AnkiWebView(title=self.TITLE)
        self.web.setVisible(False)
        self.web.load_ts_page("card-info")
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.addWidget(self.web)
        buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Close)
        buttons.setContentsMargins(10, 0, 10, 10)
        layout.addWidget(buttons)
        qconnect(buttons.rejected, self.reject)
        self.setLayout(layout)
        self.update_card(card_id)
Exemple #29
0
def onhanziStats():
    mw.progress.start(immediate=True)
    rep = genhanziStats()
    d = QDialog(mw)
    l = QVBoxLayout()
    l.setMargin(0)
    w = AnkiWebView()
    l.addWidget(w)
    css = "font{word-wrap:break-word;} div{display:none;}"
    w.stdHtml(rep, css)
    bb = QDialogButtonBox(QDialogButtonBox.Close)
    l.addWidget(bb)
    bb.connect(bb, SIGNAL("rejected()"), d, SLOT("reject()"))
    d.setLayout(l)
    d.resize(500, 400)
    restoreGeom(d, "hanzistats")
    mw.progress.finish()
    d.exec_()
    saveGeom(d, "hanzistats")
Exemple #30
0
    def _setup_ui(self, notetype_id: NotetypeId) -> None:
        self.setWindowModality(Qt.WindowModality.ApplicationModal)
        self.mw.garbage_collect_on_dialog_finish(self)
        self.setMinimumSize(400, 300)
        disable_help_button(self)
        restoreGeom(self, self.TITLE)
        addCloseShortcut(self)

        self.web = AnkiWebView(title=self.TITLE)
        self.web.setVisible(False)
        self.web.load_ts_page("change-notetype")
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.addWidget(self.web)
        self.setLayout(layout)

        self.web.eval(f"""anki.changeNotetypePage(
            document.getElementById('main'), {notetype_id}, {notetype_id});""")
        self.setWindowTitle(tr.browsing_change_notetype())