tag autocomplete for editor and cram dialogs

This commit is contained in:
Damien Elmes 2008-12-04 02:35:41 +09:00
parent cafb19f2ca
commit 1ab4e1d3b7
4 changed files with 21 additions and 9 deletions

View file

@ -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)

View file

@ -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)

View file

@ -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))

View file

@ -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"