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