mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-10-31 02:27:01 -04:00 
			
		
		
		
	Show recognized saved searches in create VL dialog
This commit is contained in:
		
						commit
						a90b9106ad
					
				| @ -105,9 +105,14 @@ class CreateVirtualLibrary(QDialog):  # {{{ | |||||||
|         gl.addWidget(self.vl_name, 0, 1) |         gl.addWidget(self.vl_name, 0, 1) | ||||||
|         self.editing = editing |         self.editing = editing | ||||||
| 
 | 
 | ||||||
|  |         self.saved_searches_label = QLabel('') | ||||||
|  |         self.saved_searches_label.setTextInteractionFlags(Qt.TextSelectableByMouse) | ||||||
|  |         gl.addWidget(self.saved_searches_label, 2, 0, 1, 2) | ||||||
|  | 
 | ||||||
|         self.la2 = la2 = QLabel(_('&Search expression:')) |         self.la2 = la2 = QLabel(_('&Search expression:')) | ||||||
|         gl.addWidget(la2, 1, 0) |         gl.addWidget(la2, 1, 0) | ||||||
|         self.vl_text = QLineEdit() |         self.vl_text = QLineEdit() | ||||||
|  |         self.vl_text.textChanged.connect(self.search_text_changed) | ||||||
|         la2.setBuddy(self.vl_text) |         la2.setBuddy(self.vl_text) | ||||||
|         gl.addWidget(self.vl_text, 1, 1) |         gl.addWidget(self.vl_text, 1, 1) | ||||||
|         self.vl_text.setText(_build_full_search_string(self.gui)) |         self.vl_text.setText(_build_full_search_string(self.gui)) | ||||||
| @ -122,7 +127,8 @@ class CreateVirtualLibrary(QDialog):  # {{{ | |||||||
|         sl.setWordWrap(True) |         sl.setWordWrap(True) | ||||||
|         sl.setTextInteractionFlags(Qt.LinksAccessibleByMouse) |         sl.setTextInteractionFlags(Qt.LinksAccessibleByMouse) | ||||||
|         sl.linkActivated.connect(self.link_activated) |         sl.linkActivated.connect(self.link_activated) | ||||||
|         gl.addWidget(sl, 2, 0, 1, 2) |         gl.addWidget(sl, 3, 0, 1, 2) | ||||||
|  |         gl.setRowStretch(3,10) | ||||||
| 
 | 
 | ||||||
|         self.hl = hl = QLabel(_(''' |         self.hl = hl = QLabel(_(''' | ||||||
|             <h2>Virtual Libraries</h2> |             <h2>Virtual Libraries</h2> | ||||||
| @ -162,6 +168,41 @@ class CreateVirtualLibrary(QDialog):  # {{{ | |||||||
| 
 | 
 | ||||||
|         self.resize(self.sizeHint()+QSize(150, 25)) |         self.resize(self.sizeHint()+QSize(150, 25)) | ||||||
| 
 | 
 | ||||||
|  |     def search_text_changed(self, txt): | ||||||
|  |         searches = [_('Saved searches recognized in the expression:')] | ||||||
|  |         txt = unicode(txt) | ||||||
|  |         while txt: | ||||||
|  |             p = txt.partition('search:') | ||||||
|  |             if p[1]: # found 'search:' | ||||||
|  |                 possible_search = p[2] | ||||||
|  |                 if possible_search: # something follows the 'search:' | ||||||
|  |                     if possible_search[0] == '"': # strip any quotes | ||||||
|  |                         possible_search = possible_search[1:].partition('"') | ||||||
|  |                     else: # find end of the search name. Is EOL, space, rparen | ||||||
|  |                         sp = possible_search.find(' ') | ||||||
|  |                         pp = possible_search.find(')') | ||||||
|  |                         if pp < 0 or (sp > 0 and sp <= pp): | ||||||
|  |                             # space in string before rparen, or neither found | ||||||
|  |                             possible_search = possible_search.partition(' ') | ||||||
|  |                         else: | ||||||
|  |                             # rparen in string before space | ||||||
|  |                             possible_search = possible_search.partition(')') | ||||||
|  |                     txt = possible_search[2] # grab remainder of the string | ||||||
|  |                     search_name = possible_search[0] | ||||||
|  |                     if search_name.startswith('='): | ||||||
|  |                         search_name = search_name[1:] | ||||||
|  |                     if search_name in saved_searches().names(): | ||||||
|  |                         searches.append(search_name + '=' + | ||||||
|  |                                         saved_searches().lookup(search_name)) | ||||||
|  |                 else: | ||||||
|  |                     txt = '' | ||||||
|  |             else: | ||||||
|  |                 txt = '' | ||||||
|  |         if len(searches) > 1: | ||||||
|  |             self.saved_searches_label.setText('\n'.join(searches)) | ||||||
|  |         else: | ||||||
|  |             self.saved_searches_label.setText('') | ||||||
|  | 
 | ||||||
|     def name_text_edited(self, new_name): |     def name_text_edited(self, new_name): | ||||||
|         self.new_name = unicode(new_name) |         self.new_name = unicode(new_name) | ||||||
| 
 | 
 | ||||||
| @ -380,6 +421,8 @@ class SearchRestrictionMixin(object): | |||||||
|         elif library in virt_libs: |         elif library in virt_libs: | ||||||
|             db.data.set_base_restriction(virt_libs[library]) |             db.data.set_base_restriction(virt_libs[library]) | ||||||
|             db.data.set_base_restriction_name(library) |             db.data.set_base_restriction_name(library) | ||||||
|  |         self.virtual_library.setToolTip(self.virtual_library_tooltip + '\n' + | ||||||
|  |                                         db.data.get_base_restriction()) | ||||||
|         self._apply_search_restriction(db.data.get_search_restriction(), |         self._apply_search_restriction(db.data.get_search_restriction(), | ||||||
|                                        db.data.get_search_restriction_name()) |                                        db.data.get_search_restriction_name()) | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user