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