示例#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
文件: clayout.py 项目: ChYi/ankiqt
    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
文件: sound.py 项目: ChYi/ankiqt
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
文件: main.py 项目: terrisage/Anki
 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
文件: sound.py 项目: bbugyi200/anki
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
文件: addons.py 项目: subfusc/anki
 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
文件: models.py 项目: intact/anki
 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
文件: editcurrent.py 项目: Stvad/anki
 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
文件: addcards.py 项目: kchien/ankiqt
 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
文件: main.py 项目: Glutanimate/anki
    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
文件: models.py 项目: jdennis/anki
 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
文件: deckconf.py 项目: lovac42/CCBC
 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
文件: sound.py 项目: shaunren/anki
 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)
def _showinfo_of_card(self, card):
    #self is reviewer
    if card:
        dialog = CardStatShowDialog(self, card)
        dialog.exec_()
        saveGeom(dialog, "CardStatShowDialog")
示例#45
0
文件: models.py 项目: kaczmarj/anki
 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
文件: studydeck.py 项目: v-limc/anki
 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
文件: emptycards.py 项目: yycmmc/anki
 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)