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,7 +1,8 @@
<ui version="4.0" > <?xml version="1.0" encoding="UTF-8"?>
<class>AddModel</class> <ui version="4.0">
<widget class="QDialog" name="AddModel" > <class>Dialog</class>
<property name="geometry" > <widget class="QDialog" name="Dialog">
<property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
@ -9,27 +10,27 @@
<height>269</height> <height>269</height>
</rect> </rect>
</property> </property>
<property name="windowTitle" > <property name="windowTitle">
<string>Add Model</string> <string>Add Model</string>
</property> </property>
<layout class="QVBoxLayout" > <layout class="QVBoxLayout">
<item> <item>
<widget class="QGroupBox" name="groupBox" > <widget class="QGroupBox" name="groupBox">
<property name="title" > <property name="title">
<string/> <string/>
</property> </property>
<layout class="QVBoxLayout" > <layout class="QVBoxLayout">
<item> <item>
<widget class="QListWidget" name="models" > <widget class="QListWidget" name="models">
<property name="font" > <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
</font> </font>
</property> </property>
<property name="editTriggers" > <property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set> <set>QAbstractItemView::NoEditTriggers</set>
</property> </property>
<property name="tabKeyNavigation" > <property name="tabKeyNavigation">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
@ -38,12 +39,12 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QDialogButtonBox" name="buttonBox" > <widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation" > <property name="orientation">
<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,14 +55,14 @@
<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">
<x>266</x> <x>266</x>
<y>353</y> <y>353</y>
</hint> </hint>
<hint type="destinationlabel" > <hint type="destinationlabel">
<x>157</x> <x>157</x>
<y>274</y> <y>274</y>
</hint> </hint>
@ -70,14 +71,14 @@
<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">
<x>334</x> <x>334</x>
<y>353</y> <y>353</y>
</hint> </hint>
<hint type="destinationlabel" > <hint type="destinationlabel">
<x>286</x> <x>286</x>
<y>274</y> <y>274</y>
</hint> </hint>