From da91313aaedbc31434a2a17fa3710dc3328b5494 Mon Sep 17 00:00:00 2001 From: Eli Algranti Date: Tue, 10 Apr 2012 11:35:39 +1000 Subject: [PATCH] UI changes only: Added list of search-replace items. --- src/calibre/gui2/convert/regex_builder.py | 3 ++ .../gui2/convert/search_and_replace.py | 52 +++++++++++++++++- .../gui2/convert/search_and_replace.ui | 53 +++++++++++++++++++ 3 files changed, 107 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/convert/regex_builder.py b/src/calibre/gui2/convert/regex_builder.py index bbbef7e741..0a07e92e25 100644 --- a/src/calibre/gui2/convert/regex_builder.py +++ b/src/calibre/gui2/convert/regex_builder.py @@ -226,6 +226,9 @@ class RegexEdit(QWidget, Ui_Edit): def set_doc(self, doc): self.doc_cache = doc + def set_regex(self, regex): + self.edit.setText(regex) + def break_cycles(self): self.db = self.doc_cache = None diff --git a/src/calibre/gui2/convert/search_and_replace.py b/src/calibre/gui2/convert/search_and_replace.py index b9e2644008..833b80b320 100644 --- a/src/calibre/gui2/convert/search_and_replace.py +++ b/src/calibre/gui2/convert/search_and_replace.py @@ -6,6 +6,8 @@ __docformat__ = 'restructuredtext en' import re +from PyQt4.QtCore import SIGNAL, Qt +from PyQt4.QtGui import QTableWidgetItem from calibre.gui2.convert.search_and_replace_ui import Ui_Form from calibre.gui2.convert import Widget from calibre.gui2 import error_dialog @@ -29,6 +31,7 @@ class SearchAndReplaceWidget(Widget, Ui_Form): self.opt_sr1_search.set_msg(_('&Search Regular Expression')) self.opt_sr1_search.set_book_id(book_id) self.opt_sr1_search.set_db(db) + self.opt_sr1_search.set_regex('test.*') self.opt_sr2_search.set_msg(_('&Search Regular Expression')) self.opt_sr2_search.set_book_id(book_id) self.opt_sr2_search.set_db(db) @@ -40,6 +43,49 @@ class SearchAndReplaceWidget(Widget, Ui_Form): self.opt_sr2_search.doc_update.connect(self.update_doc) self.opt_sr3_search.doc_update.connect(self.update_doc) + self.opt_sr.setColumnCount(2) + self.opt_sr.setHorizontalHeaderLabels(['Search Expression', 'Replacement']) + self.connect(self.sr_add, SIGNAL('clicked()'), self.sr_add_clicked) + self.connect(self.sr_change, SIGNAL('clicked()'), self.sr_change_clicked) + self.connect(self.sr_remove, SIGNAL('clicked()'), self.sr_remove_clicked) + self.connect(self.opt_sr, SIGNAL('currentCellChanged(int, int, int, int)'), self.sr_currentCellChanged) + + def sr_add_clicked(self): + if self.opt_sr1_search.regex: + self.opt_sr.insertRow(0) + newItem = QTableWidgetItem() + newItem.setFlags(Qt.ItemFlags(Qt.ItemIsSelectable + Qt.ItemIsEnabled)) + newItem.setText(self.opt_sr1_search.regex) + self.opt_sr.setItem(0,0, newItem) + newItem = QTableWidgetItem() + newItem.setFlags(Qt.ItemFlags(Qt.ItemIsSelectable + Qt.ItemIsEnabled)) + newItem.setText(self.opt_sr1_replace.text()) + self.opt_sr.setItem(0,1, newItem) + self.opt_sr.setCurrentCell(0, 0) + + def sr_change_clicked(self): + row = self.opt_sr.currentRow() + if row >= 0: + self.opt_sr.item(row, 0).setText(self.opt_sr1_search.regex) + self.opt_sr.item(row, 1).setText(self.opt_sr1_replace.text()) + self.opt_sr.setCurrentCell(row, 0) + + def sr_remove_clicked(self): + row = self.opt_sr.currentRow() + if row >= 0: + self.opt_sr.removeRow(row) + self.opt_sr.setCurrentCell(row-1, 0) + + def sr_currentCellChanged(self, row, column, previousRow, previousColumn) : + if row >= 0: + self.sr_change.setEnabled(True) + self.sr_remove.setEnabled(True) + self.opt_sr1_search.set_regex(self.opt_sr.item(row, 0).text()) + self.opt_sr1_replace.setText(self.opt_sr.item(row, 1).text()) + else: + self.sr_change.setEnabled(False) + self.sr_remove.setEnabled(False) + def break_cycles(self): Widget.break_cycles(self) @@ -74,4 +120,8 @@ class SearchAndReplaceWidget(Widget, Ui_Form): return False return True - + def opt_sr_items + items = [] + for row in xrange(0, self.opt_sr.rowCount()): + items.append([self.opt_sr.getItem(row,0).text(), self.opt_sr.getItem(row,1).text()]) + return items diff --git a/src/calibre/gui2/convert/search_and_replace.ui b/src/calibre/gui2/convert/search_and_replace.ui index 03a74b5ebd..d55b5cd0a6 100644 --- a/src/calibre/gui2/convert/search_and_replace.ui +++ b/src/calibre/gui2/convert/search_and_replace.ui @@ -185,6 +185,59 @@ + + + + -1 + + + 0 + + + + + Add + + + + + + + Change + + + false + + + + + + + Remove + + + false + + + + + + + + + + 0 + 0 + + + + QAbstractItemView::SelectRows + + + QAbstractItemView::SingleSelection + + +