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() self.updateSearch()
def addTags(self): 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: if tags:
n = _("Add Tags") n = _("Add Tags")
self.deck.setUndoStart(n) self.deck.setUndoStart(n)
@ -516,7 +516,7 @@ where id in (%s)""" % ",".join([
self.updateAfterCardChange() self.updateAfterCardChange()
def deleteTags(self): 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: if tags:
n = _("Delete Tags") n = _("Delete Tags")
self.deck.setUndoStart(n) self.deck.setUndoStart(n)

View file

@ -1056,7 +1056,8 @@ Error was:\n%s\n...\n%s""") % (fmt1, fmt2))
ui.utils.showInfo( ui.utils.showInfo(
_("Already cramming. Please close this deck first.")) _("Already cramming. Please close this deck first."))
return 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: if not ret:
return return
s = unicode(s) s = unicode(s)

View file

@ -15,10 +15,13 @@ class TagEdit(QLineEdit):
self.completer.setCaseSensitivity(Qt.CaseInsensitive) self.completer.setCaseSensitivity(Qt.CaseInsensitive)
self.setCompleter(self.completer) self.setCompleter(self.completer)
def setDeck(self, deck): def setDeck(self, deck, tags="user"):
"Set the current deck, updating list of available tags." "Set the current deck, updating list of available tags."
self.deck = deck self.deck = deck
tags = self.deck.allUserTags() if tags == "user":
tags = self.deck.allUserTags()
else:
tags = self.deck.allTags()
self.model.setStringList( self.model.setStringList(
QStringList(tags)) QStringList(tags))

View file

@ -6,6 +6,7 @@ from PyQt4.QtCore import *
from anki.sound import playFromText, stripSounds from anki.sound import playFromText, stripSounds
from anki.latex import renderLatex, stripLatex from anki.latex import renderLatex, stripLatex
from ankiqt import ui
import re, os, sys import re, os, sys
import ankiqt import ankiqt
@ -63,14 +64,16 @@ def askUser(text, parent=None):
class GetTextDialog(QDialog): class GetTextDialog(QDialog):
def __init__(self, parent, question, help=None): def __init__(self, parent, question, help=None, edit=None):
QDialog.__init__(self, parent) QDialog.__init__(self, parent)
self.setWindowTitle("Anki") self.setWindowTitle("Anki")
self.question = question self.question = question
self.help = help self.help = help
v = QVBoxLayout() v = QVBoxLayout()
v.addWidget(QLabel(question)) v.addWidget(QLabel(question))
self.l = QLineEdit() if not edit:
edit = QLineEdit()
self.l = edit
v.addWidget(self.l) v.addWidget(self.l)
buts = QDialogButtonBox.Ok | QDialogButtonBox.Cancel buts = QDialogButtonBox.Ok | QDialogButtonBox.Cancel
if help: if help:
@ -95,10 +98,10 @@ class GetTextDialog(QDialog):
def helpRequested(self): def helpRequested(self):
QDesktopServices.openUrl(QUrl(ankiqt.appWiki + self.help)) 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: if not parent:
parent = ankiqt.mw parent = ankiqt.mw
d = GetTextDialog(parent, prompt, help=help) d = GetTextDialog(parent, prompt, help=help, edit=edit)
ret = d.exec_() ret = d.exec_()
return (unicode(d.l.text()), ret) return (unicode(d.l.text()), ret)
@ -109,6 +112,11 @@ def getOnlyText(*args, **kwargs):
else: else:
return u"" 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): def getFile(parent, title, dir, key):
"Ask the user for a file. Use DIR as config variable." "Ask the user for a file. Use DIR as config variable."
dirkey = dir+"Directory" dirkey = dir+"Directory"