mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 00:36:38 -04:00
when changing a model, toggle options so duplicates impossible
This commit is contained in:
parent
694310ba6c
commit
60d4f6d136
1 changed files with 28 additions and 1 deletions
|
@ -823,6 +823,7 @@ class ChangeModelDialog(QDialog):
|
||||||
restoreGeom(self, "changeModel")
|
restoreGeom(self, "changeModel")
|
||||||
self.modelChanged(self.oldModel)
|
self.modelChanged(self.oldModel)
|
||||||
self.ret = None
|
self.ret = None
|
||||||
|
self.pauseUpdate = False
|
||||||
|
|
||||||
def modelChanged(self, model):
|
def modelChanged(self, model):
|
||||||
self.targetModel = model
|
self.targetModel = model
|
||||||
|
@ -848,11 +849,16 @@ class ChangeModelDialog(QDialog):
|
||||||
combos = []
|
combos = []
|
||||||
targets = [x.name for x in dst] + [_("Nothing")]
|
targets = [x.name for x in dst] + [_("Nothing")]
|
||||||
qtargets = QStringList(targets)
|
qtargets = QStringList(targets)
|
||||||
|
indices = {}
|
||||||
for i, x in enumerate(src):
|
for i, x in enumerate(src):
|
||||||
l.addWidget(QLabel(_("Change %s to:") % x.name), i, 0)
|
l.addWidget(QLabel(_("Change %s to:") % x.name), i, 0)
|
||||||
cb = QComboBox()
|
cb = QComboBox()
|
||||||
cb.addItems(qtargets)
|
cb.addItems(qtargets)
|
||||||
cb.setCurrentIndex(min(i, len(targets)-1))
|
idx = min(i, len(targets)-1)
|
||||||
|
cb.setCurrentIndex(idx)
|
||||||
|
indices[cb] = idx
|
||||||
|
self.connect(cb, SIGNAL("currentIndexChanged(int)"),
|
||||||
|
lambda i, cb=cb, key=key: self.onComboChanged(i, cb, key))
|
||||||
combos.append(cb)
|
combos.append(cb)
|
||||||
l.addWidget(cb, i, 1)
|
l.addWidget(cb, i, 1)
|
||||||
map.setLayout(l)
|
map.setLayout(l)
|
||||||
|
@ -860,10 +866,31 @@ class ChangeModelDialog(QDialog):
|
||||||
setattr(self, key + "MapWidget", map)
|
setattr(self, key + "MapWidget", map)
|
||||||
setattr(self, key + "MapLayout", lay)
|
setattr(self, key + "MapLayout", lay)
|
||||||
setattr(self, key + "Combos", combos)
|
setattr(self, key + "Combos", combos)
|
||||||
|
setattr(self, key + "Indices", indices)
|
||||||
|
|
||||||
def rebuildFieldMap(self):
|
def rebuildFieldMap(self):
|
||||||
return self.rebuildTemplateMap(key="field", attr="fieldModels")
|
return self.rebuildTemplateMap(key="field", attr="fieldModels")
|
||||||
|
|
||||||
|
def onComboChanged(self, i, cb, key):
|
||||||
|
indices = getattr(self, key + "Indices")
|
||||||
|
if self.pauseUpdate:
|
||||||
|
indices[cb] = i
|
||||||
|
return
|
||||||
|
combos = getattr(self, key + "Combos")
|
||||||
|
if i == cb.count() - 1:
|
||||||
|
# set to 'nothing'
|
||||||
|
return
|
||||||
|
# find another combo with same index
|
||||||
|
for c in combos:
|
||||||
|
if c == cb:
|
||||||
|
continue
|
||||||
|
if c.currentIndex() == i:
|
||||||
|
self.pauseUpdate = True
|
||||||
|
c.setCurrentIndex(indices[cb])
|
||||||
|
self.pauseUpdate = False
|
||||||
|
break
|
||||||
|
indices[cb] = i
|
||||||
|
|
||||||
def getTemplateMap(self, old=None, combos=None, new=None):
|
def getTemplateMap(self, old=None, combos=None, new=None):
|
||||||
if not old:
|
if not old:
|
||||||
old = self.oldModel.cardModels
|
old = self.oldModel.cardModels
|
||||||
|
|
Loading…
Reference in a new issue