From 14c67e7ab924e326162b4ed23c464664c6fa1ca0 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Mon, 6 Apr 2009 13:29:24 +0900 Subject: [PATCH] add cram in editor, rename editor to browser --- ankiqt/ui/cardlist.py | 17 +++++++++++++---- ankiqt/ui/main.py | 23 ++++++++++++++--------- ankiqt/ui/utils.py | 14 +++++++++++--- designer/cardlist.ui | 12 +++++++++++- designer/main.ui | 2 +- 5 files changed, 50 insertions(+), 18 deletions(-) diff --git a/ankiqt/ui/cardlist.py b/ankiqt/ui/cardlist.py index 0eda3afa1..851ddab94 100644 --- a/ankiqt/ui/cardlist.py +++ b/ankiqt/ui/cardlist.py @@ -518,6 +518,7 @@ class EditDeck(QMainWindow): self.connect(self.dialog.actionAddTag, SIGNAL("triggered()"), self.addTags) self.connect(self.dialog.actionDeleteTag, SIGNAL("triggered()"), self.deleteTags) self.connect(self.dialog.actionReschedule, SIGNAL("triggered()"), self.reschedule) + self.connect(self.dialog.actionCram, SIGNAL("triggered()"), self.cram) self.connect(self.dialog.actionAddCards, SIGNAL("triggered()"), self.addCards) self.connect(self.dialog.actionChangeModel, SIGNAL("triggered()"), self.onChangeModel) # edit @@ -742,6 +743,14 @@ where id in %s""" % ids2str(sf)) self.updateSearch() self.updateAfterCardChange() + def cram(self): + if ui.utils.askUser( + _("Cram selected cards in new deck?"), + help="CramMode", + parent=self): + self.close() + self.parent.onCram(self.selectedCards()) + def onChangeModel(self): sf = self.selectedFacts() mods = self.deck.s.column0(""" @@ -872,7 +881,7 @@ where id in %s""" % ids2str(sf)) def onFindReplaceHelp(self): QDesktopServices.openUrl(QUrl(ankiqt.appWiki + - "Editor#FindReplace")) + "Browser#FindReplace")) # Jumping ###################################################################### @@ -919,7 +928,7 @@ where id in %s""" % ids2str(sf)) ###################################################################### def onHelp(self): - QDesktopServices.openUrl(QUrl(ankiqt.appWiki + "Editor")) + QDesktopServices.openUrl(QUrl(ankiqt.appWiki + "Browser")) # Generate card dialog ###################################################################### @@ -965,7 +974,7 @@ order by ordinal""" % ids2str(self.cms)) def onHelp(self): QDesktopServices.openUrl(QUrl(ankiqt.appWiki + - "Editor#GenerateCards")) + "Browser#GenerateCards")) # Change model dialog ###################################################################### @@ -1111,4 +1120,4 @@ class ChangeModelDialog(QDialog): def onHelp(self): QDesktopServices.openUrl(QUrl(ankiqt.appWiki + - "Editor#ChangeModel")) + "Browser#ChangeModel")) diff --git a/ankiqt/ui/main.py b/ankiqt/ui/main.py index d36866eeb..cdddef146 100644 --- a/ankiqt/ui/main.py +++ b/ankiqt/ui/main.py @@ -1385,31 +1385,36 @@ day = :d""", d=yesterday) # Cramming & Sharing ########################################################################## - def _copyToTmpDeck(self, name="cram.anki", tags=""): + def _copyToTmpDeck(self, name="cram.anki", tags="", ids=[]): ndir = tempfile.mkdtemp(prefix="anki") path = os.path.join(ndir, name) from anki.exporting import AnkiExporter e = AnkiExporter(self.deck) if tags: e.limitTags = parseTags(tags) + if ids: + e.limitCardIds = ids path = unicode(path, sys.getfilesystemencoding()) e.exportInto(path) return (e, path) - def onCram(self): + def onCram(self, cardIds=[]): if self.deck.name() == "cram": ui.utils.showInfo( _("Already cramming. Please close this deck first.")) return if not self.save(required=True): return - (s, ret) = ui.utils.getTag(self, self.deck, _("Tags to cram:"), - help="CramMode", tags="all") - if not ret: - return - s = unicode(s) - # open tmp deck - (e, path) = self._copyToTmpDeck(tags=s) + if not cardIds: + (s, ret) = ui.utils.getTag(self, self.deck, _("Tags to cram:"), + help="CramMode", tags="all") + if not ret: + return + s = unicode(s) + # open tmp deck + (e, path) = self._copyToTmpDeck(tags=s) + else: + (e, path) = self._copyToTmpDeck(ids=cardIds) if not e.exportedCards: ui.utils.showInfo(_("No cards matched the provided tags.")) return diff --git a/ankiqt/ui/utils.py b/ankiqt/ui/utils.py index d44887459..3af16d147 100644 --- a/ankiqt/ui/utils.py +++ b/ankiqt/ui/utils.py @@ -55,12 +55,20 @@ def showText(text, parent=None): SIGNAL("clicked()"), d.accept) d.exec_() -def askUser(text, parent=None): +def askUser(text, parent=None, help=""): "Show a yes/no question. Return true if yes." if not parent: parent = ankiqt.mw - r = QMessageBox.question(parent, "Anki", text, - QMessageBox.Yes | QMessageBox.No) + sb = QMessageBox.Yes | QMessageBox.No + if help: + sb |= QMessageBox.Help + while 1: + r = QMessageBox.question(parent, "Anki", text, sb, + QMessageBox.Yes) + if r == QMessageBox.Help: + openWikiLink(help) + else: + break return r == QMessageBox.Yes class GetTextDialog(QDialog): diff --git a/designer/cardlist.ui b/designer/cardlist.ui index fc2b6b77a..56c819c1f 100644 --- a/designer/cardlist.ui +++ b/designer/cardlist.ui @@ -10,7 +10,7 @@ - Edit Items + Browse Items @@ -198,6 +198,7 @@ + @@ -409,6 +410,15 @@ Find and Re&place... + + + + :/icons/view-pim-calendar.png:/icons/view-pim-calendar.png + + + &Cram... + + diff --git a/designer/main.ui b/designer/main.ui index d0cb7f285..abe90f2b2 100644 --- a/designer/main.ui +++ b/designer/main.ui @@ -1496,7 +1496,7 @@ :/icons/find.png:/icons/find.png - &Edit All... + Brows&e Items... Ctrl+F