diff --git a/src/calibre/gui2/convert/heuristics.py b/src/calibre/gui2/convert/heuristics.py
index e788888257..8ca4cab455 100644
--- a/src/calibre/gui2/convert/heuristics.py
+++ b/src/calibre/gui2/convert/heuristics.py
@@ -6,6 +6,7 @@ __docformat__ = 'restructuredtext en'
from PyQt4.Qt import Qt
+from calibre.gui2 import gprefs
from calibre.gui2.convert.heuristics_ui import Ui_Form
from calibre.gui2.convert import Widget
@@ -21,17 +22,35 @@ class HeuristicsWidget(Widget, Ui_Form):
['enable_heuristics', 'markup_chapter_headings',
'italicize_common_cases', 'fix_indents',
'html_unwrap_factor', 'unwrap_lines',
- 'delete_blank_paragraphs', 'format_scene_breaks',
+ 'delete_blank_paragraphs',
+ 'format_scene_breaks', 'replace_scene_breaks',
'dehyphenate', 'renumber_headings']
)
self.db, self.book_id = db, book_id
+ self.rssb_defaults = ['', '
', '* * *']
self.initialize_options(get_option, get_help, db, book_id)
+ self.load_histories()
+
self.opt_enable_heuristics.stateChanged.connect(self.enable_heuristics)
self.opt_unwrap_lines.stateChanged.connect(self.enable_unwrap)
self.enable_heuristics(self.opt_enable_heuristics.checkState())
+ def restore_defaults(self, get_option):
+ Widget.restore_defaults(self, get_option)
+
+ rssb_hist = gprefs['replace_scene_breaks_history']
+ for x in self.rssb_defaults:
+ if x in rssb_hist:
+ del rssb_hist[rssb_hist.index(x)]
+ gprefs['replace_scene_breaks_history'] = self.rssb_defaults + gprefs['replace_scene_breaks_history']
+
+ def commit_options(self, save_defaults=False):
+ self.save_histories()
+
+ return Widget.commit_options(self, save_defaults)
+
def break_cycles(self):
Widget.break_cycles(self)
@@ -45,6 +64,30 @@ class HeuristicsWidget(Widget, Ui_Form):
if val is None and g is self.opt_html_unwrap_factor:
g.setValue(0.0)
return True
+ if not val and g is self.opt_replace_scene_breaks:
+ g.lineEdit().setText('')
+ return True
+
+ def load_histories(self):
+ val = unicode(self.opt_replace_scene_breaks.currentText())
+ rssb_hist = gprefs.get('replace_scene_breaks_history', self.rssb_defaults)
+ if val in rssb_hist:
+ del rssb_hist[rssb_hist.index(val)]
+ rssb_hist.insert(0, val)
+ for v in rssb_hist:
+ # Ensure we don't have duplicate items.
+ if self.opt_replace_scene_breaks.findText(v) == -1:
+ self.opt_replace_scene_breaks.addItem(v)
+ self.opt_replace_scene_breaks.setCurrentIndex(0)
+
+ def save_histories(self):
+ rssb_history = []
+ history_pats = [unicode(self.opt_replace_scene_breaks.lineEdit().text())] + [unicode(self.opt_replace_scene_breaks.itemText(i)) for i in xrange(self.opt_replace_scene_breaks.count())]
+ for p in history_pats[:10]:
+ # Ensure we don't have duplicate items.
+ if p not in rssb_history:
+ rssb_history.append(p)
+ gprefs['replace_scene_breaks_history'] = rssb_history
def enable_heuristics(self, state):
state = state == Qt.Checked
diff --git a/src/calibre/gui2/convert/heuristics.ui b/src/calibre/gui2/convert/heuristics.ui
index 6863fcf8e6..4f7cf5ea6e 100644
--- a/src/calibre/gui2/convert/heuristics.ui
+++ b/src/calibre/gui2/convert/heuristics.ui
@@ -150,6 +150,42 @@
+ -
+
+
+ QLayout::SetDefaultConstraint
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Replace soft scene breaks:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ true
+
+
+ QComboBox::InsertAtTop
+
+
+
+
+
-
diff --git a/src/calibre/gui2/convert/single.py b/src/calibre/gui2/convert/single.py
index 59fcbb65ad..6540383229 100644
--- a/src/calibre/gui2/convert/single.py
+++ b/src/calibre/gui2/convert/single.py
@@ -258,6 +258,7 @@ class Config(ResizableDialog, Ui_Dialog):
if not w.pre_commit_check():
return
x = w.commit(save_defaults=False)
+ print x
recs.update(x)
self.opf_file, self.cover_file = self.mw.opf_file, self.mw.cover_file
self._recommendations = recs