mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 15:32:23 -04:00
scroll to top when adding, keep tags always shown, not tag up on field edit
This commit is contained in:
parent
e1b7da08e5
commit
4d95b3487d
2 changed files with 20 additions and 17 deletions
|
@ -135,7 +135,7 @@ question or answer on all cards."""), parent=self)
|
||||||
# start a new fact
|
# start a new fact
|
||||||
f = self.parent.deck.newFact()
|
f = self.parent.deck.newFact()
|
||||||
f.tags = self.parent.deck.lastTags
|
f.tags = self.parent.deck.lastTags
|
||||||
self.editor.setFact(f, check=True)
|
self.editor.setFact(f, check=True, scroll=True)
|
||||||
# let completer know our extra tags
|
# let completer know our extra tags
|
||||||
self.editor.tags.addTags(parseTags(self.parent.deck.lastTags))
|
self.editor.tags.addTags(parseTags(self.parent.deck.lastTags))
|
||||||
self.maybeSave()
|
self.maybeSave()
|
||||||
|
|
|
@ -47,7 +47,7 @@ class FactEditor(object):
|
||||||
addHook("colourChanged", self.colourChanged)
|
addHook("colourChanged", self.colourChanged)
|
||||||
removeHook("colourChanged", self.colourChanged)
|
removeHook("colourChanged", self.colourChanged)
|
||||||
|
|
||||||
def setFact(self, fact, noFocus=False, check=False):
|
def setFact(self, fact, noFocus=False, check=False, scroll=False):
|
||||||
"Make FACT the current fact."
|
"Make FACT the current fact."
|
||||||
self.fact = fact
|
self.fact = fact
|
||||||
self.factState = None
|
self.factState = None
|
||||||
|
@ -63,6 +63,8 @@ class FactEditor(object):
|
||||||
else:
|
else:
|
||||||
self.loadFields(check)
|
self.loadFields(check)
|
||||||
self.widget.show()
|
self.widget.show()
|
||||||
|
if scroll:
|
||||||
|
self.fieldsScroll.ensureVisible(0, 0)
|
||||||
if not noFocus:
|
if not noFocus:
|
||||||
# update focus to first field
|
# update focus to first field
|
||||||
self.fields[self.fact.fields[0].name][1].setFocus()
|
self.fields[self.fact.fields[0].name][1].setFocus()
|
||||||
|
@ -109,6 +111,16 @@ class FactEditor(object):
|
||||||
self.fieldsScroll.setFrameStyle(0)
|
self.fieldsScroll.setFrameStyle(0)
|
||||||
self.fieldsScroll.setFocusPolicy(Qt.NoFocus)
|
self.fieldsScroll.setFocusPolicy(Qt.NoFocus)
|
||||||
self.fieldsBox.addWidget(self.fieldsScroll)
|
self.fieldsBox.addWidget(self.fieldsScroll)
|
||||||
|
# tags
|
||||||
|
self.tagsBox = QHBoxLayout()
|
||||||
|
self.tagsLabel = QLabel(_("Tags"))
|
||||||
|
self.tagsBox.addWidget(self.tagsLabel)
|
||||||
|
self.tags = ui.tagedit.TagEdit(self.parent)
|
||||||
|
self.tags.connect(self.tags, SIGNAL("lostFocus"),
|
||||||
|
self.onTagChange)
|
||||||
|
self.tagsBox.addWidget(self.tags)
|
||||||
|
self.fieldsBox.addLayout(self.tagsBox)
|
||||||
|
# icons
|
||||||
self.iconsBox.setMargin(0)
|
self.iconsBox.setMargin(0)
|
||||||
self.iconsBox.addItem(QSpacerItem(20,1, QSizePolicy.Expanding))
|
self.iconsBox.addItem(QSpacerItem(20,1, QSizePolicy.Expanding))
|
||||||
self.iconsBox2.setMargin(0)
|
self.iconsBox2.setMargin(0)
|
||||||
|
@ -357,14 +369,18 @@ class FactEditor(object):
|
||||||
fields = self.fact.fields
|
fields = self.fact.fields
|
||||||
self.fields = {}
|
self.fields = {}
|
||||||
self.widgets = {}
|
self.widgets = {}
|
||||||
|
self.labels = []
|
||||||
n = 0
|
n = 0
|
||||||
first = True
|
first = True
|
||||||
|
last = None
|
||||||
for field in fields:
|
for field in fields:
|
||||||
# label
|
# label
|
||||||
l = QLabel(field.name)
|
l = QLabel(field.name)
|
||||||
|
self.labels.append(l)
|
||||||
self.fieldsGrid.addWidget(l, n, 0)
|
self.fieldsGrid.addWidget(l, n, 0)
|
||||||
# edit widget
|
# edit widget
|
||||||
w = FactEdit(self)
|
w = FactEdit(self)
|
||||||
|
last = w
|
||||||
w.setTabChangesFocus(True)
|
w.setTabChangesFocus(True)
|
||||||
w.setAcceptRichText(True)
|
w.setAcceptRichText(True)
|
||||||
w.setMinimumSize(20, 60)
|
w.setMinimumSize(20, 60)
|
||||||
|
@ -385,26 +401,14 @@ class FactEditor(object):
|
||||||
self.focusTarget = w
|
self.focusTarget = w
|
||||||
first = False
|
first = False
|
||||||
n += 1
|
n += 1
|
||||||
# tags
|
|
||||||
self.fieldsGrid.addWidget(QLabel(_("Tags")), n, 0)
|
|
||||||
self.tags = ui.tagedit.TagEdit(self.parent)
|
|
||||||
self.tags.connect(self.tags, SIGNAL("lostFocus"),
|
|
||||||
self.onTagChange)
|
|
||||||
# update available tags
|
# update available tags
|
||||||
self.tags.setDeck(self.deck)
|
self.tags.setDeck(self.deck)
|
||||||
self.fieldsGrid.addWidget(self.tags, n, 1)
|
|
||||||
# update fields
|
# update fields
|
||||||
self.loadFields(check)
|
self.loadFields(check)
|
||||||
self.parent.setUpdatesEnabled(True)
|
self.parent.setUpdatesEnabled(True)
|
||||||
# update with timer so we don't delete old one in event handler
|
|
||||||
self.scrollUpdateTimer = QTimer(self.parent)
|
|
||||||
self.scrollUpdateTimer.setSingleShot(True)
|
|
||||||
self.parent.connect(self.scrollUpdateTimer,
|
|
||||||
SIGNAL("timeout()"), self.onScrollUpdate)
|
|
||||||
self.scrollUpdateTimer.start(0)
|
|
||||||
|
|
||||||
def onScrollUpdate(self):
|
|
||||||
self.fieldsScroll.setWidget(self.fieldsFrame)
|
self.fieldsScroll.setWidget(self.fieldsFrame)
|
||||||
|
self.tagsLabel.setFixedWidth(max(*[l.width() for l in self.labels]))
|
||||||
|
self.parent.setTabOrder(last, self.tags)
|
||||||
|
|
||||||
def needToRedraw(self):
|
def needToRedraw(self):
|
||||||
if self.fact is None:
|
if self.fact is None:
|
||||||
|
@ -462,7 +466,6 @@ class FactEditor(object):
|
||||||
modified = True
|
modified = True
|
||||||
if modified:
|
if modified:
|
||||||
self.fact.setModified(textChanged=True)
|
self.fact.setModified(textChanged=True)
|
||||||
self.deck.updateFactTags([self.fact.id])
|
|
||||||
self.deck.setModified()
|
self.deck.setModified()
|
||||||
self.deck.setUndoEnd(n)
|
self.deck.setUndoEnd(n)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue