home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 January / maximum-cd-2011-01.iso / DiscContents / calibre-0.7.26.msi / file_1166 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-10-31  |  3.7 KB  |  70 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 Qt
  8. from calibre.gui2 import Dispatcher
  9. from calibre.gui2.tools import fetch_scheduled_recipe
  10. from calibre.gui2.actions import InterfaceAction
  11.  
  12. class FetchNewsAction(InterfaceAction):
  13.     name = 'Fetch News'
  14.     action_spec = (_('Fetch news'), 'news.png', None, _('F'))
  15.     
  16.     def location_selected(self, loc):
  17.         enabled = loc == 'library'
  18.         self.qaction.setEnabled(enabled)
  19.  
  20.     
  21.     def genesis(self):
  22.         self.conversion_jobs = { }
  23.  
  24.     
  25.     def init_scheduler(self, db):
  26.         Scheduler = Scheduler
  27.         import calibre.gui2.dialogs.scheduler
  28.         self.scheduler = Scheduler(self.gui, db)
  29.         self.scheduler.start_recipe_fetch.connect(self.download_scheduled_recipe, type = Qt.QueuedConnection)
  30.         self.qaction.setMenu(self.scheduler.news_menu)
  31.         self.qaction.triggered.connect(self.scheduler.show_dialog)
  32.  
  33.     
  34.     def library_changed(self, db):
  35.         self.scheduler.database_changed(db)
  36.  
  37.     
  38.     def initialization_complete(self):
  39.         self.connect_scheduler()
  40.  
  41.     
  42.     def connect_scheduler(self):
  43.         self.scheduler.delete_old_news.connect(self.gui.library_view.model().delete_books_by_id, type = Qt.QueuedConnection)
  44.  
  45.     
  46.     def download_scheduled_recipe(self, arg):
  47.         (func, args, desc, fmt, temp_files) = fetch_scheduled_recipe(arg)
  48.         job = self.gui.job_manager.run_job(Dispatcher(self.scheduled_recipe_fetched), func, args = args, description = desc)
  49.         self.conversion_jobs[job] = (temp_files, fmt, arg)
  50.         self.gui.status_bar.show_message(_('Fetching news from ') + arg['title'], 2000)
  51.  
  52.     
  53.     def scheduled_recipe_fetched(self, job):
  54.         (temp_files, fmt, arg) = self.conversion_jobs.pop(job)
  55.         pt = temp_files[0]
  56.         if job.failed:
  57.             self.scheduler.recipe_download_failed(arg)
  58.             return self.gui.job_exception(job)
  59.         id = self.gui.library_view.model().add_news(pt.name, arg)
  60.         self.gui.library_view.model().reset()
  61.         sync = self.gui.news_to_be_synced
  62.         sync.add(id)
  63.         self.gui.news_to_be_synced = sync
  64.         self.scheduler.recipe_downloaded(arg)
  65.         self.gui.status_bar.show_message(arg['title'] + _(' fetched.'), 3000)
  66.         self.gui.email_news(id)
  67.         self.gui.sync_news()
  68.  
  69.  
  70.