fix add; update modelchooser

This commit is contained in:
Damien Elmes 2011-03-31 21:23:05 +09:00
parent 6459ed6396
commit 104c0a11cc
3 changed files with 52 additions and 47 deletions

View file

@ -160,29 +160,27 @@ class ModelChooser(QHBoxLayout):
class AddModel(QDialog): class AddModel(QDialog):
def __init__(self, parent, main, deck): def __init__(self, mw, parent=None):
QDialog.__init__(self, parent, Qt.Window) self.parent = parent or mw
self.parent = parent self.mw = mw
if not main: self.deck = mw.deck
main = parent QDialog.__init__(self, self.parent, Qt.Window)
self.main = main
self.model = None self.model = None
self.deck = deck self.dialog = aqt.forms.addmodel.Ui_Dialog()
self.dialog = aqt.forms.addmodel.Ui_AddModel()
self.dialog.setupUi(self) self.dialog.setupUi(self)
# standard models
self.models = [] self.models = []
names = stdmodels.models.keys() for (name, func) in stdmodels.models:
names.sort() item = QListWidgetItem(_("Add: %s") % name)
for name in names:
m = stdmodels.byName(name)
item = QListWidgetItem(_("Add: %s") % m.name)
self.dialog.models.addItem(item) self.dialog.models.addItem(item)
self.models.append((True, m)) self.models.append((True, func))
# add local decks # add copies
models = sorted(deck.models, key=attrgetter("name")) mids = self.deck.db.list("select id from models order by name")
for m in models: for m in [self.deck.getModel(mid, False) for mid in mids]:
m.id = None
item = QListWidgetItem(_("Copy: %s") % m.name) item = QListWidgetItem(_("Copy: %s") % m.name)
self.dialog.models.addItem(item) self.dialog.models.addItem(item)
m.name = _("%s copy") % m.name
self.models.append((False, m)) 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
@ -191,16 +189,22 @@ class AddModel(QDialog):
# help # help
self.connect(self.dialog.buttonBox, SIGNAL("helpRequested()"), self.onHelp) self.connect(self.dialog.buttonBox, SIGNAL("helpRequested()"), self.onHelp)
def getModel(self): def get(self):
self.exec_() self.exec_()
return self.model return self.model
def reject(self):
self.accept()
def accept(self): def accept(self):
(isStd, self.model) = self.models[ (isStd, model) = self.models[self.dialog.models.currentRow()]
self.dialog.models.currentRow()] if isStd:
if not isStd: # create
# not a standard model, so duplicate self.model = model(self.deck)
self.model = self.deck.copyModel(self.model) else:
# add copy to deck
self.mw.deck.addModel(model)
self.model = model
QDialog.accept(self) QDialog.accept(self)
def onHelp(self): def onHelp(self):

View file

@ -54,7 +54,7 @@ class Models(QDialog):
self.model = self.models[idx] self.model = self.models[idx]
def onAdd(self): def onAdd(self):
m = aqt.modelchooser.AddModel(self, self.parent, self.d).getModel() m = aqt.modelchooser.AddModel(self.mw, self).get()
if m: if m:
self.deck.addModel(m) self.deck.addModel(m)
self.updateModelsList() self.updateModelsList()

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>AddModel</class> <class>Dialog</class>
<widget class="QDialog" name="AddModel" > <widget class="QDialog" name="Dialog">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
@ -43,7 +44,7 @@
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok</set> <set>QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
</property> </property>
</widget> </widget>
</item> </item>
@ -54,7 +55,7 @@
<connection> <connection>
<sender>buttonBox</sender> <sender>buttonBox</sender>
<signal>accepted()</signal> <signal>accepted()</signal>
<receiver>AddModel</receiver> <receiver>Dialog</receiver>
<slot>accept()</slot> <slot>accept()</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
@ -70,7 +71,7 @@
<connection> <connection>
<sender>buttonBox</sender> <sender>buttonBox</sender>
<signal>rejected()</signal> <signal>rejected()</signal>
<receiver>AddModel</receiver> <receiver>Dialog</receiver>
<slot>reject()</slot> <slot>reject()</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">