From 4b25d9ef0d47ae7efcd839f072f1f16dd87805fc Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 18 Jan 2011 16:02:42 -0700 Subject: [PATCH] Fix Heuristics preference widget --- resources/images/heuristics.png | Bin 0 -> 9561 bytes src/calibre/gui2/convert/heuristics.py | 22 +-- src/calibre/gui2/convert/heuristics.ui | 150 ++++++++++++------ .../gui2/convert/structure_detection.py | 2 +- 4 files changed, 103 insertions(+), 71 deletions(-) create mode 100644 resources/images/heuristics.png diff --git a/resources/images/heuristics.png b/resources/images/heuristics.png new file mode 100644 index 0000000000000000000000000000000000000000..92c53ae8ff9c70a394afffd4a644bd34e77c70ea GIT binary patch literal 9561 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 MJ5`w~Df7_(0eS^uMgRZ+ literal 0 HcmV?d00001 diff --git a/src/calibre/gui2/convert/heuristics.py b/src/calibre/gui2/convert/heuristics.py index 0655d7400f..e788888257 100644 --- a/src/calibre/gui2/convert/heuristics.py +++ b/src/calibre/gui2/convert/heuristics.py @@ -11,9 +11,10 @@ from calibre.gui2.convert import Widget class HeuristicsWidget(Widget, Ui_Form): - TITLE = _('Heuristic Processing') + TITLE = _('Heuristic\nProcessing') HELP = _('Modify the document text and structure using common patterns.') COMMIT_NAME = 'heuristics' + ICON = I('heuristics.png') def __init__(self, parent, get_option, get_help, db=None, book_id=None): Widget.__init__(self, parent, @@ -46,23 +47,8 @@ class HeuristicsWidget(Widget, Ui_Form): return True def enable_heuristics(self, state): - if state == Qt.Checked: - state = True - else: - state = False - self.opt_markup_chapter_headings.setEnabled(state) - self.opt_italicize_common_cases.setEnabled(state) - self.opt_fix_indents.setEnabled(state) - self.opt_delete_blank_paragraphs.setEnabled(state) - self.opt_format_scene_breaks.setEnabled(state) - self.opt_dehyphenate.setEnabled(state) - self.opt_renumber_headings.setEnabled(state) - - self.opt_unwrap_lines.setEnabled(state) - if state and self.opt_unwrap_lines.checkState() == Qt.Checked: - self.opt_html_unwrap_factor.setEnabled(True) - else: - self.opt_html_unwrap_factor.setEnabled(False) + state = state == Qt.Checked + self.heuristic_options.setEnabled(state) def enable_unwrap(self, state): if state == Qt.Checked: diff --git a/src/calibre/gui2/convert/heuristics.ui b/src/calibre/gui2/convert/heuristics.ui index 8048bef204..4358512996 100644 --- a/src/calibre/gui2/convert/heuristics.ui +++ b/src/calibre/gui2/convert/heuristics.ui @@ -6,7 +6,7 @@ 0 0 - 938 + 724 470 @@ -15,114 +15,160 @@ - + - &Preprocess input file to possibly improve structure detection + <b>Heuristic processing</b> means that calibre will scan your book for common patterns and fix them. As the name implies, this involves guesswork, which means that it could end up worsening the result of a conversion, if calibre guesses wrong. Therefore, it is disabled by default. Often, if a conversion does not turn out as you expect, turning on heuristics can improve matters. + + + true - + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 15 + + + + + + + + Enable &heuristic processing + + + + + Heuristic Processing - - + + Unwrap lines - - - - Line &un-wrap factor during preprocess: - - - opt_html_unwrap_factor - - + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + Line &un-wrap factor : + + + opt_html_unwrap_factor + + + + + + + + + + 1.000000000000000 + + + 0.050000000000000 + + + 0.400000000000000 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + - - - - - - - 1.000000000000000 - - - 0.050000000000000 - - - 0.400000000000000 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - + Detect and markup unformatted chapter headings and sub headings - + Renumber sequences of <h1> or <h2> tags to prevent splitting - + Delete blank lines between paragraphs - + Ensure scene breaks are consistently formatted - + Remove unnecessary hyphens - + Italicize common words and patterns - + Replace entity indents with CSS indents - + Qt::Vertical diff --git a/src/calibre/gui2/convert/structure_detection.py b/src/calibre/gui2/convert/structure_detection.py index 2c64303ee7..d8e2f4f122 100644 --- a/src/calibre/gui2/convert/structure_detection.py +++ b/src/calibre/gui2/convert/structure_detection.py @@ -31,7 +31,7 @@ class StructureDetectionWidget(Widget, Ui_Form): self.opt_chapter.set_msg(_('Detect chapters at (XPath expression):')) self.opt_page_breaks_before.set_msg(_('Insert page breaks before ' '(XPath expression):')) - + def break_cycles(self): Widget.break_cycles(self)