home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1167 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  5.2 KB  |  125 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL 3'
  5. __copyright__ = '2009, John Schember <john@nachtimwald.com>'
  6. __docformat__ = 'restructuredtext en'
  7. from PyQt4.Qt import QString, SIGNAL
  8. from calibre.gui2.convert.single import Config, sort_formats_by_preference, GroupModel
  9. from calibre.customize.ui import available_output_formats
  10. from calibre.gui2 import ResizableDialog
  11. from calibre.gui2.convert.look_and_feel import LookAndFeelWidget
  12. from calibre.gui2.convert.page_setup import PageSetupWidget
  13. from calibre.gui2.convert.structure_detection import StructureDetectionWidget
  14. from calibre.gui2.convert.toc import TOCWidget
  15. from calibre.gui2.convert import GuiRecommendations
  16. from calibre.ebooks.conversion.plumber import Plumber
  17. from calibre.utils.config import prefs
  18. from calibre.utils.logging import Log
  19.  
  20. class BulkConfig(Config):
  21.     
  22.     def __init__(self, parent, db, preferred_output_format = None):
  23.         ResizableDialog.__init__(self, parent)
  24.         self.setup_output_formats(db, preferred_output_format)
  25.         self.db = db
  26.         self.setup_pipeline()
  27.         self.input_label.hide()
  28.         self.input_formats.hide()
  29.         self.opt_individual_saved_settings.setVisible(True)
  30.         self.opt_individual_saved_settings.setChecked(True)
  31.         self.opt_individual_saved_settings.setToolTip(_('For settings that cannot be specified in this dialog, use the values saved in a previous conversion (if they exist) instead of using the defaults specified in the Preferences'))
  32.         self.connect(self.output_formats, SIGNAL('currentIndexChanged(QString)'), self.setup_pipeline)
  33.         self.connect(self.groups, SIGNAL('activated(QModelIndex)'), self.show_pane)
  34.         self.connect(self.groups, SIGNAL('clicked(QModelIndex)'), self.show_pane)
  35.         self.connect(self.groups, SIGNAL('entered(QModelIndex)'), self.show_group_help)
  36.         self.groups.setMouseTracking(True)
  37.  
  38.     
  39.     def setup_pipeline(self, *args):
  40.         oidx = self.groups.currentIndex().row()
  41.         output_format = self.output_format
  42.         input_path = 'dummy.epub'
  43.         output_path = 'dummy.' + output_format
  44.         log = Log()
  45.         log.outputs = []
  46.         self.plumber = Plumber(input_path, output_path, log)
  47.         
  48.         def widget_factory(cls):
  49.             return cls(self.stack, self.plumber.get_option_by_name, self.plumber.get_option_help, self.db)
  50.  
  51.         self.setWindowTitle(_('Bulk Convert'))
  52.         lf = widget_factory(LookAndFeelWidget)
  53.         ps = widget_factory(PageSetupWidget)
  54.         sd = widget_factory(StructureDetectionWidget)
  55.         toc = widget_factory(TOCWidget)
  56.         output_widget = None
  57.         name = self.plumber.output_plugin.name.lower().replace(' ', '_')
  58.         
  59.         try:
  60.             output_widget = __import__('calibre.gui2.convert.' + name, fromlist = [
  61.                 1])
  62.             pw = output_widget.PluginWidget
  63.             pw.ICON = I('back.svg')
  64.             pw.HELP = _('Options specific to the output format.')
  65.             output_widget = widget_factory(pw)
  66.         except ImportError:
  67.             (None,)
  68.             (None,)
  69.         except:
  70.             (None,)
  71.  
  72.         while True:
  73.             c = self.stack.currentWidget()
  74.             if not c:
  75.                 break
  76.             
  77.             self.stack.removeWidget(c)
  78.         widgets = [
  79.             lf,
  80.             ps,
  81.             sd,
  82.             toc]
  83.         if output_widget is not None:
  84.             widgets.append(output_widget)
  85.         
  86.         for w in widgets:
  87.             self.stack.addWidget(w)
  88.             self.connect(w, SIGNAL('set_help(PyQt_PyObject)'), self.help.setPlainText)
  89.         
  90.         self._groups_model = GroupModel(widgets)
  91.         self.groups.setModel(self._groups_model)
  92.         if oidx < oidx:
  93.             pass
  94.         elif oidx < self._groups_model.rowCount():
  95.             pass
  96.         
  97.         idx = 0
  98.         self.groups.setCurrentIndex(self._groups_model.index(idx))
  99.         self.stack.setCurrentIndex(idx)
  100.  
  101.     
  102.     def setup_output_formats(self, db, preferred_output_format):
  103.         if preferred_output_format:
  104.             preferred_output_format = preferred_output_format.lower()
  105.         
  106.         output_formats = sorted(available_output_formats())
  107.         output_formats.remove('oeb')
  108.         preferred_output_format = None if preferred_output_format and preferred_output_format in output_formats else sort_formats_by_preference(output_formats, prefs['output_format'])[0]
  109.         map(QString([]([], [ x.upper() for x in output_formats ])))
  110.         self.output_formats.setCurrentIndex(output_formats.index(preferred_output_format))
  111.  
  112.     
  113.     def accept(self):
  114.         recs = GuiRecommendations()
  115.         for w in self._groups_model.widgets:
  116.             if not w.pre_commit_check():
  117.                 return None
  118.             x = w.commit(save_defaults = False)
  119.             recs.update(x)
  120.         
  121.         self._recommendations = recs
  122.         ResizableDialog.accept(self)
  123.  
  124.  
  125.