mirror of
https://github.com/ankitects/anki.git
synced 2025-09-20 15:02:21 -04:00
tag autocomplete for editor and cram dialogs
This commit is contained in:
parent
cafb19f2ca
commit
1ab4e1d3b7
4 changed files with 21 additions and 9 deletions
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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))
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue