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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
  6. __docformat__ = 'restructuredtext en'
  7. from PyQt4.Qt import QIcon, Qt, QStringListModel, QVariant
  8. from calibre.gui2.preferences import ConfigWidgetBase, test_widget, AbortCommit
  9. from calibre.ebooks.conversion.plumber import Plumber
  10. from calibre.utils.logging import Log
  11. from calibre.gui2.preferences.conversion_ui import Ui_Form
  12. from calibre.gui2.convert.look_and_feel import LookAndFeelWidget
  13. from calibre.gui2.convert.page_setup import PageSetupWidget
  14. from calibre.gui2.convert.structure_detection import StructureDetectionWidget
  15. from calibre.gui2.convert.toc import TOCWidget
  16. from calibre.customize.ui import input_format_plugins, output_format_plugins
  17. from calibre.gui2.convert import config_widget_for_input_plugin
  18.  
  19. class Model(QStringListModel):
  20.     
  21.     def __init__(self, widgets):
  22.         QStringListModel.__init__(self)
  23.         self.widgets = widgets
  24.         []([ w.TITLE for w in widgets ])
  25.  
  26.     
  27.     def data(self, index, role):
  28.         if role == Qt.DecorationRole:
  29.             w = self.widgets[index.row()]
  30.             if w.ICON:
  31.                 return QVariant(QIcon(w.ICON))
  32.         
  33.         return QStringListModel.data(self, index, role)
  34.  
  35.  
  36.  
  37. class Base(ConfigWidgetBase, Ui_Form):
  38.     restore_defaults_desc = _('Restore settings to default values. Only settings for the currently selected section are restored.')
  39.     
  40.     def genesis(self, gui):
  41.         log = Log()
  42.         log.outputs = []
  43.         self.plumber = Plumber('dummy.epub', 'dummy.epub', log, dummy = True, merge_plugin_recs = False)
  44.         
  45.         def widget_factory(cls):
  46.             return cls(self, self.plumber.get_option_by_name, self.plumber.get_option_help, None, None)
  47.  
  48.         self.load_conversion_widgets()
  49.         widgets = list(map(widget_factory, self.conversion_widgets))
  50.         self.model = Model(widgets)
  51.         self.list.setModel(self.model)
  52.         for w in widgets:
  53.             w.changed_signal.connect(self.changed_signal)
  54.             self.stack.addWidget(w)
  55.         
  56.         self.list.currentChanged = self.category_current_changed
  57.         self.list.setCurrentIndex(self.model.index(0))
  58.  
  59.     
  60.     def initialize(self):
  61.         ConfigWidgetBase.initialize(self)
  62.  
  63.     
  64.     def restore_defaults(self):
  65.         ConfigWidgetBase.restore_defaults(self)
  66.         self.stack.currentWidget().restore_defaults(self.plumber.get_option_by_name)
  67.         self.changed_signal.emit()
  68.  
  69.     
  70.     def commit(self):
  71.         for widget in self.model.widgets:
  72.             if not widget.pre_commit_check():
  73.                 raise AbortCommit('abort')
  74.             widget.pre_commit_check()
  75.             widget.commit(save_defaults = True)
  76.         
  77.         return ConfigWidgetBase.commit(self)
  78.  
  79.     
  80.     def category_current_changed(self, n, p):
  81.         self.stack.setCurrentIndex(n.row())
  82.  
  83.  
  84.  
  85. class CommonOptions(Base):
  86.     
  87.     def load_conversion_widgets(self):
  88.         self.conversion_widgets = [
  89.             LookAndFeelWidget,
  90.             PageSetupWidget,
  91.             StructureDetectionWidget,
  92.             TOCWidget]
  93.  
  94.  
  95.  
  96. class InputOptions(Base):
  97.     
  98.     def load_conversion_widgets(self):
  99.         self.conversion_widgets = []
  100.         for plugin in input_format_plugins():
  101.             pw = config_widget_for_input_plugin(plugin)
  102.             if pw is not None:
  103.                 self.conversion_widgets.append(pw)
  104.                 continue
  105.         
  106.  
  107.  
  108.  
  109. class OutputOptions(Base):
  110.     
  111.     def load_conversion_widgets(self):
  112.         self.conversion_widgets = []
  113.         for plugin in output_format_plugins():
  114.             name = plugin.name.lower().replace(' ', '_')
  115.             
  116.             try:
  117.                 output_widget = __import__('calibre.gui2.convert.' + name, fromlist = [
  118.                     1])
  119.                 pw = output_widget.PluginWidget
  120.                 self.conversion_widgets.append(pw)
  121.             continue
  122.             except ImportError:
  123.                 continue
  124.                 continue
  125.             
  126.  
  127.         
  128.  
  129.  
  130. if __name__ == '__main__':
  131.     from PyQt4.Qt import QApplication
  132.     app = QApplication([])
  133.     test_widget('Conversion', 'Common Options')
  134.  
  135.