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

View file

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

View file

@ -1,7 +1,8 @@
<ui version="4.0" >
<class>AddModel</class>
<widget class="QDialog" name="AddModel" >
<property name="geometry" >
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
@ -9,27 +10,27 @@
<height>269</height>
</rect>
</property>
<property name="windowTitle" >
<property name="windowTitle">
<string>Add Model</string>
</property>
<layout class="QVBoxLayout" >
<layout class="QVBoxLayout">
<item>
<widget class="QGroupBox" name="groupBox" >
<property name="title" >
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string/>
</property>
<layout class="QVBoxLayout" >
<layout class="QVBoxLayout">
<item>
<widget class="QListWidget" name="models" >
<property name="font" >
<widget class="QListWidget" name="models">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="editTriggers" >
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="tabKeyNavigation" >
<property name="tabKeyNavigation">
<bool>true</bool>
</property>
</widget>
@ -38,12 +39,12 @@
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox" >
<property name="orientation" >
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons" >
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
<property name="standardButtons">
<set>QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
@ -54,14 +55,14 @@
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>AddModel</receiver>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel" >
<hint type="sourcelabel">
<x>266</x>
<y>353</y>
</hint>
<hint type="destinationlabel" >
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
@ -70,14 +71,14 @@
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>AddModel</receiver>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel" >
<hint type="sourcelabel">
<x>334</x>
<y>353</y>
</hint>
<hint type="destinationlabel" >
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>