diff --git a/aqt/modelchooser.py b/aqt/modelchooser.py index 12fd5df1e..0aafacad7 100644 --- a/aqt/modelchooser.py +++ b/aqt/modelchooser.py @@ -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): diff --git a/aqt/models.py b/aqt/models.py index 0c3973a06..a906a48bf 100644 --- a/aqt/models.py +++ b/aqt/models.py @@ -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() diff --git a/designer/addmodel.ui b/designer/addmodel.ui index 8c87acb4d..9a86dc51d 100644 --- a/designer/addmodel.ui +++ b/designer/addmodel.ui @@ -1,7 +1,8 @@ - - AddModel - - + + + Dialog + + 0 0 @@ -9,27 +10,27 @@ 269 - + Add Model - + - - + + - + - - + + 12 - + QAbstractItemView::NoEditTriggers - + true @@ -38,12 +39,12 @@ - - + + Qt::Horizontal - - QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok + + QDialogButtonBox::Help|QDialogButtonBox::Ok @@ -54,14 +55,14 @@ buttonBox accepted() - AddModel + Dialog accept() - + 266 353 - + 157 274 @@ -70,14 +71,14 @@ buttonBox rejected() - AddModel + Dialog reject() - + 334 353 - + 286 274