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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
  6. from PyQt4.QtCore import SIGNAL
  7. from PyQt4.QtGui import QDialog
  8. from calibre.gui2.dialogs.saved_search_editor_ui import Ui_SavedSearchEditor
  9. from calibre.utils.search_query_parser import saved_searches
  10. from calibre.gui2.dialogs.confirm_delete import confirm
  11.  
  12. class SavedSearchEditor(QDialog, Ui_SavedSearchEditor):
  13.     
  14.     def __init__(self, window, initial_search = None):
  15.         QDialog.__init__(self, window)
  16.         Ui_SavedSearchEditor.__init__(self)
  17.         self.setupUi(self)
  18.         self.connect(self.add_search_button, SIGNAL('clicked()'), self.add_search)
  19.         self.connect(self.search_name_box, SIGNAL('currentIndexChanged(int)'), self.current_index_changed)
  20.         self.connect(self.delete_search_button, SIGNAL('clicked()'), self.del_search)
  21.         self.current_search_name = None
  22.         self.searches = { }
  23.         self.searches_to_delete = []
  24.         for name in saved_searches().names():
  25.             self.searches[name] = saved_searches().lookup(name)
  26.         
  27.         self.populate_search_list()
  28.         if initial_search is not None and initial_search in self.searches:
  29.             self.select_search(initial_search)
  30.         
  31.  
  32.     
  33.     def populate_search_list(self):
  34.         self.search_name_box.clear()
  35.         for name in sorted(self.searches.keys()):
  36.             self.search_name_box.addItem(name)
  37.         
  38.  
  39.     
  40.     def add_search(self):
  41.         search_name = unicode(self.input_box.text()).strip()
  42.         if search_name == '':
  43.             return False
  44.         if search_name not in self.searches:
  45.             self.searches[search_name] = ''
  46.             self.populate_search_list()
  47.             self.select_search(search_name)
  48.         else:
  49.             self.select_search(search_name)
  50.         return True
  51.  
  52.     
  53.     def del_search(self):
  54.         if self.current_search_name is not None:
  55.             if not confirm('<p>' + _('The current saved search will be <b>permanently deleted</b>. Are you sure?') + '</p>', 'saved_search_editor_delete', self):
  56.                 return None
  57.             del self.searches[self.current_search_name]
  58.             self.searches_to_delete.append(self.current_search_name)
  59.             self.current_search_name = None
  60.             self.search_name_box.removeItem(self.search_name_box.currentIndex())
  61.         
  62.  
  63.     
  64.     def select_search(self, name):
  65.         self.search_name_box.setCurrentIndex(self.search_name_box.findText(name))
  66.  
  67.     
  68.     def current_index_changed(self, idx):
  69.         if self.current_search_name:
  70.             self.searches[self.current_search_name] = unicode(self.search_text.toPlainText())
  71.         
  72.         name = unicode(self.search_name_box.itemText(idx))
  73.         if name:
  74.             self.current_search_name = name
  75.             self.search_text.setPlainText(self.searches[name])
  76.         else:
  77.             self.current_search_name = None
  78.             self.search_text.setPlainText('')
  79.  
  80.     
  81.     def accept(self):
  82.         if self.current_search_name:
  83.             self.searches[self.current_search_name] = unicode(self.search_text.toPlainText())
  84.         
  85.         for name in self.searches_to_delete:
  86.             saved_searches().delete(name)
  87.         
  88.         for name in self.searches:
  89.             saved_searches().add(name, self.searches[name])
  90.         
  91.         QDialog.accept(self)
  92.  
  93.  
  94.