fix lookup, bug in addcards, tag completer

This commit is contained in:
Damien Elmes 2008-11-28 18:52:39 +09:00
parent 2a66095eed
commit 37f96fb5a7
5 changed files with 28 additions and 29 deletions

View file

@ -98,8 +98,6 @@ class AddCards(QDialog):
ui.utils.showInfo(_( ui.utils.showInfo(_(
"Some fields are missing or not unique."), "Some fields are missing or not unique."),
parent=self, help="AddItems#AddError") parent=self, help="AddItems#AddError")
if w:
w.setFocus()
return return
if not cards: if not cards:
ui.utils.showWarning(_("""\ ui.utils.showWarning(_("""\

View file

@ -5,7 +5,7 @@
from PyQt4.QtGui import * from PyQt4.QtGui import *
from PyQt4.QtCore import * from PyQt4.QtCore import *
import re, os, sys import re, os, sys
from anki.utils import parseTags, stripHTML, tidyHTML from anki.utils import stripHTML, tidyHTML, canonifyTags
from anki.sound import playFromText from anki.sound import playFromText
import anki.sound import anki.sound
from ankiqt import ui from ankiqt import ui
@ -381,7 +381,7 @@ class FactEditor(object):
self.factState = "invalid" self.factState = "invalid"
def onTagChange(self): def onTagChange(self):
self.fact.tags = unicode(self.tags.text()) self.fact.tags = canonifyTags(unicode(self.tags.text()))
if self.onChange: if self.onChange:
self.onChange(None) self.onChange(None)
self.fact.setModified(textChanged=True) self.fact.setModified(textChanged=True)

View file

@ -16,7 +16,8 @@ class Lookup(object):
def selection(self, function): def selection(self, function):
"Get the selected text and look it up with FUNCTION." "Get the selected text and look it up with FUNCTION."
text = unicode(self.main.mainWin.mainText.textCursor().selectedText()) text = unicode(self.main.mainWin.mainText.selectedText())
text = text.strip()
if "\n" in text: if "\n" in text:
self.main.setStatus(_("Can't look up a selection with a newline.")) self.main.setStatus(_("Can't look up a selection with a newline."))
return return

View file

@ -75,6 +75,7 @@ class AnkiQt(QMainWindow):
self.mainWin.setupUi(self) self.mainWin.setupUi(self)
self.mainWin.mainText = ui.view.AnkiWebView(self.mainWin.mainTextFrame) self.mainWin.mainText = ui.view.AnkiWebView(self.mainWin.mainTextFrame)
self.mainWin.mainText.setObjectName("mainText") self.mainWin.mainText.setObjectName("mainText")
self.mainWin.mainText.setFocusPolicy(Qt.ClickFocus)
self.mainWin.vboxlayout.addWidget(self.mainWin.mainText) self.mainWin.vboxlayout.addWidget(self.mainWin.mainText)
self.mainWin.buttonWidget = QWidget(self.mainWin.mainTextFrame) self.mainWin.buttonWidget = QWidget(self.mainWin.mainTextFrame)
self.mainWin.buttonWidget.setObjectName("buttonWidget") self.mainWin.buttonWidget.setObjectName("buttonWidget")

View file

@ -3,14 +3,14 @@
from PyQt4.QtGui import * from PyQt4.QtGui import *
from PyQt4.QtCore import * from PyQt4.QtCore import *
from anki.utils import parseTags from anki.utils import parseTags, canonifyTags, joinTags
class TagEdit(QLineEdit): class TagEdit(QLineEdit):
def __init__(self, parent, *args): def __init__(self, parent, *args):
QLineEdit.__init__(self, parent, *args) QLineEdit.__init__(self, parent, *args)
self.model = QStringListModel() self.model = QStringListModel()
self.completer = TagCompleter(self.model, parent) self.completer = TagCompleter(self.model, parent, self)
self.completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self.completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion)
self.completer.setCaseSensitivity(Qt.CaseInsensitive) self.completer.setCaseSensitivity(Qt.CaseInsensitive)
self.setCompleter(self.completer) self.setCompleter(self.completer)
@ -18,21 +18,9 @@ class TagEdit(QLineEdit):
def setDeck(self, deck): def setDeck(self, deck):
"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.allTags() tags = self.deck.allUserTags()
self.model.setStringList( self.model.setStringList(
QStringList(sorted(tags))) QStringList(tags))
def keyPressEvent(self, evt):
if evt.key() in (Qt.Key_Enter,
Qt.Key_Return):
evt.accept()
cur = self.completer.currentCompletion()
if cur and not str(cur).strip().endswith(","):
self.setText(self.completer.currentCompletion())
else:
self.completer.popup().close()
else:
QLineEdit.keyPressEvent(self, evt)
def focusOutEvent(self, evt): def focusOutEvent(self, evt):
QLineEdit.focusOutEvent(self, evt) QLineEdit.focusOutEvent(self, evt)
@ -40,18 +28,29 @@ class TagEdit(QLineEdit):
class TagCompleter(QCompleter): class TagCompleter(QCompleter):
def __init__(self, *args): def __init__(self, model, parent, edit, *args):
QCompleter.__init__(self, *args) QCompleter.__init__(self, model, parent)
self.tags = [] self.tags = []
self.edit = edit
def splitPath(self, str): def splitPath(self, str):
self.tags = parseTags(unicode(str)) str = unicode(str)
if self.tags: if str.strip().startswith(","):
return QStringList(self.tags[-1]) self.cursor = 0
return QStringList("") return QStringList("")
self.tags = parseTags(str)
self.tags.append(u"")
p = self.edit.cursorPosition()
self.cursor = str.count(",", 0, p)
return QStringList(self.tags[self.cursor])
def pathFromIndex(self, idx): def pathFromIndex(self, idx):
ret = QCompleter.pathFromIndex(self, idx) ret = QCompleter.pathFromIndex(self, idx)
self.tags = self.tags[0:-1] if u"" not in self.tags:
self.tags.append(unicode(ret)) self.tags.append(u"")
self.tags[self.cursor] = unicode(ret)
try:
self.tags.remove(u"")
except ValueError:
pass
return ", ".join(self.tags) return ", ".join(self.tags)