Пример #1
0
 def __init__(self, mw, first=False, search="", deck=None):
     QDialog.__init__(self, mw)
     self.mw = mw
     self.deck = deck or self.mw.col.decks.current()
     self.search = search
     self.form = aqt.forms.dyndconf.Ui_Dialog()
     self.form.setupUi(self)
     if first:
         label = _("Build")
     else:
         label = _("Rebuild")
     self.ok = self.form.buttonBox.addButton(
         label, QDialogButtonBox.AcceptRole)
     self.mw.checkpoint(_("Options"))
     self.setWindowModality(Qt.WindowModal)
     self.form.buttonBox.helpRequested.connect(lambda: openHelp("filtered"))
     self.setWindowTitle(_("Options for %s") % self.deck['name'])
     restoreGeom(self, "dyndeckconf")
     self.setupOrder()
     self.loadConf()
     if search:
         self.form.search.setText(search)
     self.form.search.selectAll()
     self.show()
     self.exec_()
     saveGeom(self, "dyndeckconf")
Пример #2
0
    def reject(self):
        self.model.flush()
        saveGeom(self, "CardLayout")
        saveSplitter(self.form.splitter, "clayout")
        self.mw.reset()
        return QDialog.reject(self)

        self.fact.model.setModified()

        modified = False
        self.mw.startProgress()
        self.deck.updateProgress(_("Applying changes..."))
        reset=True
        if len(self.fieldOrdinalUpdatedIds) > 0:
            self.deck.rebuildFieldOrdinals(self.model.id, self.fieldOrdinalUpdatedIds)
            modified = True
        if self.needFieldRebuild:
            modified = True
        if modified:
            self.fact.model.setModified()
            self.deck.flushMod()
            if self.factedit and self.factedit.onChange:
                self.factedit.onChange("all")
                reset=False
        if reset:
            self.mw.reset()
        self.deck.finishProgress()
        QDialog.reject(self)
Пример #3
0
def getAudio(parent, string="", encode=True):
    "Record and return filename"
    # record first
    r = Recorder()
    mb = QMessageBox(parent)
    restoreGeom(mb, "audioRecorder")
    mb.setWindowTitle("Anki")
    mb.setIconPixmap(QPixmap(":/icons/media-record.png"))
    but = QPushButton(_("  Stop"))
    but.setIcon(QIcon(":/icons/media-playback-stop.png"))
    #but.setIconSize(QSize(32, 32))
    mb.addButton(but, QMessageBox.RejectRole)
    t = time.time()
    r.start()
    QApplication.instance().processEvents()
    while not mb.clickedButton():
        txt =_("Recording...<br>Time: %0.1f")
        mb.setText(txt % (time.time() - t))
        mb.show()
        QApplication.instance().processEvents()
    # ensure at least a second captured
    saveGeom(mb, "audioRecorder")
    while time.time() - t < 1:
        time.sleep(0.1)
    r.stop()
    # process
    r.postprocess(encode)
    return r.file()
