home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 January / maximum-cd-2011-01.iso / DiscContents / calibre-0.7.26.msi / file_1163 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-10-31  |  7.3 KB  |  159 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 functools import partial
  8. from PyQt4.Qt import QToolButton, QMenu, pyqtSignal, QIcon
  9. from calibre.gui2.actions import InterfaceAction
  10. from calibre.utils.smtp import config as email_config
  11. from calibre.constants import iswindows, isosx
  12.  
  13. class ShareConnMenu(QMenu):
  14.     connect_to_folder = pyqtSignal()
  15.     connect_to_itunes = pyqtSignal()
  16.     config_email = pyqtSignal()
  17.     toggle_server = pyqtSignal()
  18.     dont_add_to = frozenset([
  19.         'toolbar-device',
  20.         'context-menu-device'])
  21.     
  22.     def __init__(self, parent = None):
  23.         QMenu.__init__(self, parent)
  24.         mitem = self.addAction(QIcon(I('devices/folder.png')), _('Connect to folder'))
  25.         mitem.setEnabled(True)
  26.         (mitem.triggered.connect,)((lambda x: self.connect_to_folder.emit()))
  27.         self.connect_to_folder_action = mitem
  28.         mitem = self.addAction(QIcon(I('devices/itunes.png')), _('Connect to iTunes'))
  29.         mitem.setEnabled(True)
  30.         (mitem.triggered.connect,)((lambda x: self.connect_to_itunes.emit()))
  31.         self.connect_to_itunes_action = mitem
  32.         if not iswindows or isosx:
  33.             mitem.setVisible(False)
  34.         
  35.         self.addSeparator()
  36.         self.toggle_server_action = self.addAction(QIcon(I('network-server.png')), _('Start Content Server'))
  37.         (self.toggle_server_action.triggered.connect,)((lambda x: self.toggle_server.emit()))
  38.         self.addSeparator()
  39.         self.email_actions = []
  40.  
  41.     
  42.     def server_state_changed(self, running):
  43.         text = _('Start Content Server')
  44.         if running:
  45.             text = _('Stop Content Server')
  46.         
  47.         self.toggle_server_action.setText(text)
  48.  
  49.     
  50.     def build_email_entries(self, sync_menu):
  51.         DeviceAction = DeviceAction
  52.         import calibre.gui2.device
  53.         for ac in self.email_actions:
  54.             self.removeAction(ac)
  55.         
  56.         self.email_actions = []
  57.         self.memory = []
  58.         opts = email_config().parse()
  59.         if opts.accounts:
  60.             self.email_to_menu = QMenu(_('Email to') + '...', self)
  61.             keys = sorted(opts.accounts.keys())
  62.             for account in keys:
  63.                 (formats, auto, default) = opts.accounts[account]
  64.                 dest = 'mail:' + account + ';' + formats
  65.                 action1 = DeviceAction(dest, False, False, I('mail.png'), _('Email to') + ' ' + account)
  66.                 action2 = DeviceAction(dest, True, False, I('mail.png'), _('Email to') + ' ' + account + _(' and delete from library'))
  67.                 map(self.email_to_menu.addAction, (action1, action2))
  68.                 map(self.memory.append, (action1, action2))
  69.                 if default:
  70.                     map(self.addAction, (action1, action2))
  71.                     map(self.email_actions.append, (action1, action2))
  72.                 
  73.                 self.email_to_menu.addSeparator()
  74.                 action1.a_s.connect(sync_menu.action_triggered)
  75.                 action2.a_s.connect(sync_menu.action_triggered)
  76.             
  77.             ac = self.addMenu(self.email_to_menu)
  78.             self.email_actions.append(ac)
  79.         else:
  80.             ac = self.addAction(_('Setup email based sharing of books'))
  81.             self.email_actions.append(ac)
  82.             ac.triggered.connect(self.setup_email)
  83.  
  84.     
  85.     def setup_email(self, *args):
  86.         self.config_email.emit()
  87.  
  88.     
  89.     def set_state(self, device_connected):
  90.         self.connect_to_folder_action.setEnabled(not device_connected)
  91.         self.connect_to_itunes_action.setEnabled(not device_connected)
  92.  
  93.  
  94.  
  95. class SendToDeviceAction(InterfaceAction):
  96.     name = 'Send To Device'
  97.     action_spec = (_('Send to device'), 'sync.png', None, _('D'))
  98.     dont_remove_from = frozenset([
  99.         'toolbar-device'])
  100.     dont_add_to = frozenset([
  101.         'toolbar',
  102.         'context-menu'])
  103.     
  104.     def genesis(self):
  105.         self.qaction.triggered.connect(self.do_sync)
  106.         self.gui.create_device_menu()
  107.  
  108.     
  109.     def location_selected(self, loc):
  110.         enabled = loc == 'library'
  111.         self.qaction.setEnabled(enabled)
  112.  
  113.     
  114.     def do_sync(self, *args):
  115.         self.gui._sync_action_triggered()
  116.  
  117.  
  118.  
  119. class ConnectShareAction(InterfaceAction):
  120.     name = 'Connect Share'
  121.     action_spec = (_('Connect/share'), 'connect_share.png', None, None)
  122.     popup_type = QToolButton.InstantPopup
  123.     
  124.     def genesis(self):
  125.         self.share_conn_menu = ShareConnMenu(self.gui)
  126.         self.share_conn_menu.toggle_server.connect(self.toggle_content_server)
  127.         self.share_conn_menu.config_email.connect(partial(self.gui.iactions['Preferences'].do_config, initial_plugin = ('Sharing', 'Email')))
  128.         self.qaction.setMenu(self.share_conn_menu)
  129.         self.share_conn_menu.connect_to_folder.connect(self.gui.connect_to_folder)
  130.         self.share_conn_menu.connect_to_itunes.connect(self.gui.connect_to_itunes)
  131.  
  132.     
  133.     def location_selected(self, loc):
  134.         enabled = loc == 'library'
  135.         self.qaction.setEnabled(enabled)
  136.  
  137.     
  138.     def set_state(self, device_connected):
  139.         self.share_conn_menu.set_state(device_connected)
  140.  
  141.     
  142.     def build_email_entries(self):
  143.         m = self.gui.iactions['Send To Device'].qaction.menu()
  144.         self.share_conn_menu.build_email_entries(m)
  145.  
  146.     
  147.     def content_server_state_changed(self, running):
  148.         self.share_conn_menu.server_state_changed(running)
  149.  
  150.     
  151.     def toggle_content_server(self):
  152.         if self.gui.content_server is None:
  153.             self.gui.start_content_server()
  154.         else:
  155.             self.gui.content_server.exit()
  156.             self.gui.content_server = None
  157.  
  158.  
  159.