mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -04:00
copy models, remove 'current model' & 'add model'
This commit is contained in:
parent
cea6770da5
commit
324226fff2
6 changed files with 41 additions and 66 deletions
|
@ -19,10 +19,11 @@ tabs = ("ModelsAndPriorities",
|
||||||
|
|
||||||
class DeckProperties(QDialog):
|
class DeckProperties(QDialog):
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent, deck, onFinish=None):
|
||||||
QDialog.__init__(self, parent, Qt.Window)
|
QDialog.__init__(self, parent, Qt.Window)
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.d = parent.deck
|
self.d = deck
|
||||||
|
self.onFinish = onFinish
|
||||||
self.origMod = self.d.modified
|
self.origMod = self.d.modified
|
||||||
self.dialog = ankiqt.forms.deckproperties.Ui_DeckProperties()
|
self.dialog = ankiqt.forms.deckproperties.Ui_DeckProperties()
|
||||||
self.dialog.setupUi(self)
|
self.dialog.setupUi(self)
|
||||||
|
@ -33,7 +34,6 @@ class DeckProperties(QDialog):
|
||||||
self.connect(self.dialog.buttonBox, SIGNAL("helpRequested()"), self.helpRequested)
|
self.connect(self.dialog.buttonBox, SIGNAL("helpRequested()"), self.helpRequested)
|
||||||
self.connect(self.dialog.addSource, SIGNAL("clicked()"), self.onAddSource)
|
self.connect(self.dialog.addSource, SIGNAL("clicked()"), self.onAddSource)
|
||||||
self.connect(self.dialog.deleteSource, SIGNAL("clicked()"), self.onDeleteSource)
|
self.connect(self.dialog.deleteSource, SIGNAL("clicked()"), self.onDeleteSource)
|
||||||
|
|
||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
def readData(self):
|
def readData(self):
|
||||||
|
@ -115,7 +115,7 @@ class DeckProperties(QDialog):
|
||||||
self.dialog.modelsList.setCurrentItem(item)
|
self.dialog.modelsList.setCurrentItem(item)
|
||||||
|
|
||||||
def onAdd(self):
|
def onAdd(self):
|
||||||
m = ui.modelchooser.AddModel(self, self.parent).getModel()
|
m = ui.modelchooser.AddModel(self, self.parent, self.d).getModel()
|
||||||
if m:
|
if m:
|
||||||
self.d.addModel(m)
|
self.d.addModel(m)
|
||||||
self.updateModelsList()
|
self.updateModelsList()
|
||||||
|
@ -126,8 +126,8 @@ class DeckProperties(QDialog):
|
||||||
return
|
return
|
||||||
# set to current
|
# set to current
|
||||||
self.d.currentModel = model
|
self.d.currentModel = model
|
||||||
ui.modelproperties.ModelProperties(self, model, self.parent, onFinish=
|
ui.modelproperties.ModelProperties(self, self.d, model, self.parent,
|
||||||
self.updateModelsList)
|
onFinish=self.updateModelsList)
|
||||||
|
|
||||||
def onDelete(self):
|
def onDelete(self):
|
||||||
model = self.selectedModel()
|
model = self.selectedModel()
|
||||||
|
@ -198,7 +198,7 @@ class DeckProperties(QDialog):
|
||||||
|
|
||||||
def reject(self):
|
def reject(self):
|
||||||
n = _("Deck Properties")
|
n = _("Deck Properties")
|
||||||
self.parent.deck.setUndoStart(n)
|
self.d.setUndoStart(n)
|
||||||
# syncing
|
# syncing
|
||||||
if self.dialog.doSync.checkState() == Qt.Checked:
|
if self.dialog.doSync.checkState() == Qt.Checked:
|
||||||
self.updateField(self.d, 'syncName',
|
self.updateField(self.d, 'syncName',
|
||||||
|
@ -284,6 +284,8 @@ insert into sources values
|
||||||
self.d.setModified()
|
self.d.setModified()
|
||||||
# mark deck dirty and close
|
# mark deck dirty and close
|
||||||
if self.origMod != self.d.modified:
|
if self.origMod != self.d.modified:
|
||||||
self.parent.reset()
|
ankiqt.mw.reset()
|
||||||
self.parent.deck.setUndoEnd(n)
|
self.d.setUndoEnd(n)
|
||||||
|
if self.onFinish:
|
||||||
|
self.onFinish()
|
||||||
QDialog.reject(self)
|
QDialog.reject(self)
|
||||||
|
|
|
@ -1283,14 +1283,7 @@ day = :d""", d=yesterday)
|
||||||
self.moveToState("editCurrentFact")
|
self.moveToState("editCurrentFact")
|
||||||
|
|
||||||
def onDeckProperties(self):
|
def onDeckProperties(self):
|
||||||
self.deckProperties = ui.deckproperties.DeckProperties(self)
|
self.deckProperties = ui.deckproperties.DeckProperties(self, self.deck)
|
||||||
|
|
||||||
def onModelProperties(self):
|
|
||||||
if self.currentCard:
|
|
||||||
model = self.currentCard.fact.model
|
|
||||||
else:
|
|
||||||
model = self.deck.currentModel
|
|
||||||
ui.modelproperties.ModelProperties(self, model)
|
|
||||||
|
|
||||||
def onDisplayProperties(self):
|
def onDisplayProperties(self):
|
||||||
ui.dialogs.get("DisplayProperties", self)
|
ui.dialogs.get("DisplayProperties", self)
|
||||||
|
@ -1558,7 +1551,6 @@ day = :d""", d=yesterday)
|
||||||
"Syncdeck",
|
"Syncdeck",
|
||||||
"DisplayProperties",
|
"DisplayProperties",
|
||||||
"DeckProperties",
|
"DeckProperties",
|
||||||
"ModelProperties",
|
|
||||||
"Undo",
|
"Undo",
|
||||||
"Redo",
|
"Redo",
|
||||||
"Export",
|
"Export",
|
||||||
|
@ -1610,7 +1602,6 @@ day = :d""", d=yesterday)
|
||||||
self.connect(m.actionMarkCard, SIGNAL("toggled(bool)"), self.onMark)
|
self.connect(m.actionMarkCard, SIGNAL("toggled(bool)"), self.onMark)
|
||||||
self.connect(m.actionSuspendCard, s, self.onSuspend)
|
self.connect(m.actionSuspendCard, s, self.onSuspend)
|
||||||
self.connect(m.actionDelete, s, self.onDelete)
|
self.connect(m.actionDelete, s, self.onDelete)
|
||||||
self.connect(m.actionModelProperties, s, self.onModelProperties)
|
|
||||||
self.connect(m.actionRepeatAudio, s, self.onRepeatAudio)
|
self.connect(m.actionRepeatAudio, s, self.onRepeatAudio)
|
||||||
self.connect(m.actionUndo, s, self.onUndo)
|
self.connect(m.actionUndo, s, self.onUndo)
|
||||||
self.connect(m.actionRedo, s, self.onRedo)
|
self.connect(m.actionRedo, s, self.onRedo)
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
from PyQt4.QtGui import *
|
from PyQt4.QtGui import *
|
||||||
from PyQt4.QtCore import *
|
from PyQt4.QtCore import *
|
||||||
|
from operator import attrgetter
|
||||||
import anki
|
import anki
|
||||||
from anki import stdmodels
|
from anki import stdmodels
|
||||||
from anki.models import *
|
from anki.models import *
|
||||||
|
@ -18,7 +19,7 @@ class ModelChooser(QHBoxLayout):
|
||||||
self.deck = deck
|
self.deck = deck
|
||||||
self.onChangeFunc = onChangeFunc
|
self.onChangeFunc = onChangeFunc
|
||||||
self.setMargin(0)
|
self.setMargin(0)
|
||||||
self.setSpacing(6)
|
self.setSpacing(4)
|
||||||
self.shortcuts = []
|
self.shortcuts = []
|
||||||
label = QLabel(_("<b>Model</b>:"))
|
label = QLabel(_("<b>Model</b>:"))
|
||||||
self.addWidget(label)
|
self.addWidget(label)
|
||||||
|
@ -32,16 +33,11 @@ class ModelChooser(QHBoxLayout):
|
||||||
QSizePolicy.Policy(0))
|
QSizePolicy.Policy(0))
|
||||||
self.models.setSizePolicy(sizePolicy)
|
self.models.setSizePolicy(sizePolicy)
|
||||||
self.addWidget(self.models)
|
self.addWidget(self.models)
|
||||||
self.add = QPushButton()
|
|
||||||
self.add.setIcon(QIcon(":/icons/list-add.png"))
|
|
||||||
self.add.setToolTip(_("Add a new model"))
|
|
||||||
self.add.setAutoDefault(False)
|
|
||||||
self.addWidget(self.add)
|
|
||||||
self.connect(self.add, SIGNAL("clicked()"), self.onAdd)
|
|
||||||
self.edit = QPushButton()
|
self.edit = QPushButton()
|
||||||
self.edit.setIcon(QIcon(":/icons/edit.png"))
|
self.edit.setFixedWidth(32)
|
||||||
|
self.edit.setIcon(QIcon(":/icons/configure.png"))
|
||||||
self.edit.setShortcut(_("Shift+Alt+e"))
|
self.edit.setShortcut(_("Shift+Alt+e"))
|
||||||
self.edit.setToolTip(_("Edit the current model"))
|
self.edit.setToolTip(_("Customize Models"))
|
||||||
self.edit.setAutoDefault(False)
|
self.edit.setAutoDefault(False)
|
||||||
self.addWidget(self.edit)
|
self.addWidget(self.edit)
|
||||||
self.connect(self.edit, SIGNAL("clicked()"), self.onEdit)
|
self.connect(self.edit, SIGNAL("clicked()"), self.onEdit)
|
||||||
|
@ -68,7 +64,7 @@ class ModelChooser(QHBoxLayout):
|
||||||
def onEdit(self):
|
def onEdit(self):
|
||||||
idx = self.models.currentIndex()
|
idx = self.models.currentIndex()
|
||||||
model = self.deck.models[idx]
|
model = self.deck.models[idx]
|
||||||
ui.modelproperties.ModelProperties(self.parent, model, self.main,
|
ui.deckproperties.DeckProperties(self.parent, self.deck,
|
||||||
onFinish=self.onModelEdited)
|
onFinish=self.onModelEdited)
|
||||||
self.drawModels()
|
self.drawModels()
|
||||||
self.changed(model)
|
self.changed(model)
|
||||||
|
@ -76,16 +72,6 @@ class ModelChooser(QHBoxLayout):
|
||||||
def onModelEdited(self):
|
def onModelEdited(self):
|
||||||
self.drawModels()
|
self.drawModels()
|
||||||
|
|
||||||
def onAdd(self):
|
|
||||||
model = AddModel(self.parent, self.main).getModel()
|
|
||||||
if model:
|
|
||||||
self.deck.addModel(model)
|
|
||||||
self.drawModels()
|
|
||||||
self.changed(model)
|
|
||||||
self.deck.setModified()
|
|
||||||
# check again
|
|
||||||
self.deck.haveJapanese = None
|
|
||||||
|
|
||||||
def onChange(self, idx):
|
def onChange(self, idx):
|
||||||
model = self.deck.models[idx]
|
model = self.deck.models[idx]
|
||||||
self.deck.currentModel = model
|
self.deck.currentModel = model
|
||||||
|
@ -166,23 +152,30 @@ class ModelChooser(QHBoxLayout):
|
||||||
|
|
||||||
class AddModel(QDialog):
|
class AddModel(QDialog):
|
||||||
|
|
||||||
def __init__(self, parent, main=None):
|
def __init__(self, parent, main, deck):
|
||||||
QDialog.__init__(self, parent, Qt.Window)
|
QDialog.__init__(self, parent, Qt.Window)
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
if not main:
|
if not main:
|
||||||
main = parent
|
main = parent
|
||||||
self.main = main
|
self.main = main
|
||||||
self.model = None
|
self.model = None
|
||||||
|
self.deck = deck
|
||||||
self.dialog = ankiqt.forms.addmodel.Ui_AddModel()
|
self.dialog = ankiqt.forms.addmodel.Ui_AddModel()
|
||||||
self.dialog.setupUi(self)
|
self.dialog.setupUi(self)
|
||||||
self.models = {}
|
self.models = []
|
||||||
names = stdmodels.models.keys()
|
names = stdmodels.models.keys()
|
||||||
names.sort()
|
names.sort()
|
||||||
for name in names:
|
for name in names:
|
||||||
m = stdmodels.byName(name)
|
m = stdmodels.byName(name)
|
||||||
item = QListWidgetItem(m.name)
|
item = QListWidgetItem(_("Add: %s") % m.name)
|
||||||
self.dialog.models.addItem(item)
|
self.dialog.models.addItem(item)
|
||||||
self.models[m.name] = m
|
self.models.append((True, m))
|
||||||
|
# add local decks
|
||||||
|
models = sorted(deck.models, key=attrgetter("name"))
|
||||||
|
for m in models:
|
||||||
|
item = QListWidgetItem(_("Copy: %s") % m.name)
|
||||||
|
self.dialog.models.addItem(item)
|
||||||
|
self.models.append((False, m))
|
||||||
self.dialog.models.setCurrentRow(0)
|
self.dialog.models.setCurrentRow(0)
|
||||||
# the list widget will swallow the enter key
|
# the list widget will swallow the enter key
|
||||||
s = QShortcut(QKeySequence("Return"), self)
|
s = QShortcut(QKeySequence("Return"), self)
|
||||||
|
@ -195,8 +188,11 @@ class AddModel(QDialog):
|
||||||
return self.model
|
return self.model
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
self.model = self.models[
|
(isStd, self.model) = self.models[
|
||||||
unicode(self.dialog.models.currentItem().text())]
|
self.dialog.models.currentRow()]
|
||||||
|
if not isStd:
|
||||||
|
# not a standard model, so duplicate
|
||||||
|
self.model = self.deck.copyModel(self.model)
|
||||||
QDialog.accept(self)
|
QDialog.accept(self)
|
||||||
|
|
||||||
def onHelp(self):
|
def onHelp(self):
|
||||||
|
|
|
@ -15,12 +15,12 @@ tabs = ("General",
|
||||||
|
|
||||||
class ModelProperties(QDialog):
|
class ModelProperties(QDialog):
|
||||||
|
|
||||||
def __init__(self, parent, model, main=None, onFinish=None):
|
def __init__(self, parent, deck, model, main=None, onFinish=None):
|
||||||
QDialog.__init__(self, parent, Qt.Window)
|
QDialog.__init__(self, parent, Qt.Window)
|
||||||
if not main:
|
if not main:
|
||||||
main = parent
|
main = parent
|
||||||
self.parent = main
|
self.parent = main
|
||||||
self.deck = main.deck
|
self.deck = deck
|
||||||
self.origModTime = self.deck.modified
|
self.origModTime = self.deck.modified
|
||||||
self.m = model
|
self.m = model
|
||||||
self.onFinish = onFinish
|
self.onFinish = onFinish
|
||||||
|
@ -33,7 +33,7 @@ class ModelProperties(QDialog):
|
||||||
self.readData()
|
self.readData()
|
||||||
self.show()
|
self.show()
|
||||||
self.undoName = _("Model Properties")
|
self.undoName = _("Model Properties")
|
||||||
self.parent.deck.setUndoStart(self.undoName)
|
self.deck.setUndoStart(self.undoName)
|
||||||
self.exec_()
|
self.exec_()
|
||||||
|
|
||||||
def readData(self):
|
def readData(self):
|
||||||
|
@ -474,10 +474,10 @@ class ModelProperties(QDialog):
|
||||||
self.deck.setModified()
|
self.deck.setModified()
|
||||||
# if changed, reset deck
|
# if changed, reset deck
|
||||||
if self.origModTime != self.deck.modified:
|
if self.origModTime != self.deck.modified:
|
||||||
self.parent.reset()
|
ankiqt.mw.reset()
|
||||||
if self.onFinish:
|
if self.onFinish:
|
||||||
self.onFinish()
|
self.onFinish()
|
||||||
self.parent.deck.setUndoEnd(self.undoName)
|
self.deck.setUndoEnd(self.undoName)
|
||||||
# check again
|
# check again
|
||||||
self.parent.deck.haveJapanese = None
|
self.deck.haveJapanese = None
|
||||||
QDialog.reject(self)
|
QDialog.reject(self)
|
||||||
|
|
|
@ -10,22 +10,9 @@
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle" >
|
<property name="windowTitle" >
|
||||||
<string>Anki</string>
|
<string>Add Model</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label" >
|
|
||||||
<property name="text" >
|
|
||||||
<string><h1>Add Model</h1></string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment" >
|
|
||||||
<set>Qt::AlignCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap" >
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBox" >
|
<widget class="QGroupBox" name="groupBox" >
|
||||||
<property name="title" >
|
<property name="title" >
|
||||||
|
|
|
@ -1167,7 +1167,6 @@
|
||||||
<addaction name="separator" />
|
<addaction name="separator" />
|
||||||
<addaction name="actionStudyOptions" />
|
<addaction name="actionStudyOptions" />
|
||||||
<addaction name="actionDisplayProperties" />
|
<addaction name="actionDisplayProperties" />
|
||||||
<addaction name="actionModelProperties" />
|
|
||||||
<addaction name="actionDeckProperties" />
|
<addaction name="actionDeckProperties" />
|
||||||
<addaction name="separator" />
|
<addaction name="separator" />
|
||||||
<addaction name="menuPlugins" />
|
<addaction name="menuPlugins" />
|
||||||
|
|
Loading…
Reference in a new issue