def getField(browser, fields):
    """Invoke field selection dialog and return field"""
    d = QDialog(browser)
    l = QVBoxLayout(d)
    d.label = QLabel(
        "Please select the field you would like to convert to tags", d)
    d.fieldSel = QComboBox(d)
    d.fieldSel.addItems(fields)
    d.buttonBox = QDialogButtonBox(d)
    d.buttonBox.setOrientation(Qt.Horizontal)
    d.buttonBox.setStandardButtons(
        QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
    d.buttonBox.accepted.connect(d.accept)
    d.buttonBox.rejected.connect(d.reject)
    l.addWidget(d.label)
    l.addWidget(d.fieldSel)
    l.addWidget(d.buttonBox)
    d.setWindowModality(Qt.WindowModal)
    d.setWindowTitle("Field to Tags")
    restoreGeom(d, "fieldtotags")
    r = d.exec_()
    saveGeom(d, "fieldtotags")
    if not r:
        return None

    idx = d.fieldSel.currentIndex()
    field = fields[idx]

    return field
Пример #5
0
 def onDelete():
     saveGeom(diag, "emptyCards")
     QDialog.accept(diag)
     self.checkpoint(_("Delete Empty"))
     self.col.remCards(cids)
     tooltip(ngettext("%d card deleted.", "%d cards deleted.", len(cids)) % len(cids))
     self.reset()
Пример #6
0
 def __init__(self, mw, deck):
     QDialog.__init__(self, mw)
     self.mw = mw
     self.deck = deck
     self.childDids = [
         d[1] for d in self.mw.col.decks.children(self.deck['id'])]
     self._origNewOrder = None
     self.form = aqt.forms.dconf.Ui_Dialog()
     self.form.setupUi(self)
     self.mw.checkpoint(_("Options"))
     self.setupCombos()
     self.setupConfs()
     self.setWindowModality(Qt.WindowModal)
     self.connect(self.form.buttonBox,
                  SIGNAL("helpRequested()"),
                  lambda: openHelp("deckoptions"))
     self.connect(self.form.confOpts, SIGNAL("clicked()"), self.confOpts)
     self.form.confOpts.setText(downArrow())
     self.connect(self.form.buttonBox.button(QDialogButtonBox.RestoreDefaults),
                  SIGNAL("clicked()"),
                  self.onRestore)
     self.setWindowTitle(_("Options for %s") % self.deck['name'])
     # qt doesn't size properly with altered fonts otherwise
     restoreGeom(self, "deckconf", adjustSize=True)
     self.show()
     self.exec_()
     saveGeom(self, "deckconf")
Пример #7
0
def showLastSentence(html):
	m = QMainWindow(mw)
	d = QDialog(m)
	m = QHBoxLayout()
	l = QVBoxLayout()
	r = QVBoxLayout()
	w = QLabel()
	w.setTextInteractionFlags(Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard)
	l.addWidget(w)
	ss = QPushButton(u'Say')
	bb = QDialogButtonBox(QDialogButtonBox.Close)
	bb.addButton(ss, QDialogButtonBox.ActionRole)
	bb.setOrientation(Qt.Vertical)
#	r.addWidget(ss)
	r.addWidget(bb)
	
	ss.connect(ss, SIGNAL("clicked()"), actionReadSentence)
	
	bb.connect(bb, SIGNAL("rejected()"), d, SLOT("reject()"))
	m.addLayout(l)
	m.addLayout(r)
	d.setLayout(m)
	d.setWindowModality(Qt.WindowModal)
	d.resize(649, 145) 
	restoreGeom(d, "LastSentence")
	html = "<html><body><h3>" + html + "</h3></body></html>"
	w.setText(html)
	d.exec_()
	saveGeom(d, "LastSentence")
Пример #8
0
 def reject(self):
     if self.addMode:
         self.mw.col.db.execute("delete from notes where id = ?", self.note.id)
     self.mm.save(self.model, templates=True)
     self.mw.reset()
     saveGeom(self, "CardLayout")
     return QDialog.reject(self)
Пример #9
0
def getAudio(parent, encode=True):
    "Record and return filename"
    # record first
    r = Recorder()
    mb = QMessageBox(parent)
    restoreGeom(mb, "audioRecorder")
    mb.setWindowTitle("Anki")
    mb.setIconPixmap(QPixmap(":/icons/media-record.png"))
    but = QPushButton(_("Save"))
    mb.addButton(but, QMessageBox.AcceptRole)
    but = QPushButton(_("Cancel"))
    mb.addButton(but, QMessageBox.RejectRole)
    mb.setEscapeButton(but)
    t = time.time()
    r.start()
    time.sleep(r.startupDelay)
    QApplication.instance().processEvents()
    while not mb.clickedButton():
        txt =_("Recording...<br>Time: %0.1f")
        mb.setText(txt % (time.time() - t))
        mb.show()
        QApplication.instance().processEvents()
    if mb.clickedButton() == mb.escapeButton():
        r.stop()
        return
    saveGeom(mb, "audioRecorder")
    # ensure at least a second captured
    while time.time() - t < 1:
        time.sleep(0.1)
    r.stop()
    # process
    r.postprocess(encode)
    return r.file()
 def onSave(self):
     remHook("reset", self.onReset)
     self.editor.saveNow()
     self.browser.externalNid = None
     self.browser.form.splitter.widget(1).setVisible(True)
     self.browser.editor.setNote(self.browser.card.note(reload=True))
     saveGeom(self, "browsereditcurrent")
     aqt.dialogs.close("BrowserEditCurrent")
Пример #11
0
 def onSave(self):
     remHook("reset", self.onReset)
     self.editor.saveNow()
     self.editor.setNote(None)
     r = self.mw.reviewer
     r.card.load()
     self.mw.moveToState("review")
     saveGeom(self, "editcurrent")
     self.close()
Пример #12
0
 def accept(self):
     saveGeom(self, self.geomKey)
     remHook('reset', self.onReset)
     row = self.form.list.currentRow()
     if row < 0:
         showInfo(_("Please select something."))
         return
     self.name = self.names[self.form.list.currentRow()]
     QDialog.accept(self)
Пример #13
0
 def reject(self):
     clearAudioQueue()
     if self.addMode:
         # remove the filler fields we added
         for name in self.emptyFields:
             self.note[name] = ""
         self.mw.col.db.execute("delete from notes where id = ?", self.note.id)
     self.mm.save(self.model, templates=True)
     self.mw.reset()
     saveGeom(self, "CardLayout")
     return QDialog.reject(self)
Пример #14
0
 def __init__(self, mw):
     QDialog.__init__(self, mw)
     self.mw = mw
     self.form = aqt.forms.getaddons.Ui_Dialog()
     self.form.setupUi(self)
     b = self.form.buttonBox.addButton(
         _("Browse"), QDialogButtonBox.ActionRole)
     self.connect(b, SIGNAL("clicked()"), self.onBrowse)
     restoreGeom(self, "getaddons", adjustSize=True)
     self.exec_()
     saveGeom(self, "getaddons")
Пример #15
0
 def _reject(self):
     remHook('reset', self.onReset)
     remHook('currentModelChanged', self.onModelChange)
     clearAudioQueue()
     self.removeTempNote(self.editor.note)
     self.editor.cleanup()
     self.modelChooser.cleanup()
     self.deckChooser.cleanup()
     self.mw.maybeReset()
     saveGeom(self, "add")
     aqt.dialogs.markClosed("AddCards")
     QDialog.reject(self)
Пример #16
0
 def onSave(self):
     removeHook("closeEditCurrent", self.onSave)
     self.editor.saveNow()
     self.editor.setFact(None)
     r = self.mw.reviewer
     r.card.load()
     r.keep = True
     # we don't need to reset the deck, but there may be new groups
     self.mw.deck.sched._resetConf()
     self.mw.moveToState("review")
     saveGeom(self, "editcurrent")
     self.close()
Пример #17
0
 def onAdvanced(self):
     d = QDialog(self)
     frm = aqt.forms.modelopts.Ui_Dialog()
     frm.setupUi(d)
     frm.latexHeader.setText(self.model['latexPre'])
     frm.latexFooter.setText(self.model['latexPost'])
     d.setWindowTitle(_("Options for %s") % self.model['name'])
     frm.buttonBox.helpRequested.connect(lambda: openHelp("latex"))
     restoreGeom(d, "modelopts")
     d.exec_()
     saveGeom(d, "modelopts")
     self.model['latexPre'] = unicode(frm.latexHeader.toPlainText())
     self.model['latexPost'] = unicode(frm.latexFooter.toPlainText())
Пример #18
0
 def _onSave(self):
     remHook("reset", self.onReset)
     r = self.mw.reviewer
     try:
         r.card.load()
     except:
         # card was removed by clayout
         pass
     else:
         self.mw.reviewer.cardQueue.append(self.mw.reviewer.card)
     self.mw.moveToState("review")
     saveGeom(self, "editcurrent")
     aqt.dialogs.close("EditCurrent")
Пример #19
0
 def reject(self):
     if not self.canClose():
         return
     remHook('reset', self.onReset)
     remHook('currentModelChanged', self.onReset)
     clearAudioQueue()
     self.removeTempNote(self.editor.note)
     self.editor.setNote(None)
     self.modelChooser.cleanup()
     self.mw.maybeReset()
     saveGeom(self, "add")
     aqt.dialogs.close("AddCards")
     QDialog.reject(self)
Пример #20
0
 def __init__(self, dlg):
     QDialog.__init__(self, dlg)
     self.addonsDlg = dlg
     self.mgr = dlg.mgr
     self.mw = self.mgr.mw
     self.form = aqt.forms.getaddons.Ui_Dialog()
     self.form.setupUi(self)
     b = self.form.buttonBox.addButton(
         _("Browse Add-ons"), QDialogButtonBox.ActionRole)
     b.clicked.connect(self.onBrowse)
     restoreGeom(self, "getaddons", adjustSize=True)
     self.exec_()
     saveGeom(self, "getaddons")
Пример #21
0
 def onSave(self):
     remHook("reset", self.onReset)
     self.editor.saveNow()
     self.editor.setNote(None)
     r = self.mw.reviewer
     try:
         r.card.load()
     except TypeError:
         # card was removed by clayout
         pass
     else:
         self.mw.reviewer.cardQueue.append(self.mw.reviewer.card)
     self.mw.moveToState("review")
     saveGeom(self, "editcurrent")
Пример #22
0
 def closeEvent(self, evt):
     saveSplitter(self.form.splitter_2, "editor2")
     saveSplitter(self.form.splitter, "editor3")
     self.editor.saveNow()
     self.editor.setNote(None)
     saveGeom(self, "editor")
     saveState(self, "editor")
     saveHeader(self.form.tableView.horizontalHeader(), "editor")
     self.col.conf['activeCols'] = self.model.activeCols
     self.hide()
     aqt.dialogs.close("Browser")
     self.teardownHooks()
     self.mw.maybeReset()
     evt.accept()
Пример #23
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")
Пример #24
0
 def _saveAndClose(self):
     remHook("reset", self.onReset)
     r = self.mw.reviewer
     try:
         r.card.load()
     except:
         # card was removed by clayout
         pass
     else:
         self.mw.reviewer.cardQueue.append(self.mw.reviewer.card)
     self.editor.cleanup()
     self.mw.moveToState("review")
     saveGeom(self, "editcurrent")
     aqt.dialogs.markClosed("EditCurrent")
     QDialog.reject(self)
Пример #25
0
    def onCheckMediaDB(self):
        self.progress.start(immediate=True)
        (nohave, unused, warnings) = self.col.media.check()
        self.progress.finish()
        # generate report
        report = ""
        if warnings:
            report += "\n".join(warnings) + "\n"
        if unused:
            if report:
                report += "\n\n\n"
            report += _(
                "In media folder but not used by any cards:")
            report += "\n" + "\n".join(unused)
        if nohave:
            if report:
                report += "\n\n\n"
            report += _(
                "Used on cards but missing from media folder:")
            report += "\n" + "\n".join(nohave)
        if not report:
            tooltip(_("No unused or missing files found."))
            return
        # show report and offer to delete
        diag = QDialog(self)
        diag.setWindowTitle("Anki")
        layout = QVBoxLayout(diag)
        diag.setLayout(layout)
        text = QTextEdit()
        text.setReadOnly(True)
        text.setPlainText(report)
        layout.addWidget(text)
        box = QDialogButtonBox(QDialogButtonBox.Close)
        layout.addWidget(box)
        if unused:
            b = QPushButton(_("Delete Unused Files"))
            b.setAutoDefault(False)
            box.addButton(b, QDialogButtonBox.ActionRole)
            b.clicked.connect(
                lambda c, u=unused, d=diag: self.deleteUnused(u, d))

        box.rejected.connect(diag.reject)
        diag.setMinimumHeight(400)
        diag.setMinimumWidth(500)
        restoreGeom(diag, "checkmediadb")
        diag.exec_()
        saveGeom(diag, "checkmediadb")
Пример #26
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")
Пример #27
0
 def onAdvanced(self):
     d = QDialog(self)
     frm = aqt.forms.modelopts.Ui_Dialog()
     frm.setupUi(d)
     frm.latexsvg.setChecked(self.model.get("latexsvg", False))
     frm.latexHeader.setText(self.model['latexPre'])
     frm.latexFooter.setText(self.model['latexPost'])
     frm.newStyleWhitespace.setChecked(self.model.get("prewrap", False))
     d.setWindowTitle(_("Options for %s") % self.model['name'])
     frm.buttonBox.helpRequested.connect(lambda: openHelp("latex"))
     restoreGeom(d, "modelopts")
     d.exec_()
     saveGeom(d, "modelopts")
     self.model['latexsvg'] = frm.latexsvg.isChecked()
     self.model['latexPre'] = str(frm.latexHeader.toPlainText())
     self.model['latexPost'] = str(frm.latexFooter.toPlainText())
     self.model['prewrap'] = frm.newStyleWhitespace.isChecked()
Пример #28
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")
def myReject(self):
    if not self.canClose():
        return
    remHook('reset', self.onReset)
    clearAudioQueue()
    self.removeTempNote(self.editor.note)
    self.editor.setNote(None)
    self.modelChooser.cleanup()
    self.deckChooser.cleanup()
    self.mw.maybeReset()
    # save geometry of current dialog
    if self.dialogName == "AddCards":
        saveGeom(self, "add")
    else:
        saveGeom(self, "add2")
    # close dialog
    dialogs.close(self.dialogName)
    QDialog.reject(self)
Пример #30
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")
Пример #31
0
 def accept(self):
     self.hide()
     n = 0
     # gather yes/no tags
     yes = []
     no = []
     for c in range(self.dialog.activeList.count()):
         # active
         if self.dialog.activeCheck.isChecked():
             item = self.dialog.activeList.item(c)
             idx = self.dialog.activeList.indexFromItem(item)
             if self.dialog.activeList.selectionModel().isSelected(idx):
                 yes.append(self.tags[c])
         # inactive
         item = self.dialog.inactiveList.item(c)
         idx = self.dialog.inactiveList.indexFromItem(item)
         if self.dialog.inactiveList.selectionModel().isSelected(idx):
             no.append(self.tags[c])
     # save in the deck for future invocations
     self.deck["activeTags"] = yes
     self.deck["inactiveTags"] = no
     self.mw.col.decks.save(self.deck)
     # build query string
     self.tags = ""
     if yes:
         arr = []
         for req in yes:
             arr.append('tag:"%s"' % req)
         self.tags += "(" + " or ".join(arr) + ")"
     if no:
         arr = []
         for req in no:
             arr.append('-tag:"%s"' % req)
         self.tags += " " + " ".join(arr)
     saveGeom(self, "tagLimit")
     QDialog.accept(self)
Пример #32
0
 def _onHtmlEdit(self, field):
     d = QDialog(self.widget, Qt.Window)
     form = aqt.forms.edithtml.Ui_Dialog()
     form.setupUi(d)
     restoreGeom(d, "htmlEditor")
     qconnect(form.buttonBox.helpRequested, lambda: openHelp("editor"))
     form.textEdit.setPlainText(self.note.fields[field])
     d.show()
     form.textEdit.moveCursor(QTextCursor.End)
     d.exec_()
     html = form.textEdit.toPlainText()
     if html.find(">") > -1:
         # filter html through beautifulsoup so we can strip out things like a
         # leading </div>
         html_escaped = self.mw.col.media.escapeImages(html)
         with warnings.catch_warnings():
             warnings.simplefilter("ignore", UserWarning)
             html_escaped = str(BeautifulSoup(html_escaped, "html.parser"))
             html = self.mw.col.media.escapeImages(html_escaped, unescape=True)
     self.note.fields[field] = html
     if not self.addMode:
         self.note.flush()
     self.loadNote(focusTo=field)
     saveGeom(d, "htmlEditor")
Пример #33
0
 def __init__(self, mw, deck, parent=None):
     QDialog.__init__(self, parent or mw)
     self.mw = mw
     self.deck = deck
     self.childDids = [
         d[1] for d in self.mw.col.decks.children(self.deck['id'])
     ]
     self._origNewOrder = None
     self.form = aqt.forms.dconf.Ui_Dialog()
     self.form.setupUi(self)
     self.mw.checkpoint(_("Options"))
     self.setupCombos()
     self.setupConfs()
     self.setWindowModality(Qt.WindowModal)
     self.form.confOpts.clicked.connect(self.confOpts)
     self.form.confOpts.setText(downArrow())
     self.form.buttonBox.button(
         QDialogButtonBox.RestoreDefaults).clicked.connect(self.onRestore)
     self.setWindowTitle(_("Options for %s") % self.deck['name'])
     # qt doesn't size properly with altered fonts otherwise
     restoreGeom(self, "deckconf", adjustSize=True)
     self.show()
     self.exec_()
     saveGeom(self, "deckconf")
Пример #34
0
 def onReject(self):
     saveGeom(self, geom_name)
Пример #35
0
 def reject(self):
     saveGeom(self, self.name)
     QDialog.reject(self)
Пример #36
0
 def success(out: OpChangesWithId) -> None:
     gui_hooks.filtered_deck_dialog_did_add_or_update_deck(
         self, self.deck, out.id)
     saveGeom(self, self.GEOMETRY_KEY)
     aqt.dialogs.markClosed(self.DIALOG_KEY)
     QDialog.accept(self)
Пример #37
0
 def _save_diag(self) -> None:
     saveGeom(self, "audioRecorder2")
Пример #38
0
 def onAccept(self):
     saveGeom(self, geom_name)
     self.callback(self.exportData())
Пример #39
0
 def cleanup(self):
     remHook("reset", self.onReset)
     remHook("currentModelChanged", self.onReset)
     self.modelChooser.cleanup()
     saveGeom(self, "changeModel")
Пример #40
0
 def closeEvent(self, event):
     if mw.pm.profile is not None:
         self.deckChooser.cleanup()
         saveGeom(self, "imgoccedit")
     self.visible = False
     event.accept()
Пример #41
0
 def onClose(self):
     saveGeom(self, "addonconf")
     saveSplitter(self.form.splitter, "addonconf")
Пример #42
0
 def reject(self):
     saveGeom(self, self.geomKey)
     remHook('reset', self.onReset)
     QDialog.reject(self)
Пример #43
0
 def cleanup_and_close(self) -> None:
     gui_hooks.operation_did_execute.remove(self.on_operation_did_execute)
     self.editor.cleanup()
     saveGeom(self, "editcurrent")
     aqt.dialogs.markClosed("EditCurrent")
     QDialog.reject(self)
Пример #44
0
def _showinfo_of_card(self, card):
    #self is reviewer
    if card:
        dialog = CardStatShowDialog(self, card)
        dialog.exec_()
        saveGeom(dialog, "CardStatShowDialog")
Пример #45
0
 def reject(self) -> None:
     saveGeom(self, "models")
     QDialog.reject(self)
Пример #46
0
 def reject(self) -> None:
     self.web = None
     saveGeom(self, self.TITLE)
     QDialog.reject(self)
Пример #47
0
 def reject(self):
     self.saveModel()
     self.mw.reset()
     saveGeom(self, "models")
     QDialog.reject(self)
Пример #48
0
 def cleanup(self):
     remHook("reset", self.onReset)
     self.browser.organizer = None
     saveGeom(self, "organizer")
     saveHeader(self.hh, "organizer")
Пример #49
0
 def reject(self):
     saveGeom(self, "SHFork_fuzzy")
     QDialog.reject(self)
Пример #50
0
 def onReject(self):
     ok = askUser("Close and lose current input?")
     if ok:
         saveGeom(self, "805891399_winsize")
         self.web = None
         self.reject()
Пример #51
0
 def reject(self):
     saveGeom(self, "addons21")
     return QDialog.reject(self)
Пример #52
0
Файл: stats.py Проект: zzp0/anki
 def reject(self):
     saveGeom(self, self.name)
     aqt.dialogs.markClosed("DeckStats")
     QDialog.reject(self)
Пример #53
0
def onDelete(mw, diag, cids):
    p(f"Calling new onDelete with cids {cids}")

    cids = set(mw.col.emptyCids())  #change here to make a set
    saveGeom(diag, "emptyCards")
    QDialog.accept(diag)
    mw.checkpoint(_("Delete Empty"))

    # Beginning of changes
    nidToCidsToDelete = dict()
    for cid in cids:
        card = mw.col.getCard(cid)
        note = card.note()
        nid = note.id
        if nid not in nidToCidsToDelete:
            p(f"note {nid} not yet in nidToCidsToDelete. Thus adding it")
            nidToCidsToDelete[nid] = set()
        else:
            p(f"note {nid} already in nidToCidsToDelete.")
        nidToCidsToDelete[nid].add(cid)
        p(f"Adding card {cid} to note {nid}.")

    emptyNids = set()
    cardsOfEmptyNotes = set()
    for nid, cidsToDeleteOfNote in nidToCidsToDelete.items():
        note = mw.col.getNote(nid)
        cidsOfNids = set([card.id for card in note.cards()])
        p(f"In note {nid}, the cards are {cidsOfNids}, and the cards to delete are {cidsToDeleteOfNote}"
          )
        if cidsOfNids == cidsToDeleteOfNote:
            p(f"Both sets are equal")
            emptyNids.add(note.id)
            cids -= cidsOfNids
        else:
            p(f"Both sets are different")

    mw.col.remCards(cids, notes=False)
    nidsWithTag = set(mw.col.findNotes("tag:NoteWithNoCard"))
    p(f"emptyNids is {emptyNids}, nidsWithTag is {nidsWithTag}")

    for nid in emptyNids - nidsWithTag:
        note = mw.col.getNote(nid)
        note.addTag("NoteWithNoCard")
        p(f"Adding tag to note {note.id}")
        note.flush()

    for nid in nidsWithTag - emptyNids:
        note = mw.col.getNote(nid)
        # TODO: If there's only 1 note, this method is never triggered.
        # So the tag stays.
        note.delTag("NoteWithNoCard")
        p(f"Removing tag from note {note.id}")
        note.flush()

    if emptyNids:
        showWarning(
            f"""{len(emptyNids)} note(s) should have been deleted because they had no more cards. They now have the tag "NoteWithNoCard". Please go check them. Then either edit them to save their content, or delete them from the browser."""
        )
        browser = dialogs.open("Browser", mw, False)
        browser.form.searchEdit.lineEdit().setText("tag:NoteWithNoCard")
        browser.onSearchActivated()

    # end of changes
    tooltip(
        ngettext("%d card deleted.", "%d cards deleted.", len(cids)) %
        len(cids))
    mw.reset()
Пример #54
0
 def reject(self) -> None:
     saveGeom(self, self.geomKey)
     gui_hooks.state_did_reset.remove(self.onReset)
     QDialog.reject(self)
Пример #55
0
 def reject(self):
     self.form.web = None
     saveGeom(self, self.name)
     aqt.dialogs.markClosed("NewDeckStats")
     QDialog.reject(self)
Пример #56
0
 def _onClose(self):
     saveGeom(self, "simulatorDialog")
     self._tearDownHooks()
Пример #57
0
 def onFin(code):
     saveGeom(win, "findDupes")
Пример #58
0
 def on_finished(code: Any) -> None:
     saveGeom(self, "emptycards")
Пример #59
0
 def _on_finished(self, ok):
     saveGeom(self, "preview")
     self.mw.progress.timer(100, self._on_close, False)
Пример #60
0
 def reject(self) -> None:
     if self._on_close:
         self._on_close()
     self.web = None
     saveGeom(self, self.GEOMETRY_KEY)
     return QDialog.reject(self)