UI library - add_widget_completer

This commit is contained in:
Jon Tibble 2011-02-04 18:17:28 +00:00
parent 4101122337
commit c3ac82a934
3 changed files with 27 additions and 33 deletions

View File

@ -182,3 +182,11 @@ def shortcut_action(parent, text, shortcuts, function):
action.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut)
QtCore.QObject.connect(action, QtCore.SIGNAL(u'triggered()'), function)
return action
def add_widget_completer(cache, widget):
"""
Add a text autocompleter to a widget.
"""
completer = QtGui.QCompleter(cache)
completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
widget.setCompleter(completer)

View File

@ -30,7 +30,8 @@ from PyQt4 import QtCore, QtGui
from openlp.core.lib import MediaManagerItem, Receiver, BaseListWithDnD, \
ItemCapabilities, translate
from openlp.core.lib.ui import critical_error_message_box, media_item_combo_box
from openlp.core.lib.ui import add_widget_completer, media_item_combo_box, \
critical_error_message_box
from openlp.plugins.bibles.forms import BibleImportForm
from openlp.plugins.bibles.lib import get_reference_match
@ -379,9 +380,7 @@ class BibleMediaItem(MediaManagerItem):
book_data = bibles[bible].get_books()
books = [book.name for book in book_data]
books.sort()
completer = QtGui.QCompleter(books)
completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
self.quickSearchEdit.setCompleter(completer)
add_widget_completer(books, self.quickSearchEdit)
def onAdvancedVersionComboBox(self):
self.initialiseBible(

View File

@ -30,7 +30,7 @@ import re
from PyQt4 import QtCore, QtGui
from openlp.core.lib import Receiver, translate
from openlp.core.lib.ui import critical_error_message_box
from openlp.core.lib.ui import add_widget_completer, critical_error_message_box
from openlp.plugins.songs.forms import EditVerseForm
from openlp.plugins.songs.lib import SongXML, VerseType
from openlp.plugins.songs.lib.db import Book, Song, Author, Topic
@ -129,37 +129,26 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.authorsComboBox.setItemData(
row, QtCore.QVariant(author.id))
self.authors.append(author.display_name)
completer = QtGui.QCompleter(self.authors)
completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
self.authorsComboBox.setCompleter(completer)
add_widget_completer(self.authors, self.authorsComboBox)
def loadTopics(self):
topics = self.manager.get_all_objects(Topic, order_by_ref=Topic.name)
self.topicsComboBox.clear()
self.topicsComboBox.addItem(u'')
self.topics = []
for topic in topics:
row = self.topicsComboBox.count()
self.topicsComboBox.addItem(topic.name)
self.topics.append(topic.name)
self.topicsComboBox.setItemData(row, QtCore.QVariant(topic.id))
completer = QtGui.QCompleter(self.topics)
completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
self.topicsComboBox.setCompleter(completer)
self.__loadObjects(Topic, self.topicsComboBox, self.topics)
def loadBooks(self):
books = self.manager.get_all_objects(Book, order_by_ref=Book.name)
self.songBookComboBox.clear()
self.songBookComboBox.addItem(u'')
self.books = []
for book in books:
row = self.songBookComboBox.count()
self.songBookComboBox.addItem(book.name)
self.books.append(book.name)
self.songBookComboBox.setItemData(row, QtCore.QVariant(book.id))
completer = QtGui.QCompleter(self.books)
completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
self.songBookComboBox.setCompleter(completer)
self.__loadObjects(Book, self.songBookComboBox, self.books)
def __loadObjects(self, class, combo, cache):
objects = self.manager.get_all_objects(class, order_by_ref=class.name)
combo.clear()
combo.addItem(u'')
for object in objects:
row = combo.count()
combo.addItem(object.name)
cache.append(object.name)
combo.setItemData(row, QtCore.QVariant(object.id))
add_widget_completer(cache, combo)
def loadThemes(self, theme_list):
self.themeComboBox.clear()
@ -168,9 +157,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
for theme in theme_list:
self.themeComboBox.addItem(theme)
self.themes.append(theme)
completer = QtGui.QCompleter(self.themes)
completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
self.themeComboBox.setCompleter(completer)
add_widget_completer(self.themes, self.themeComboBox)
def newSong(self):
log.debug(u'New Song')