diff --git a/ankiqt/ui/cardlist.py b/ankiqt/ui/cardlist.py
index ee098d073..58d0f3220 100644
--- a/ankiqt/ui/cardlist.py
+++ b/ankiqt/ui/cardlist.py
@@ -821,9 +821,23 @@ where id in %s""" % ids2str(sf))
######################################################################
def onFindReplace(self):
+ sf = self.selectedFacts()
+ if not sf:
+ return
+ mods = self.deck.s.column0("""
+select distinct modelId from facts
+where id in %s""" % ids2str(sf))
+ if not len(mods) == 1:
+ ui.utils.showInfo(
+ _("Can only operate on one model at a time."),
+ parent=self)
+ return
d = QDialog(self)
frm = ankiqt.forms.findreplace.Ui_Dialog()
frm.setupUi(d)
+ fields = sorted(self.currentCard.fact.model.fieldModels, key=attrgetter("name"))
+ frm.field.addItems(QStringList(
+ [_("All Fields")] + [f.name for f in fields]))
self.connect(frm.buttonBox, SIGNAL("helpRequested()"),
self.onFindReplaceHelp)
if not d.exec_():
@@ -833,14 +847,18 @@ where id in %s""" % ids2str(sf))
self.deck.startProgress(2)
self.deck.updateProgress(_("Replacing..."))
self.deck.setUndoStart(n)
- sf = self.selectedFacts()
self.deck.updateProgress()
changed = None
try:
- changed = self.deck.findReplace(self.selectedFacts(),
- unicode(frm.find.text()),
- unicode(frm.replace.text()),
- frm.re.isChecked())
+ if frm.field.currentIndex() == 0:
+ field = None
+ else:
+ field = fields[frm.field.currentIndex()-1].id
+ changed = self.deck.findReplace(sf,
+ unicode(frm.find.text()),
+ unicode(frm.replace.text()),
+ frm.re.isChecked(),
+ field)
except sre_constants.error:
ui.utils.showInfo(_("Invalid regular expression."),
parent=self)
diff --git a/designer/findreplace.ui b/designer/findreplace.ui
index f060e7e5b..d27b9d7cf 100644
--- a/designer/findreplace.ui
+++ b/designer/findreplace.ui
@@ -18,30 +18,40 @@
-
- Find
+ <b>Find</b>:
-
- -
+
-
- Replace
+ <b>Replace With</b>:
- -
+
-
- -
+
-
Treat input as regular expression
+ -
+
+
+ <b>In</b>:
+
+
+
+ -
+
+
-
@@ -71,6 +81,7 @@
find
+ field
replace
re
buttonBox
@@ -84,8 +95,8 @@
accept()
- 252
- 127
+ 256
+ 154
157
@@ -100,8 +111,8 @@
reject()
- 286
- 127
+ 290
+ 154
286