home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 January / maximum-cd-2011-01.iso / DiscContents / calibre-0.7.26.msi / file_1171 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-10-31  |  7.1 KB  |  103 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. import os
  8. from functools import partial
  9. from PyQt4.Qt import QMenu, pyqtSignal
  10. from calibre.utils.config import prefs
  11. from calibre.gui2 import error_dialog, Dispatcher, choose_dir, warning_dialog, open_local_file
  12. from calibre.gui2.actions import InterfaceAction
  13. from calibre.ebooks import BOOK_EXTENSIONS
  14.  
  15. class SaveMenu(QMenu):
  16.     save_fmt = pyqtSignal(object)
  17.     
  18.     def __init__(self, parent):
  19.         QMenu.__init__(self, _('Save single format to disk...'), parent)
  20.         for ext in sorted(BOOK_EXTENSIONS):
  21.             action = self.addAction(ext.upper())
  22.             setattr(self, 'do_' + ext, partial(self.do, ext))
  23.             action.triggered.connect(getattr(self, 'do_' + ext))
  24.         
  25.  
  26.     
  27.     def do(self, ext, *args):
  28.         self.save_fmt.emit(ext)
  29.  
  30.  
  31.  
  32. class SaveToDiskAction(InterfaceAction):
  33.     name = 'Save To Disk'
  34.     action_spec = (_('Save to disk'), 'save.png', None, _('S'))
  35.     action_type = 'current'
  36.     
  37.     def genesis(self):
  38.         self.qaction.triggered.connect(self.save_to_disk)
  39.         self.save_menu = QMenu()
  40.         self.save_menu.addAction(_('Save to disk'), partial(self.save_to_disk, False))
  41.         self.save_menu.addAction(_('Save to disk in a single directory'), partial(self.save_to_single_dir, False))
  42.         self.save_menu.addAction(_('Save only %s format to disk') % prefs['output_format'].upper(), partial(self.save_single_format_to_disk, False))
  43.         self.save_menu.addAction(_('Save only %s format to disk in a single directory') % prefs['output_format'].upper(), partial(self.save_single_fmt_to_single_dir, False))
  44.         self.save_sub_menu = SaveMenu(self.gui)
  45.         self.save_sub_menu_action = self.save_menu.addMenu(self.save_sub_menu)
  46.         self.save_sub_menu.save_fmt.connect(self.save_specific_format_disk)
  47.         self.qaction.setMenu(self.save_menu)
  48.  
  49.     
  50.     def location_selected(self, loc):
  51.         enabled = loc == 'library'
  52.         for action in list(self.save_menu.actions())[1:]:
  53.             action.setEnabled(enabled)
  54.         
  55.  
  56.     
  57.     def reread_prefs(self):
  58.         self.save_menu.actions()[2].setText(_('Save only %s format to disk') % prefs['output_format'].upper())
  59.         self.save_menu.actions()[3].setText(_('Save only %s format to disk in a single directory') % prefs['output_format'].upper())
  60.  
  61.     
  62.     def save_single_format_to_disk(self, checked):
  63.         self.save_to_disk(checked, False, prefs['output_format'])
  64.  
  65.     
  66.     def save_specific_format_disk(self, fmt):
  67.         self.save_to_disk(False, False, fmt)
  68.  
  69.     
  70.     def save_to_single_dir(self, checked):
  71.         self.save_to_disk(checked, True)
  72.  
  73.     
  74.     def save_single_fmt_to_single_dir(self, *args):
  75.         self.save_to_disk(False, single_dir = True, single_format = prefs['output_format'])
  76.  
  77.     
  78.     def save_to_disk(self, checked, single_dir = False, single_format = None):
  79.         rows = self.gui.current_view().selectionModel().selectedRows()
  80.         if not rows or len(rows) == 0:
  81.             return error_dialog(self.gui, _('Cannot save to disk'), _('No books selected'), show = True)
  82.         path = choose_dir(self.gui, 'save to disk dialog', _('Choose destination directory'))
  83.         if not path:
  84.             return None
  85.         dpath = os.path.abspath(path).replace('/', os.sep) + os.sep
  86.         lpath = self.gui.library_view.model().db.library_path.replace('/', os.sep) + os.sep
  87.         if dpath.startswith(lpath):
  88.             return error_dialog(self.gui, _('Not allowed'), _('You are trying to save files into the calibre library. This can cause corruption of your library. Save to disk is meant to export files from your calibre library elsewhere.'), show = True)
  89.  
  90.     
  91.     def _books_saved(self, path, failures, error):
  92.         self._saver = None
  93.         if error:
  94.             return error_dialog(self.gui, _('Error while saving'), _('There was an error while saving.'), error, show = True)
  95.         open_local_file(path)
  96.  
  97.     
  98.     def books_saved(self, job):
  99.         if job.failed:
  100.             return self.gui.device_job_exception(job)
  101.  
  102.  
  103.