diff --git a/ankiqt/ui/cardlist.py b/ankiqt/ui/cardlist.py index 03f4c2394..1fbb6dd1b 100644 --- a/ankiqt/ui/cardlist.py +++ b/ankiqt/ui/cardlist.py @@ -507,7 +507,7 @@ where id in (%s)""" % ",".join([ self.updateSearch() def addTags(self): - tags = ui.utils.getOnlyText(_("Enter tag(s) to add:"), self) + (tags, r) = ui.utils.getTag(self, self.deck, _("Enter tag(s) to add:")) if tags: n = _("Add Tags") self.deck.setUndoStart(n) @@ -516,7 +516,7 @@ where id in (%s)""" % ",".join([ self.updateAfterCardChange() def deleteTags(self): - tags = ui.utils.getOnlyText(_("Enter tag(s) to delete:"), self) + (tags, r) = ui.utils.getTag(self, self.deck, _("Enter tag(s) to delete:")) if tags: n = _("Delete Tags") self.deck.setUndoStart(n) diff --git a/ankiqt/ui/main.py b/ankiqt/ui/main.py index 86ae083f7..9c2cea346 100644 --- a/ankiqt/ui/main.py +++ b/ankiqt/ui/main.py @@ -1056,7 +1056,8 @@ Error was:\n%s\n...\n%s""") % (fmt1, fmt2)) ui.utils.showInfo( _("Already cramming. Please close this deck first.")) return - (s, ret) = ui.utils.getText(_("Tags to cram:"), help="CramMode") + (s, ret) = ui.utils.getTag(self, self.deck, _("Tags to cram:"), + help="CramMode", tags="all") if not ret: return s = unicode(s) diff --git a/ankiqt/ui/tagedit.py b/ankiqt/ui/tagedit.py index be3fe4d48..5a6d12ee1 100644 --- a/ankiqt/ui/tagedit.py +++ b/ankiqt/ui/tagedit.py @@ -15,10 +15,13 @@ class TagEdit(QLineEdit): self.completer.setCaseSensitivity(Qt.CaseInsensitive) self.setCompleter(self.completer) - def setDeck(self, deck): + def setDeck(self, deck, tags="user"): "Set the current deck, updating list of available tags." self.deck = deck - tags = self.deck.allUserTags() + if tags == "user": + tags = self.deck.allUserTags() + else: + tags = self.deck.allTags() self.model.setStringList( QStringList(tags)) diff --git a/ankiqt/ui/utils.py b/ankiqt/ui/utils.py index 7566ce39c..9597f0402 100644 --- a/ankiqt/ui/utils.py +++ b/ankiqt/ui/utils.py @@ -6,6 +6,7 @@ from PyQt4.QtCore import * from anki.sound import playFromText, stripSounds from anki.latex import renderLatex, stripLatex +from ankiqt import ui import re, os, sys import ankiqt @@ -63,14 +64,16 @@ def askUser(text, parent=None): class GetTextDialog(QDialog): - def __init__(self, parent, question, help=None): + def __init__(self, parent, question, help=None, edit=None): QDialog.__init__(self, parent) self.setWindowTitle("Anki") self.question = question self.help = help v = QVBoxLayout() v.addWidget(QLabel(question)) - self.l = QLineEdit() + if not edit: + edit = QLineEdit() + self.l = edit v.addWidget(self.l) buts = QDialogButtonBox.Ok | QDialogButtonBox.Cancel if help: @@ -95,10 +98,10 @@ class GetTextDialog(QDialog): def helpRequested(self): QDesktopServices.openUrl(QUrl(ankiqt.appWiki + self.help)) -def getText(prompt, parent=None, help=None): +def getText(prompt, parent=None, help=None, edit=None): if not parent: parent = ankiqt.mw - d = GetTextDialog(parent, prompt, help=help) + d = GetTextDialog(parent, prompt, help=help, edit=edit) ret = d.exec_() return (unicode(d.l.text()), ret) @@ -109,6 +112,11 @@ def getOnlyText(*args, **kwargs): else: return u"" +def getTag(parent, deck, question, tags="user", **kwargs): + te = ui.tagedit.TagEdit(parent) + te.setDeck(deck, tags) + return getText(question, parent, edit=te, **kwargs) + def getFile(parent, title, dir, key): "Ask the user for a file. Use DIR as config variable." dirkey = dir+"Directory"