From 156dc57e9996862a1a41a6ff5d48c286e7bb74e1 Mon Sep 17 00:00:00 2001 From: John Schember Date: Sun, 23 Jan 2011 20:06:59 -0500 Subject: [PATCH] GUI add regex: Store history in gprefs instead of in filename_pattern. --- src/calibre/ebooks/metadata/meta.py | 8 +----- src/calibre/gui2/widgets.py | 41 ++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/calibre/ebooks/metadata/meta.py b/src/calibre/ebooks/metadata/meta.py index b204e08bed..cbd9db3f04 100644 --- a/src/calibre/ebooks/metadata/meta.py +++ b/src/calibre/ebooks/metadata/meta.py @@ -142,13 +142,7 @@ def metadata_from_filename(name, pat=None): name = name.rpartition('.')[0] mi = MetaInformation(None, None) if pat is None: - pat_re = prefs.get('filename_pattern') - if isinstance(pat_re, list): - if pat_re: - pat_re = pat_re[0] - else: - pat_re = '' - pat = re.compile(pat_re) + pat = re.compile(prefs.get('filename_pattern')) name = name.replace('_', ' ') match = pat.search(name) if match is not None: diff --git a/src/calibre/gui2/widgets.py b/src/calibre/gui2/widgets.py index a433a6e5d7..6380eab0b2 100644 --- a/src/calibre/gui2/widgets.py +++ b/src/calibre/gui2/widgets.py @@ -71,17 +71,27 @@ class FilenamePattern(QWidget, Ui_Form): self.re.lineEdit().textChanged.connect(lambda x: self.changed_signal.emit()) def initialize(self, defaults=False): + # Get all itmes in the combobox. If we are resting + # to defaults we don't want to lose what the user + # has added. + val_hist = [unicode(self.re.lineEdit().text())] + [unicode(self.re.itemText(i)) for i in xrange(self.re.count())] + self.re.clear() + if defaults: val = prefs.defaults['filename_pattern'] else: val = prefs['filename_pattern'] - if isinstance(val, list): - if len(val) > 0: - for v in val: - self.re.addItem(v) - self.re.setCurrentIndex(0) - else: - self.re.lineEdit().setText(val if val else '') + self.re.lineEdit().setText(val) + + val_hist += gprefs.get('filename_pattern_history', ['(?P.+)', '(?P<author>[^_-]+) -?\s*(?P<series>[^_0-9-]*)(?P<series_index>[0-9]*)\s*-\s*(?P<title>[^_].+) ?']) + if val in val_hist: + del val_hist[val_hist.index(val)] + val_hist.insert(0, val) + for v in val_hist: + # Ensure we don't have duplicate items. + if v and self.re.findText(v) == -1: + self.re.addItem(v) + self.re.setCurrentIndex(0) def do_test(self): try: @@ -118,12 +128,17 @@ class FilenamePattern(QWidget, Ui_Form): return re.compile(pat) def commit(self): - pat = [] - patterns = [unicode(self.re.lineEdit().text())] + [unicode(self.re.itemText(i)) for i in xrange(self.re.count())] - for p in patterns[:14]: - if p not in pat: - pat.append(p) - prefs['filename_pattern'] = pat + pat = self.pattern().pattern + prefs['filename_pattern'] = pat + + history = [] + history_pats = [unicode(self.re.lineEdit().text())] + [unicode(self.re.itemText(i)) for i in xrange(self.re.count())] + for p in history_pats[:14]: + # Ensure we don't have duplicate items. + if p and p not in history: + history.append(p) + gprefs['filename_pattern_history'] = history + return pat