home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 January / maximum-cd-2011-01.iso / DiscContents / calibre-0.7.26.msi / file_1233 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-10-31  |  3.6 KB  |  86 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from __future__ import with_statement
  5. __license__ = 'GPL v3'
  6. __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
  7. __docformat__ = 'restructuredtext en'
  8. import re
  9. from calibre.gui2.convert.structure_detection_ui import Ui_Form
  10. from calibre.gui2.convert import Widget
  11. from calibre.gui2 import error_dialog
  12.  
  13. class StructureDetectionWidget(Widget, Ui_Form):
  14.     TITLE = _('Structure\nDetection')
  15.     ICON = I('chapters.png')
  16.     HELP = _('Fine tune the detection of chapter headings and other document structure.')
  17.     COMMIT_NAME = 'structure_detection'
  18.     
  19.     def __init__(self, parent, get_option, get_help, db = None, book_id = None):
  20.         Widget.__init__(self, parent, [
  21.             'chapter',
  22.             'chapter_mark',
  23.             'remove_first_image',
  24.             'insert_metadata',
  25.             'page_breaks_before',
  26.             'preprocess_html',
  27.             'remove_header',
  28.             'header_regex',
  29.             'remove_footer',
  30.             'footer_regex',
  31.             'html_unwrap_factor'])
  32.         self.opt_html_unwrap_factor.setEnabled(False)
  33.         self.huf_label.setEnabled(False)
  34.         self.db = db
  35.         self.book_id = book_id
  36.         for x in ('pagebreak', 'rule', 'both', 'none'):
  37.             self.opt_chapter_mark.addItem(x)
  38.         
  39.         self.initialize_options(get_option, get_help, db, book_id)
  40.         self.opt_chapter.set_msg(_('Detect chapters at (XPath expression):'))
  41.         self.opt_page_breaks_before.set_msg(_('Insert page breaks before (XPath expression):'))
  42.         self.opt_header_regex.set_msg(_('Header regular expression:'))
  43.         self.opt_header_regex.set_book_id(book_id)
  44.         self.opt_header_regex.set_db(db)
  45.         self.opt_footer_regex.set_msg(_('Footer regular expression:'))
  46.         self.opt_footer_regex.set_book_id(book_id)
  47.         self.opt_footer_regex.set_db(db)
  48.  
  49.     
  50.     def break_cycles(self):
  51.         Widget.break_cycles(self)
  52.         self.opt_header_regex.break_cycles()
  53.         self.opt_footer_regex.break_cycles()
  54.  
  55.     
  56.     def pre_commit_check(self):
  57.         for x in ('header_regex', 'footer_regex'):
  58.             x = getattr(self, 'opt_' + x)
  59.             
  60.             try:
  61.                 pat = unicode(x.regex)
  62.                 re.compile(pat)
  63.             continue
  64.             except Exception:
  65.                 err = None
  66.                 error_dialog(self, _('Invalid regular expression'), _('Invalid regular expression: %s') % err).exec_()
  67.                 return False
  68.             
  69.  
  70.         
  71.         for x in ('chapter', 'page_breaks_before'):
  72.             x = getattr(self, 'opt_' + x)
  73.             if not x.check():
  74.                 error_dialog(self, _('Invalid XPath'), _('The XPath expression %s is invalid.') % x.text).exec_()
  75.                 return False
  76.         
  77.         return True
  78.  
  79.     
  80.     def set_value_handler(self, g, val):
  81.         if val is None and g is self.opt_html_unwrap_factor:
  82.             g.setValue(0)
  83.             return True
  84.  
  85.  
  86.