mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
field repositioning
This commit is contained in:
parent
d0a9ec96c1
commit
b1ce366645
2 changed files with 44 additions and 95 deletions
100
aqt/clayout.py
100
aqt/clayout.py
|
@ -9,7 +9,7 @@ from anki.consts import *
|
|||
import aqt
|
||||
from anki.sound import playFromText, clearAudioQueue
|
||||
from aqt.utils import saveGeom, restoreGeom, getBase, mungeQA, \
|
||||
saveSplitter, restoreSplitter, showInfo, isMac, isWin
|
||||
saveSplitter, restoreSplitter, showInfo, isMac, isWin, askUser
|
||||
from anki.hooks import runFilter
|
||||
|
||||
class ResizingTextEdit(QTextEdit):
|
||||
|
@ -22,6 +22,7 @@ class CardLayout(QDialog):
|
|||
def __init__(self, mw, fact, type=0, ord=0, parent=None):
|
||||
QDialog.__init__(self, parent or mw, Qt.Window)
|
||||
self.mw = aqt.mw
|
||||
self.parent = parent or mw
|
||||
self.fact = fact
|
||||
self.type = type
|
||||
self.ord = ord
|
||||
|
@ -43,7 +44,7 @@ class CardLayout(QDialog):
|
|||
self.reload()
|
||||
if not self.cards:
|
||||
showInfo(_("Please enter some text first."),
|
||||
parent=parent or mw)
|
||||
parent=self.parent)
|
||||
return
|
||||
self.exec_()
|
||||
|
||||
|
@ -51,7 +52,7 @@ class CardLayout(QDialog):
|
|||
self.cards = self.deck.previewCards(self.fact, self.type)
|
||||
self.fillCardList()
|
||||
self.fillFieldList()
|
||||
self.fieldChanged(0)
|
||||
self.fieldChanged()
|
||||
self.readField()
|
||||
|
||||
# Cards & Preview
|
||||
|
@ -293,8 +294,6 @@ class CardLayout(QDialog):
|
|||
self.saveField)
|
||||
self.connect(self.form.fieldRequired, SIGNAL("stateChanged(int)"),
|
||||
self.saveField)
|
||||
self.connect(self.form.numeric, SIGNAL("stateChanged(int)"),
|
||||
self.saveField)
|
||||
w = self.form.fontColour
|
||||
if self.plastiqueStyle:
|
||||
w.setStyle(self.plastiqueStyle)
|
||||
|
@ -304,10 +303,11 @@ class CardLayout(QDialog):
|
|||
SIGNAL("stateChanged(int)"),
|
||||
self.saveField)
|
||||
|
||||
def fieldChanged(self, idx):
|
||||
if self.updatingFields:
|
||||
return
|
||||
self.field = self.model.fields[idx]
|
||||
def fieldChanged(self):
|
||||
row = self.form.fieldList.currentRow()
|
||||
if row == -1:
|
||||
row = 0
|
||||
self.field = self.model.fields[row]
|
||||
self.readField()
|
||||
self.enableFieldMoveButtons()
|
||||
|
||||
|
@ -387,53 +387,33 @@ class CardLayout(QDialog):
|
|||
self.form.fieldDown.setEnabled(True)
|
||||
|
||||
def addField(self):
|
||||
f = FieldModel(required=False, unique=False)
|
||||
f.name = _("Field %d") % (len(self.model.fieldModels) + 1)
|
||||
self.deck.addFieldModel(self.model, f)
|
||||
try:
|
||||
self.deck.db.refresh(self.fact)
|
||||
except:
|
||||
# not yet added
|
||||
self.updateFact()
|
||||
self.fillFieldList()
|
||||
self.form.fieldList.setCurrentRow(len(self.model.fieldModels)-1)
|
||||
f = self.model.newField()
|
||||
l = len(self.model.fields)
|
||||
f['name'] = _("Field %d") % l
|
||||
self.mw.progress.start()
|
||||
self.model.addField(f)
|
||||
self.mw.progress.finish()
|
||||
self.reload()
|
||||
self.form.fieldList.setCurrentRow(l)
|
||||
self.form.fieldName.setFocus()
|
||||
self.form.fieldName.selectAll()
|
||||
|
||||
def updateFact(self):
|
||||
oldFact = self.fact
|
||||
model = self.deck.db.query(Model).get(oldFact.model.id)
|
||||
fact = self.deck.newFact(model)
|
||||
for field in fact.fields:
|
||||
try:
|
||||
fact[field.name] = oldFact[field.name]
|
||||
except KeyError:
|
||||
fact[field.name] = u""
|
||||
fact.tags = oldFact.tags
|
||||
self.fact = fact
|
||||
|
||||
def deleteField(self):
|
||||
row = self.form.fieldList.currentRow()
|
||||
if row == -1:
|
||||
return
|
||||
if len(self.model.fieldModels) < 2:
|
||||
ui.utils.showInfo(
|
||||
if len(self.model.fields) < 2:
|
||||
showInfo(
|
||||
_("Please add a new field first."),
|
||||
parent=self)
|
||||
return
|
||||
field = self.model.fieldModels[row]
|
||||
count = self.deck.fieldModelUseCount(field)
|
||||
if count:
|
||||
if not ui.utils.askUser(
|
||||
_("This field is used by %d cards. If you delete it,\n"
|
||||
"all information in this field will be lost.\n"
|
||||
"\nReally delete this field?") % count,
|
||||
parent=self):
|
||||
return
|
||||
self.deck.deleteFieldModel(self.model, field)
|
||||
self.fillFieldList()
|
||||
if askUser(_("Delete this field and its data from all facts?"),
|
||||
self.parent):
|
||||
self.mw.progress.start()
|
||||
self.model.delField(self.field)
|
||||
self.mw.progress.finish()
|
||||
# need to update q/a format
|
||||
self.readCard()
|
||||
self.reload()
|
||||
|
||||
def moveFieldUp(self):
|
||||
row = self.form.fieldList.currentRow()
|
||||
|
@ -441,28 +421,20 @@ class CardLayout(QDialog):
|
|||
return
|
||||
if row == 0:
|
||||
return
|
||||
field = self.model.fieldModels[row]
|
||||
tField = self.model.fieldModels[row - 1]
|
||||
self.model.fieldModels.remove(field)
|
||||
self.model.fieldModels.insert(row - 1, field)
|
||||
if field.id not in self.fieldOrdinalUpdatedIds:
|
||||
self.fieldOrdinalUpdatedIds.append(field.id)
|
||||
if tField.id not in self.fieldOrdinalUpdatedIds:
|
||||
self.fieldOrdinalUpdatedIds.append(tField.id)
|
||||
self.fillFieldList(row - 1)
|
||||
self.mw.progress.start()
|
||||
self.model.moveField(self.field, row-1)
|
||||
self.mw.progress.finish()
|
||||
self.form.fieldList.setCurrentRow(row-1)
|
||||
self.reload()
|
||||
|
||||
def moveFieldDown(self):
|
||||
row = self.form.fieldList.currentRow()
|
||||
if row == -1:
|
||||
return
|
||||
if row == len(self.model.fieldModels) - 1:
|
||||
if row == len(self.model.fields) - 1:
|
||||
return
|
||||
field = self.model.fieldModels[row]
|
||||
tField = self.model.fieldModels[row + 1]
|
||||
self.model.fieldModels.remove(field)
|
||||
self.model.fieldModels.insert(row + 1, field)
|
||||
if field.id not in self.fieldOrdinalUpdatedIds:
|
||||
self.fieldOrdinalUpdatedIds.append(field.id)
|
||||
if tField.id not in self.fieldOrdinalUpdatedIds:
|
||||
self.fieldOrdinalUpdatedIds.append(tField.id)
|
||||
self.fillFieldList(row + 1)
|
||||
self.mw.progress.start()
|
||||
self.model.moveField(self.field, row+1)
|
||||
self.mw.progress.finish()
|
||||
self.form.fieldList.setCurrentRow(row+1)
|
||||
self.reload()
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>407</width>
|
||||
<height>482</height>
|
||||
<width>472</width>
|
||||
<height>531</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -33,7 +33,7 @@
|
|||
</sizepolicy>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
|
@ -42,12 +42,6 @@
|
|||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QGridLayout" name="templateLayout">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="3" column="1">
|
||||
<widget class="QTextEdit" name="cardQuestion">
|
||||
<property name="sizePolicy">
|
||||
|
@ -137,7 +131,7 @@
|
|||
<string>Flip</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="icons.qrc">
|
||||
<normaloff>:/icons/multisynk.png</normaloff>:/icons/multisynk.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
|
@ -212,7 +206,7 @@
|
|||
<item>
|
||||
<widget class="QCheckBox" name="allowEmptyAnswer">
|
||||
<property name="text">
|
||||
<string>Allow the answer to be blank</string>
|
||||
<string>Add cards even if answer is blank</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -321,12 +315,6 @@
|
|||
</item>
|
||||
<item>
|
||||
<layout class="QGridLayout" name="_2">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="fieldName"/>
|
||||
</item>
|
||||
|
@ -442,24 +430,17 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<item row="7" column="1">
|
||||
<widget class="QCheckBox" name="rtl">
|
||||
<property name="text">
|
||||
<string>Reverse text direction (RTL)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="1">
|
||||
<widget class="QCheckBox" name="numeric">
|
||||
<property name="text">
|
||||
<string>Sort as numbers in browser</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QCheckBox" name="fieldRequired">
|
||||
<property name="text">
|
||||
<string>Prevent empty entries</string>
|
||||
<string>Require text in field</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -519,9 +500,6 @@
|
|||
<string>Preview</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="_3">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>6</number>
|
||||
</property>
|
||||
|
@ -582,11 +560,10 @@
|
|||
<tabstop>fieldUnique</tabstop>
|
||||
<tabstop>fieldRequired</tabstop>
|
||||
<tabstop>preserveWhitespace</tabstop>
|
||||
<tabstop>numeric</tabstop>
|
||||
<tabstop>rtl</tabstop>
|
||||
</tabstops>
|
||||
<resources>
|
||||
<include location="../icons.qrc"/>
|
||||
<include location="icons.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
|
|
Loading…
Reference in a new issue