From 74752da6948f0350c305e7a2010851af6761f7b0 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Thu, 30 Sep 2010 20:40:10 +0200 Subject: [PATCH 01/36] implemented 'text search' for bibles --- openlp/plugins/bibles/lib/db.py | 8 ++++---- openlp/plugins/bibles/lib/manager.py | 22 +++++++++++++++++++++- openlp/plugins/bibles/lib/mediaitem.py | 20 +++++++++++++------- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 49bc82102..ca7fcfda7 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -240,7 +240,7 @@ class BibleDB(QtCore.QObject, Manager): and the value is the verse text. """ log.debug(u'create_chapter %s,%s', book_id, chapter) - #text list has book and chapter as first two elements of the array + # text list has book and chapter as first two elements of the array for verse_number, verse_text in textlist.iteritems(): verse = Verse.populate( book_id = book_id, @@ -353,9 +353,9 @@ class BibleDB(QtCore.QObject, Manager): QtGui.QMessageBox.information(self.bible_plugin.mediaItem, translate('BiblesPlugin.BibleDB', 'Book not found'), translate('BiblesPlugin.BibleDB', 'The book you requested ' - 'could not be found in this bible. Please check your ' - 'spelling and that this is a complete bible not just ' - 'one testament.')) + 'could not be found in this bible. Please check your ' + 'spelling and that this is a complete bible not just ' + 'one testament.')) return verse_list def verse_search(self, text): diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index fd2c2adff..4a5869ca6 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -254,9 +254,29 @@ class BibleManager(object): 'Book Chapter:Verse-Verse\n' 'Book Chapter:Verse-Verse,Verse-Verse\n' 'Book Chapter:Verse-Verse,Chapter:Verse-Verse\n' - 'Book Chapter:Verse-Chapter:Verse\n')) + 'Book Chapter:Verse-Chapter:Verse')) return None + def verse_search(self, bible, text): + """ + ``bible`` + The bible to seach in. + + ``text`` + The text to search for. + """ + log.debug(u'BibleManager.verse_search("%s", "%s")', bible, text) + if text: + return self.db_cache[bible].verse_search(text) + else: + QtGui.QMessageBox.information(self.parent.mediaItem, + translate('BiblesPlugin.BibleManager', + 'Scripture Reference Error'), + translate('BiblesPlugin.BibleManager', 'Your scripture ' + 'reference is not valid. Make sure to state a keyword to search' + ' for. Keywords separated by a comma will be treated as OR.')) + return None + def save_meta_data(self, bible, version, copyright, permissions): """ Saves the bibles meta data diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 92eb200ee..fe0e7409c 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -535,10 +535,19 @@ class BibleMediaItem(MediaManagerItem): bible = unicode(self.QuickVersionComboBox.currentText()) dual_bible = unicode(self.QuickSecondBibleComboBox.currentText()) text = unicode(self.QuickSearchEdit.text()) - self.search_results = self.parent.manager.get_verses(bible, text) - if dual_bible: - self.dual_search_results = self.parent.manager.get_verses( - dual_bible, text) + if self.QuickSearchComboBox.currentIndex() == 0: # Verse Search + self.search_results = self.parent.manager.get_verses(bible, text) + if dual_bible: + self.dual_search_results = self.parent.manager.get_verses( + dual_bible, text) + else: # Text Search + self.search_results = self.parent.manager.verse_search(bible, text) + if dual_bible: + for count, verse in enumerate(self.search_results): + text = u'%s %s:%s' % (verse.book.name, verse.chapter, + verse.verse) + self.dual_search_results[count] = self.parent.manager.\ + get_verses(dual_bible, text)[0] if self.ClearQuickSearchComboBox.currentIndex() == 0: self.listView.clear() if self.listView.count() != 0 and self.search_results: @@ -702,19 +711,16 @@ class BibleMediaItem(MediaManagerItem): if bible_text: raw_slides.append(bible_text) bible_text = u'' - # Service Item: Capabilities if self.parent.settings_tab.layout_style == 2 and not dual_bible: # Split the line but do not replace line breaks in renderer. service_item.add_capability(ItemCapabilities.NoLineBreaks) service_item.add_capability(ItemCapabilities.AllowsPreview) service_item.add_capability(ItemCapabilities.AllowsLoop) - # Service Item: Title for title in raw_title: if not service_item.title: service_item.title = title else: service_item.title += u', ' + title - # Service Item: Theme if len(self.parent.settings_tab.bible_theme) == 0: service_item.theme = None else: From e17f6c7c9ed37d1f1c580dd9ae02d02560836572 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 1 Oct 2010 15:50:29 +0200 Subject: [PATCH 02/36] -disable search buttons while searching, -clean ups --- openlp/plugins/bibles/lib/__init__.py | 2 +- openlp/plugins/bibles/lib/db.py | 26 +++++++++++++------------- openlp/plugins/bibles/lib/manager.py | 12 ++++++------ openlp/plugins/bibles/lib/mediaitem.py | 20 +++++++++++++++----- 4 files changed, 35 insertions(+), 25 deletions(-) diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index 06f9d7cc7..e3f0d8f46 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -75,7 +75,7 @@ def parse_reference(reference): 7 None|[0-9]+|end None or the end of the second verse range. The reference list is a list of tuples, with each tuple structured like - this:: + this: (book, chapter, start_verse, end_verse) ``reference`` diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index ca7fcfda7..6f947cb87 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -281,23 +281,23 @@ class BibleDB(QtCore.QObject, Manager): def create_meta(self, key, value): """ - Utility method to save BibleMeta objects in a Bible database + Utility method to save BibleMeta objects in a Bible database. ``key`` - The key for this instance + The key for this instance. ``value`` - The value for this instance + The value for this instance. """ log.debug(u'save_meta %s/%s', key, value) self.save_object(BibleMeta.populate(key=key, value=value)) def get_book(self, book): """ - Return a book object from the database + Return a book object from the database. ``book`` - The name of the book to return + The name of the book to return. """ log.debug(u'BibleDb.get_book("%s")', book) db_book = self.get_object_filtered(Book, Book.name.like(book + u'%')) @@ -320,14 +320,14 @@ class BibleDB(QtCore.QObject, Manager): ``reference_list`` This is the list of references the media manager item wants. It is - a list of tuples, with the following format:: + a list of tuples, with the following format: (book, chapter, start_verse, end_verse) Therefore, when you are looking for multiple items, simply break them up into references like this, bundle them into a list. This function then runs through the list, and returns an amalgamated - list of ``Verse`` objects. For example:: + list of ``Verse`` objects. For example: [(u'Genesis', 1, 1, 1), (u'Genesis', 2, 2, 3)] """ @@ -387,10 +387,10 @@ class BibleDB(QtCore.QObject, Manager): def get_chapter_count(self, book): """ - Return the number of chapters in a book + Return the number of chapters in a book. ``book`` - The book to get the chapter count for + The book to get the chapter count for. """ log.debug(u'BibleDB.get_chapter_count("%s")', book) count = self.session.query(Verse.chapter).join(Book)\ @@ -403,13 +403,13 @@ class BibleDB(QtCore.QObject, Manager): def get_verse_count(self, book, chapter): """ - Return the number of verses in a chapter + Return the number of verses in a chapter. ``book`` - The book containing the chapter + The book containing the chapter. ``chapter`` - The chapter to get the verse count for + The chapter to get the verse count for. """ log.debug(u'BibleDB.get_verse_count("%s", %s)', book, chapter) count = self.session.query(Verse).join(Book)\ @@ -423,7 +423,7 @@ class BibleDB(QtCore.QObject, Manager): def dump_bible(self): """ - Utility debugging method to dump the contents of a bible + Utility debugging method to dump the contents of a bible. """ log.debug(u'.........Dumping Bible Database') log.debug('...............................Books ') diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 4a5869ca6..78d8e770a 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -137,7 +137,7 @@ class BibleManager(object): name = bible.get_name() log.debug(u'Bible Name: "%s"', name) self.db_cache[name] = bible - # look to see if lazy load bible exists and get create getter. + # Look to see if lazy load bible exists and get create getter. source = self.db_cache[name].get_object(BibleMeta, u'download source') if source: @@ -204,7 +204,7 @@ class BibleManager(object): def get_chapter_count(self, bible, book): """ - Returns the number of Chapters for a given book + Returns the number of Chapters for a given book. """ log.debug(u'get_book_chapter_count %s', book) return self.db_cache[bible].get_chapter_count(book) @@ -212,7 +212,7 @@ class BibleManager(object): def get_verse_count(self, bible, book, chapter): """ Returns all the number of verses for a given - book and chapterMaxBibleBookVerses + book and chapterMaxBibleBookVerses. """ log.debug(u'BibleManager.get_verse_count("%s", "%s", %s)', bible, book, chapter) @@ -279,7 +279,7 @@ class BibleManager(object): def save_meta_data(self, bible, version, copyright, permissions): """ - Saves the bibles meta data + Saves the bibles meta data. """ log.debug(u'save_meta data %s,%s, %s,%s', bible, version, copyright, permissions) @@ -289,14 +289,14 @@ class BibleManager(object): def get_meta_data(self, bible, key): """ - Returns the meta data for a given key + Returns the meta data for a given key. """ log.debug(u'get_meta %s,%s', bible, key) return self.db_cache[bible].get_object(BibleMeta, key) def exists(self, name): """ - Check cache to see if new bible + Check cache to see if new bible. """ if not isinstance(name, unicode): name = unicode(name) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index fe0e7409c..ab39665f8 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -497,6 +497,7 @@ class BibleMediaItem(MediaManagerItem): def onAdvancedSearchButton(self): log.debug(u'Advanced Search Button pressed') + self.AdvancedSearchButton.setEnabled(False) bible = unicode(self.AdvancedVersionComboBox.currentText()) dual_bible = unicode(self.AdvancedSecondBibleComboBox.currentText()) book = unicode(self.AdvancedBookComboBox.currentText()) @@ -529,9 +530,11 @@ class BibleMediaItem(MediaManagerItem): self.displayResults(bible, dual_bible) else: self.displayResults(bible, dual_bible) + self.AdvancedSearchButton.setEnabled(True) def onQuickSearchButton(self): log.debug(u'Quick Search Button pressed') + self.QuickSearchButton.setEnabled(False) bible = unicode(self.QuickVersionComboBox.currentText()) dual_bible = unicode(self.QuickSecondBibleComboBox.currentText()) text = unicode(self.QuickSearchEdit.text()) @@ -543,11 +546,17 @@ class BibleMediaItem(MediaManagerItem): else: # Text Search self.search_results = self.parent.manager.verse_search(bible, text) if dual_bible: - for count, verse in enumerate(self.search_results): - text = u'%s %s:%s' % (verse.book.name, verse.chapter, - verse.verse) - self.dual_search_results[count] = self.parent.manager.\ - get_verses(dual_bible, text)[0] + text = [] + for verse in self.search_results: + text.append((verse.book.name, verse.chapter, verse.verse, + verse.verse)) + self.dual_search_results = self.parent.manager.get_verses( + dual_bible, text) +# for count, verse in enumerate(self.search_results): +# text = u'%s %s:%s' % (verse.book.name, verse.chapter, +# verse.verse) +# self.dual_search_results[count] = self.parent.manager.\ +# get_verses(dual_bible, text)[0] if self.ClearQuickSearchComboBox.currentIndex() == 0: self.listView.clear() if self.listView.count() != 0 and self.search_results: @@ -567,6 +576,7 @@ class BibleMediaItem(MediaManagerItem): self.displayResults(bible, dual_bible) elif self.search_results: self.displayResults(bible, dual_bible) + self.QuickSearchButton.setEnabled(True) def displayResults(self, bible, dual_bible=u''): """ From 919b07bd61f07d5569f05154f58234c2cb0c2e4f Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 1 Oct 2010 16:18:15 +0200 Subject: [PATCH 03/36] clean ups --- openlp/plugins/bibles/lib/db.py | 6 +++--- openlp/plugins/bibles/lib/http.py | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 6f947cb87..60b9a8836 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -4,7 +4,7 @@ ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # +# Copyright (c) 2008-2010 Raoul Snyman + # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # # Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian # # Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # @@ -64,10 +64,10 @@ class Verse(BaseModel): def init_schema(url): """ - Setup a bible database connection and initialise the database schema + Setup a bible database connection and initialise the database schema. ``url`` - The database to setup + The database to setup. """ session, metadata = init_db(url) diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 415a0cde5..8abb3e62f 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -187,16 +187,16 @@ class BGExtract(object): def get_bible_chapter(self, version, bookname, chapter): """ - Access and decode bibles via the BibleGateway website + Access and decode bibles via the BibleGateway website. ``version`` - The version of the bible like 31 for New International version + The version of the bible like 31 for New International version. ``bookname`` - Name of the Book + Name of the Book. ``chapter`` - Chapter number + Chapter number. """ log.debug(u'get_bible_chapter %s, %s, %s', version, bookname, chapter) url_params = urllib.urlencode( @@ -298,13 +298,13 @@ class CWExtract(object): versetext = versetext + part elif part and part.attrMap and \ (part.attrMap[u'class'] == u'WordsOfChrist' or \ - part.attrMap[u'class'] == u'strongs'): + part.attrMap[u'class'] == u'strongs'): for subpart in part.contents: Receiver.send_message(u'openlp_process_events') if isinstance(subpart, NavigableString): versetext = versetext + subpart elif subpart and subpart.attrMap and \ - subpart.attrMap[u'class'] == u'strongs': + subpart.attrMap[u'class'] == u'strongs': for subsub in subpart.contents: Receiver.send_message(u'openlp_process_events') if isinstance(subsub, NavigableString): @@ -382,14 +382,14 @@ class HTTPBible(BibleDB): ``reference_list`` This is the list of references the media manager item wants. It is - a list of tuples, with the following format:: + a list of tuples, with the following format: (book, chapter, start_verse, end_verse) Therefore, when you are looking for multiple items, simply break them up into references like this, bundle them into a list. This function then runs through the list, and returns an amalgamated - list of ``Verse`` objects. For example:: + list of ``Verse`` objects. For example: [(u'Genesis', 1, 1, 1), (u'Genesis', 2, 2, 3)] """ @@ -428,7 +428,7 @@ class HTTPBible(BibleDB): def get_chapter(self, book, chapter): """ - Receive the request and call the relevant handler methods + Receive the request and call the relevant handler methods. """ log.debug(u'get_chapter %s, %s', book, chapter) log.debug(u'source = %s', self.download_source) From f8ed4acf78fa6168008762525f229f8119bfb0df Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 1 Oct 2010 16:37:51 +0200 Subject: [PATCH 04/36] clean ups --- openlp/plugins/bibles/lib/mediaitem.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index ab39665f8..94519ba88 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -540,23 +540,23 @@ class BibleMediaItem(MediaManagerItem): text = unicode(self.QuickSearchEdit.text()) if self.QuickSearchComboBox.currentIndex() == 0: # Verse Search self.search_results = self.parent.manager.get_verses(bible, text) - if dual_bible: + if dual_bible and self.search_results: self.dual_search_results = self.parent.manager.get_verses( dual_bible, text) else: # Text Search self.search_results = self.parent.manager.verse_search(bible, text) - if dual_bible: - text = [] - for verse in self.search_results: - text.append((verse.book.name, verse.chapter, verse.verse, - verse.verse)) - self.dual_search_results = self.parent.manager.get_verses( - dual_bible, text) -# for count, verse in enumerate(self.search_results): -# text = u'%s %s:%s' % (verse.book.name, verse.chapter, -# verse.verse) -# self.dual_search_results[count] = self.parent.manager.\ -# get_verses(dual_bible, text)[0] + if dual_bible and self.search_results: +# text = [] +# for verse in self.search_results: +# text.append((verse.book.name, verse.chapter, verse.verse, +# verse.verse)) +# self.dual_search_results = self.parent.manager.get_verses( +# dual_bible, text) + for count, verse in enumerate(self.search_results): + text = u'%s %s:%s' % (verse.book.name, verse.chapter, + verse.verse) + self.dual_search_results[count] = self.parent.manager.\ + get_verses(dual_bible, text)[0] if self.ClearQuickSearchComboBox.currentIndex() == 0: self.listView.clear() if self.listView.count() != 0 and self.search_results: From f515dc60d0e9567294490b8256d6d450e8ba629c Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Wed, 6 Oct 2010 16:15:39 +0200 Subject: [PATCH 05/36] changed methods (call the db methods instead of the manager's methods) --- openlp/plugins/bibles/lib/manager.py | 48 ++++++++++++-------------- openlp/plugins/bibles/lib/mediaitem.py | 22 +++++------- 2 files changed, 31 insertions(+), 39 deletions(-) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 12d673d9b..09d3b3e8e 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -181,10 +181,10 @@ class BibleManager(object): def get_bibles(self): """ - Returns a list of the names of available Bibles. + Returns a dict with all available Bibles. """ log.debug(u'get_bibles') - return self.db_cache.keys() + return self.db_cache def get_books(self, bible): """ @@ -238,10 +238,6 @@ class BibleManager(object): - Genesis 1:1-10,2:1-10 """ log.debug(u'BibleManager.get_verses("%s", "%s")', bible, versetext) -# if type(versetext) is list: -# reflist = versetext -# else: -# reflist = parse_reference(versetext) reflist = parse_reference(versetext) if reflist: return self.db_cache[bible].get_verses(reflist) @@ -261,26 +257,26 @@ class BibleManager(object): 'Book Chapter:Verse-Chapter:Verse')) return None - def verse_search(self, bible, text): - """ - ``bible`` - The bible to seach in. - - ``text`` - The text to search for. - """ - log.debug(u'BibleManager.verse_search("%s", "%s")', bible, text) - if text: - return self.db_cache[bible].verse_search(text) - else: - QtGui.QMessageBox.information(self.parent.mediaItem, - translate('BiblesPlugin.BibleManager', - 'Scripture Reference Error'), - translate('BiblesPlugin.BibleManager', 'You did not enter a ' - 'search keyword.\nYou can seperate different keywords by a space' - ' to search for all of your keywords and can seperate them by a' - ' comma to search for one of them.')) - return None +# def verse_search(self, bible, text): +# """ +# ``bible`` +# The bible to seach in. +# +# ``text`` +# The text to search for. +# """ +# log.debug(u'BibleManager.verse_search("%s", "%s")', bible, text) +# if text: +# return self.db_cache[bible].verse_search(text) +# else: +# QtGui.QMessageBox.information(self.parent.mediaItem, +# translate('BiblesPlugin.BibleManager', +# 'Scripture Reference Error'), +# translate('BiblesPlugin.BibleManager', 'You did not enter a ' +# 'search keyword.\nYou can seperate different keywords by a space' +# ' to search for all of your keywords and can seperate them by a' +# ' comma to search for one of them.')) +# return None def save_meta_data(self, bible, version, copyright, permissions): """ diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 3b94c399f..70d3fb97d 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -32,6 +32,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, Receiver, BaseListWithDnD, \ ItemCapabilities, translate from openlp.plugins.bibles.forms import ImportWizardForm +from openlp.plugins.bibles.lib.db import BibleDB log = logging.getLogger(__name__) @@ -374,7 +375,7 @@ class BibleMediaItem(MediaManagerItem): self.AdvancedSecondBibleComboBox.clear() self.QuickSecondBibleComboBox.addItem(u'') self.AdvancedSecondBibleComboBox.addItem(u'') - bibles = self.parent.manager.get_bibles() + bibles = self.parent.manager.get_bibles().keys() # load bibles into the combo boxes first = True for bible in bibles: @@ -544,19 +545,14 @@ class BibleMediaItem(MediaManagerItem): self.dual_search_results = self.parent.manager.get_verses( dual_bible, text) else: # Text Search - self.search_results = self.parent.manager.verse_search(bible, text) + bibles = self.parent.manager.get_bibles() + self.search_results = bibles[bible].verse_search(text) if dual_bible and self.search_results: -# text = [] -# for verse in self.search_results: -# text.append((verse.book.name, verse.chapter, verse.verse, -# verse.verse)) -# self.dual_search_results = self.parent.manager.get_verses( -# dual_bible, text) - for count, verse in enumerate(self.search_results): - text = u'%s %s:%s' % (verse.book.name, verse.chapter, - verse.verse) - self.dual_search_results[count] = self.parent.manager.\ - get_verses(dual_bible, text, text)[0] + text = [] + for verse in self.search_results: + text.append((verse.book.name, verse.chapter, verse.verse, + verse.verse)) + self.dual_search_results = bibles[dual_bible].get_verses(text) if self.ClearQuickSearchComboBox.currentIndex() == 0: self.listView.clear() if self.listView.count() != 0 and self.search_results: From 59b387b9d06ae4136099e8094d88c093d6d99639 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Wed, 6 Oct 2010 16:57:38 +0200 Subject: [PATCH 06/36] replaced 'permission' with permissions since the db uses permissions --- openlp/plugins/bibles/forms/bibleimportwizard.py | 16 ++++++++-------- openlp/plugins/bibles/forms/importwizardform.py | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/openlp/plugins/bibles/forms/bibleimportwizard.py b/openlp/plugins/bibles/forms/bibleimportwizard.py index d64fce261..304e9fb0f 100644 --- a/openlp/plugins/bibles/forms/bibleimportwizard.py +++ b/openlp/plugins/bibles/forms/bibleimportwizard.py @@ -275,14 +275,14 @@ class Ui_BibleImportWizard(object): self.CopyrightEdit.setObjectName(u'CopyrightEdit') self.LicenseDetailsLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.CopyrightEdit) - self.PermissionLabel = QtGui.QLabel(self.LicenseDetailsPage) - self.PermissionLabel.setObjectName(u'PermissionLabel') + self.PermissionsLabel = QtGui.QLabel(self.LicenseDetailsPage) + self.PermissionsLabel.setObjectName(u'PermissionsLabel') self.LicenseDetailsLayout.setWidget(2, QtGui.QFormLayout.LabelRole, - self.PermissionLabel) - self.PermissionEdit = QtGui.QLineEdit(self.LicenseDetailsPage) - self.PermissionEdit.setObjectName(u'PermissionEdit') + self.PermissionsLabel) + self.PermissionsEdit = QtGui.QLineEdit(self.LicenseDetailsPage) + self.PermissionsEdit.setObjectName(u'PermissionsEdit') self.LicenseDetailsLayout.setWidget(2, QtGui.QFormLayout.FieldRole, - self.PermissionEdit) + self.PermissionsEdit) BibleImportWizard.addPage(self.LicenseDetailsPage) self.ImportPage = QtGui.QWizardPage() self.ImportPage.setObjectName(u'ImportPage') @@ -372,8 +372,8 @@ class Ui_BibleImportWizard(object): translate('BiblesPlugin.ImportWizardForm', 'Version name:')) self.CopyrightLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Copyright:')) - self.PermissionLabel.setText( - translate('BiblesPlugin.ImportWizardForm', 'Permission:')) + self.PermissionsLabel.setText( + translate('BiblesPlugin.ImportWizardForm', 'Permissions:')) self.ImportPage.setTitle( translate('BiblesPlugin.ImportWizardForm', 'Importing')) self.ImportPage.setSubTitle( diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index 3b2611e8f..3a20130eb 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -282,7 +282,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): self.LicenseDetailsPage.registerField( u'license_copyright', self.CopyrightEdit) self.LicenseDetailsPage.registerField( - u'license_permission', self.PermissionEdit) + u'license_permissions', self.PermissionsEdit) def setDefaults(self): settings = QtCore.QSettings() @@ -308,8 +308,8 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): QtCore.QVariant(self.VersionNameEdit.text())) self.setField(u'license_copyright', QtCore.QVariant(self.CopyrightEdit.text())) - self.setField(u'license_permission', - QtCore.QVariant(self.PermissionEdit.text())) + self.setField(u'license_permissions', + QtCore.QVariant(self.PermissionsEdit.text())) self.onLocationComboBoxChanged(WebDownload.Crosswalk) settings.endGroup() @@ -391,8 +391,8 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): bible_type = self.field(u'source_format').toInt()[0] license_version = unicode(self.field(u'license_version').toString()) license_copyright = unicode(self.field(u'license_copyright').toString()) - license_permission = \ - unicode(self.field(u'license_permission').toString()) + license_permissions = \ + unicode(self.field(u'license_permissions').toString()) importer = None if bible_type == BibleFormat.OSIS: # Import an OSIS bible @@ -436,7 +436,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): ) if importer.do_import(): self.manager.save_meta_data(license_version, license_version, - license_copyright, license_permission) + license_copyright, license_permissions) self.manager.reload_bibles() self.ImportProgressLabel.setText( translate('BiblesPlugin.ImportWizardForm', 'Finished import.')) From 2e2efab2d488b7737ba971334b444204a0fc5f3d Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 8 Oct 2010 19:07:14 +0200 Subject: [PATCH 07/36] tweaks --- openlp/plugins/bibles/lib/db.py | 6 ++-- openlp/plugins/bibles/lib/manager.py | 42 +++++++++++++------------- openlp/plugins/bibles/lib/mediaitem.py | 3 +- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 4d90b474c..59eaaef22 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -369,19 +369,19 @@ class BibleDB(QtCore.QObject, Manager): values. """ log.debug(u'BibleDB.verse_search("%s")', text) - verses = self.session.query(Verse) if text.find(u',') > -1: or_clause = [] keywords = [u'%%%s%%' % keyword.strip() for keyword in text.split(u',')] for keyword in keywords: or_clause.append(Verse.text.like(keyword)) - verses = verses.filter(or_(*or_clause)) + verses = self.session.query(Verse).filter(or_(*or_clause)) else: keywords = [u'%%%s%%' % keyword.strip() for keyword in text.split(u' ')] for keyword in keywords: - verses = verses.filter(Verse.text.like(keyword)) + verses = self.session.query(Verse)\ + .filter(Verse.text.like(keyword)) verses = verses.all() return verses diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 09d3b3e8e..83aacd234 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -257,27 +257,27 @@ class BibleManager(object): 'Book Chapter:Verse-Chapter:Verse')) return None -# def verse_search(self, bible, text): -# """ -# ``bible`` -# The bible to seach in. -# -# ``text`` -# The text to search for. -# """ -# log.debug(u'BibleManager.verse_search("%s", "%s")', bible, text) -# if text: -# return self.db_cache[bible].verse_search(text) -# else: -# QtGui.QMessageBox.information(self.parent.mediaItem, -# translate('BiblesPlugin.BibleManager', -# 'Scripture Reference Error'), -# translate('BiblesPlugin.BibleManager', 'You did not enter a ' -# 'search keyword.\nYou can seperate different keywords by a space' -# ' to search for all of your keywords and can seperate them by a' -# ' comma to search for one of them.')) -# return None - + def verse_search(self, bible, text): + """ + ``bible`` + The bible to seach in. + + ``text`` + The text to search for. + """ + log.debug(u'BibleManager.verse_search("%s", "%s")', bible, text) + if text: + return self.db_cache[bible].verse_search(text) + else: + QtGui.QMessageBox.information(self.parent.mediaItem, + translate('BiblesPlugin.BibleManager', + 'Scripture Reference Error'), + translate('BiblesPlugin.BibleManager', 'You did not enter a ' + 'search keyword.\nYou can seperate different keywords by a ' + 'space to search for all of your keywords and you can seperate ' + 'them by a comma to search for one of them.')) + return None + def save_meta_data(self, bible, version, copyright, permissions): """ Saves the bibles meta data. diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 70d3fb97d..4daa1bc93 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -546,7 +546,8 @@ class BibleMediaItem(MediaManagerItem): dual_bible, text) else: # Text Search bibles = self.parent.manager.get_bibles() - self.search_results = bibles[bible].verse_search(text) + #self.search_results = bibles[bible].verse_search(text) + self.search_results = self.parent.manager.verse_search(bible, text) if dual_bible and self.search_results: text = [] for verse in self.search_results: From 1bf1aeacd44f6aaa309f590a9c1fa5d0550b1cb6 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 8 Oct 2010 19:37:34 +0200 Subject: [PATCH 08/36] minor fixes for proposal --- openlp/plugins/bibles/lib/mediaitem.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 4daa1bc93..f985c7471 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -539,14 +539,15 @@ class BibleMediaItem(MediaManagerItem): bible = unicode(self.QuickVersionComboBox.currentText()) dual_bible = unicode(self.QuickSecondBibleComboBox.currentText()) text = unicode(self.QuickSearchEdit.text()) - if self.QuickSearchComboBox.currentIndex() == 0: # Verse Search + if self.QuickSearchComboBox.currentIndex() == 0: + # We are doing a 'Verse Search'. self.search_results = self.parent.manager.get_verses(bible, text) if dual_bible and self.search_results: self.dual_search_results = self.parent.manager.get_verses( dual_bible, text) - else: # Text Search + else: + # We are doing a ' Text Search'. bibles = self.parent.manager.get_bibles() - #self.search_results = bibles[bible].verse_search(text) self.search_results = self.parent.manager.verse_search(bible, text) if dual_bible and self.search_results: text = [] @@ -718,16 +719,19 @@ class BibleMediaItem(MediaManagerItem): if bible_text: raw_slides.append(bible_text) bible_text = u'' + # Service Item: Capabilities if self.parent.settings_tab.layout_style == 2 and not dual_bible: # Split the line but do not replace line breaks in renderer. service_item.add_capability(ItemCapabilities.NoLineBreaks) service_item.add_capability(ItemCapabilities.AllowsPreview) service_item.add_capability(ItemCapabilities.AllowsLoop) + # Service Item: Title for title in raw_title: if not service_item.title: service_item.title = title else: service_item.title += u', ' + title + # Service Item: Theme if len(self.parent.settings_tab.bible_theme) == 0: service_item.theme = None else: From ae015a270addeabb4a874e04c8d252df1acb37be Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 9 Oct 2010 08:00:50 +0200 Subject: [PATCH 09/36] added reStructuredText back --- openlp/plugins/bibles/lib/__init__.py | 2 +- openlp/plugins/bibles/lib/db.py | 4 ++-- openlp/plugins/bibles/lib/http.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index e3f0d8f46..06f9d7cc7 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -75,7 +75,7 @@ def parse_reference(reference): 7 None|[0-9]+|end None or the end of the second verse range. The reference list is a list of tuples, with each tuple structured like - this: + this:: (book, chapter, start_verse, end_verse) ``reference`` diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 59eaaef22..cca8108a4 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -320,14 +320,14 @@ class BibleDB(QtCore.QObject, Manager): ``reference_list`` This is the list of references the media manager item wants. It is - a list of tuples, with the following format: + a list of tuples, with the following format:: (book, chapter, start_verse, end_verse) Therefore, when you are looking for multiple items, simply break them up into references like this, bundle them into a list. This function then runs through the list, and returns an amalgamated - list of ``Verse`` objects. For example: + list of ``Verse`` objects. For example:: [(u'Genesis', 1, 1, 1), (u'Genesis', 2, 2, 3)] """ diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 8abb3e62f..327228b6d 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -382,7 +382,7 @@ class HTTPBible(BibleDB): ``reference_list`` This is the list of references the media manager item wants. It is - a list of tuples, with the following format: + a list of tuples, with the following format:: (book, chapter, start_verse, end_verse) From 2ad3f983f7c93684f332dd18e6fde5e53ab9f594 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 9 Oct 2010 08:48:21 +0200 Subject: [PATCH 10/36] added reStructuredText back --- openlp/plugins/bibles/lib/http.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 327228b6d..18cdb7223 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -389,7 +389,7 @@ class HTTPBible(BibleDB): Therefore, when you are looking for multiple items, simply break them up into references like this, bundle them into a list. This function then runs through the list, and returns an amalgamated - list of ``Verse`` objects. For example: + list of ``Verse`` objects. For example:: [(u'Genesis', 1, 1, 1), (u'Genesis', 2, 2, 3)] """ From 607a0d11550673a2c52cdc568d691878c3e51f31 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 9 Oct 2010 13:00:28 +0200 Subject: [PATCH 11/36] - make sure the 'edit all' button is disabled when creating a new custom - ask if unsaved data should be saved when clicking on the save button --- openlp/plugins/custom/forms/editcustomform.py | 64 +++++++++++++------ 1 file changed, 46 insertions(+), 18 deletions(-) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 910fe65e7..d802cb58c 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -81,7 +81,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.onVerseListViewPressed) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'theme_update_list'), self.loadThemes) - # Create other objects and forms + # Create other objects and forms. self.custommanager = custommanager self.initialise() @@ -104,7 +104,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.creditEdit.setText(u'') self.verseTextEdit.clear() self.verseListView.clear() - #make sure we have a new item + # Make sure we have a new item. self.customSlide = CustomSlide() self.themeComboBox.addItem(u'') @@ -115,6 +115,16 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.themeComboBox.addItem(themename) def loadCustom(self, id, preview=False): + """ + Called when editing or creating a new custom. + + ``id`` + The cutom's id. If zero, then a new custom is created. + + ``preview`` + States whether the custom is edited while being previewed in the + preview panel. + """ self.customSlide = CustomSlide() self.initialise() if id != 0: @@ -132,7 +142,8 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.themeComboBox.setCurrentIndex(id) else: self.themeComboBox.setCurrentIndex(0) - #if not preview hide the preview button + self.editAllButton.setEnabled(False) + # If not preview hide the preview button. self.previewButton.setVisible(False) if preview: self.previewButton.setVisible(True) @@ -148,10 +159,10 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.close() def saveCustom(self): - valid, message = self._validate() - if not valid: - QtGui.QMessageBox.critical(self, - translate('CustomPlugin.EditCustomForm', 'Error'), message) + """ + Saves the custom. + """ + if not self._validate(): return False sxml = CustomXMLBuilder() sxml.new_document() @@ -237,7 +248,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): else: self.verseListView.currentItem().setText( self.verseTextEdit.toPlainText()) - #number of lines has change + # The number of lines has changed. if len(self.beforeText.split(u'\n')) != \ len(self.verseTextEdit.toPlainText().split(u'\n')): tempList = {} @@ -266,18 +277,35 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.editAllButton.setEnabled(True) def _validate(self): + """ + Checks whether a custom is valid or not. + """ + # We must have a title. if len(self.titleEdit.displayText()) == 0: self.titleEdit.setFocus() - return False, translate('CustomPlugin.EditCustomForm', - 'You need to type in a title.') - # must have 1 slide + QtGui.QMessageBox.critical(self, + translate('CustomPlugin.EditCustomForm', 'Error'), + translate('CustomPlugin.EditCustomForm', + 'You need to type in a title.')) + return False + # We must have one slide. if self.verseListView.count() == 0: self.verseTextEdit.setFocus() - return False, translate('CustomPlugin.EditCustomForm', - 'You need to add at least one slide') + QtGui.QMessageBox.critical(self, + translate('CustomPlugin.EditCustomForm', 'Error'), + translate('CustomPlugin.EditCustomForm', + 'You need to add at least one slide.')) + return False + # We must not have unsaved data. if self.verseTextEdit.toPlainText(): - self.verseTextEdit.setFocus() - return False, translate('CustomPlugin.EditCustomForm', - 'You have one or more unsaved slides, please either save your ' - 'slide(s) or clear your changes.') - return True, u'' + if QtGui.QMessageBox.critical(self, + translate('CustomPlugin.EditCustomForm', 'Error'), + translate('CustomPlugin.EditCustomForm', 'You have one or more ' + 'unsaved slides. Do you want to save them and continue?'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | + QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.Yes: + self.onSaveButtonPressed() + else: + self.verseTextEdit.setFocus() + return False + return True From 384a3e46830d684f409a1cb3c017b1ab05bea6bb Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 9 Oct 2010 13:00:51 +0200 Subject: [PATCH 12/36] - make sure the 'edit all' button is disabled when creating a new custom - ask if unsaved data should be saved when clicking on the save button From 2f99a85c4efcc21e6becc00588ee07096c499cf2 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 9 Oct 2010 14:15:31 +0200 Subject: [PATCH 13/36] continued save button problem --- openlp/plugins/custom/forms/editcustomform.py | 43 ++++++++----------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index d802cb58c..d412287aa 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -162,7 +162,10 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): """ Saves the custom. """ - if not self._validate(): + valid, message = self._validate() + if not valid: + QtGui.QMessageBox.critical(self, + translate('CustomPlugin.EditCustomForm', 'Error'), message) return False sxml = CustomXMLBuilder() sxml.new_document() @@ -196,6 +199,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.verseListView.setCurrentRow(selectedRow + 1) def onClearButtonPressed(self): + #TODO: enable the "big" save button. self.verseTextEdit.clear() self.editAll = False self.addButton.setEnabled(True) @@ -210,14 +214,18 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.editText(item.text()) def onAddButtonPressed(self): + #TODO: enable the "big" save button. self.verseListView.addItem(self.verseTextEdit.toPlainText()) + self.editAllButton.setEnabled(True) self.deleteButton.setEnabled(False) self.verseTextEdit.clear() def onEditButtonPressed(self): + #TODO: disable the "big" save button. self.editText(self.verseListView.currentItem().text()) def onEditAllButtonPressed(self): + #TODO: disable the "big" save button. self.editAll = True self.addButton.setEnabled(False) self.splitButton.setEnabled(True) @@ -240,6 +248,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.clearButton.setEnabled(True) def onSaveButtonPressed(self): + #TODO: enable the "big" save button. if self.editAll: self.verseListView.clear() for row in unicode(self.verseTextEdit.toPlainText()).split( @@ -272,9 +281,13 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.verseTextEdit.setFocus() def onDeleteButtonPressed(self): + #TODO: make sure the "big" save button is disabled if no slides. self.verseListView.takeItem(self.verseListView.currentRow()) self.editButton.setEnabled(False) self.editAllButton.setEnabled(True) + if self.verseListView.count() == 0: + self.deleteButton.setEnabled(False) + self.editAllButton.setEnabled(False) def _validate(self): """ @@ -283,29 +296,11 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): # We must have a title. if len(self.titleEdit.displayText()) == 0: self.titleEdit.setFocus() - QtGui.QMessageBox.critical(self, - translate('CustomPlugin.EditCustomForm', 'Error'), - translate('CustomPlugin.EditCustomForm', - 'You need to type in a title.')) - return False + return False, translate('CustomPlugin.EditCustomForm', + 'You need to type in a title.') # We must have one slide. if self.verseListView.count() == 0: self.verseTextEdit.setFocus() - QtGui.QMessageBox.critical(self, - translate('CustomPlugin.EditCustomForm', 'Error'), - translate('CustomPlugin.EditCustomForm', - 'You need to add at least one slide.')) - return False - # We must not have unsaved data. - if self.verseTextEdit.toPlainText(): - if QtGui.QMessageBox.critical(self, - translate('CustomPlugin.EditCustomForm', 'Error'), - translate('CustomPlugin.EditCustomForm', 'You have one or more ' - 'unsaved slides. Do you want to save them and continue?'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | - QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.Yes: - self.onSaveButtonPressed() - else: - self.verseTextEdit.setFocus() - return False - return True + return False, translate('CustomPlugin.EditCustomForm', + 'You need to add at least one slide') + return True, u'' From de940f7ca59f55d412b044836cad6ac749887da3 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 9 Oct 2010 21:20:07 +0200 Subject: [PATCH 14/36] first draft of new custom editor --- openlp/plugins/custom/forms/__init__.py | 1 + .../plugins/custom/forms/editcustomdialog.py | 176 +++++-------- openlp/plugins/custom/forms/editcustomform.py | 149 +++++------ .../custom/forms/editcustomslidedialog.py | 58 +++++ .../custom/forms/editcustomslideform.py | 74 ++++++ resources/forms/editcustomdialog.ui | 240 ++++++------------ 6 files changed, 344 insertions(+), 354 deletions(-) create mode 100644 openlp/plugins/custom/forms/editcustomslidedialog.py create mode 100644 openlp/plugins/custom/forms/editcustomslideform.py diff --git a/openlp/plugins/custom/forms/__init__.py b/openlp/plugins/custom/forms/__init__.py index 008caff8d..f31745e14 100644 --- a/openlp/plugins/custom/forms/__init__.py +++ b/openlp/plugins/custom/forms/__init__.py @@ -25,3 +25,4 @@ ############################################################################### from editcustomform import EditCustomForm +from editcustomslideform import EditCustomSlideForm diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index 84a310cb9..fd5e244f2 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -36,106 +36,82 @@ class Ui_CustomEditDialog(object): build_icon(u':/icon/openlp.org-icon-32.bmp')) self.gridLayout = QtGui.QGridLayout(customEditDialog) self.gridLayout.setObjectName(u'gridLayout') + self.horizontalLayout_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName(u'horizontalLayout_3') + self.themeLabel = QtGui.QLabel(customEditDialog) + self.themeLabel.setObjectName(u'themeLabel') + self.horizontalLayout_3.addWidget(self.themeLabel) + self.themeComboBox = QtGui.QComboBox(customEditDialog) + self.themeComboBox.setObjectName(u'themeComboBox') + self.horizontalLayout_3.addWidget(self.themeComboBox) + self.gridLayout.addLayout(self.horizontalLayout_3, 2, 0, 1, 1) + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(u'horizontalLayout_2') + self.creditLabel = QtGui.QLabel(customEditDialog) + self.creditLabel.setObjectName(u'creditLabel') + self.horizontalLayout_2.addWidget(self.creditLabel) + self.creditEdit = QtGui.QLineEdit(customEditDialog) + self.creditEdit.setObjectName(u'creditEdit') + self.horizontalLayout_2.addWidget(self.creditEdit) + self.gridLayout.addLayout(self.horizontalLayout_2, 3, 0, 1, 1) + self.buttonBox = QtGui.QDialogButtonBox(customEditDialog) + self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | + QtGui.QDialogButtonBox.Save) + self.buttonBox.setObjectName(u'buttonBox') + self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 1) + self.horizontalLayout_4 = QtGui.QHBoxLayout() + self.horizontalLayout_4.setObjectName(u'horizontalLayout_4') + self.verseListView = QtGui.QListWidget(customEditDialog) + self.verseListView.setAlternatingRowColors(True) + self.verseListView.setObjectName(u'verseListView') + self.horizontalLayout_4.addWidget(self.verseListView) + self.verticalLayout = QtGui.QVBoxLayout() + self.verticalLayout.setObjectName(u'verticalLayout') + self.addButton = QtGui.QPushButton(customEditDialog) + self.addButton.setObjectName(u'addButton') + self.verticalLayout.addWidget(self.addButton) + self.editButton = QtGui.QPushButton(customEditDialog) + self.editButton.setObjectName(u'editButton') + self.verticalLayout.addWidget(self.editButton) + self.editAllButton = QtGui.QPushButton(customEditDialog) + self.editAllButton.setObjectName(u'editAllButton') + self.verticalLayout.addWidget(self.editAllButton) + self.deleteButton = QtGui.QPushButton(customEditDialog) + self.deleteButton.setObjectName(u'deleteButton') + self.verticalLayout.addWidget(self.deleteButton) + spacerItem = QtGui.QSpacerItem(20, 128, QtGui.QSizePolicy.Minimum, + QtGui.QSizePolicy.Expanding) + self.verticalLayout.addItem(spacerItem) + self.upButton = QtGui.QPushButton(customEditDialog) + icon1 = QtGui.QIcon() + icon1.addPixmap(QtGui.QPixmap(u':/services/service_up.png'), + QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.upButton.setIcon(icon1) + self.upButton.setObjectName(u'upButton') + self.verticalLayout.addWidget(self.upButton) + self.downButton = QtGui.QPushButton(customEditDialog) + icon2 = QtGui.QIcon() + icon2.addPixmap(QtGui.QPixmap(u':/services/service_down.png'), + QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.downButton.setIcon(icon2) + self.downButton.setObjectName(u'downButton') + self.verticalLayout.addWidget(self.downButton) + self.horizontalLayout_4.addLayout(self.verticalLayout) + self.gridLayout.addLayout(self.horizontalLayout_4, 1, 0, 1, 1) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName(u'horizontalLayout') self.titleLabel = QtGui.QLabel(customEditDialog) self.titleLabel.setObjectName(u'titleLabel') self.horizontalLayout.addWidget(self.titleLabel) self.titleEdit = QtGui.QLineEdit(customEditDialog) - self.titleLabel.setBuddy(self.titleEdit) self.titleEdit.setObjectName(u'titleEdit') self.horizontalLayout.addWidget(self.titleEdit) self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) - self.horizontalLayout4 = QtGui.QHBoxLayout() - self.horizontalLayout4.setObjectName(u'horizontalLayout4') - self.verseListView = QtGui.QListWidget(customEditDialog) - self.verseListView.setAlternatingRowColors(True) - self.verseListView.setObjectName(u'verseListView') - self.horizontalLayout4.addWidget(self.verseListView) - self.verticalLayout = QtGui.QVBoxLayout() - self.verticalLayout.setObjectName(u'verticalLayout') - self.upButton = QtGui.QPushButton(customEditDialog) - self.upButton.setIcon(build_icon(u':/services/service_up.png')) - self.upButton.setObjectName(u'upButton') - self.verticalLayout.addWidget(self.upButton) - spacerItem = QtGui.QSpacerItem(20, 128, QtGui.QSizePolicy.Minimum, - QtGui.QSizePolicy.Expanding) - self.verticalLayout.addItem(spacerItem) - self.downButton = QtGui.QPushButton(customEditDialog) - self.downButton.setIcon(build_icon(u':/services/service_down.png')) - self.downButton.setObjectName(u'downButton') - self.verticalLayout.addWidget(self.downButton) - self.horizontalLayout4.addLayout(self.verticalLayout) - self.gridLayout.addLayout(self.horizontalLayout4, 1, 0, 1, 1) - self.editWidget = QtGui.QWidget(customEditDialog) - self.editWidget.setObjectName(u'editWidget') - self.editLayout3 = QtGui.QHBoxLayout(self.editWidget) - self.editLayout3.setSpacing(8) - self.editLayout3.setMargin(0) - self.editLayout3.setObjectName(u'editLayout3') - self.verseTextEdit = SpellTextEdit(self) - self.verseTextEdit.setObjectName(u'verseTextEdit') - self.editLayout3.addWidget(self.verseTextEdit) - self.buttonWidget = QtGui.QWidget(self.editWidget) - self.buttonWidget.setObjectName(u'buttonWidget') - self.verticalLayout2 = QtGui.QVBoxLayout(self.buttonWidget) - self.verticalLayout2.setObjectName(u'verticalLayout2') - self.addButton = QtGui.QPushButton(self.buttonWidget) - self.addButton.setObjectName(u'addButton') - self.verticalLayout2.addWidget(self.addButton) - self.editButton = QtGui.QPushButton(self.buttonWidget) - self.editButton.setObjectName(u'editButton') - self.verticalLayout2.addWidget(self.editButton) - self.editAllButton = QtGui.QPushButton(self.buttonWidget) - self.editAllButton.setObjectName(u'editAllButton') - self.verticalLayout2.addWidget(self.editAllButton) - self.saveButton = QtGui.QPushButton(self.buttonWidget) - self.saveButton.setObjectName(u'saveButton') - self.verticalLayout2.addWidget(self.saveButton) - self.deleteButton = QtGui.QPushButton(self.buttonWidget) - self.deleteButton.setObjectName(u'deleteButton') - self.verticalLayout2.addWidget(self.deleteButton) - self.clearButton = QtGui.QPushButton(self.buttonWidget) - self.clearButton.setObjectName(u'clearButton') - self.verticalLayout2.addWidget(self.clearButton) - self.splitButton = QtGui.QPushButton(self.buttonWidget) - self.splitButton.setObjectName(u'splitButton') - self.verticalLayout2.addWidget(self.splitButton) - spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, - QtGui.QSizePolicy.Expanding) - self.verticalLayout2.addItem(spacerItem1) - self.editLayout3.addWidget(self.buttonWidget) - self.gridLayout.addWidget(self.editWidget, 2, 0, 1, 1) - self.horizontalLayout3 = QtGui.QHBoxLayout() - self.horizontalLayout3.setObjectName(u'horizontalLayout3') - self.themeLabel = QtGui.QLabel(customEditDialog) - self.themeLabel.setObjectName(u'themeLabel') - self.horizontalLayout3.addWidget(self.themeLabel) - self.themeComboBox = QtGui.QComboBox(customEditDialog) - self.themeLabel.setBuddy(self.themeComboBox) - self.themeComboBox.setObjectName(u'themeComboBox') - self.horizontalLayout3.addWidget(self.themeComboBox) - self.gridLayout.addLayout(self.horizontalLayout3, 3, 0, 1, 1) - self.horizontalLayout2 = QtGui.QHBoxLayout() - self.horizontalLayout2.setObjectName(u'horizontalLayout2') - self.creditLabel = QtGui.QLabel(customEditDialog) - self.creditLabel.setObjectName(u'creditLabel') - self.horizontalLayout2.addWidget(self.creditLabel) - self.creditEdit = QtGui.QLineEdit(customEditDialog) - self.creditLabel.setBuddy(self.creditEdit) - self.creditEdit.setObjectName(u'creditEdit') - self.horizontalLayout2.addWidget(self.creditEdit) - self.gridLayout.addLayout(self.horizontalLayout2, 4, 0, 1, 1) - self.buttonBox = QtGui.QDialogButtonBox(customEditDialog) - self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | - QtGui.QDialogButtonBox.Save) - self.buttonBox.setObjectName(u'buttonBox') - self.gridLayout.addWidget(self.buttonBox, 5, 0, 1, 1) self.retranslateUi(customEditDialog) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'), customEditDialog.accept) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), - customEditDialog.closePressed) + customEditDialog.close) QtCore.QMetaObject.connectSlotsByName(customEditDialog) def retranslateUi(self, customEditDialog): @@ -143,46 +119,32 @@ class Ui_CustomEditDialog(object): translate('CustomPlugin.EditCustomForm', 'Edit Custom Slides')) self.upButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Move slide up one ' - 'position.')) + 'position.')) self.downButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Move slide down one ' - 'position.')) + 'position.')) self.titleLabel.setText( translate('CustomPlugin.EditCustomForm', '&Title:')) self.addButton.setText( translate('CustomPlugin.EditCustomForm', 'Add New')) self.addButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Add a new slide at ' - 'bottom.')) + 'bottom.')) self.editButton.setText( translate('CustomPlugin.EditCustomForm', 'Edit')) self.editButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Edit the selected ' - 'slide.')) + 'slide.')) self.editAllButton.setText( translate('CustomPlugin.EditCustomForm', 'Edit All')) self.editAllButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Edit all the slides at ' - 'once.')) - self.saveButton.setText( - translate('CustomPlugin.EditCustomForm', 'Save')) - self.saveButton.setToolTip( - translate('CustomPlugin.EditCustomForm', 'Save the slide currently ' - 'being edited.')) + 'once.')) self.deleteButton.setText( translate('CustomPlugin.EditCustomForm', 'Delete')) self.deleteButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Delete the selected ' - 'slide.')) - self.clearButton.setText( - translate('CustomPlugin.EditCustomForm', 'Clear')) - self.clearButton.setToolTip( - translate('CustomPlugin.EditCustomForm', 'Clear edit area')) - self.splitButton.setText( - translate('CustomPlugin.EditCustomForm', 'Split Slide')) - self.splitButton.setToolTip( - translate('CustomPlugin.EditCustomForm', 'Split a slide into two ' - 'by inserting a slide splitter.')) + 'slide.')) self.themeLabel.setText( translate('CustomPlugin.EditCustomForm', 'The&me:')) self.creditLabel.setText( diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index d412287aa..18ab98d45 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -32,6 +32,7 @@ from openlp.core.lib import Receiver, translate from openlp.plugins.custom.lib import CustomXMLBuilder, CustomXMLParser from openlp.plugins.custom.lib.db import CustomSlide from editcustomdialog import Ui_CustomEditDialog +from editcustomslideform import EditCustomSlideForm log = logging.getLogger(__name__) @@ -40,7 +41,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): Class documentation goes here. """ log.info(u'Custom Editor loaded') - def __init__(self, custommanager, parent = None): + def __init__(self, custommanager, parent=None): """ Constructor """ @@ -61,21 +62,12 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): QtCore.SIGNAL(u'pressed()'), self.onEditButtonPressed) QtCore.QObject.connect(self.editAllButton, QtCore.SIGNAL(u'pressed()'), self.onEditAllButtonPressed) - QtCore.QObject.connect(self.saveButton, - QtCore.SIGNAL(u'pressed()'), self.onSaveButtonPressed) QtCore.QObject.connect(self.deleteButton, QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonPressed) - QtCore.QObject.connect(self.clearButton, - QtCore.SIGNAL(u'pressed()'), self.onClearButtonPressed) QtCore.QObject.connect(self.upButton, QtCore.SIGNAL(u'pressed()'), self.onUpButtonPressed) QtCore.QObject.connect(self.downButton, QtCore.SIGNAL(u'pressed()'), self.onDownButtonPressed) - QtCore.QObject.connect(self.splitButton, - QtCore.SIGNAL(u'pressed()'), self.onSplitButtonPressed) - QtCore.QObject.connect(self.verseListView, - QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem*)'), - self.onVerseListViewSelected) QtCore.QObject.connect(self.verseListView, QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), self.onVerseListViewPressed) @@ -83,30 +75,19 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): QtCore.SIGNAL(u'theme_update_list'), self.loadThemes) # Create other objects and forms. self.custommanager = custommanager + self.slide_form = EditCustomSlideForm(self) self.initialise() - def onPreview(self, button): - log.debug(u'onPreview') - if button.text() == unicode(translate('CustomPlugin.EditCustomForm', - 'Save && Preview')) and self.saveCustom(): - Receiver.send_message(u'custom_preview') - def initialise(self): - self.editAll = False self.addButton.setEnabled(True) self.deleteButton.setEnabled(False) self.editButton.setEnabled(False) self.editAllButton.setEnabled(True) - self.saveButton.setEnabled(False) - self.clearButton.setEnabled(False) - self.splitButton.setEnabled(False) self.titleEdit.setText(u'') self.creditEdit.setText(u'') - self.verseTextEdit.clear() self.verseListView.clear() # Make sure we have a new item. self.customSlide = CustomSlide() - self.themeComboBox.addItem(u'') def loadThemes(self, themelist): self.themeComboBox.clear() @@ -198,37 +179,41 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.verseListView.insertItem(selectedRow + 1, qw) self.verseListView.setCurrentRow(selectedRow + 1) - def onClearButtonPressed(self): - #TODO: enable the "big" save button. - self.verseTextEdit.clear() - self.editAll = False - self.addButton.setEnabled(True) - self.editAllButton.setEnabled(True) - self.saveButton.setEnabled(False) + def onPreview(self, button): + log.debug(u'onPreview') + if button.text() == unicode(translate('CustomPlugin.EditCustomForm', + 'Save && Preview')) and self.saveCustom(): + Receiver.send_message(u'custom_preview') def onVerseListViewPressed(self, item): self.deleteButton.setEnabled(True) self.editButton.setEnabled(True) - def onVerseListViewSelected(self, item): - self.editText(item.text()) + def onDeleteButtonPressed(self): + self.verseListView.takeItem(self.verseListView.currentRow()) + self.editButton.setEnabled(True) + self.editAllButton.setEnabled(True) + if self.verseListView.count() == 0: + self.deleteButton.setEnabled(False) + self.editButton.setEnabled(False) + self.editAllButton.setEnabled(False) def onAddButtonPressed(self): - #TODO: enable the "big" save button. - self.verseListView.addItem(self.verseTextEdit.toPlainText()) - self.editAllButton.setEnabled(True) - self.deleteButton.setEnabled(False) - self.verseTextEdit.clear() + self.slide_form.setText(u'') + if self.slide_form.exec_(): + for slide in self.slide_form.getText(): + self.verseListView.addItem(slide) + self.editAllButton.setEnabled(True) def onEditButtonPressed(self): - #TODO: disable the "big" save button. - self.editText(self.verseListView.currentItem().text()) + self.slide_form.setText(self.verseListView.currentItem().text()) + if self.slide_form.exec_(): + self.updateVerseList(self.slide_form.getText()) def onEditAllButtonPressed(self): - #TODO: disable the "big" save button. - self.editAll = True - self.addButton.setEnabled(False) - self.splitButton.setEnabled(True) + """ + Edits all slides. + """ if self.verseListView.count() > 0: verse_list = u'' for row in range(0, self.verseListView.count()): @@ -236,58 +221,41 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): verse_list += item.text() if row != self.verseListView.count() - 1: verse_list += u'\n[---]\n' - self.editText(verse_list) + self.slide_form.setText(verse_list) + if self.slide_form.exec_(): + self.updateVerseList(self.slide_form.getText(), True) - def editText(self, text): - self.beforeText = text - self.verseTextEdit.setPlainText(text) - self.deleteButton.setEnabled(False) - self.editButton.setEnabled(False) - self.editAllButton.setEnabled(False) - self.saveButton.setEnabled(True) - self.clearButton.setEnabled(True) + def updateVerseList(self, slides, edit_all=False): + """ + Updates the verse list (self.verseListView) after editing slides. - def onSaveButtonPressed(self): - #TODO: enable the "big" save button. - if self.editAll: - self.verseListView.clear() - for row in unicode(self.verseTextEdit.toPlainText()).split( - u'\n[---]\n'): - self.verseListView.addItem(row) + ``slides`` + A list of all slides which have been edited. + + ``edit_all`` + Indicates if all slides or only one slide has been edited. + """ + if len(slides) == 1: + self.verseListView.currentItem().setText(slides[0]) else: - self.verseListView.currentItem().setText( - self.verseTextEdit.toPlainText()) - # The number of lines has changed. - if len(self.beforeText.split(u'\n')) != \ - len(self.verseTextEdit.toPlainText().split(u'\n')): - tempList = {} - for row in range(0, self.verseListView.count()): - tempList[row] = self.verseListView.item(row).text() + if edit_all: self.verseListView.clear() - for row in range (0, len(tempList)): - self.verseListView.addItem(tempList[row]) - self.verseListView.repaint() - self.addButton.setEnabled(True) - self.saveButton.setEnabled(False) - self.editButton.setEnabled(False) - self.editAllButton.setEnabled(True) - self.splitButton.setEnabled(False) - self.verseTextEdit.clear() - - def onSplitButtonPressed(self): - if self.verseTextEdit.textCursor().columnNumber() != 0: - self.verseTextEdit.insertPlainText(u'\n') - self.verseTextEdit.insertPlainText(u'[---]\n' ) - self.verseTextEdit.setFocus() - - def onDeleteButtonPressed(self): - #TODO: make sure the "big" save button is disabled if no slides. - self.verseListView.takeItem(self.verseListView.currentRow()) - self.editButton.setEnabled(False) - self.editAllButton.setEnabled(True) - if self.verseListView.count() == 0: - self.deleteButton.setEnabled(False) - self.editAllButton.setEnabled(False) + for slide in slides: + self.verseListView.addItem(slide) + else: + old_slides = [] + old_row = self.verseListView.currentRow() + # Create a list with all slide (unedited). + old_slides = [self.verseListView.item(row).text() for row in \ + range(0, self.verseListView.count())] + self.verseListView.clear() + old_slides.pop(old_row) + # Insert all slides in the old_slides list, to make the list complete. + for slide in slides: + old_slides.insert(old_row, slide) + for slide in old_slides: + self.verseListView.addItem(slide) + self.verseListView.repaint() def _validate(self): """ @@ -300,7 +268,6 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): 'You need to type in a title.') # We must have one slide. if self.verseListView.count() == 0: - self.verseTextEdit.setFocus() return False, translate('CustomPlugin.EditCustomForm', 'You need to add at least one slide') return True, u'' diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py new file mode 100644 index 000000000..bc6657d90 --- /dev/null +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian # +# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # +# Carsten Tinggaard, Frode Woldsund # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +from PyQt4 import QtCore, QtGui + +from openlp.core.lib import translate + +class Ui_CustomSlideEditDialog(object): + def setupUi(self, customSlideEditDialog): + customSlideEditDialog.setObjectName(u'customSlideEditDialog') + customSlideEditDialog.resize(474, 442) + self.buttonBox = QtGui.QDialogButtonBox(customSlideEditDialog) + self.buttonBox.setGeometry(QtCore.QRect(8, 407, 458, 32)) + self.buttonBox.setOrientation(QtCore.Qt.Horizontal) + self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save) + self.buttonBox.setObjectName(u'buttonBox') + self.verseTextEdit = QtGui.QTextEdit(customSlideEditDialog) + self.verseTextEdit.setGeometry(QtCore.QRect(8, 8, 451, 341)) + self.verseTextEdit.setObjectName(u'verseTextEdit') + self.splitButton = QtGui.QPushButton(customSlideEditDialog) + self.splitButton.setGeometry(QtCore.QRect(370, 360, 85, 27)) + self.splitButton.setObjectName(u'splitButton') + self.retranslateUi(customSlideEditDialog) + QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'), + customSlideEditDialog.accept) + QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), + customSlideEditDialog.reject) + QtCore.QMetaObject.connectSlotsByName(customSlideEditDialog) + + def retranslateUi(self, customSlideEditDialog): + self.splitButton.setText( + translate('CustomPlugin.EditCustomForm', 'Split Slide')) + self.splitButton.setToolTip( + translate('CustomPlugin.EditCustomForm', 'Split a slide into two ' + 'by inserting a slide splitter.')) diff --git a/openlp/plugins/custom/forms/editcustomslideform.py b/openlp/plugins/custom/forms/editcustomslideform.py new file mode 100644 index 000000000..b43287b99 --- /dev/null +++ b/openlp/plugins/custom/forms/editcustomslideform.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian # +# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # +# Carsten Tinggaard, Frode Woldsund # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS F################################OR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +import logging + +from PyQt4 import QtCore, QtGui + +from openlp.core.lib import Receiver, translate +from editcustomslidedialog import Ui_CustomSlideEditDialog + +log = logging.getLogger(__name__) + +class EditCustomSlideForm(QtGui.QDialog, Ui_CustomSlideEditDialog): + """ + Class documentation goes here. + """ + log.info(u'Custom Verse Editor loaded') + def __init__(self, parent=None): + """ + Constructor + """ + QtGui.QDialog.__init__(self, parent) + self.setupUi(self) + # Connecting signals and slots + QtCore.QObject.connect(self.splitButton, + QtCore.SIGNAL(u'pressed()'), self.onSplitButtonPressed) + + + def setText(self, text): + """ + Set the text for verseTextEdit. + + ``text`` + The text (unicode). + """ + self.verseTextEdit.clear() + if text: + self.verseTextEdit.setPlainText(text) + self.verseTextEdit.setFocus() + + def getText(self): + """ + Returns a list with all slides. + """ + return self.verseTextEdit.toPlainText().split(u'\n[---]\n') + + def onSplitButtonPressed(self): + if self.verseTextEdit.textCursor().columnNumber() != 0: + self.verseTextEdit.insertPlainText(u'\n') + self.verseTextEdit.insertPlainText(u'[---]\n' ) + self.verseTextEdit.setFocus() diff --git a/resources/forms/editcustomdialog.ui b/resources/forms/editcustomdialog.ui index 44ce46ca7..7c714baab 100644 --- a/resources/forms/editcustomdialog.ui +++ b/resources/forms/editcustomdialog.ui @@ -18,20 +18,48 @@ :/icon/openlp.org-icon-32.bmp:/icon/openlp.org-icon-32.bmp - - + + - + - Title: + Theme: - + + + + + + + + + + + Credits: + + + + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Save + + + @@ -44,16 +72,42 @@ - + - + - + Add New - - - :/services/service_up.png:/services/service_up.png + + + + + + + + + Edit + + + + + + + + + + Edit All + + + + + + + + + + Delete @@ -70,6 +124,20 @@ + + + + + + + + + + + :/services/service_up.png:/services/service_up.png + + + @@ -88,166 +156,26 @@ - - - - - 8 - - - 0 - - - - - - - - - - - - - - Add New - - - - - - - - - - Edit - - - - - - - - - - Edit All - - - - - - - - - - Save - - - - - - - - - - Delete - - - - - - - - - - Clear - - - - - - - - - - Split Slide - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - + + - + - Theme: + Title: - - - - - + - - - - - - Credits: - - - - - - - - - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Save - - - TitleEdit - VerseTextEdit - AddButton VerseListView - EditButton - EditAllButton - SaveButton - DeleteButton CreditEdit - UpButton - DownButton ThemeComboBox From 84d0c01274d0acab8326bed8254ceafa0bcf9484 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 9 Oct 2010 21:36:05 +0200 Subject: [PATCH 15/36] fixes for the merge proposal --- openlp/plugins/bibles/lib/db.py | 10 +++++----- openlp/plugins/bibles/lib/manager.py | 8 +++++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index cca8108a4..8f5c7dc79 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -353,8 +353,8 @@ class BibleDB(QtCore.QObject, Manager): QtGui.QMessageBox.information(self.bible_plugin.mediaItem, translate('BiblesPlugin.BibleDB', 'Book not found'), translate('BiblesPlugin.BibleDB', 'The book you requested ' - 'could not be found in this bible. Please check your ' - 'spelling and that this is a complete bible not just ' + 'could not be found in this Bible. Please check your ' + 'spelling and that this is a complete Bible not just ' 'one testament.')) return verse_list @@ -369,19 +369,19 @@ class BibleDB(QtCore.QObject, Manager): values. """ log.debug(u'BibleDB.verse_search("%s")', text) + verses = self.session.query(Verse) if text.find(u',') > -1: or_clause = [] keywords = [u'%%%s%%' % keyword.strip() for keyword in text.split(u',')] for keyword in keywords: or_clause.append(Verse.text.like(keyword)) - verses = self.session.query(Verse).filter(or_(*or_clause)) + verses = verses.filter(or_(*or_clause)) else: keywords = [u'%%%s%%' % keyword.strip() for keyword in text.split(u' ')] for keyword in keywords: - verses = self.session.query(Verse)\ - .filter(Verse.text.like(keyword)) + verses = verses.filter(Verse.text.like(keyword)) verses = verses.all() return verses diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 83aacd234..877331341 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -259,11 +259,13 @@ class BibleManager(object): def verse_search(self, bible, text): """ + Does a verse search for the given bible and text. + ``bible`` - The bible to seach in. + The bible to seach in (unicode). ``text`` - The text to search for. + The text to search for (unicode). """ log.debug(u'BibleManager.verse_search("%s", "%s")', bible, text) if text: @@ -273,7 +275,7 @@ class BibleManager(object): translate('BiblesPlugin.BibleManager', 'Scripture Reference Error'), translate('BiblesPlugin.BibleManager', 'You did not enter a ' - 'search keyword.\nYou can seperate different keywords by a ' + 'search keyword.\nYou can separate different keywords by a ' 'space to search for all of your keywords and you can seperate ' 'them by a comma to search for one of them.')) return None From f60111e7a95f0afc784b03f207e64628c6ef4d6e Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 9 Oct 2010 21:47:15 +0200 Subject: [PATCH 16/36] head From 842c55002af59cd4cc7f10390403aef38f88984c Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 9 Oct 2010 22:00:33 +0200 Subject: [PATCH 17/36] fixed broken copyright block --- openlp/plugins/custom/forms/editcustomslideform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/custom/forms/editcustomslideform.py b/openlp/plugins/custom/forms/editcustomslideform.py index b43287b99..b20c51010 100644 --- a/openlp/plugins/custom/forms/editcustomslideform.py +++ b/openlp/plugins/custom/forms/editcustomslideform.py @@ -16,7 +16,7 @@ # # # This program is distributed in the hope that it will be useful, but WITHOUT # # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # -# FITNESS F################################OR A PARTICULAR PURPOSE. See the GNU General Public License for # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # # more details. # # # # You should have received a copy of the GNU General Public License along # From 068a3716f625ca2ae959b45f8a39a7c16c4e0ca1 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sun, 10 Oct 2010 14:00:04 +0200 Subject: [PATCH 18/36] head From 421577f8cedddd46bcd602f70ffa4fff21c78705 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sun, 10 Oct 2010 14:14:12 +0200 Subject: [PATCH 19/36] make sure that the 'edit' and 'delete' buttons are disabled after editing all verses --- openlp/plugins/songs/forms/editsongform.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 41eef0545..67ff6f32f 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -483,6 +483,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.VerseListWidget.resizeRowsToContents() self.VerseListWidget.repaint() self.tagRows() + self.VerseEditButton.setEnabled(False) + self.VerseDeleteButton.setEnabled(False) def onVerseDeleteButtonClicked(self): self.VerseListWidget.removeRow(self.VerseListWidget.currentRow()) From 3c32cb5be589ca74284a06982da0a825b58d5c46 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sun, 10 Oct 2010 15:09:45 +0200 Subject: [PATCH 20/36] clean ups + forgotten file --- .../plugins/custom/forms/editcustomdialog.py | 32 +++---- openlp/plugins/custom/forms/editcustomform.py | 14 +-- .../custom/forms/editcustomslidedialog.py | 3 +- .../custom/forms/editcustomslideform.py | 3 + resources/forms/editcustomslidedialog.ui | 96 +++++++++++++++++++ 5 files changed, 124 insertions(+), 24 deletions(-) create mode 100644 resources/forms/editcustomslidedialog.ui diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index fd5e244f2..82238f005 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -36,35 +36,35 @@ class Ui_CustomEditDialog(object): build_icon(u':/icon/openlp.org-icon-32.bmp')) self.gridLayout = QtGui.QGridLayout(customEditDialog) self.gridLayout.setObjectName(u'gridLayout') - self.horizontalLayout_3 = QtGui.QHBoxLayout() - self.horizontalLayout_3.setObjectName(u'horizontalLayout_3') + self.horizontalLayout3 = QtGui.QHBoxLayout() + self.horizontalLayout3.setObjectName(u'horizontalLayout3') self.themeLabel = QtGui.QLabel(customEditDialog) self.themeLabel.setObjectName(u'themeLabel') - self.horizontalLayout_3.addWidget(self.themeLabel) + self.horizontalLayout3.addWidget(self.themeLabel) self.themeComboBox = QtGui.QComboBox(customEditDialog) self.themeComboBox.setObjectName(u'themeComboBox') - self.horizontalLayout_3.addWidget(self.themeComboBox) - self.gridLayout.addLayout(self.horizontalLayout_3, 2, 0, 1, 1) - self.horizontalLayout_2 = QtGui.QHBoxLayout() - self.horizontalLayout_2.setObjectName(u'horizontalLayout_2') + self.horizontalLayout3.addWidget(self.themeComboBox) + self.gridLayout.addLayout(self.horizontalLayout3, 2, 0, 1, 1) + self.horizontalLayout2 = QtGui.QHBoxLayout() + self.horizontalLayout2.setObjectName(u'horizontalLayout2') self.creditLabel = QtGui.QLabel(customEditDialog) self.creditLabel.setObjectName(u'creditLabel') - self.horizontalLayout_2.addWidget(self.creditLabel) + self.horizontalLayout2.addWidget(self.creditLabel) self.creditEdit = QtGui.QLineEdit(customEditDialog) self.creditEdit.setObjectName(u'creditEdit') - self.horizontalLayout_2.addWidget(self.creditEdit) - self.gridLayout.addLayout(self.horizontalLayout_2, 3, 0, 1, 1) + self.horizontalLayout2.addWidget(self.creditEdit) + self.gridLayout.addLayout(self.horizontalLayout2, 3, 0, 1, 1) self.buttonBox = QtGui.QDialogButtonBox(customEditDialog) self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Save) self.buttonBox.setObjectName(u'buttonBox') self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 1) - self.horizontalLayout_4 = QtGui.QHBoxLayout() - self.horizontalLayout_4.setObjectName(u'horizontalLayout_4') + self.horizontalLayout4 = QtGui.QHBoxLayout() + self.horizontalLayout4.setObjectName(u'horizontalLayout4') self.verseListView = QtGui.QListWidget(customEditDialog) self.verseListView.setAlternatingRowColors(True) self.verseListView.setObjectName(u'verseListView') - self.horizontalLayout_4.addWidget(self.verseListView) + self.horizontalLayout4.addWidget(self.verseListView) self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout.setObjectName(u'verticalLayout') self.addButton = QtGui.QPushButton(customEditDialog) @@ -96,8 +96,8 @@ class Ui_CustomEditDialog(object): self.downButton.setIcon(icon2) self.downButton.setObjectName(u'downButton') self.verticalLayout.addWidget(self.downButton) - self.horizontalLayout_4.addLayout(self.verticalLayout) - self.gridLayout.addLayout(self.horizontalLayout_4, 1, 0, 1, 1) + self.horizontalLayout4.addLayout(self.verticalLayout) + self.gridLayout.addLayout(self.horizontalLayout4, 1, 0, 1, 1) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName(u'horizontalLayout') self.titleLabel = QtGui.QLabel(customEditDialog) @@ -111,7 +111,7 @@ class Ui_CustomEditDialog(object): QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'), customEditDialog.accept) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), - customEditDialog.close) + customEditDialog.closePressed) QtCore.QMetaObject.connectSlotsByName(customEditDialog) def retranslateUi(self, customEditDialog): diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 18ab98d45..b1ffbd214 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -78,6 +78,12 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.slide_form = EditCustomSlideForm(self) self.initialise() + def onPreview(self, button): + log.debug(u'onPreview') + if button.text() == unicode(translate('CustomPlugin.EditCustomForm', + 'Save && Preview')) and self.saveCustom(): + Receiver.send_message(u'custom_preview') + def initialise(self): self.addButton.setEnabled(True) self.deleteButton.setEnabled(False) @@ -179,12 +185,6 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.verseListView.insertItem(selectedRow + 1, qw) self.verseListView.setCurrentRow(selectedRow + 1) - def onPreview(self, button): - log.debug(u'onPreview') - if button.text() == unicode(translate('CustomPlugin.EditCustomForm', - 'Save && Preview')) and self.saveCustom(): - Receiver.send_message(u'custom_preview') - def onVerseListViewPressed(self, item): self.deleteButton.setEnabled(True) self.editButton.setEnabled(True) @@ -245,7 +245,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): else: old_slides = [] old_row = self.verseListView.currentRow() - # Create a list with all slide (unedited). + # Create a list with all (old/unedited) slides. old_slides = [self.verseListView.item(row).text() for row in \ range(0, self.verseListView.count())] self.verseListView.clear() diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py index bc6657d90..b0d1970ec 100644 --- a/openlp/plugins/custom/forms/editcustomslidedialog.py +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -35,7 +35,8 @@ class Ui_CustomSlideEditDialog(object): self.buttonBox = QtGui.QDialogButtonBox(customSlideEditDialog) self.buttonBox.setGeometry(QtCore.QRect(8, 407, 458, 32)) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) - self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save) + self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | + QtGui.QDialogButtonBox.Save) self.buttonBox.setObjectName(u'buttonBox') self.verseTextEdit = QtGui.QTextEdit(customSlideEditDialog) self.verseTextEdit.setGeometry(QtCore.QRect(8, 8, 451, 341)) diff --git a/openlp/plugins/custom/forms/editcustomslideform.py b/openlp/plugins/custom/forms/editcustomslideform.py index b20c51010..a3296377b 100644 --- a/openlp/plugins/custom/forms/editcustomslideform.py +++ b/openlp/plugins/custom/forms/editcustomslideform.py @@ -68,6 +68,9 @@ class EditCustomSlideForm(QtGui.QDialog, Ui_CustomSlideEditDialog): return self.verseTextEdit.toPlainText().split(u'\n[---]\n') def onSplitButtonPressed(self): + """ + Splits a slide in two slides. + """ if self.verseTextEdit.textCursor().columnNumber() != 0: self.verseTextEdit.insertPlainText(u'\n') self.verseTextEdit.insertPlainText(u'[---]\n' ) diff --git a/resources/forms/editcustomslidedialog.ui b/resources/forms/editcustomslidedialog.ui new file mode 100644 index 000000000..9bc502274 --- /dev/null +++ b/resources/forms/editcustomslidedialog.ui @@ -0,0 +1,96 @@ + + + customSlideEditDialog + + + + 0 + 0 + 474 + 442 + + + + Dialog + + + + + 8 + 407 + 458 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Save + + + + + + 8 + 8 + 451 + 341 + + + + + + + 370 + 360 + 85 + 27 + + + + + + + Split Slide + + + + + + + + + buttonBox + accepted() + customSlideEditDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + customSlideEditDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + From 4dde13136cc82d44d07eb238d20ff6e29f5e5b5a Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sun, 10 Oct 2010 15:17:01 +0200 Subject: [PATCH 21/36] layout clean ups --- openlp/plugins/custom/forms/editcustomslidedialog.py | 4 ++-- resources/forms/editcustomslidedialog.ui | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py index b0d1970ec..a2513833a 100644 --- a/openlp/plugins/custom/forms/editcustomslidedialog.py +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -39,10 +39,10 @@ class Ui_CustomSlideEditDialog(object): QtGui.QDialogButtonBox.Save) self.buttonBox.setObjectName(u'buttonBox') self.verseTextEdit = QtGui.QTextEdit(customSlideEditDialog) - self.verseTextEdit.setGeometry(QtCore.QRect(8, 8, 451, 341)) + self.verseTextEdit.setGeometry(QtCore.QRect(8, 8, 458, 349)) self.verseTextEdit.setObjectName(u'verseTextEdit') self.splitButton = QtGui.QPushButton(customSlideEditDialog) - self.splitButton.setGeometry(QtCore.QRect(370, 360, 85, 27)) + self.splitButton.setGeometry(QtCore.QRect(380, 370, 85, 27)) self.splitButton.setObjectName(u'splitButton') self.retranslateUi(customSlideEditDialog) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'), diff --git a/resources/forms/editcustomslidedialog.ui b/resources/forms/editcustomslidedialog.ui index 9bc502274..f537f854e 100644 --- a/resources/forms/editcustomslidedialog.ui +++ b/resources/forms/editcustomslidedialog.ui @@ -34,16 +34,16 @@ 8 8 - 451 - 341 + 458 + 349 - 370 - 360 + 380 + 370 85 27 From 144060a74b20954cd7544f6d68913b4666b0d48e Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sun, 10 Oct 2010 15:29:08 +0200 Subject: [PATCH 22/36] moved method to its old position --- openlp/plugins/custom/forms/editcustomform.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index b1ffbd214..e4cb78752 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -189,15 +189,6 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.deleteButton.setEnabled(True) self.editButton.setEnabled(True) - def onDeleteButtonPressed(self): - self.verseListView.takeItem(self.verseListView.currentRow()) - self.editButton.setEnabled(True) - self.editAllButton.setEnabled(True) - if self.verseListView.count() == 0: - self.deleteButton.setEnabled(False) - self.editButton.setEnabled(False) - self.editAllButton.setEnabled(False) - def onAddButtonPressed(self): self.slide_form.setText(u'') if self.slide_form.exec_(): @@ -257,6 +248,15 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.verseListView.addItem(slide) self.verseListView.repaint() + def onDeleteButtonPressed(self): + self.verseListView.takeItem(self.verseListView.currentRow()) + self.editButton.setEnabled(True) + self.editAllButton.setEnabled(True) + if self.verseListView.count() == 0: + self.deleteButton.setEnabled(False) + self.editButton.setEnabled(False) + self.editAllButton.setEnabled(False) + def _validate(self): """ Checks whether a custom is valid or not. From bab38de43eee8cb92e3ed1ac78e7b9d0c88b38c8 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sun, 10 Oct 2010 16:23:00 +0200 Subject: [PATCH 23/36] -'verse' -> 'slide' -buttons name fixes --- .../plugins/custom/forms/editcustomdialog.py | 19 ++-- openlp/plugins/custom/forms/editcustomform.py | 88 +++++++++---------- .../custom/forms/editcustomslidedialog.py | 6 +- .../custom/forms/editcustomslideform.py | 19 ++-- 4 files changed, 67 insertions(+), 65 deletions(-) diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index 82238f005..0883bc779 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -42,6 +42,7 @@ class Ui_CustomEditDialog(object): self.themeLabel.setObjectName(u'themeLabel') self.horizontalLayout3.addWidget(self.themeLabel) self.themeComboBox = QtGui.QComboBox(customEditDialog) + self.themeLabel.setBuddy(self.themeComboBox) self.themeComboBox.setObjectName(u'themeComboBox') self.horizontalLayout3.addWidget(self.themeComboBox) self.gridLayout.addLayout(self.horizontalLayout3, 2, 0, 1, 1) @@ -51,6 +52,7 @@ class Ui_CustomEditDialog(object): self.creditLabel.setObjectName(u'creditLabel') self.horizontalLayout2.addWidget(self.creditLabel) self.creditEdit = QtGui.QLineEdit(customEditDialog) + self.creditLabel.setBuddy(self.creditEdit) self.creditEdit.setObjectName(u'creditEdit') self.horizontalLayout2.addWidget(self.creditEdit) self.gridLayout.addLayout(self.horizontalLayout2, 3, 0, 1, 1) @@ -61,10 +63,10 @@ class Ui_CustomEditDialog(object): self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 1) self.horizontalLayout4 = QtGui.QHBoxLayout() self.horizontalLayout4.setObjectName(u'horizontalLayout4') - self.verseListView = QtGui.QListWidget(customEditDialog) - self.verseListView.setAlternatingRowColors(True) - self.verseListView.setObjectName(u'verseListView') - self.horizontalLayout4.addWidget(self.verseListView) + self.slideListView = QtGui.QListWidget(customEditDialog) + self.slideListView.setAlternatingRowColors(True) + self.slideListView.setObjectName(u'slideListView') + self.horizontalLayout4.addWidget(self.slideListView) self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout.setObjectName(u'verticalLayout') self.addButton = QtGui.QPushButton(customEditDialog) @@ -104,6 +106,7 @@ class Ui_CustomEditDialog(object): self.titleLabel.setObjectName(u'titleLabel') self.horizontalLayout.addWidget(self.titleLabel) self.titleEdit = QtGui.QLineEdit(customEditDialog) + self.titleLabel.setBuddy(self.titleEdit) self.titleEdit.setObjectName(u'titleEdit') self.horizontalLayout.addWidget(self.titleEdit) self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) @@ -126,22 +129,22 @@ class Ui_CustomEditDialog(object): self.titleLabel.setText( translate('CustomPlugin.EditCustomForm', '&Title:')) self.addButton.setText( - translate('CustomPlugin.EditCustomForm', 'Add New')) + translate('CustomPlugin.EditCustomForm', '&Add')) self.addButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Add a new slide at ' 'bottom.')) self.editButton.setText( - translate('CustomPlugin.EditCustomForm', 'Edit')) + translate('CustomPlugin.EditCustomForm', '&Edit')) self.editButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Edit the selected ' 'slide.')) self.editAllButton.setText( - translate('CustomPlugin.EditCustomForm', 'Edit All')) + translate('CustomPlugin.EditCustomForm', 'Ed&it All')) self.editAllButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Edit all the slides at ' 'once.')) self.deleteButton.setText( - translate('CustomPlugin.EditCustomForm', 'Delete')) + translate('CustomPlugin.EditCustomForm', '&Delete')) self.deleteButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Delete the selected ' 'slide.')) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index e4cb78752..e7dc0d72a 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -68,9 +68,9 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): QtCore.SIGNAL(u'pressed()'), self.onUpButtonPressed) QtCore.QObject.connect(self.downButton, QtCore.SIGNAL(u'pressed()'), self.onDownButtonPressed) - QtCore.QObject.connect(self.verseListView, + QtCore.QObject.connect(self.slideListView, QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), - self.onVerseListViewPressed) + self.onSlideListViewPressed) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'theme_update_list'), self.loadThemes) # Create other objects and forms. @@ -91,7 +91,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.editAllButton.setEnabled(True) self.titleEdit.setText(u'') self.creditEdit.setText(u'') - self.verseListView.clear() + self.slideListView.clear() # Make sure we have a new item. self.customSlide = CustomSlide() @@ -119,9 +119,9 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.titleEdit.setText(self.customSlide.title) self.creditEdit.setText(self.customSlide.credits) customXML = CustomXMLParser(self.customSlide.text) - verseList = customXML.get_verses() - for verse in verseList: - self.verseListView.addItem(verse[1]) + slideList = customXML.get_verses() + for slide in slideList: + self.slideListView.addItem(slide[1]) theme = self.customSlide.theme_name id = self.themeComboBox.findText(theme, QtCore.Qt.MatchExactly) if id == -1: @@ -158,9 +158,9 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): sxml.new_document() sxml.add_lyrics_to_song() count = 1 - for i in range(0, self.verseListView.count()): + for i in range(0, self.slideListView.count()): sxml.add_verse_to_lyrics(u'custom', unicode(count), - unicode(self.verseListView.item(i).text())) + unicode(self.slideListView.item(i).text())) count += 1 self.customSlide.title = unicode(self.titleEdit.displayText(), u'utf-8') self.customSlide.text = unicode(sxml.extract_xml(), u'utf-8') @@ -171,21 +171,21 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): return self.custommanager.save_object(self.customSlide) def onUpButtonPressed(self): - selectedRow = self.verseListView.currentRow() + selectedRow = self.slideListView.currentRow() if selectedRow != 0: - qw = self.verseListView.takeItem(selectedRow) - self.verseListView.insertItem(selectedRow - 1, qw) - self.verseListView.setCurrentRow(selectedRow - 1) + qw = self.slideListView.takeItem(selectedRow) + self.slideListView.insertItem(selectedRow - 1, qw) + self.slideListView.setCurrentRow(selectedRow - 1) def onDownButtonPressed(self): - selectedRow = self.verseListView.currentRow() + selectedRow = self.slideListView.currentRow() # zero base arrays - if selectedRow != self.verseListView.count() - 1: - qw = self.verseListView.takeItem(selectedRow) - self.verseListView.insertItem(selectedRow + 1, qw) - self.verseListView.setCurrentRow(selectedRow + 1) + if selectedRow != self.slideListView.count() - 1: + qw = self.slideListView.takeItem(selectedRow) + self.slideListView.insertItem(selectedRow + 1, qw) + self.slideListView.setCurrentRow(selectedRow + 1) - def onVerseListViewPressed(self, item): + def onSlideListViewPressed(self, item): self.deleteButton.setEnabled(True) self.editButton.setEnabled(True) @@ -193,32 +193,32 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.slide_form.setText(u'') if self.slide_form.exec_(): for slide in self.slide_form.getText(): - self.verseListView.addItem(slide) + self.slideListView.addItem(slide) self.editAllButton.setEnabled(True) def onEditButtonPressed(self): - self.slide_form.setText(self.verseListView.currentItem().text()) + self.slide_form.setText(self.slideListView.currentItem().text()) if self.slide_form.exec_(): - self.updateVerseList(self.slide_form.getText()) + self.updateSlideList(self.slide_form.getText()) def onEditAllButtonPressed(self): """ Edits all slides. """ - if self.verseListView.count() > 0: - verse_list = u'' - for row in range(0, self.verseListView.count()): - item = self.verseListView.item(row) - verse_list += item.text() - if row != self.verseListView.count() - 1: - verse_list += u'\n[---]\n' - self.slide_form.setText(verse_list) + if self.slideListView.count() > 0: + slide_list = u'' + for row in range(0, self.slideListView.count()): + item = self.slideListView.item(row) + slide_list += item.text() + if row != self.slideListView.count() - 1: + slide_list += u'\n[---]\n' + self.slide_form.setText(slide_list) if self.slide_form.exec_(): - self.updateVerseList(self.slide_form.getText(), True) + self.updateSlideList(self.slide_form.getText(), True) - def updateVerseList(self, slides, edit_all=False): + def updateSlideList(self, slides, edit_all=False): """ - Updates the verse list (self.verseListView) after editing slides. + Updates the slide list after editing slides. ``slides`` A list of all slides which have been edited. @@ -227,32 +227,32 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): Indicates if all slides or only one slide has been edited. """ if len(slides) == 1: - self.verseListView.currentItem().setText(slides[0]) + self.slideListView.currentItem().setText(slides[0]) else: if edit_all: - self.verseListView.clear() + self.slideListView.clear() for slide in slides: - self.verseListView.addItem(slide) + self.slideListView.addItem(slide) else: old_slides = [] - old_row = self.verseListView.currentRow() + old_row = self.slideListView.currentRow() # Create a list with all (old/unedited) slides. - old_slides = [self.verseListView.item(row).text() for row in \ - range(0, self.verseListView.count())] - self.verseListView.clear() + old_slides = [self.slideListView.item(row).text() for row in \ + range(0, self.slideListView.count())] + self.slideListView.clear() old_slides.pop(old_row) # Insert all slides in the old_slides list, to make the list complete. for slide in slides: old_slides.insert(old_row, slide) for slide in old_slides: - self.verseListView.addItem(slide) - self.verseListView.repaint() + self.slideListView.addItem(slide) + self.slideListView.repaint() def onDeleteButtonPressed(self): - self.verseListView.takeItem(self.verseListView.currentRow()) + self.slideListView.takeItem(self.slideListView.currentRow()) self.editButton.setEnabled(True) self.editAllButton.setEnabled(True) - if self.verseListView.count() == 0: + if self.slideListView.count() == 0: self.deleteButton.setEnabled(False) self.editButton.setEnabled(False) self.editAllButton.setEnabled(False) @@ -267,7 +267,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): return False, translate('CustomPlugin.EditCustomForm', 'You need to type in a title.') # We must have one slide. - if self.verseListView.count() == 0: + if self.slideListView.count() == 0: return False, translate('CustomPlugin.EditCustomForm', 'You need to add at least one slide') return True, u'' diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py index a2513833a..31bbb3d5d 100644 --- a/openlp/plugins/custom/forms/editcustomslidedialog.py +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -38,9 +38,9 @@ class Ui_CustomSlideEditDialog(object): self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Save) self.buttonBox.setObjectName(u'buttonBox') - self.verseTextEdit = QtGui.QTextEdit(customSlideEditDialog) - self.verseTextEdit.setGeometry(QtCore.QRect(8, 8, 458, 349)) - self.verseTextEdit.setObjectName(u'verseTextEdit') + self.slideTextEdit = QtGui.QTextEdit(customSlideEditDialog) + self.slideTextEdit.setGeometry(QtCore.QRect(8, 8, 458, 349)) + self.slideTextEdit.setObjectName(u'slideTextEdit') self.splitButton = QtGui.QPushButton(customSlideEditDialog) self.splitButton.setGeometry(QtCore.QRect(380, 370, 85, 27)) self.splitButton.setObjectName(u'splitButton') diff --git a/openlp/plugins/custom/forms/editcustomslideform.py b/openlp/plugins/custom/forms/editcustomslideform.py index a3296377b..ab670970b 100644 --- a/openlp/plugins/custom/forms/editcustomslideform.py +++ b/openlp/plugins/custom/forms/editcustomslideform.py @@ -48,30 +48,29 @@ class EditCustomSlideForm(QtGui.QDialog, Ui_CustomSlideEditDialog): QtCore.QObject.connect(self.splitButton, QtCore.SIGNAL(u'pressed()'), self.onSplitButtonPressed) - def setText(self, text): """ - Set the text for verseTextEdit. + Set the text for slideTextEdit. ``text`` The text (unicode). """ - self.verseTextEdit.clear() + self.slideTextEdit.clear() if text: - self.verseTextEdit.setPlainText(text) - self.verseTextEdit.setFocus() + self.slideTextEdit.setPlainText(text) + self.slideTextEdit.setFocus() def getText(self): """ Returns a list with all slides. """ - return self.verseTextEdit.toPlainText().split(u'\n[---]\n') + return self.slideTextEdit.toPlainText().split(u'\n[---]\n') def onSplitButtonPressed(self): """ Splits a slide in two slides. """ - if self.verseTextEdit.textCursor().columnNumber() != 0: - self.verseTextEdit.insertPlainText(u'\n') - self.verseTextEdit.insertPlainText(u'[---]\n' ) - self.verseTextEdit.setFocus() + if self.slideTextEdit.textCursor().columnNumber() != 0: + self.slideTextEdit.insertPlainText(u'\n') + self.slideTextEdit.insertPlainText(u'[---]\n' ) + self.slideTextEdit.setFocus() From 51edce8c174679714cd052514eaaf641533ce424 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 10 Oct 2010 17:40:54 +0200 Subject: [PATCH 24/36] Move Windows stuff all into a single "Windows" directory. --- OpenLP.spec | 19 - resources/{innosetup => windows}/LICENSE.txt | 0 .../{innosetup => windows}/OpenLP-2.0.iss | 1 + resources/{innosetup => windows}/OpenLP.ico | Bin resources/{innosetup => windows}/OpenLP.reg | Bin resources/windows/OpenLP.spec | 14 + resources/{innosetup => windows}/openlp.conf | 0 resources/windows/warnOpenLP.txt | 611 ++++++++++++++++++ scripts/translation_utils.py | 64 +- scripts/windows-builder.py | 61 +- 10 files changed, 705 insertions(+), 65 deletions(-) delete mode 100644 OpenLP.spec rename resources/{innosetup => windows}/LICENSE.txt (100%) rename resources/{innosetup => windows}/OpenLP-2.0.iss (97%) rename resources/{innosetup => windows}/OpenLP.ico (100%) rename resources/{innosetup => windows}/OpenLP.reg (100%) create mode 100644 resources/windows/OpenLP.spec rename resources/{innosetup => windows}/openlp.conf (100%) create mode 100644 resources/windows/warnOpenLP.txt diff --git a/OpenLP.spec b/OpenLP.spec deleted file mode 100644 index 9569af6c1..000000000 --- a/OpenLP.spec +++ /dev/null @@ -1,19 +0,0 @@ -# -*- mode: python -*- -a = Analysis([os.path.join(HOMEPATH,'support\\_mountzlib.py'), os.path.join(HOMEPATH,'support\\useUnicode.py'), 'openlp.pyw'], - pathex=[os.path.abspath('.')]) -pyz = PYZ(a.pure) -exe = EXE(pyz, - a.scripts, - exclude_binaries=1, - name=os.path.join('build\\pyi.win32\\OpenLP', 'OpenLP.exe'), - debug=False, - strip=False, - upx=True, - console=False , icon='resources\\images\\OpenLP.ico') -coll = COLLECT( exe, - a.binaries, - a.zipfiles, - a.datas, - strip=False, - upx=True, - name=os.path.join('dist', 'OpenLP')) diff --git a/resources/innosetup/LICENSE.txt b/resources/windows/LICENSE.txt similarity index 100% rename from resources/innosetup/LICENSE.txt rename to resources/windows/LICENSE.txt diff --git a/resources/innosetup/OpenLP-2.0.iss b/resources/windows/OpenLP-2.0.iss similarity index 97% rename from resources/innosetup/OpenLP-2.0.iss rename to resources/windows/OpenLP-2.0.iss index e75f1076f..94ee4fc22 100644 --- a/resources/innosetup/OpenLP-2.0.iss +++ b/resources/windows/OpenLP-2.0.iss @@ -27,6 +27,7 @@ DefaultDirName={pf}\{#AppName} DefaultGroupName={#AppVerName} AllowNoIcons=true LicenseFile=LICENSE.txt +OutputDir=..\..\dist OutputBaseFilename=OpenLP-{#RealVersion}-setup Compression=lzma SolidCompression=true diff --git a/resources/innosetup/OpenLP.ico b/resources/windows/OpenLP.ico similarity index 100% rename from resources/innosetup/OpenLP.ico rename to resources/windows/OpenLP.ico diff --git a/resources/innosetup/OpenLP.reg b/resources/windows/OpenLP.reg similarity index 100% rename from resources/innosetup/OpenLP.reg rename to resources/windows/OpenLP.reg diff --git a/resources/windows/OpenLP.spec b/resources/windows/OpenLP.spec new file mode 100644 index 000000000..47a1952f3 --- /dev/null +++ b/resources/windows/OpenLP.spec @@ -0,0 +1,14 @@ +# -*- mode: python -*- +a = Analysis([ + os.path.join(HOMEPATH, 'support\\_mountzlib.py'), + os.path.join(HOMEPATH, 'support\\useUnicode.py'), + os.path.abspath('openlp.pyw')], + pathex=[os.path.abspath('.')]) +pyz = PYZ(a.pure) +exe = EXE(pyz, a.scripts, exclude_binaries=1, + name=os.path.abspath(os.path.join('build', 'pyi.win32', 'OpenLP', + 'OpenLP.exe')), + debug=False, strip=False, upx=True, console=False, + icon=os.path.abspath(os.path.join('resources', 'images', 'OpenLP.ico'))) +coll = COLLECT(exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, + name=os.path.abspath(os.path.join('dist', 'OpenLP'))) diff --git a/resources/innosetup/openlp.conf b/resources/windows/openlp.conf similarity index 100% rename from resources/innosetup/openlp.conf rename to resources/windows/openlp.conf diff --git a/resources/windows/warnOpenLP.txt b/resources/windows/warnOpenLP.txt new file mode 100644 index 000000000..19c579942 --- /dev/null +++ b/resources/windows/warnOpenLP.txt @@ -0,0 +1,611 @@ +W: no module named openlp.core.lib.build_html (top-level import by openlp.core.ui.maindisplay) +W: no module named mx (top-level import by sqlite.main) +W: no module named ctypes.create_string_buffer (delayed import by urllib) +W: no module named openlp.core.ui.ServiceNoteForm (top-level import by openlp.core.ui.servicemanager) +W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.images.lib.mediaitem) +W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.core.ui.mainwindow) +W: no module named email.Iterators (delayed import by email.message) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.custom.lib.mediaitem) +W: no module named sqlalchemy.sql.join (top-level import by sqlalchemy) +W: no module named java (conditional import by xml.sax._exceptions) +W: no module named openlp.plugins.images.lib.ImageMediaItem (top-level import by openlp.plugins.images.imageplugin) +W: no module named sqlalchemy.SMALLINT (top-level import by sqlalchemy.databases.sybase) +W: no module named sqlalchemy.engine.create_engine (top-level import by sqlalchemy) +W: no module named sqlalchemy.sql.asc (top-level import by sqlalchemy) +W: no module named openlp.plugins.bibles.lib.BiblesTab (top-level import by openlp.plugins.bibles.bibleplugin) +W: no module named PyQt4._qt (top-level import by PyQt4.QtCore) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.alerts.lib.alertstab) +W: no module named sqlalchemy.Column (top-level import by openlp.plugins.custom.lib.db) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songusage.songusageplugin) +W: no module named openlp.plugins.alerts.lib.AlertsManager (top-level import by openlp.plugins.alerts.alertsplugin) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.generaltab) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.alerts.forms.alertdialog) +W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.plugins.custom.lib.mediaitem) +W: no module named sqlalchemy.orm.MapperExtension (top-level import by sqlalchemy.orm.scoping) +W: no module named pyodbc (delayed import by sqlalchemy.databases.access) +W: no module named openlp.core.lib.expand_tags (top-level import by openlp.core.lib.renderer) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.servicemanager) +W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.dynamic) +W: no module named ctypes._SimpleCData (top-level import by ctypes.wintypes) +W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.core.ui.generaltab) +W: no module named simplejson (conditional import by openlp.plugins.remotes.lib.httpserver) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.alerts.forms.alertdialog) +W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.collections) +W: no module named openlp.core.lib.resize_image (top-level import by openlp.core.lib.serviceitem) +W: no module named openlp.plugins.songs.lib.SongXMLParser (top-level import by openlp.plugins.songs.forms.editsongform) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.bibleplugin) +W: no module named xml.dom.XMLNS_NAMESPACE (top-level import by xml.dom.minidom) +W: no module named openlp.plugins.songs.lib.VerseType (top-level import by openlp.plugins.songs.lib.songimport) +W: no module named openlp.plugins.songs.lib.SongXMLBuilder (top-level import by openlp.plugins.songs.forms.editsongform) +W: no module named openlp.core.ui.GeneralTab (top-level import by openlp.core.ui.settingsform) +W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.images.lib.mediaitem) +W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.presentations.lib.mediaitem) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.presentations.presentationplugin) +W: no module named informixdb (delayed import by sqlalchemy.databases.informix) +W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.custom.customplugin) +W: no module named cjkcodecs (top-level import by BeautifulSoup) +W: no module named readline (delayed, conditional import by cmd) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.lib.songimport) +W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.media.mediaplugin) +W: no module named openlp.core.lib.ThemeXML (top-level import by openlp.core.ui.amendthemeform) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.lib.manager) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.custom.lib.mediaitem) +W: no module named openlp.core.lib.ServiceItem (top-level import by openlp.core.ui.maindisplay) +W: no module named openlp.plugins.songs.forms.EditVerseForm (top-level import by openlp.plugins.songs.forms.editsongform) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.ewimport) +W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.songs.lib.songstab) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.ui.thememanager) +W: no module named openlp.core.ui.HideMode (top-level import by openlp.core.ui.maindisplay) +W: no module named sqlalchemy.Column (top-level import by sqlalchemy.databases.sybase) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.servicemanager) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.slidecontroller) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.forms.songimportform) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.presentations.lib.mediaitem) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.aboutdialog) +W: no module named sqlalchemy.sql.insert (top-level import by sqlalchemy) +W: no module named openlp.core.lib.str_to_bool (top-level import by openlp.core.ui.thememanager) +W: no module named sqlalchemy.MetaData (top-level import by sqlalchemy.databases.sybase) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.lib.biblestab) +W: no module named openlp.plugins.bibles.lib.BibleManager (top-level import by openlp.plugins.bibles.bibleplugin) +W: no module named openlp.core.ui.SlideController (top-level import by openlp.core.ui.mainwindow) +W: no module named MacOS (delayed import by platform) +W: no module named openlp.core.lib.ThemeXML (top-level import by openlp.core.ui.thememanager) +W: no module named cx_Oracle (delayed import by sqlalchemy.databases.oracle) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.slidecontroller) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.servicenotedialog) +W: no module named sqlalchemy.sql.except_ (top-level import by sqlalchemy) +W: no module named openlp.core.ui.AboutForm (top-level import by openlp.core.ui.mainwindow) +W: no module named EasyDialogs (conditional import by getpass) +W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.core.lib.mediamanageritem) +W: no module named sqlalchemy.orm.SessionExtension (top-level import by sqlalchemy.orm.session) +W: no module named sqlalchemy.orm.relation (top-level import by openlp.plugins.bibles.lib.db) +W: no module named openlp.plugins.songs.lib.VerseType (top-level import by openlp.plugins.songs.forms.editsongform) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.bibles.lib.http) +W: no module named sqlalchemy.sql.func (top-level import by sqlalchemy) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.utils.languagemanager) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.mainwindow) +W: no module named uno (conditional import by openlp.plugins.songs.lib.oooimport) +W: no module named kinterbasdb (delayed import by sqlalchemy.databases.firebird) +W: no module named multiprocessing.RLock (top-level import by multiprocessing.sharedctypes) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.filerenameform) +W: no module named sqlalchemy.ForeignKey (top-level import by sqlalchemy.databases.mssql) +W: no module named openlp.core.lib.Renderer (top-level import by openlp.core.lib.rendermanager) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songmaintenancedialog) +W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.plugins.songs.lib.mediaitem) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.lib.mediamanageritem) +W: no module named openlp.core.ui.FileRenameForm (top-level import by openlp.core.ui.thememanager) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.songsplugin) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.bibles.bibleplugin) +W: no module named vms_lib (delayed, conditional import by platform) +W: no module named openlp.core.lib.resize_image (top-level import by openlp.core.ui.slidecontroller) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.alerts.lib.alertsmanager) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songusage.forms.songusagedetaildialog) +W: no module named openlp.plugins.remotes.lib.RemoteTab (top-level import by openlp.plugins.remotes.remoteplugin) +W: no module named openlp.core.ui.ServiceManager (top-level import by openlp.core.ui.mainwindow) +W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.songusage.forms.songusagedetailform) +W: no module named openlp.core.ui.SettingsForm (top-level import by openlp.core.ui.mainwindow) +W: no module named openlp.plugins.alerts.lib.AlertsTab (top-level import by openlp.plugins.alerts.alertsplugin) +W: no module named xdg (delayed, conditional import by openlp.core.utils) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.custom.customplugin) +W: no module named openlp.core.ui.AmendThemeForm (top-level import by openlp.core.ui.thememanager) +W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.plugins.songs.lib.mediaitem) +W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.plugins.custom.lib.mediaitem) +W: no module named posix (delayed, conditional import by iu) +W: no module named openlp.plugins.songs.lib.VerseType (top-level import by openlp.plugins.songs.forms.editversedialog) +W: no module named multiprocessing.dummy.Process (delayed import by __main__) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.presentations.presentationplugin) +W: no module named sqlalchemy.String (top-level import by sqlalchemy.databases.mssql) +W: no module named xml.dom.EMPTY_PREFIX (top-level import by xml.dom.expatbuilder) +W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.custom.lib.mediaitem) +W: no module named openlp.core.lib.ServiceItem (top-level import by openlp.core.lib.mediamanageritem) +W: no module named openlp.core.lib.PluginManager (top-level import by openlp.core.ui.mainwindow) +W: no module named multiprocessing.current_process (top-level import by multiprocessing.reduction) +W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.songs.lib.mediaitem) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songbookform) +W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.presentations.presentationplugin) +W: no module named xmltok (top-level import by pyexpat) +W: no module named openlp.plugins.bibles.lib.SearchResults (top-level import by openlp.plugins.bibles.lib.http) +W: no module named sqlalchemy.sql.delete (top-level import by sqlalchemy) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.lib.oooimport) +W: no module named _emx_link (conditional import by os) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.aboutdialog) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.bibles.forms.bibleimportwizard) +W: no module named openlp.core.lib.Plugin (top-level import by openlp.core.lib.pluginmanager) +W: no module named openlp.plugins.songs.lib.SongsTab (top-level import by openlp.plugins.songs.songsplugin) +W: no module named sqlalchemy.CHAR (top-level import by sqlalchemy.databases.sybase) +W: no module named sqlalchemy.sql.collate (top-level import by sqlalchemy) +W: no module named sqlalchemy.sql.outparam (top-level import by sqlalchemy) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.lib.db) +W: no module named openlp.core.ui.PluginForm (top-level import by openlp.core.ui.mainwindow) +W: no module named gobject (top-level import by enchant.checker.GtkSpellCheckerDialog) +W: no module named openlp.core.utils.VersionThread (top-level import by __main__) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.topicsform) +W: no module named sqlalchemy.Integer (top-level import by sqlalchemy.databases.mssql) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.exceptiondialog) +W: no module named pwd (delayed, conditional import by distutils.util) +W: no module named uno (conditional import by openlp.plugins.presentations.lib.impresscontroller) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.utils) +W: no module named sqlalchemy.orm.class_mapper (top-level import by openlp.plugins.songs.lib.olpimport) +W: no module named sqlalchemy.orm.relation (top-level import by openlp.plugins.songs.lib.olpimport) +W: no module named readline (delayed import by pdb) +W: no module named openlp.core.ui.MainDisplay (top-level import by openlp.core.lib.rendermanager) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.media.lib.mediaitem) +W: no module named sqlalchemy.Table (top-level import by openlp.plugins.songusage.lib.db) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.alerts.alertsplugin) +W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.media.lib.mediaitem) +W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.images.lib.mediaitem) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.forms.importwizardform) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.remotes.remoteplugin) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.images.imageplugin) +W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.alerts.lib.alertstab) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.editversedialog) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songusage.songusageplugin) +W: no module named openlp.core.ui.HideMode (top-level import by openlp.core.ui.slidecontroller) +W: no module named sqlalchemy.sql.between (top-level import by sqlalchemy) +W: no module named xml.dom.EMPTY_PREFIX (top-level import by xml.dom.minidom) +W: no module named pysqlite2 (delayed import by sqlalchemy.databases.sqlite) +W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.core.ui.thememanager) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.custom.lib.customtab) +W: no module named gtk (top-level import by enchant.checker.GtkSpellCheckerDialog) +W: no module named xml.dom.EMPTY_NAMESPACE (top-level import by xml.dom.expatbuilder) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.remotes.lib.httpserver) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songusage.forms.songusagedeleteform) +W: no module named sqlalchemy.orm.scoped_session (top-level import by openlp.core.lib.db) +W: no module named openlp.core.lib.clean_tags (top-level import by openlp.core.lib.serviceitem) +W: no module named openlp.core.utils.get_filesystem_encoding (top-level import by openlp.core.ui.thememanager) +W: no module named xml.dom.EMPTY_NAMESPACE (top-level import by xml.dom.minidom) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.lib.toolbar) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.remotes.remoteplugin) +W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.attributes) +W: no module named sqlalchemy.ForeignKey (top-level import by sqlalchemy.databases.sybase) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.servicemanager) +W: no module named sqlalchemy.Column (top-level import by openlp.plugins.alerts.lib.db) +W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.core.ui.advancedtab) +W: no module named AES (delayed, conditional import by archive) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.forms.songmaintenanceform) +W: no module named openlp.core.lib.context_menu_separator (top-level import by openlp.core.lib.mediamanageritem) +W: no module named fcntl (top-level import by tempfile) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.thememanager) +W: no module named mx (top-level import by sqlalchemy.databases.mxODBC) +W: no module named sqlalchemy.sql.union (top-level import by sqlalchemy) +W: no module named openlp.plugins.songs.forms.TopicsForm (top-level import by openlp.plugins.songs.forms.songmaintenanceform) +W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.plugins.images.lib.mediaitem) +W: no module named MacOS (delayed import by distutils.sysconfig) +W: no module named openlp.core.lib.SpellTextEdit (top-level import by openlp.plugins.custom.forms.editcustomdialog) +W: no module named ic (top-level import by webbrowser) +W: no module named com (conditional import by openlp.plugins.presentations.lib.impresscontroller) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.media.mediaplugin) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.custom.forms.editcustomform) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.lib.spelltextedit) +W: no module named openlp.core.lib.html_expands (top-level import by openlp.core.lib.spelltextedit) +W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.plugins.images.lib.mediaitem) +W: no module named sqlalchemy.Column (top-level import by openlp.plugins.songs.lib.db) +W: no module named py2exe (delayed import by enchant.tests) +W: no module named openlp.plugins.songs.forms.AuthorsForm (top-level import by openlp.plugins.songs.forms.songmaintenanceform) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.authorsform) +W: no module named openlp.plugins.remotes.lib.HttpServer (top-level import by openlp.plugins.remotes.remoteplugin) +W: no module named sqlalchemy.Table (top-level import by openlp.plugins.bibles.lib.db) +W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.remotes.remoteplugin) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.filerenamedialog) +W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.media.lib.mediaitem) +W: no module named sapdb (delayed import by sqlalchemy.databases.maxdb) +W: no module named ctypes.cdll (delayed import by ctypes.util) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.presentations.lib.presentationtab) +W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.presentations.lib.mediaitem) +W: no module named sqlalchemy.sql.text (top-level import by sqlalchemy) +W: no module named openlp.core.lib.image_to_byte (top-level import by openlp.core.lib.renderer) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.bibles.forms.importwizardform) +W: no module named openlp.core.lib.image_to_byte (top-level import by openlp.core.ui.maindisplay) +W: no module named iconv_codec (top-level import by BeautifulSoup) +W: no module named openlp.plugins.songs.forms.SongBookForm (top-level import by openlp.plugins.songs.forms.songmaintenanceform) +W: no module named sqlalchemy.sql.not_ (top-level import by sqlalchemy) +W: no module named multiprocessing.Pipe (top-level import by multiprocessing.queues) +W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.plugins.images.lib.mediaitem) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songusage.forms.songusagedetailform) +W: no module named sqlalchemy.sql.subquery (top-level import by sqlalchemy) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songs.songsplugin) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.editsongdialog) +W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.bibles.bibleplugin) +W: no module named openlp.plugins.songs.forms.SongMaintenanceForm (top-level import by openlp.plugins.songs.lib.mediaitem) +W: no module named xmlparse (top-level import by pyexpat) +W: no module named sqlalchemy.sql.exists (top-level import by sqlalchemy) +W: no module named sqlalchemy.sql.and_ (top-level import by openlp.plugins.songs.forms.songmaintenanceform) +W: no module named multiprocessing.Process (top-level import by multiprocessing.pool) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.settingsdialog) +W: no module named sqlalchemy.exceptions (top-level import by openlp.core.lib.db) +W: no module named sqlalchemy.sql.outerjoin (top-level import by sqlalchemy) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songs.forms.editsongdialog) +W: no module named openlp.plugins.custom.lib.CustomXMLParser (top-level import by openlp.plugins.custom.lib.mediaitem) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.custom.forms.editcustomdialog) +W: no module named sqlalchemy.Integer (top-level import by sqlalchemy.databases.sybase) +W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.properties) +W: no module named multiprocessing.current_process (top-level import by multiprocessing.managers) +W: no module named openlp.core.ui.SplashScreen (top-level import by __main__) +W: no module named multiprocessing.TimeoutError (top-level import by multiprocessing.dummy) +W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.songs.forms.songimportform) +W: no module named xml.dom.XMLNS_NAMESPACE (top-level import by xml.dom.expatbuilder) +W: no module named ctypes.c_int32 (delayed import by urllib) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.amendthemedialog) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.lib.serviceitem) +W: no module named openlp.core.utils.LanguageManager (top-level import by __main__) +W: no module named sqlalchemy.orm.object_mapper (top-level import by sqlalchemy.orm.properties) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.utils.languagemanager) +W: no module named sqlalchemy.sql.literal_column (top-level import by sqlalchemy) +W: no module named openlp.plugins.songs.lib.SongXMLParser (top-level import by openlp.plugins.songs.lib.mediaitem) +W: no module named ctypes.c_char_p (delayed import by urllib) +W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.images.imageplugin) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.remotes.lib.remotetab) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.mainwindow) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.lib.opensong) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songimportform) +W: no module named sqlalchemy.sql.select (top-level import by sqlalchemy) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songbookdialog) +W: no module named openlp.plugins.bibles.lib.BibleMediaItem (top-level import by openlp.plugins.bibles.bibleplugin) +W: no module named PyQt4._qt (top-level import by PyQt4.QtNetwork) +W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.songs.songsplugin) +W: no module named sqlalchemy.sql.case (top-level import by sqlalchemy) +W: no module named wx (top-level import by enchant.checker.wxSpellCheckerDialog) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.alerts.alertsplugin) +W: no module named com (conditional import by openlp.plugins.songs.lib.sofimport) +W: no module named PyQt4._qt (top-level import by PyQt4) +W: no module named SOCKS (top-level import by ftplib) +W: no module named openlp.plugins.songusage.forms.SongUsageDetailForm (top-level import by openlp.plugins.songusage.songusageplugin) +W: no module named sqlalchemy.sql.null (top-level import by sqlalchemy) +W: no module named sqlalchemy.MetaData (top-level import by openlp.core.lib.db) +W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.core.ui.servicemanager) +W: no module named openlp.plugins.custom.forms.EditCustomForm (top-level import by openlp.plugins.custom.customplugin) +W: no module named org (delayed import by xml.sax) +W: no module named openlp.core.lib.SpellTextEdit (top-level import by openlp.plugins.songs.forms.editversedialog) +W: no module named sqlalchemy.orm.EXT_CONTINUE (top-level import by sqlalchemy.orm.scoping) +W: no module named openlp.core.lib.build_lyrics_outline_css (top-level import by openlp.core.lib.renderer) +W: no module named openlp.plugins.songs.lib.VerseType (top-level import by openlp.plugins.songs.forms.editverseform) +W: no module named com (conditional import by openlp.plugins.songs.lib.oooimport) +W: no module named openlp.core.lib.str_to_bool (top-level import by openlp.core.lib.theme) +W: no module named sqlalchemy.sql.literal (top-level import by sqlalchemy) +W: no module named termios (top-level import by getpass) +W: no module named openlp.core.lib.build_lyrics_format_css (top-level import by openlp.core.lib.renderer) +W: no module named ctypes.byref (delayed import by urllib) +W: no module named openlp.plugins.custom.lib.CustomTab (top-level import by openlp.plugins.custom.customplugin) +W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.songs.lib.mediaitem) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.images.lib.mediaitem) +W: no module named openlp.plugins.bibles.lib.parse_reference (top-level import by openlp.plugins.bibles.lib.manager) +W: no module named java (delayed import by platform) +W: no module named openlp.core.ui.ServiceItemEditForm (top-level import by openlp.core.ui.servicemanager) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.custom.customplugin) +W: no module named openlp.core.lib.ThemeLevel (top-level import by openlp.core.lib.rendermanager) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.lib.db) +W: no module named _xmlrpclib (top-level import by xmlrpclib) +W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.presentations.lib.mediaitem) +W: no module named openlp.plugins.media.lib.MediaMediaItem (top-level import by openlp.plugins.media.mediaplugin) +W: no module named openlp.plugins.custom.lib.CustomXMLBuilder (top-level import by openlp.plugins.custom.forms.editcustomform) +W: no module named rourl2path (conditional import by urllib) +W: no module named pwd (delayed import by webbrowser) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.themestab) +W: no module named PyQt4._qt (top-level import by PyQt4.QtWebKit) +W: no module named sqlalchemy.orm.class_mapper (delayed, conditional import by sqlalchemy.orm.interfaces) +W: no module named PyQt4._qt (top-level import by PyQt4.phonon) +W: no module named openlp.core.ui.HideMode (top-level import by openlp.plugins.presentations.lib.messagelistener) +W: no module named openlp.plugins.songusage.forms.SongUsageDeleteForm (top-level import by openlp.plugins.songusage.songusageplugin) +W: no module named openlp.core.lib.context_menu_separator (top-level import by openlp.core.ui.thememanager) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.media.lib.mediaitem) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.plugindialog) +W: no module named fcntl (conditional import by subprocess) +W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.bibles.lib.mediaitem) +W: no module named openlp.core.lib.PluginStatus (top-level import by openlp.core.lib.pluginmanager) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.forms.editsongform) +W: no module named openlp.core.ui.ScreenList (top-level import by __main__) +W: no module named sqlalchemy.or_ (top-level import by openlp.plugins.bibles.lib.db) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.editsongform) +W: no module named openlp.plugins.songs.forms.ImportWizardForm (top-level import by openlp.plugins.songs.lib.mediaitem) +W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.core.ui.thememanager) +W: no module named openlp.core.ui.ThemeManager (top-level import by openlp.core.ui.mainwindow) +W: no module named pyodbc (delayed, conditional import by sqlalchemy.databases.mssql) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.ui.servicemanager) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.lib.mediamanageritem) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.biblestab) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songusage.songusageplugin) +W: no module named multiprocessing.active_children (top-level import by multiprocessing.managers) +W: no module named openlp.plugins.songs.forms.EditSongForm (top-level import by openlp.plugins.songs.lib.mediaitem) +W: no module named email.Generator (delayed import by email.message) +W: no module named mx (delayed import by sqlalchemy.databases.mxODBC) +W: no module named sqlalchemy.sql.or_ (top-level import by sqlalchemy) +W: no module named sqlalchemy.Table (top-level import by openlp.plugins.custom.lib.db) +W: no module named sqlalchemy.Table (top-level import by sqlalchemy.databases.sybase) +W: no module named openlp.core.lib.get_text_file_string (top-level import by openlp.core.ui.thememanager) +W: no module named sqlalchemy.orm.object_session (top-level import by sqlalchemy.orm.scoping) +W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.bibles.lib.mediaitem) +W: no module named sqlalchemy.Table (top-level import by sqlalchemy.databases.mssql) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.ui.mainwindow) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.forms.bibleimportwizard) +W: no module named openlp.core.lib.resize_image (top-level import by openlp.core.lib.renderer) +W: no module named pymssql (delayed import by sqlalchemy.databases.mssql) +W: no module named sqlalchemy.orm.sessionmaker (top-level import by openlp.plugins.songs.lib.olpimport) +W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.core.ui.thememanager) +W: no module named openlp.core.lib.expand_tags (top-level import by openlp.core.lib.serviceitem) +W: no module named gestalt (delayed import by platform) +W: no module named enchant.checker.SpellChecker (top-level import by enchant.checker.CmdLineChecker) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.themestab) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.olp1import) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.presentations.lib.messagelistener) +W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.interfaces) +W: no module named sqlalchemy.orm.object_mapper (top-level import by sqlalchemy.orm.query) +W: no module named sqlalchemy.sql.distinct (top-level import by sqlalchemy) +W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.plugins.media.lib.mediaitem) +W: no module named sqlalchemy.sql.extract (top-level import by sqlalchemy) +W: no module named sqlalchemy.Column (top-level import by openlp.plugins.bibles.lib.db) +W: no module named psycopg2 (delayed import by sqlalchemy.databases.postgres) +W: no module named enchant.checker.SpellChecker (delayed import by enchant.checker.GtkSpellCheckerDialog) +W: no module named clr (conditional import by adodbapi.adodbapi) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.images.lib.mediaitem) +W: no module named openlp.plugins.custom.lib.CustomXMLParser (top-level import by openlp.plugins.custom.forms.editcustomform) +W: no module named openlp.core.theme.Theme (top-level import by openlp.core.ui.thememanager) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.custom.forms.editcustomform) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.songs.lib.mediaitem) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.core.lib.settingsmanager) +W: no module named openlp.core.lib.Receiver (top-level import by __main__) +W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.bibles.lib.manager) +W: no module named org (top-level import by pickle) +W: no module named enchant.DictNotFoundError (top-level import by openlp.core.lib.spelltextedit) +W: no module named sqlalchemy.sql.except_all (top-level import by sqlalchemy) +W: no module named openlp.plugins.presentations.lib.PresentationTab (top-level import by openlp.plugins.presentations.presentationplugin) +W: no module named sqlalchemy.sql.cast (top-level import by sqlalchemy) +W: no module named sqlalchemy.orm.relation (top-level import by openlp.plugins.songs.lib.db) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.settingsdialog) +W: no module named openlp.core.utils.LanguageManager (top-level import by openlp.core.ui.mainwindow) +W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.plugins.media.lib.mediaitem) +W: no module named sqlalchemy.sql.intersect (top-level import by sqlalchemy) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.songimport) +W: no module named sqlalchemy.orm.class_mapper (top-level import by sqlalchemy.orm.scoping) +W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.util) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.opensongimport) +W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.bibles.lib.biblestab) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.aboutform) +W: no module named openlp.plugins.custom.lib.CustomMediaItem (top-level import by openlp.plugins.custom.customplugin) +W: no module named sqlalchemy.orm.scoped_session (top-level import by openlp.plugins.songs.lib.olpimport) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.amendthemeform) +W: no module named sqlalchemy.engine.engine_from_config (top-level import by sqlalchemy) +W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.core.ui.themestab) +W: no module named openlp.core.lib.OpenLPToolbar (top-level import by openlp.core.ui.servicemanager) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.maindisplay) +W: no module named openlp.core.lib.PluginStatus (top-level import by openlp.core.ui.pluginform) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.http) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.remotes.lib.httpserver) +W: no module named sqlalchemy.Table (top-level import by openlp.plugins.songs.lib.db) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.utils) +W: no module named openlp.core.lib.RenderManager (top-level import by openlp.core.ui.mainwindow) +W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.alerts.alertsplugin) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.lib.plugin) +W: no module named sqlalchemy.ForeignKey (top-level import by openlp.plugins.bibles.lib.db) +W: no module named openlp.plugins.songs.lib.SongMediaItem (top-level import by openlp.plugins.songs.songsplugin) +W: no module named sqlalchemy.Index (top-level import by openlp.plugins.songs.lib.db) +W: no module named multiprocessing.TimeoutError (top-level import by multiprocessing.pool) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songusage.forms.songusagedetaildialog) +W: no module named enchant.DictWithPWL (delayed import by enchant.checker.tests) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.songstab) +W: no module named openlp.core.ui.AdvancedTab (top-level import by openlp.core.ui.settingsform) +W: no module named MySQLdb (delayed import by sqlalchemy.databases.mysql) +W: no module named openlp.plugins.presentations.lib.PresentationMediaItem (top-level import by openlp.plugins.presentations.presentationplugin) +W: no module named openlp.plugins.alerts.forms.AlertForm (top-level import by openlp.plugins.alerts.alertsplugin) +W: no module named ctypes.c_int (delayed import by urllib) +W: no module named xml.dom.XML_NAMESPACE (delayed import by xml.dom.pulldom) +W: no module named ctypes.c_void_p (delayed import by urllib) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.bibles.lib.osis) +W: no module named sqlalchemy.create_engine (top-level import by openlp.core.lib.db) +W: no module named win32com.client._get_good_object_ (top-level import by win32com.client.util) +W: no module named openlp.core.ui.MainDisplay (top-level import by openlp.core.ui.slidecontroller) +W: no module named openlp.core.lib.resize_image (top-level import by openlp.plugins.presentations.lib.presentationcontroller) +W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.remotes.lib.remotetab) +W: no module named openlp.core.ui.MediaDockManager (top-level import by openlp.core.ui.mainwindow) +W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.session) +W: no module named sqlalchemy.Column (top-level import by sqlalchemy.databases.mssql) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songs.forms.editversedialog) +W: no module named multiprocessing.Process (top-level import by multiprocessing.managers) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.presentations.lib.presentationcontroller) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib.mediaitem) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.custom.forms.editcustomdialog) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.alerts.lib.alertsmanager) +W: no module named sgmlop (top-level import by xmlrpclib) +W: no module named MacOS (conditional import by py_compile) +W: no module named multiprocessing.cpu_count (top-level import by multiprocessing.dummy) +W: no module named _dummy_threading (top-level import by dummy_threading) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.mainwindow) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songmaintenanceform) +W: no module named openlp.plugins.presentations.lib.PresentationController (top-level import by openlp.plugins.presentations.presentationplugin) +W: no module named openlp.core.lib.OpenLPToolbar (top-level import by openlp.core.lib.mediamanageritem) +W: no module named sqlalchemy.sql.union_all (top-level import by sqlalchemy) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.opensong) +W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.plugins.bibles.lib.mediaitem) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.osis) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.settingsform) +W: no module named enchant.tokenize.get_tokenizer (top-level import by enchant.checker) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.bibles.lib.manager) +W: no module named org (top-level import by copy) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.core.ui.thememanager) +W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.core.ui.servicemanager) +W: no module named sqlalchemy.MetaData (top-level import by openlp.plugins.songs.lib.olpimport) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songs.forms.songmaintenancedialog) +W: no module named sqlalchemy.sql.select (top-level import by sqlalchemy.databases.mssql) +W: no module named openlp.core.lib.SettingsManager (top-level import by openlp.plugins.bibles.forms.importwizardform) +W: no module named multiprocessing.current_process (top-level import by multiprocessing.connection) +W: no module named sqlalchemy.orm.sessionmaker (top-level import by openlp.core.lib.db) +W: no module named sqlalchemy.sql.desc (top-level import by sqlalchemy) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songusage.forms.songusagedeletedialog) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.mediaitem) +W: no module named ctypes.cdll (delayed import by urllib) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.lib) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.media.mediaplugin) +W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.presentations.lib.presentationtab) +W: no module named MySQLdb (delayed, conditional import by sqlalchemy.databases.mysql) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.presentations.lib.mediaitem) +W: no module named openlp.core.lib.MediaManagerItem (top-level import by openlp.plugins.media.lib.mediaitem) +W: no module named sqlalchemy.orm.object_session (top-level import by sqlalchemy.orm.dynamic) +W: no module named sqlalchemy.sql.modifier (top-level import by sqlalchemy) +W: no module named _xmlplus (top-level import by xml) +W: no module named sqlalchemy.Column (top-level import by openlp.plugins.songusage.lib.db) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.advancedtab) +W: no module named sqlalchemy.sql.and_ (top-level import by sqlalchemy) +W: no module named sqlalchemy.MetaData (top-level import by sqlalchemy.databases.mssql) +W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.dependency) +W: no module named openlp.core.lib.ThemeLevel (top-level import by openlp.core.ui.themestab) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.presentations.lib.presentationtab) +W: no module named openlp.core.utils.get_images_filter (top-level import by openlp.core.ui.amendthemeform) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.presentations.presentationplugin) +W: no module named openlp.plugins.presentations.lib.MessageListener (top-level import by openlp.plugins.presentations.lib.mediaitem) +W: no module named openlp.plugins.bibles.forms.ImportWizardForm (top-level import by openlp.plugins.bibles.lib.mediaitem) +W: no module named openlp.core.utils.AppLocation (top-level import by __main__) +W: no module named sqlalchemy.ForeignKey (top-level import by openlp.plugins.songs.lib.db) +W: no module named openlp.core.lib.OpenLPToolbar (top-level import by openlp.core.ui.thememanager) +W: no module named ctypes.cdll (conditional import by openlp.plugins.presentations.lib.pptviewcontroller) +W: no module named pwd (delayed import by getpass) +W: no module named sqlalchemy.sql.and_ (top-level import by openlp.plugins.songusage.forms.songusagedetailform) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.amendthemedialog) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.plugins.songs.forms.songimportwizard) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.serviceitemeditdialog) +W: no module named openlp.core.lib.resize_image (top-level import by openlp.core.ui.maindisplay) +W: no module named openlp.core.lib.BaseListWithDnD (top-level import by openlp.plugins.custom.lib.mediaitem) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.topicsdialog) +W: no module named PyQt4._qt (top-level import by PyQt4.QtGui) +W: no module named sqlalchemy.sql.update (top-level import by sqlalchemy) +W: no module named multiprocessing.current_process (delayed, conditional import by logging) +W: no module named multiprocessing.Pool (top-level import by multiprocessing.managers) +W: no module named sqlalchemy.create_engine (delayed, conditional import by sqlalchemy.schema) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.forms.importwizardform) +W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.core.lib.mediamanageritem) +W: no module named posix (conditional import by os) +W: no module named sqlalchemy.sql.bindparam (top-level import by sqlalchemy) +W: no module named xml.dom.DOMImplementation (top-level import by xml.dom.domreg) +W: no module named openlp.core.utils.add_actions (top-level import by openlp.core.ui.mainwindow) +W: no module named sqlalchemy.create_engine (top-level import by openlp.plugins.songs.lib.olpimport) +W: no module named multiprocessing.cpu_count (top-level import by multiprocessing.pool) +W: no module named multiprocessing.AuthenticationError (top-level import by multiprocessing.connection) +W: no module named openlp.core.ui.ThemesTab (top-level import by openlp.core.ui.settingsform) +W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.plugins.media.lib.mediaitem) +W: no module named sqlalchemy.orm.class_mapper (top-level import by openlp.plugins.bibles.lib.db) +W: no module named sqlalchemy.String (top-level import by sqlalchemy.databases.sybase) +W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.core.ui.servicemanager) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.images.lib.mediaitem) +W: no module named pwd (delayed, conditional import by posixpath) +W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.strategies) +W: no module named mx (top-level import by adodbapi.adodbapi) +W: no module named sqlalchemy.sql.alias (top-level import by sqlalchemy) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.authorsdialog) +W: no module named sqlalchemy.Table (top-level import by openlp.plugins.alerts.lib.db) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.bibles.lib.mediaitem) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.images.imageplugin) +W: no module named sqlalchemy.orm.mapperlib (delayed import by sqlalchemy.orm.util) +W: no module named openlp.core.lib.ServiceItem (top-level import by openlp.core.lib.rendermanager) +W: no module named openlp.core.lib.OpenLPDockWidget (top-level import by openlp.core.ui.mainwindow) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.songs.forms.songimportwizard) +W: no module named openlp.core.lib.Plugin (top-level import by openlp.plugins.songusage.songusageplugin) +W: no module named openlp.core.utils.AppLocation (top-level import by openlp.plugins.presentations.lib.presentationcontroller) +W: no module named openlp.core.lib.context_menu_action (top-level import by openlp.core.lib.spelltextedit) +W: no module named openlp.core.lib.build_icon (top-level import by openlp.core.ui.thememanager) +W: no module named openlp.core.lib.check_item_selected (top-level import by openlp.plugins.presentations.lib.mediaitem) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.pluginform) +W: no module named enchant.checker.SpellChecker (delayed import by enchant.checker.wxSpellCheckerDialog) +W: no module named sqlalchemy.DefaultClause (top-level import by sqlalchemy.databases.sqlite) +W: no module named openlp.core.lib.ServiceItem (top-level import by openlp.core.ui.servicemanager) +W: no module named openlp.core.lib.ItemCapabilities (top-level import by openlp.core.ui.slidecontroller) +W: no module named openlp.core.utils.get_images_filter (top-level import by openlp.plugins.images.lib.mediaitem) +W: no module named pyodbc (delayed import by sqlalchemy.databases.mssql) +W: no module named openlp.core.lib.OpenLPToolbar (top-level import by openlp.core.ui.slidecontroller) +W: no module named System (conditional import by adodbapi.adodbapi) +W: no module named openlp.core.lib.SettingsTab (top-level import by openlp.plugins.custom.lib.customtab) +W: no module named openlp.core.lib.Receiver (top-level import by openlp.plugins.bibles.lib.csvbible) +W: no module named openlp.core.lib.translate (top-level import by openlp.core.ui.generaltab) +W: no module named openlp.core.lib.ThemeLevel (top-level import by openlp.core.ui.servicemanager) +W: no module named sqlalchemy.exceptions (top-level import by sqlalchemy.orm.scoping) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.alerts.forms.alertform) +W: no module named mypyodbc (delayed import by sqlalchemy.databases.sybase) +W: no module named sqlalchemy.sql.intersect_all (top-level import by sqlalchemy) +W: no module named openlp.core.lib.translate (top-level import by openlp.plugins.presentations.lib.mediaitem) +W: __all__ is built strangely at line 0 - dummy_threading (C:\Python26\lib\dummy_threading.pyc) +W: delayed exec statement detected at line 0 - bdb (C:\Python26\lib\bdb.pyc) +W: delayed eval hack detected at line 0 - bdb (C:\Python26\lib\bdb.pyc) +W: delayed eval hack detected at line 0 - bdb (C:\Python26\lib\bdb.pyc) +W: delayed __import__ hack detected at line 0 - optparse (C:\Python26\lib\optparse.pyc) +W: delayed conditional __import__ hack detected at line 0 - pkg_resources (build/bdist.linux-i686/egg/pkg_resources.pyc) +W: delayed conditional exec statement detected at line 0 - pkg_resources (build/bdist.linux-i686/egg/pkg_resources.pyc) +W: delayed conditional __import__ hack detected at line 0 - pkg_resources (build/bdist.linux-i686/egg/pkg_resources.pyc) +W: delayed __import__ hack detected at line 0 - pkg_resources (build/bdist.linux-i686/egg/pkg_resources.pyc) +W: delayed conditional __import__ hack detected at line 0 - doctest (C:\Python26\lib\doctest.pyc) +W: delayed exec statement detected at line 0 - doctest (C:\Python26\lib\doctest.pyc) +W: delayed conditional __import__ hack detected at line 0 - doctest (C:\Python26\lib\doctest.pyc) +W: __all__ is built strangely at line 0 - sqlalchemy.orm.interfaces (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\orm\interfaces.pyc) +W: __all__ is built strangely at line 0 - tokenize (C:\Python26\lib\tokenize.pyc) +W: __all__ is built strangely at line 0 - sqlalchemy.engine (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\engine\__init__.pyc) +W: delayed __import__ hack detected at line 0 - pickle (C:\Python26\lib\pickle.pyc) +W: delayed __import__ hack detected at line 0 - pickle (C:\Python26\lib\pickle.pyc) +W: top-level conditional exec statement detected at line 0 - sqlalchemy.sql.util (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\sql\util.pyc) +W: top-level conditional exec statement detected at line 0 - sqlalchemy.sql.util (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\sql\util.pyc) +W: delayed conditional __import__ hack detected at line 0 - openlp.core.lib.pluginmanager (c:\Documents and Settings\raoul\My Documents\My Projects\openlp\movements\openlp\core\lib\pluginmanager.pyc) +W: delayed conditional exec statement detected at line 0 - multiprocessing.sharedctypes (C:\Python26\lib\multiprocessing\sharedctypes.pyc) +W: delayed __import__ hack detected at line 0 - encodings (C:\Python26\lib\encodings\__init__.pyc) +W: __all__ is built strangely at line 0 - sqlalchemy.databases.mysql (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\databases\mysql.pyc) +W: delayed exec statement detected at line 0 - sqlalchemy.orm.attributes (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\orm\attributes.pyc) +W: delayed conditional __import__ hack detected at line 0 - openlp.plugins.presentations.presentationplugin (c:\Documents and Settings\raoul\My Documents\My Projects\openlp\movements\openlp\plugins\presentations\presentationplugin.pyc) +W: delayed __import__ hack detected at line 0 - enchant.tokenize (C:\Python26\lib\site-packages\enchant\tokenize\__init__.pyc) +W: __all__ is built strangely at line 0 - multiprocessing (C:\Python26\lib\multiprocessing\__init__.pyc) +W: __all__ is built strangely at line 0 - dis (C:\Python26\lib\dis.pyc) +W: __all__ is built strangely at line 0 - sqlalchemy.databases (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\databases\__init__.pyc) +W: delayed __import__ hack detected at line 0 - win32com.server.policy (C:\Python26\lib\site-packages\win32com\server\policy.pyc) +W: __all__ is built strangely at line 0 - sqlalchemy.orm.mapper (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\orm\mapper.pyc) +W: top-level exec statement detected at line 0 - hashlib (C:\Python26\lib\hashlib.pyc) +W: top-level conditional exec statement detected at line 0 - hashlib (C:\Python26\lib\hashlib.pyc) +W: delayed conditional eval hack detected at line 0 - warnings (C:\Python26\lib\warnings.pyc) +W: delayed conditional __import__ hack detected at line 0 - warnings (C:\Python26\lib\warnings.pyc) +W: delayed exec statement detected at line 0 - cgi (C:\Python26\lib\cgi.pyc) +W: delayed __import__ hack detected at line 0 - email (C:\Python26\lib\email\__init__.pyc) +W: __all__ is built strangely at line 0 - sqlalchemy.orm (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\orm\__init__.pyc) +W: delayed __import__ hack detected at line 0 - ctypes (C:\Python26\lib\ctypes\__init__.pyc) +W: delayed __import__ hack detected at line 0 - ctypes (C:\Python26\lib\ctypes\__init__.pyc) +W: delayed conditional __import__ hack detected at line 0 - xml.dom.domreg (C:\Python26\lib\xml\dom\domreg.pyc) +W: delayed exec statement detected at line 0 - pdb (C:\Python26\lib\pdb.pyc) +W: delayed conditional eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc) +W: delayed eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc) +W: delayed conditional eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc) +W: delayed eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc) +W: delayed conditional __import__ hack detected at line 0 - unittest (C:\Python26\lib\unittest.pyc) +W: delayed conditional __import__ hack detected at line 0 - unittest (C:\Python26\lib\unittest.pyc) +W: delayed conditional __import__ hack detected at line 0 - pkgutil (C:\Python26\lib\pkgutil.pyc) +W: delayed conditional __import__ hack detected at line 0 - pkgutil (C:\Python26\lib\pkgutil.pyc) +W: __all__ is built strangely at line 0 - sqlalchemy.orm.properties (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\orm\properties.pyc) +W: delayed conditional exec statement detected at line 0 - iu (c:\Documents and Settings\raoul\My Documents\My Projects\pyinstaller\iu.pyc) +W: delayed conditional exec statement detected at line 0 - iu (c:\Documents and Settings\raoul\My Documents\My Projects\pyinstaller\iu.pyc) +W: __all__ is built strangely at line 0 - sqlalchemy.sql (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\sql\__init__.pyc) +W: __all__ is built strangely at line 0 - collections (C:\Python26\lib\collections.pyc) +W: delayed exec statement detected at line 0 - collections (C:\Python26\lib\collections.pyc) +W: delayed __import__ hack detected at line 0 - sqlalchemy.engine.url (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\engine\url.pyc) +W: delayed exec statement detected at line 0 - multiprocessing.managers (C:\Python26\lib\multiprocessing\managers.pyc) +W: delayed exec statement detected at line 0 - socket (C:\Python26\lib\socket.pyc) +W: delayed conditional __import__ hack detected at line 0 - win32com.client.gencache (C:\Python26\lib\site-packages\win32com\client\gencache.pyc) +W: delayed __import__ hack detected at line 0 - win32com.client.gencache (C:\Python26\lib\site-packages\win32com\client\gencache.pyc) +W: delayed eval hack detected at line 0 - os (C:\Python26\lib\os.pyc) +W: __all__ is built strangely at line 0 - __future__ (C:\Python26\lib\__future__.pyc) +W: delayed __import__ hack detected at line 0 - win32com.client.makepy (C:\Python26\lib\site-packages\win32com\client\makepy.pyc) +W: delayed exec statement detected at line 0 - win32com.client.dynamic (C:\Python26\lib\site-packages\win32com\client\dynamic.pyc) +W: __all__ is built strangely at line 0 - sqlalchemy (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\__init__.pyc) +W: delayed __import__ hack detected at line 0 - xml.sax (C:\Python26\lib\xml\sax\__init__.pyc) +W: delayed eval hack detected at line 0 - gettext (C:\Python26\lib\gettext.pyc) +W: delayed eval hack detected at line 0 - sqlalchemy.util (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\util.pyc) +W: delayed exec statement detected at line 0 - sqlalchemy.util (C:\Python26\lib\site-packages\sqlalchemy-0.5.8-py2.6.egg\sqlalchemy\util.pyc) diff --git a/scripts/translation_utils.py b/scripts/translation_utils.py index 424e977bd..495732085 100755 --- a/scripts/translation_utils.py +++ b/scripts/translation_utils.py @@ -63,6 +63,7 @@ IGNORED_PATHS = [u'scripts'] IGNORED_FILES = [u'setup.py'] verbose_mode = False +quiet_mode = False class Command(object): """ @@ -128,6 +129,20 @@ class CommandStack(object): results.append(str((item[u'command'], ))) return u'[%s]' % u', '.join(results) +def print_quiet(text, linefeed=True): + """ + This method checks to see if we are in quiet mode, and if not prints + ``text`` out. + + ``text`` + The text to print. + """ + global quiet_mode + if not quiet_mode: + if linefeed: + print text + else: + print text, def print_verbose(text): """ @@ -137,8 +152,8 @@ def print_verbose(text): ``text`` The text to print. """ - global verbose_mode - if verbose_mode: + global verbose_mode, quiet_mode + if not quiet_mode and verbose_mode: print u' %s' % text def run(command): @@ -155,7 +170,6 @@ def run(command): print_verbose(u'ReadyRead: %s' % QtCore.QString(process.readAll())) print_verbose(u'Error(s):\n%s' % process.readAllStandardError()) print_verbose(u'Output:\n%s' % process.readAllStandardOutput()) - print u' Done.' def update_export_at_pootle(source_filename): """ @@ -170,7 +184,7 @@ def update_export_at_pootle(source_filename): print_verbose(u'Accessing: %s' % (REVIEW_URL)) page = urllib.urlopen(REVIEW_URL) page.close() - + def download_file(source_filename, dest_filename): """ @@ -194,7 +208,7 @@ def download_translations(): """ This method downloads the translation files from the Pootle server. """ - print 'Download translation files from Pootle' + print_quiet(u'Download translation files from Pootle') page = urllib.urlopen(SERVER_URL) soup = BeautifulSoup(page) languages = soup.findAll(text=re.compile(r'.*\.ts')) @@ -205,14 +219,14 @@ def download_translations(): language_file) print_verbose(u'Get Translation File: %s' % filename) download_file(language_file, filename) - print u' Done.' + print_quiet(u' Done.') def prepare_project(): """ This method creates the project file needed to update the translation files and compile them into .qm files. """ - print u'Generating the openlp.pro file' + print_quiet(u'Generating the openlp.pro file') lines = [] start_dir = os.path.abspath(u'..') start_dir = start_dir + os.sep @@ -251,10 +265,10 @@ def prepare_project(): file = open(os.path.join(start_dir, u'openlp.pro'), u'w') file.write(u'\n'.join(lines).encode('utf8')) file.close() - print u' Done.' + print_quiet(u' Done.') def update_translations(): - print u'Update the translation files' + print_quiet(u'Update the translation files') if not os.path.exists(os.path.join(os.path.abspath(u'..'), u'openlp.pro')): print u'You have no generated a project file yet, please run this ' + \ u'script with the -p option.' @@ -265,7 +279,7 @@ def update_translations(): os.chdir(os.path.abspath(u'scripts')) def generate_binaries(): - print u'Generate the related *.qm files' + print_quiet(u'Generate the related *.qm files') if not os.path.exists(os.path.join(os.path.abspath(u'..'), u'openlp.pro')): print u'You have not generated a project file yet, please run this ' + \ u'script with the -p option. It is also recommended that you ' + \ @@ -283,8 +297,9 @@ def generate_binaries(): src_list = os.listdir(src_path) for file in src_list: if re.search('.qm$', file): - copy(os.path.join(src_path, u'%s' % file), + copy(os.path.join(src_path, u'%s' % file), os.path.join(dest_path, u'%s' % file)) + print_quiet(u' Done.') def create_translation(language): @@ -294,17 +309,17 @@ def create_translation(language): ``language`` The language file to create. """ - print "Create new Translation File" + print_quiet(u'Create new Translation File') if not language.endswith(u'.ts'): language += u'.ts' filename = os.path.join(os.path.abspath(u'..'), u'resources', u'i18n', language) download_file(u'en.ts', filename) - print u' ** Please Note **' - print u' In order to get this file into OpenLP and onto the Pootle ' + \ - u'translation server you will need to subscribe to the OpenLP' + \ - u'Translators mailing list, and request that your language file ' + \ - u'be added to the project.' - print u' Done' + print_quiet(u' ** Please Note **') + print_quiet(u' In order to get this file into OpenLP and onto the ' + u'Pootle translation server you will need to subscribe to the ' + u'OpenLP Translators mailing list, and request that your language ' + u'file be added to the project.') + print_quiet(u' Done.') def process_stack(command_stack): """ @@ -315,9 +330,9 @@ def process_stack(command_stack): The command stack to process. """ if command_stack: - print u'Processing %d commands...' % len(command_stack) + print_quiet(u'Processing %d commands...' % len(command_stack)) for command in command_stack: - print u'%d.' % (command_stack.current_index), + print_quiet(u'%d.' % (command_stack.current_index), False) if command == Command.Download: download_translations() elif command == Command.Prepare: @@ -329,12 +344,12 @@ def process_stack(command_stack): elif command == Command.Create: arguments = command_stack.arguments() create_translation(*arguments) - print u'Finished processing commands.' + print_quiet(u'Finished processing commands.') else: - print u'No commands to process.' + print_quiet(u'No commands to process.') def main(): - global verbose_mode + global verbose_mode, quiet_mode # Set up command line options. usage = u'%prog [options]\nOptions are parsed in the order they are ' + \ u'listed below. If no options are given, "-dpug" will be used.\n\n' + \ @@ -352,6 +367,8 @@ def main(): help='compile .ts files into .qm files') parser.add_option('-v', '--verbose', dest='verbose', action='store_true', help='show extra information while processing translations') + parser.add_option('-q', '--quiet', dest='quiet', action='store_true', + help='suppress all output other than errors') (options, args) = parser.parse_args() # Create and populate the command stack command_stack = CommandStack() @@ -366,6 +383,7 @@ def main(): if options.generate: command_stack.append(Command.Generate) verbose_mode = options.verbose + quiet_mode = options.quiet if not command_stack: command_stack.append(Command.Download) command_stack.append(Command.Prepare) diff --git a/scripts/windows-builder.py b/scripts/windows-builder.py index d34b77249..1900fab99 100644 --- a/scripts/windows-builder.py +++ b/scripts/windows-builder.py @@ -87,20 +87,33 @@ windows-builder.py """ import os +import sys from shutil import copy from subprocess import Popen, PIPE +python_exe = sys.executable +innosetup_exe = os.path.join(os.getenv(u'PROGRAMFILES'), 'Inno Setup 5', + u'ISCC.exe') + +# Base paths script_path = os.path.split(os.path.abspath(__file__))[0] branch_path = os.path.abspath(os.path.join(script_path, u'..')) +site_packages = os.path.join(os.path.split(python_exe)[0], u'Lib', + u'site-packages') + +# Files and executables +pyi_build = os.path.abspath(os.path.join(branch_path, u'..', u'..', + u'pyinstaller', u'Build.py')) +lrelease_exe = os.path.join(site_packages, u'PyQt4', u'bin', u'lrelease.exe') +i18n_utils = os.path.join(script_path, u'translation_utils.py') + +# Paths source_path = os.path.join(branch_path, u'openlp') i18n_path = os.path.join(branch_path, u'resources', u'i18n') +winres_path = os.path.join(branch_path, u'resources', u'windows') build_path = os.path.join(branch_path, u'build', u'pyi.win32', u'OpenLP') dist_path = os.path.join(branch_path, u'dist', u'OpenLP') -pyinstaller_path = os.path.abspath(os.path.join(branch_path, u'..', u'..', u'pyinstaller')) -innosetup_path = os.path.join(os.getenv(u'PROGRAMFILES'), 'Inno Setup 5') -iss_path = os.path.join(branch_path, u'resources', u'innosetup') -lrelease_path = u'C:\\Python26\\Lib\\site-packages\\PyQt4\\bin\\lrelease.exe' -enchant_path = u'C:\\Python26\\Lib\\site-packages\\enchant' +enchant_path = os.path.join(site_packages, u'enchant') def clean_build_directories(): #if not os.path.exists(build_path) @@ -117,11 +130,13 @@ def clean_build_directories(): def run_pyinstaller(): print u'Running PyInstaller...' os.chdir(branch_path) - pyinstaller = Popen((u'python', os.path.join(pyinstaller_path, u'Build.py'), - u'-y', u'OpenLP.spec')) + pyinstaller = Popen((python_exe, pyi_build, u'-y', u'-o', build_path, + os.path.join(winres_path, u'OpenLP.spec')), stdout=PIPE) + output, error = pyinstaller.communicate() code = pyinstaller.wait() if code != 0: - raise Exception(u'Error running PyInstaller Build.py') + print output + raise Exception(u'Error running PyInstaller') def write_version_file(): print u'Writing version file...' @@ -155,7 +170,7 @@ def copy_enchant(): for root, dirs, files in os.walk(source): for filename in files: if not filename.endswith(u'.pyc') and not filename.endswith(u'.pyo'): - dest_path = os.path.join(dest, root[len(source)+1:]) + dest_path = os.path.join(dest, root[len(source) + 1:]) if not os.path.exists(dest_path): os.makedirs(dest_path) copy(os.path.join(root, filename), @@ -176,16 +191,18 @@ def copy_plugins(): def copy_windows_files(): print u'Copying extra files for Windows...' - copy(os.path.join(iss_path, u'OpenLP.ico'), os.path.join(dist_path, u'OpenLP.ico')) - copy(os.path.join(iss_path, u'LICENSE.txt'), os.path.join(dist_path, u'LICENSE.txt')) + copy(os.path.join(winres_path, u'OpenLP.ico'), + os.path.join(dist_path, u'OpenLP.ico')) + copy(os.path.join(winres_path, u'LICENSE.txt'), + os.path.join(dist_path, u'LICENSE.txt')) def update_translations(): print u'Updating translations...' os.chdir(script_path) - translation_utils = Popen(u'python translation_utils.py -dpu') + translation_utils = Popen((python_exe, i18n_utils, u'-qdpu')) code = translation_utils.wait() if code != 0: - print u'Error running translation_utils.py' + raise Exception(u'Error running translation_utils.py') def compile_translations(): print u'Compiling translations...' @@ -197,19 +214,17 @@ def compile_translations(): source_path = os.path.join(i18n_path, file) dest_path = os.path.join(dist_path, u'i18n', file.replace(u'.ts', u'.qm')) - lconvert = Popen(u'"%s" "%s" -qm "%s"' % (lrelease_path, \ - source_path, dest_path)) + lconvert = Popen((lrelease_exe, u'-compress', u'-silent', + source_path, u'-qm', dest_path)) code = lconvert.wait() if code != 0: - print 'Error running lconvert on %s' % source_path + raise Exception('Error running lconvert on %s' % source_path) def run_innosetup(): print u'Running Inno Setup...' - os.chdir(iss_path) - run_command = u'"%s" "%s"' % (os.path.join(innosetup_path, u'ISCC.exe'), - os.path.join(iss_path, u'OpenLP-2.0.iss')) - print run_command - innosetup = Popen(run_command) + os.chdir(winres_path) + innosetup = Popen((innosetup_exe, + os.path.join(winres_path, u'OpenLP-2.0.iss'), u'/q')) code = innosetup.wait() if code != 0: raise Exception(u'Error running Inno Setup') @@ -221,9 +236,9 @@ def main(): print "Branch path:", branch_path print "Source path:", source_path print "\"dist\" path:", dist_path - print "PyInstaller path:", pyinstaller_path + print "PyInstaller:", pyi_build print "Inno Setup path:", innosetup_path - print "ISS file path:", iss_path + print "Windows resources:", winres_path #clean_build_directories() run_pyinstaller() write_version_file() From 373597120b547b1098e4de72dffdd5b1a9f11ff5 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sun, 10 Oct 2010 17:59:11 +0200 Subject: [PATCH 25/36] fixes for merge --- .../plugins/custom/forms/editcustomdialog.py | 2 +- openlp/plugins/custom/forms/editcustomform.py | 22 +++++++++---------- .../custom/forms/editcustomslidedialog.py | 3 ++- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index 0883bc779..89cd0b6df 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -26,7 +26,7 @@ from PyQt4 import QtCore, QtGui -from openlp.core.lib import build_icon, translate, SpellTextEdit +from openlp.core.lib import build_icon, translate class Ui_CustomEditDialog(object): def setupUi(self, customEditDialog): diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index e7dc0d72a..8ee4d2673 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -75,7 +75,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): QtCore.SIGNAL(u'theme_update_list'), self.loadThemes) # Create other objects and forms. self.custommanager = custommanager - self.slide_form = EditCustomSlideForm(self) + self.editSlideForm = EditCustomSlideForm(self) self.initialise() def onPreview(self, button): @@ -190,16 +190,16 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.editButton.setEnabled(True) def onAddButtonPressed(self): - self.slide_form.setText(u'') - if self.slide_form.exec_(): - for slide in self.slide_form.getText(): + self.editSlideForm.setText(u'') + if self.editSlideForm.exec_(): + for slide in self.editSlideForm.getText(): self.slideListView.addItem(slide) self.editAllButton.setEnabled(True) def onEditButtonPressed(self): - self.slide_form.setText(self.slideListView.currentItem().text()) - if self.slide_form.exec_(): - self.updateSlideList(self.slide_form.getText()) + self.editSlideForm.setText(self.slideListView.currentItem().text()) + if self.editSlideForm.exec_(): + self.updateSlideList(self.editSlideForm.getText()) def onEditAllButtonPressed(self): """ @@ -212,9 +212,9 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): slide_list += item.text() if row != self.slideListView.count() - 1: slide_list += u'\n[---]\n' - self.slide_form.setText(slide_list) - if self.slide_form.exec_(): - self.updateSlideList(self.slide_form.getText(), True) + self.editSlideForm.setText(slide_list) + if self.editSlideForm.exec_(): + self.updateSlideList(self.editSlideForm.getText(), True) def updateSlideList(self, slides, edit_all=False): """ @@ -241,7 +241,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): range(0, self.slideListView.count())] self.slideListView.clear() old_slides.pop(old_row) - # Insert all slides in the old_slides list, to make the list complete. + # Insert all slides to make the old_slides list complete. for slide in slides: old_slides.insert(old_row, slide) for slide in old_slides: diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py index 31bbb3d5d..ed69b24ba 100644 --- a/openlp/plugins/custom/forms/editcustomslidedialog.py +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -26,7 +26,7 @@ from PyQt4 import QtCore, QtGui -from openlp.core.lib import translate +from openlp.core.lib import translate, SpellTextEdit class Ui_CustomSlideEditDialog(object): def setupUi(self, customSlideEditDialog): @@ -39,6 +39,7 @@ class Ui_CustomSlideEditDialog(object): QtGui.QDialogButtonBox.Save) self.buttonBox.setObjectName(u'buttonBox') self.slideTextEdit = QtGui.QTextEdit(customSlideEditDialog) + self.slideTextEdit = SpellTextEdit(self) self.slideTextEdit.setGeometry(QtCore.QRect(8, 8, 458, 349)) self.slideTextEdit.setObjectName(u'slideTextEdit') self.splitButton = QtGui.QPushButton(customSlideEditDialog) From 4dc526b3458279f68ab5b285f8ae0ca51202122b Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 10 Oct 2010 21:44:41 +0200 Subject: [PATCH 26/36] Add an option to pull the version directly from Bazaar (for the developers) --- openlp.pyw | 116 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 83 insertions(+), 33 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 80b49321e..17743903f 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -30,6 +30,7 @@ import sys import logging from optparse import OptionParser from traceback import format_exception +from subprocess import Popen, PIPE from PyQt4 import QtCore, QtGui @@ -71,6 +72,84 @@ class OpenLP(QtGui.QApplication): """ log.info(u'OpenLP Application Loaded') + def _get_version(self): + """ + Load and store current Application Version + """ + if u'--dev-version' in sys.argv: + # If we're running the dev version, let's use bzr to get the version + try: + # If bzrlib is availble, use it + from bzrlib.branch import Branch + b = Branch.open_containing('.')[0] + b.lock_read() + try: + # Get the branch's latest revision number. + revno = b.revno() + # Convert said revision number into a bzr revision id. + revision_id = b.dotted_revno_to_revision_id((revno,)) + # Get a dict of tags, with the revision id as the key. + tags = b.tags.get_reverse_tag_dict() + # Check if the latest + if revision_id in tags: + full_version = u'%s' % tags[revision_id][0] + else: + full_version = '%s-bzr%s' % \ + (sorted(b.tags.get_tag_dict().keys())[-1], revno) + finally: + b.unlock() + except: + # Otherwise run the command line bzr client + bzr = Popen((u'bzr', u'tags', u'--sort', u'time'), stdout=PIPE) + output, error = bzr.communicate() + code = bzr.wait() + if code != 0: + raise Exception(u'Error running bzr tags') + lines = output.splitlines() + if len(lines) == 0: + tag = u'0.0.0' + revision = u'0' + else: + tag, revision = lines[-1].split() + bzr = Popen((u'bzr', u'log', u'--line', u'-r', u'-1'), + stdout=PIPE) + output, error = bzr.communicate() + code = bzr.wait() + if code != 0: + raise Exception(u'Error running bzr log') + latest = output.split(u':')[0] + full_version = latest == revision and tag or \ + u'%s-bzr%s' % (tag, latest) + else: + # We're not running the development version, let's use the file + filepath = AppLocation.get_directory(AppLocation.VersionDir) + filepath = os.path.join(filepath, u'.version') + fversion = None + try: + fversion = open(filepath, u'r') + full_version = unicode(fversion.read()).rstrip() + except IOError: + log.exception('Error in version file.') + full_version = u'0.0.0-bzr000' + finally: + if fversion: + fversion.close() + bits = full_version.split(u'-') + app_version = { + u'full': full_version, + u'version': bits[0], + u'build': bits[1] if len(bits) > 1 else None + } + if app_version[u'build']: + log.info( + u'Openlp version %s build %s', + app_version[u'version'], + app_version[u'build'] + ) + else: + log.info(u'Openlp version %s' % app_version[u'version']) + return app_version + def notify(self, obj, evt): #TODO needed for presentation exceptions return QtGui.QApplication.notify(self, obj, evt) @@ -79,39 +158,7 @@ class OpenLP(QtGui.QApplication): """ Run the OpenLP application. """ - #Load and store current Application Version - filepath = AppLocation.get_directory(AppLocation.VersionDir) - filepath = os.path.join(filepath, u'.version') - fversion = None - try: - fversion = open(filepath, u'r') - for line in fversion: - full_version = unicode(line).rstrip() #\ - #.replace(u'\r', u'').replace(u'\n', u'') - bits = full_version.split(u'-') - app_version = { - u'full': full_version, - u'version': bits[0], - u'build': bits[1] if len(bits) > 1 else None - } - if app_version[u'build']: - log.info( - u'Openlp version %s build %s', - app_version[u'version'], - app_version[u'build'] - ) - else: - log.info(u'Openlp version %s' % app_version[u'version']) - except IOError: - log.exception('Error in version file.') - app_version = { - u'full': u'1.9.0-bzr000', - u'version': u'1.9.0', - u'build': u'bzr000' - } - finally: - if fversion: - fversion.close() + app_version = self._get_version() #provide a listener for widgets to reqest a screen update. QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'openlp_process_events'), self.processEvents) @@ -172,6 +219,9 @@ def main(): parser.add_option('-p', '--portable', dest='portable', action='store_true', help='Specify if this should be run as a ' 'portable app, off a USB flash drive (not implemented).') + parser.add_option('-d', '--dev-version', dest='dev_version', + action='store_true', help='Ignore the version file and pull the ' + 'version directly from Bazaar') parser.add_option('-s', '--style', dest='style', help='Set the Qt4 style (passed directly to Qt4).') # Set up logging From b9b202e5a83c750c3e0cdf4f7c1d3015f97f483e Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sun, 10 Oct 2010 22:19:58 +0200 Subject: [PATCH 27/36] another fix for the merge --- openlp/plugins/custom/forms/editcustomslidedialog.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py index ed69b24ba..ce4cf6e29 100644 --- a/openlp/plugins/custom/forms/editcustomslidedialog.py +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -38,7 +38,6 @@ class Ui_CustomSlideEditDialog(object): self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Save) self.buttonBox.setObjectName(u'buttonBox') - self.slideTextEdit = QtGui.QTextEdit(customSlideEditDialog) self.slideTextEdit = SpellTextEdit(self) self.slideTextEdit.setGeometry(QtCore.QRect(8, 8, 458, 349)) self.slideTextEdit.setObjectName(u'slideTextEdit') From 3a8b33a5ffd132cf68d418f5730e7a1f59376863 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 10 Oct 2010 23:13:10 +0200 Subject: [PATCH 28/36] Some updates to the documentation: - Added some more classes to the rST files. - Fixed up some docstrings to proper rST. --- documentation/source/conf.py | 2 +- documentation/source/core/lib.rst | 6 - documentation/source/plugins/songs.rst | 163 ++++++++++++++++++++- openlp/plugins/songs/lib/cclifileimport.py | 63 ++++---- openlp/plugins/songs/lib/songxml.py | 20 ++- openlp/plugins/songs/lib/wowimport.py | 55 ++++--- 6 files changed, 217 insertions(+), 92 deletions(-) diff --git a/documentation/source/conf.py b/documentation/source/conf.py index 86ad3b7de..248c83e56 100644 --- a/documentation/source/conf.py +++ b/documentation/source/conf.py @@ -17,7 +17,7 @@ import sys # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.append(os.path.abspath(os.path.join('..', '..'))) +sys.path.insert(0, os.path.abspath(os.path.join('..', '..'))) # -- General configuration ----------------------------------------------------- diff --git a/documentation/source/core/lib.rst b/documentation/source/core/lib.rst index 43ca90b3b..5fc66200d 100644 --- a/documentation/source/core/lib.rst +++ b/documentation/source/core/lib.rst @@ -60,12 +60,6 @@ .. autoclass:: openlp.core.lib.settingstab.SettingsTab :members: -:mod:`ThemeXML` ---------------- - -.. autoclass:: openlp.core.lib.themexmlhandler.ThemeXML - :members: - :mod:`OpenLPToolbar` -------------------- diff --git a/documentation/source/plugins/songs.rst b/documentation/source/plugins/songs.rst index fab10f02d..2ce744ddd 100644 --- a/documentation/source/plugins/songs.rst +++ b/documentation/source/plugins/songs.rst @@ -6,8 +6,8 @@ .. automodule:: openlp.plugins.songs :members: -:mod:`SongsPlugin` Class ------------------------- +:class:`SongsPlugin` Class +-------------------------- .. autoclass:: openlp.plugins.songs.songsplugin.SongsPlugin :members: @@ -18,8 +18,8 @@ .. automodule:: openlp.plugins.songs.forms :members: -:mod:`AuthorsForm` -^^^^^^^^^^^^^^^^^^ +:class:`AuthorsForm` +^^^^^^^^^^^^^^^^^^^^ .. autoclass:: openlp.plugins.songs.forms.authorsdialog.Ui_AuthorsDialog :members: @@ -27,8 +27,8 @@ .. autoclass:: openlp.plugins.songs.forms.authorsform.AuthorsForm :members: -:mod:`EditSongForm` -^^^^^^^^^^^^^^^^^^^ +:class:`EditSongForm` +^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: openlp.plugins.songs.forms.editsongdialog.Ui_EditSongDialog :members: @@ -36,11 +36,158 @@ .. autoclass:: openlp.plugins.songs.forms.editsongform.EditSongForm :members: -:mod:`EditVerseForm` -^^^^^^^^^^^^^^^^^^^^ +:class:`EditVerseForm` +^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: openlp.plugins.songs.forms.editversedialog.Ui_EditVerseDialog :members: .. autoclass:: openlp.plugins.songs.forms.editverseform.EditVerseForm :members: + +:class:`SongBookForm` +^^^^^^^^^^^^^^^^^^^^^ + +.. autoclass:: openlp.plugins.songs.forms.songbookdialog.Ui_SongBookDialog + :members: + +.. autoclass:: openlp.plugins.songs.forms.songbookform.SongBookForm + :members: + +:class:`SongImportForm` +^^^^^^^^^^^^^^^^^^^^^^^ + +.. autoclass:: openlp.plugins.songs.forms.songimportwizard.Ui_SongImportWizard + :members: + +.. autoclass:: openlp.plugins.songs.forms.songimportform.ImportWizardForm + :members: + +:class:`SongMaintenanceForm` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. autoclass:: openlp.plugins.songs.forms.songmaintenancedialog.Ui_SongMaintenanceDialog + :members: + +.. autoclass:: openlp.plugins.songs.forms.songmaintenanceform.SongMaintenanceForm + :members: + +:class:`TopicsForm` +^^^^^^^^^^^^^^^^^^^ + +.. autoclass:: openlp.plugins.songs.forms.topicsdialog.Ui_TopicsDialog + :members: + +.. autoclass:: openlp.plugins.songs.forms.topicsform.TopicsForm + :members: + +:mod:`lib` Submodule +-------------------- + +.. automodule:: openlp.plugins.songs.lib + :members: + +:mod:`cclifileimport` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.cclifileimport + :members: + +.. autoclass:: openlp.plugins.songs.lib.cclifileimport.CCLIFileImportError + :members: + +:mod:`db` Submodule +^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.db + :members: + +:mod:`ewimport` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.ewimport + :members: + +.. autoclass:: openlp.plugins.songs.lib.ewimport.FieldDescEntry + :members: + +:mod:`importer` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.importer + :members: + +:mod:`mediaitem` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.mediaitem + :members: + +.. autoclass:: openlp.plugins.songs.lib.mediaitem.SongListView + :members: + +:mod:`olp1import` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.olp1import + :members: + +:mod:`olpimport` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.olpimport + :members: + +:mod:`oooimport` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.oooimport + :members: + +:mod:`opensongimport` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.opensongimport + :members: + +:mod:`sofimport` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.sofimport + :members: + +:mod:`songbeamerimport` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.songbeamerimport + :members: + +:mod:`songimport` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.songimport + :members: + +:mod:`songstab` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.songstab + :members: + +:mod:`wowimport` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.wowimport + :members: + +:mod:`songxml` Submodule +^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.songxml + :members: + +:mod:`xml` Submodule +^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.songs.lib.xml + :members: diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index 9d0da5cfa..669201325 100755 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -38,9 +38,9 @@ class CCLIFileImportError(Exception): class CCLIFileImport(SongImport): """ - The :class:`CCLIFileImport` class provides OpenLP with the - ability to import CCLI SongSelect song files in both .txt and - .usr formats. See http://www.ccli.com + The :class:`CCLIFileImport` class provides OpenLP with the ability to + import CCLI SongSelect song files in both .txt and .usr formats. + See http://www.ccli.com/ for more details. """ def __init__(self, manager, **kwargs): @@ -49,6 +49,7 @@ class CCLIFileImport(SongImport): ``manager`` The song manager for the running OpenLP installation. + ``filenames`` The files to be imported. """ @@ -97,7 +98,7 @@ class CCLIFileImport(SongImport): def do_import_usr_file(self, textList): """ - The :method:`do_import_usr_file` method provides OpenLP + The :func:`do_import_usr_file` method provides OpenLP with the ability to import CCLI SongSelect songs in *USR* file format @@ -105,6 +106,7 @@ class CCLIFileImport(SongImport): An array of strings containing the usr file content. **SongSelect .usr file format** + ``[File]`` USR file format first line ``Type=`` @@ -140,6 +142,7 @@ class CCLIFileImport(SongImport): Contains the songs various lyrics in order as shown by the *Fields* description e.g. *Words=Above all powers....* [/n = CR, /n/t = CRLF] + """ log.debug(u'USR file text: %s', textList) lyrics = [] @@ -191,48 +194,32 @@ class CCLIFileImport(SongImport): def do_import_txt_file(self, textList): """ - The :method:`do_import_txt_file` method provides OpenLP + The :func:`do_import_txt_file` method provides OpenLP with the ability to import CCLI SongSelect songs in *TXT* file format ``textList`` An array of strings containing the txt file content. - **SongSelect .txt file format** + SongSelect .txt file format:: - ``Song Title`` - Contains the song title - - - - ``Title of following verse/chorus and number`` - e.g. Verse 1, Chorus 1 - - ``Verse/Chorus lyrics`` - - - - - - ``Title of next verse/chorus (repeats)`` - - ``Verse/Chorus lyrics`` - - - - - - ``Song CCLI Number`` - e.g. CCLI Number (e.g.CCLI-Liednummer: 2672885) - ``Song Copyright`` - e.g. © 1999 Integrity's Hosanna! Music | LenSongs Publishing - ``Song Authors`` - e.g. Lenny LeBlanc | Paul Baloche - ``Licencing info`` - e.g. For use solely with the SongSelect Terms of Use. + Song Title # Contains the song title + + Verse type and number # e.g. Verse 1, Chorus 1 + Verse lyrics + + + Verse type and number (repeats) + Verse lyrics + + + Song CCLI number # e.g. CCLI Number (e.g.CCLI-Liednummer: 2672885) + Song copyright # e.g. © 1999 Integrity's Hosanna! Music | LenSongs Publishing + Song authors # e.g. Lenny LeBlanc | Paul Baloche + Licencing info # e.g. For use solely with the SongSelect Terms of Use. All rights Reserved. www.ccli.com - ``CCLI Licence number of user`` - e.g. CCL-Liedlizenznummer: 14 / CCLI License No. 14 + CCLI Licence number of user # e.g. CCL-Liedlizenznummer: 14 / CCLI License No. 14 + """ log.debug(u'TXT file text: %s', textList) self.set_defaults() diff --git a/openlp/plugins/songs/lib/songxml.py b/openlp/plugins/songs/lib/songxml.py index 4068c396f..6818218c5 100644 --- a/openlp/plugins/songs/lib/songxml.py +++ b/openlp/plugins/songs/lib/songxml.py @@ -282,11 +282,9 @@ class Song(object): def get_author_list(self, asOneString = True): """Return the list of authors as a string - asOneString - True -- string: - 'John Newton, A Parker' - False -- list of strings - ['John Newton', u'A Parker'] + ``asOneString`` + If ``True``, returns 'John Newton, A Parker'. If ``False``, returns + [u'John Newton', u'A Parker'] """ if asOneString: res = self._assure_string(self.author_list) @@ -297,7 +295,8 @@ class Song(object): def set_author_list(self, author_list): """Set the author_list - author_list -- a string or list of strings + ``author_list`` + a string or list of strings """ if author_list is None: self.author_list = None @@ -307,11 +306,9 @@ class Song(object): def get_category_array(self, asOneString = True): """Return the list of categories as a string - asOneString - True -- string: - 'Hymn, Gospel' - False -- list of strings - ['Hymn', u'Gospel'] + ``asOneString`` + If ``True``, returns 'Hymn, Gospel'. If ``False``, returns + [u'Hymn', u'Gospel'] """ if asOneString: res = self._assure_string(self.category_array) @@ -381,6 +378,7 @@ class Song(object): properties slideNumber -- 1 .. numberOfSlides + Returns a list as: [theme_name (string), title (string), diff --git a/openlp/plugins/songs/lib/wowimport.py b/openlp/plugins/songs/lib/wowimport.py index 879d56704..2f20cf20d 100644 --- a/openlp/plugins/songs/lib/wowimport.py +++ b/openlp/plugins/songs/lib/wowimport.py @@ -24,7 +24,7 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ -The :mod:`wowimport` module provides the functionality for importing Words of +The :mod:`wowimport` module provides the functionality for importing Words of Worship songs into the OpenLP database. """ import os @@ -38,19 +38,18 @@ log = logging.getLogger(__name__) class WowImport(SongImport): """ - The :class:`WowImport` class provides the ability to import song files from + The :class:`WowImport` class provides the ability to import song files from Words of Worship. - Words Of Worship Song File Format - ````````````````````````````````` - + **Words Of Worship Song File Format:** + The Words Of Worship song file format is as follows: * The song title is the file name minus the extension. - * The song has a header, a number of blocks, followed by footer containing - the author and the copyright. + * The song has a header, a number of blocks, followed by footer containing + the author and the copyright. * A block can be a verse, chorus or bridge. - + File Header: Bytes are counted from one, i.e. the first byte is byte 1. These bytes, up to the 56 byte, can change but no real meaning has been found. The @@ -65,29 +64,29 @@ class WowImport(SongImport): Each block ends with 4 bytes, the first of which defines what type of block it is, and the rest which are null bytes: - * ``NUL`` (\x00) - Verse - * ``SOH`` (\x01) - Chorus - * ``STX`` (\x02) - Bridge + * ``NUL`` (0x00) - Verse + * ``SOH`` (0x01) - Chorus + * ``STX`` (0x02) - Bridge - Blocks are seperated by two bytes. The first byte is ``SOH`` (\x01), - and the second byte is ``€`` (\x80). + Blocks are seperated by two bytes. The first byte is 0x01, and the + second byte is 0x80. Lines: Each line starts with a byte which specifies how long that line is, the line text, and ends with a null byte. - + Footer: - The footer follows on after the last block, the first byte specifies - the length of the author text, followed by the author text, if - this byte is null, then there is no author text. The byte after the - author text specifies the length of the copyright text, followed - by the copyright text. - + The footer follows on after the last block, the first byte specifies + the length of the author text, followed by the author text, if + this byte is null, then there is no author text. The byte after the + author text specifies the length of the copyright text, followed + by the copyright text. + The file is ended with four null bytes. - + Valid extensions for a Words of Worship song file are: - + * .wsg * .wow-song """ @@ -111,7 +110,7 @@ class WowImport(SongImport): """ Recieve a single file, or a list of files to import. """ - + if isinstance(self.import_source, list): self.import_wizard.importProgressBar.setMaximum( len(self.import_source)) @@ -127,14 +126,14 @@ class WowImport(SongImport): if self.songData.read(19) != u'WoW File\nSong Words': continue # Seek to byte which stores number of blocks in the song - self.songData.seek(56) + self.songData.seek(56) self.no_of_blocks = ord(self.songData.read(1)) # Seek to the beging of the first block - self.songData.seek(82) + self.songData.seek(82) for block in range(self.no_of_blocks): self.lines_to_read = ord(self.songData.read(1)) # Skip 3 nulls to the beginnig of the 1st line - self.songData.seek(3, os.SEEK_CUR) + self.songData.seek(3, os.SEEK_CUR) self.block_text = u'' while self.lines_to_read: self.length_of_line = ord(self.songData.read(1)) @@ -148,7 +147,7 @@ class WowImport(SongImport): self.block_type = BLOCK_TYPES[ord(self.songData.read(1))] # Skip 3 nulls at the end of the block self.songData.seek(3, os.SEEK_CUR) - # Blocks are seperated by 2 bytes, skip them, but not if + # Blocks are seperated by 2 bytes, skip them, but not if # this is the last block! if (block + 1) < self.no_of_blocks: self.songData.seek(2, os.SEEK_CUR) @@ -170,4 +169,4 @@ class WowImport(SongImport): self.import_wizard.incrementProgressBar( "Importing %s" % (self.file_name)) return True - + From 034bae031a21b0c88883060314cecf9674b3970b Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Mon, 11 Oct 2010 09:47:55 +0200 Subject: [PATCH 29/36] missing space --- openlp/plugins/custom/forms/editcustomslideform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/custom/forms/editcustomslideform.py b/openlp/plugins/custom/forms/editcustomslideform.py index ab670970b..ff396658f 100644 --- a/openlp/plugins/custom/forms/editcustomslideform.py +++ b/openlp/plugins/custom/forms/editcustomslideform.py @@ -44,7 +44,7 @@ class EditCustomSlideForm(QtGui.QDialog, Ui_CustomSlideEditDialog): """ QtGui.QDialog.__init__(self, parent) self.setupUi(self) - # Connecting signals and slots + # Connecting signals and slots QtCore.QObject.connect(self.splitButton, QtCore.SIGNAL(u'pressed()'), self.onSplitButtonPressed) From 35fdbdeee8bde6e5d046d01a1db13f695161a139 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Mon, 11 Oct 2010 17:26:48 +0200 Subject: [PATCH 30/36] fix for bug #657694 and some code enhancements --- openlp/plugins/songs/forms/editverseform.py | 23 ++++++--------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index e81651e1a..e995407a3 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -66,27 +66,16 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): self.verseTextEdit.setFocus() def onInsertButtonClicked(self): - if self.verseTextEdit.textCursor().columnNumber() != 0: - self.verseTextEdit.insertPlainText(u'\n') verse_type = self.verseTypeComboBox.currentIndex() - if verse_type == VerseType.Verse: - self.insertVerse(VerseType.to_string(VerseType.Verse), + if VerseType.to_string(verse_type) is not None: + self.insertVerse(VerseType.to_string(verse_type), self.verseNumberBox.value()) - elif verse_type == VerseType.Chorus: - self.insertVerse(VerseType.to_string(VerseType.Chorus), - self.verseNumberBox.value()) - elif verse_type == VerseType.Bridge: - self.insertVerse(VerseType.to_string(VerseType.Bridge)) - elif verse_type == VerseType.PreChorus: - self.insertVerse(VerseType.to_string(VerseType.PreChorus)) - elif verse_type == VerseType.Intro: - self.insertVerse(VerseType.to_string(VerseType.Intro)) - elif verse_type == VerseType.Ending: - self.insertVerse(VerseType.to_string(VerseType.Ending)) - elif verse_type == VerseType.Other: - self.insertVerse(VerseType.to_string(VerseType.Other)) def onCursorPositionChanged(self): + """ + Determines the previous verse type and number in regard to the cursor's + position and adjusts the ComboBox and SpinBox to these values. + """ position = self.verseTextEdit.textCursor().position() text = unicode(self.verseTextEdit.toPlainText()) if not text: From 0cefed0eb56c107d351c2809528ae00c1d18fe5a Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Mon, 11 Oct 2010 19:29:03 +0200 Subject: [PATCH 31/36] onVerseTypeComboBoxChanged --- openlp/plugins/songs/forms/editverseform.py | 29 +++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index e995407a3..3e1ff7857 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -53,6 +53,9 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): QtCore.QObject.connect(self.verseTextEdit, QtCore.SIGNAL(u'cursorPositionChanged()'), self.onCursorPositionChanged) + QtCore.QObject.connect(self.verseTypeComboBox, + QtCore.SIGNAL(u'currentIndexChanged(int)'), + self.onVerseTypeComboBoxChanged) self.verse_regex = re.compile(r'---\[([-\w]+):([\d]+)\]---') def contextMenu(self, point): @@ -71,6 +74,32 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): self.insertVerse(VerseType.to_string(verse_type), self.verseNumberBox.value()) + def onVerseTypeComboBoxChanged(self): + """ + Adjusts the verse number SpinBox in regard to the selected verse type. + """ + position = self.verseTextEdit.textCursor().position() + text = unicode(self.verseTextEdit.toPlainText()) + verse_type = VerseType.to_string(self.verseTypeComboBox.currentIndex()) + if not text: + return + position = text.rfind(u'---[%s' % verse_type, 0, position) + if position == -1: + self.verseNumberBox.setValue(1) + return + text = text[position:] + position = text.find(u']---') + if position == -1: + return + text = text[:position + 4] + match = self.verse_regex.match(text) + if match: + verse_type = match.group(1) + verse_number = int(match.group(2)) + verse_type_index = VerseType.from_string(verse_type) + if verse_type_index is not None: + self.verseNumberBox.setValue(verse_number) + def onCursorPositionChanged(self): """ Determines the previous verse type and number in regard to the cursor's From 177d2d0351ddc781d0202022c5f05c95d2395836 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Mon, 11 Oct 2010 22:47:00 +0200 Subject: [PATCH 32/36] More documentation updates. --- documentation/source/plugins/bibles.rst | 23 ++++---- documentation/source/plugins/images.rst | 8 +++ documentation/source/plugins/index.rst | 21 +------ documentation/source/plugins/media.rst | 8 +++ .../source/plugins/presentations.rst | 40 +++++++++++++ documentation/source/plugins/songs.rst | 4 +- openlp/plugins/bibles/__init__.py | 2 +- openlp/plugins/bibles/lib/__init__.py | 38 ++++++++----- .../presentations/lib/powerpointcontroller.py | 56 ++++++++++--------- .../lib/presentationcontroller.py | 31 +++++----- 10 files changed, 146 insertions(+), 85 deletions(-) create mode 100644 documentation/source/plugins/images.rst create mode 100644 documentation/source/plugins/media.rst create mode 100644 documentation/source/plugins/presentations.rst diff --git a/documentation/source/plugins/bibles.rst b/documentation/source/plugins/bibles.rst index c042feb56..5f2c688d5 100644 --- a/documentation/source/plugins/bibles.rst +++ b/documentation/source/plugins/bibles.rst @@ -1,7 +1,7 @@ .. _plugins-bibles: -:mod:`bibles` Plugin -==================== +Bibles Plugin +============= .. automodule:: openlp.plugins.bibles :members: @@ -60,8 +60,8 @@ .. autoclass:: openlp.plugins.bibles.lib.http.HTTPBible :members: -:mod:`bibleOSISimpl` -^^^^^^^^^^^^^^^^^^^^ +:mod:`osis` +^^^^^^^^^^^ .. automodule:: openlp.plugins.bibles.lib.osis :members: @@ -69,18 +69,21 @@ .. autoclass:: openlp.plugins.bibles.lib.osis.OSISBible :members: +:mod:`opensong` +^^^^^^^^^^^^^^^ + +.. automodule:: openlp.plugins.bibles.lib.opensong + :members: + +.. autoclass:: openlp.plugins.bibles.lib.opensong.OpenSongBible + :members: + :mod:`biblestab` ^^^^^^^^^^^^^^^^ .. automodule:: openlp.plugins.bibles.lib.biblestab :members: -:mod:`common` -^^^^^^^^^^^^^ - -.. automodule:: openlp.plugins.bibles.lib.common - :members: - :mod:`manager` ^^^^^^^^^^^^^^ diff --git a/documentation/source/plugins/images.rst b/documentation/source/plugins/images.rst new file mode 100644 index 000000000..d4d6fa265 --- /dev/null +++ b/documentation/source/plugins/images.rst @@ -0,0 +1,8 @@ +.. _plugins-images: + +Images Plugin +============= + +.. automodule:: openlp.plugins.images + :members: + diff --git a/documentation/source/plugins/index.rst b/documentation/source/plugins/index.rst index 713005c3d..6c5b139d5 100644 --- a/documentation/source/plugins/index.rst +++ b/documentation/source/plugins/index.rst @@ -11,24 +11,9 @@ songs bibles - -:mod:`presentations` Plugin ---------------------------- - -.. automodule:: openlp.plugins.presentations - :members: - -:mod:`media` Plugin -------------------- - -.. automodule:: openlp.plugins.media - :members: - -:mod:`images` Plugin --------------------- - -.. automodule:: openlp.plugins.images - :members: + presentations + media + images :mod:`custom` Plugin -------------------- diff --git a/documentation/source/plugins/media.rst b/documentation/source/plugins/media.rst new file mode 100644 index 000000000..637fec634 --- /dev/null +++ b/documentation/source/plugins/media.rst @@ -0,0 +1,8 @@ +.. _plugins-media: + +Media Plugin +============ + +.. automodule:: openlp.plugins.media + :members: + diff --git a/documentation/source/plugins/presentations.rst b/documentation/source/plugins/presentations.rst new file mode 100644 index 000000000..dd688ddf6 --- /dev/null +++ b/documentation/source/plugins/presentations.rst @@ -0,0 +1,40 @@ +.. _plugins-presentations: + +Presentations Plugin +==================== + +Plugin Class +------------ + +.. autoclass:: openlp.plugins.presentations.presentationplugin.PresentationPlugin + :members: + +Helper Classes & Functions +-------------------------- + +.. automodule:: openlp.plugins.presentations.lib + :members: + +.. automodule:: openlp.plugins.presentations.lib.mediaitem + :members: + +.. automodule:: openlp.plugins.presentations.lib.presentationtab + :members: + +.. automodule:: openlp.plugins.presentations.lib.messagelistener + :members: + +.. automodule:: openlp.plugins.presentations.lib.presentationcontroller + :members: + +Presentation Application Controllers +------------------------------------ + +.. automodule:: openlp.plugins.presentations.lib.impresscontroller + :members: + +.. automodule:: openlp.plugins.presentations.lib.pptviewcontroller + :members: + +.. automodule:: openlp.plugins.presentations.lib.powerpointcontroller + :members: diff --git a/documentation/source/plugins/songs.rst b/documentation/source/plugins/songs.rst index 2ce744ddd..5378ba7d7 100644 --- a/documentation/source/plugins/songs.rst +++ b/documentation/source/plugins/songs.rst @@ -1,7 +1,7 @@ .. _plugins-songs: -:mod:`songs` Plugin -=================== +Songs Plugin +============ .. automodule:: openlp.plugins.songs :members: diff --git a/openlp/plugins/bibles/__init__.py b/openlp/plugins/bibles/__init__.py index 0a158d1a7..a1e8f5a51 100644 --- a/openlp/plugins/bibles/__init__.py +++ b/openlp/plugins/bibles/__init__.py @@ -24,6 +24,6 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ -The :mod:`bibles' module provides the Bible plugin to enable OpenLP to display +The :mod:`bibles` module provides the Bible plugin to enable OpenLP to display scripture. """ diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index 06f9d7cc7..a6fc03045 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -60,22 +60,32 @@ def parse_reference(reference): and converts it to a reference list, a list of references to be queried from the Bible database files. - BIBLE_REFERENCE regular expression produces the following match groups: - 0 This is a special group consisting of the whole string that matched. - 1 [\w ]+ The book the reference is from. - 2 [0-9]+ The first (or only) chapter in the reference. - 3 None|[0-9]+ None or the only verse or the first verse in a - verse range or the start verse in a chapter range. - 4 None|[0-9]+|end None or the end verse of the first verse range or - the end chapter of a chapter range. - 5 None|[0-9]+ None or the second chapter in multiple - (non-ranged) chapters. - 6 None|[0-9]+|end None, the start of the second verse range or the - end of a chapter range. - 7 None|[0-9]+|end None or the end of the second verse range. + The ``BIBLE_REFERENCE`` constant regular expression produces the following + match groups: + + 0. (match string) + This is a special group consisting of the whole string that matched. + 1. ``[\w ]+`` + The book the reference is from. + 2. ``[0-9]+`` + The first (or only) chapter in the reference. + 3. ``None`` or ``[0-9]+`` + ``None``, or the only verse, or the first verse in a verse range or, + the start verse in a chapter range. + 4. ``None`` or ``[0-9]+`` or ``end`` + ``None``, or the end verse of the first verse range, or the end chapter + of a chapter range. + 5. ``None`` or ``[0-9]+`` + ``None``, or the second chapter in multiple (non-ranged) chapters. + 6. ``None`` or ``[0-9]+`` or ``end`` + ``None``, the start of the second verse range. or the end of a chapter + range. + 7. ``None`` or ``[0-9]+`` or ``end`` + ``None``, or the end of the second verse range. The reference list is a list of tuples, with each tuple structured like this:: + (book, chapter, start_verse, end_verse) ``reference`` @@ -154,7 +164,7 @@ def parse_reference(reference): class SearchResults(object): """ - Encapsulate a set of search results. This is Bible-type independant. + Encapsulate a set of search results. This is Bible-type independent. """ def __init__(self, book, chapter, verselist): """ diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index 5059f5f76..58bb6b3d6 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -110,10 +110,10 @@ class PowerpointDocument(PresentationDocument): """ Class which holds information and controls a single presentation """ - + def __init__(self, controller, presentation): """ - Constructor, store information about the file and initialise + Constructor, store information about the file and initialise """ log.debug(u'Init Presentation Powerpoint') PresentationDocument.__init__(self, controller, presentation) @@ -125,13 +125,13 @@ class PowerpointDocument(PresentationDocument): Opens the PowerPoint file using the process created earlier ``presentation`` - The file name of the presentations to run. + The file name of the presentations to run. """ log.debug(u'LoadPresentation') if not self.controller.process or not self.controller.process.Visible: self.controller.start_process() try: - self.controller.process.Presentations.Open(self.filepath, False, + self.controller.process.Presentations.Open(self.filepath, False, False, True) except pywintypes.com_error: return False @@ -143,22 +143,24 @@ class PowerpointDocument(PresentationDocument): def create_thumbnails(self): """ Create the thumbnail images for the current presentation. - Note an alternative and quicker method would be do + + Note an alternative and quicker method would be do:: + self.presentation.Slides[n].Copy() thumbnail = QApplication.clipboard.image() - But for now we want a physical file since it makes - life easier elsewhere + + However, for the moment, we want a physical file since it makes life + easier elsewhere. """ if self.check_thumbnails(): return - self.presentation.Export(os.path.join(self.get_thumbnail_folder(), ''), + self.presentation.Export(os.path.join(self.get_thumbnail_folder(), ''), 'png', 320, 240) def close_presentation(self): """ - Close presentation and clean up objects - Triggerent by new object being added to SlideController orOpenLP - being shut down + Close presentation and clean up objects. This is triggered by a new + object being added to SlideController or OpenLP being shut down. """ log.debug(u'ClosePresentation') if self.presentation: @@ -171,7 +173,7 @@ class PowerpointDocument(PresentationDocument): def is_loaded(self): """ - Returns true if a presentation is loaded + Returns ``True`` if a presentation is loaded. """ try: if not self.controller.process.Visible: @@ -187,7 +189,7 @@ class PowerpointDocument(PresentationDocument): def is_active(self): """ - Returns true if a presentation is currently active + Returns ``True`` if a presentation is currently active. """ if not self.is_loaded(): return False @@ -202,7 +204,7 @@ class PowerpointDocument(PresentationDocument): def unblank_screen(self): """ - Unblanks (restores) the presentationn + Unblanks (restores) the presentation. """ self.presentation.SlideShowSettings.Run() self.presentation.SlideShowWindow.View.State = 1 @@ -210,13 +212,13 @@ class PowerpointDocument(PresentationDocument): def blank_screen(self): """ - Blanks the screen + Blanks the screen. """ self.presentation.SlideShowWindow.View.State = 3 def is_blank(self): """ - Returns true if screen is blank + Returns ``True`` if screen is blank. """ if self.is_active(): return self.presentation.SlideShowWindow.View.State == 3 @@ -225,14 +227,14 @@ class PowerpointDocument(PresentationDocument): def stop_presentation(self): """ - Stops the current presentation and hides the output + Stops the current presentation and hides the output. """ self.presentation.SlideShowWindow.View.Exit() if os.name == u'nt': def start_presentation(self): """ - Starts a presentation from the beginning + Starts a presentation from the beginning. """ #SlideShowWindow measures its size/position by points, not pixels try: @@ -254,40 +256,40 @@ class PowerpointDocument(PresentationDocument): def get_slide_number(self): """ - Returns the current slide number + Returns the current slide number. """ return self.presentation.SlideShowWindow.View.CurrentShowPosition def get_slide_count(self): """ - Returns total number of slides + Returns total number of slides. """ return self.presentation.Slides.Count def goto_slide(self, slideno): """ - Moves to a specific slide in the presentation + Moves to a specific slide in the presentation. """ self.presentation.SlideShowWindow.View.GotoSlide(slideno) def next_step(self): """ - Triggers the next effect of slide on the running presentation + Triggers the next effect of slide on the running presentation. """ self.presentation.SlideShowWindow.View.Next() def previous_step(self): """ - Triggers the previous slide on the running presentation + Triggers the previous slide on the running presentation. """ self.presentation.SlideShowWindow.View.Previous() def get_slide_text(self, slide_no): """ - Returns the text on the slide + Returns the text on the slide. ``slide_no`` - The slide the text is required for, starting at 1 + The slide the text is required for, starting at 1. """ text = '' shapes = self.presentation.Slides(slide_no).Shapes @@ -299,10 +301,10 @@ class PowerpointDocument(PresentationDocument): def get_slide_notes(self, slide_no): """ - Returns the text on the slide + Returns the text on the slide. ``slide_no`` - The slide the notes are required for, starting at 1 + The slide the notes are required for, starting at 1. """ text = '' shapes = self.presentation.Slides(slide_no).NotesPage.Shapes diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py index 15f84dc5e..5bd0719e9 100644 --- a/openlp/plugins/presentations/lib/presentationcontroller.py +++ b/openlp/plugins/presentations/lib/presentationcontroller.py @@ -37,16 +37,21 @@ log = logging.getLogger(__name__) class PresentationController(object): """ - Base class for presentation controllers to inherit from - Class to control interactions with presentations. - It creates the runtime environment - To create a new controller, take a copy of this file and name it - so it ends in controller.py, i.e. foobarcontroller.py - Make sure it inherits PresentationController - Then fill in the blanks. If possible try and make sure it loads - on all platforms, using for example os.name checks, although - __init__, check_available and presentation_deleted should always work. - See impresscontroller, powerpointcontroller or pptviewcontroller + This class is used to control interactions with presentation applications + by creating a runtime environment. This is a base class for presentation + controllers to inherit from. + + To create a new controller, take a copy of this file and name it so it ends + with ``controller.py``, i.e. ``foobarcontroller.py``. Make sure it inherits + :class:`~openlp.plugins.presentations.lib.presentationcontroller.PresentationController`, + and then fill in the blanks. If possible try to make sure it loads on all + platforms, usually by using :mod:``os.name`` checks, although + ``__init__``, ``check_available`` and ``presentation_deleted`` should + always be implemented. + + See :class:`~openlp.plugins.presentations.lib.impresscontroller.ImpressController`, + :class:`~openlp.plugins.presentations.lib.powerpointcontroller.PowerpointController` or + :class:`~openlp.plugins.presentations.lib.pptviewcontroller.PptviewController` for examples. **Basic Attributes** @@ -70,7 +75,7 @@ class PresentationController(object): ``alsosupports`` Other file types the application can import, although not necessarily the first choice due to potential incompatibilities - + **Hook Functions** ``kill()`` @@ -246,7 +251,7 @@ class PresentationDocument(object): ``presentation`` The file name of the presentations to the run. - + Returns False if the file could not be opened """ return False @@ -387,7 +392,7 @@ class PresentationDocument(object): if os.path.isfile(file): img = resize_image(file, 320, 240) img.save(self.get_thumbnail_path(idx, False)) - + def get_thumbnail_path(self, slide_no, check_exists): """ Returns an image path containing a preview for the requested slide From aab9d1b2ca841219899e97a4e97794d203033535 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Tue, 12 Oct 2010 18:47:53 +0200 Subject: [PATCH 33/36] docs --- openlp/plugins/songs/forms/editverseform.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 3e1ff7857..b32712d8d 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -76,7 +76,8 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): def onVerseTypeComboBoxChanged(self): """ - Adjusts the verse number SpinBox in regard to the selected verse type. + Adjusts the verse number SpinBox in regard to the selected verse type + and the cursor's position. """ position = self.verseTextEdit.textCursor().position() text = unicode(self.verseTextEdit.toPlainText()) From d41ef1a87082ec4c43316b137b7bf9063f84d298 Mon Sep 17 00:00:00 2001 From: Wesley Stout Date: Thu, 14 Oct 2010 10:17:53 -0500 Subject: [PATCH 34/36] Added glossary and updated the index --- documentation/source/manual/glossary.rst | 70 ++++++++++++++++++ documentation/source/manual/index.rst | 1 + documentation/source/manual/mainwindow.png | Bin 0 -> 126241 bytes documentation/source/manual/mediamanager.png | Bin 0 -> 106187 bytes documentation/source/manual/preview.png | Bin 0 -> 22756 bytes .../source/manual/servicemanager.png | Bin 0 -> 18930 bytes .../source/manual/slidecontroller.png | Bin 0 -> 92005 bytes documentation/source/manual/thememanager.png | Bin 0 -> 31967 bytes 8 files changed, 71 insertions(+) create mode 100644 documentation/source/manual/glossary.rst create mode 100644 documentation/source/manual/mainwindow.png create mode 100644 documentation/source/manual/mediamanager.png create mode 100644 documentation/source/manual/preview.png create mode 100644 documentation/source/manual/servicemanager.png create mode 100644 documentation/source/manual/slidecontroller.png create mode 100644 documentation/source/manual/thememanager.png diff --git a/documentation/source/manual/glossary.rst b/documentation/source/manual/glossary.rst new file mode 100644 index 000000000..2d4224b5d --- /dev/null +++ b/documentation/source/manual/glossary.rst @@ -0,0 +1,70 @@ +======== +Glossary +======== + +The developers of OpenLP have strived to make it a straightforward and easy to +use application. However, it is good to be familiar with a few terms that will +be used throughout this documentation, and when seeking support. + +Main Window +----------- + +The Main Window is what you will see when you first open OpenLP + +.. image:: mainwindow.png + +The Main Window contains all the tools and plugins that make OpenLP function + +Media Manager +------------- + +The Media Manager contains a number of tabs that plugins supply to OpenLP. +Each tab in the Media Manager is called a **Media Item** + +.. image:: mediamanager.png + +From the Media Manager you can send Media Items to the Preview or Live screens. + +Preview +------- + +The preview pane is a section to preview your media items before you go live +with them. + +.. image:: preview.png + +Service File +------------ + +A service file, is the file that is created when you save your work on OpenLP. +The service file consist of **Service Items** + +Service Item +------------ + +A service item are the **media items** that are in the **service manager** + +Service Manger +-------------- + +The service manager contains the media items in your service file.This is the +area from wich your media items go live, and you can also save, open, and edit +services files. + +.. image:: servicemanager.png + +Slide Controller +---------------- + +The Slide Controller controls which slide from a **Service Item** is currently +being displayed, and moving between the various slides. + +.. image:: slidecontroller.png + +Theme Manager +------------- + +The theme manager is where themes are created and edited. Themes are the text +styles backgrounds that you use to personalize your services. + +.. image:: thememanager.png diff --git a/documentation/source/manual/index.rst b/documentation/source/manual/index.rst index 2ed7824fe..d357a398b 100644 --- a/documentation/source/manual/index.rst +++ b/documentation/source/manual/index.rst @@ -12,6 +12,7 @@ Contents: :maxdepth: 2 introduction + glossary Indices and tables ================== diff --git a/documentation/source/manual/mainwindow.png b/documentation/source/manual/mainwindow.png new file mode 100644 index 0000000000000000000000000000000000000000..2177510620d5c7f819783aa610a0e821e5bee162 GIT binary patch literal 126241 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%0D!@GC4*fQ4evv#dzFpcV7k0a#q?+J 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

K^Klk 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

PSX&5?3kixcY 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�!YIm<$ru~;Nu5$SV#372D2%bvvH!D!)}mjo zcz&{8vgLSMT2Ht=3IR~*B7E%AqSfJ+5>hk!4M^8(Rp2{Z25>C5_Md5uAGSC{*U|4TyDs` zd9hkM{PAUrrzWZ(&C&eh9f!&%6-31#hUI+eb%YR2LhguhQ-&oBqK>*xZfC5!&=G^eyHKB6Foe90EU6f-hOp7bxIg{>&~zL_&@;HKq$YXLQzM> zklmWHZL@4mVd5lT_yfSed41MoebjDZ4ayIv3anL`o)062YeYIMZu z@(!Ct_GLCxUwSc;TW^@y$Vr3r0Dv$cK!}DPilb(K_nFdnSO5A)M+S_ZG53Kn1#tpU z0u%$1Zk;SCSFmv7;)yoBMxCy!-}mu_SKcV{@2PzjVT{y7Qj;XfemEwBF~f42s5F&W z-`?6}RlKo%6AUTKX zt`!SR;e=AaSTY~^^vxBAs$_)~V5=CvF!?N*O3FWuJRa)Ck1^_IHkJM`4d&9#+te&k?S`yC$|33)&m!+ zO|=&`?LKNx8{9uN0sBXcF&gzk`>m@bWlc>rwH>s1|G+PK+|j*0cumfdvwN2TLp z$%SU)(C2>k`dfeb>tFuzm$&}-+oi+#iyJn#BaRD`2cg^ zrlscWnw{rx{_xD02pmcy0->BGlv0HtZDI`XxOS$zp{};J+T@BU%pa(_b!gXt3-zrX z&GmH+O*T;V8�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 literal 0 HcmV?d00001 diff --git a/documentation/source/manual/preview.png b/documentation/source/manual/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..f3041726be4883e904545bcab6f666870643969a GIT binary patch literal 22756 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 bB2f>qjeIV-{W!dV7-3<0)}#P;>CV3Z+_xTj literal 0 HcmV?d00001 diff --git a/documentation/source/manual/servicemanager.png b/documentation/source/manual/servicemanager.png new file mode 100644 index 0000000000000000000000000000000000000000..8e2842eb5d15928b32518101e8c0be0b593a7abc GIT binary patch literal 18930 zcmd43WpEua*CyCzh8SarA!cTdIc8>NW@hG?nVFe6<~U|%_BAs*W?H}B%cWmz=D7NLBBpq|EJ}oC?*8d zOyVDZHsI{VHJktd`R{*zV97Mdc%Pjx&Jr>rFsty$$ZTvh;4^!lT{zAn>dwM;HZ~@< z&VaC^iGj0;F_D{vvpJENgp9me05UcJ5CIZD1(n@b&$HdsF^2GlKpUqah4|kfzx)IP zgTnOU7{nzRO!%rrTQ6qB&|}VeuWNXwV|2-Ozgd?@86lad8yj@m@$v$3>?SsJ?@K^P zpzUgEW_rkD<908#-s6Uix@Q%F1R&u;53?AnV-2f`n441qaq6hUONj7*AQ%zsXDJWB z27(KqVgP}804gMuKan2&8TId&gN+LdzfIR~J?6o+Z~+4`7*qc&ln~!6-UCH2F^kH8 zv?{k$*UKL+9JCrp0vXF*>~98-u}DQ#H~XPmS}SX7S`nipoC9o2cfUXk}B0#!?j%mp3%9>QDs-qzi@#O4Uj_;8W*6S729 zbizWF`Px-HUhZvb^+HTPE_5sJdjo=^AU(dIHF!NtuK%|EiTMnb7vuG+NoW4USRI9d z4**!L(_c7rMt4cpT=m@1N+I*R{FeHJe|x6IISd0ed@>|wE~v0E~@?T zpOi?fkb&%b{g+jr2hhM+Gtk>wz2-4pcX=uYNLfEY{X2 z*tX%3hMWKFtmWhP5AQ0cUolr7M>^at$N6kNxwt}cxFmcHzLmzM)pr+1BY15qW9{(- zjT?1y*WE5fpXq}8!zZ|T=czvWCDpo4M?31U{h>u~lBVH3fn{!N;0Z*L-_iT2Q}OFv!_GKU^Z&Hk-1t zP*|8q4_6v@5EzNIA+TP@#$NJudMECV!hxYd90r}7=l8sG$8XQsJpPn(`o90(B9p3D zWa-srFQtuvrT#J|VY|lfvx>26)JJy91*`-D+bVJE*6G~(XMs+3Qa5I9@z98 zPdC&A#X;)t^@Y)wv>|2P897nG$s7H8?OV1<)iYzOfB}f?ugcYicss`Q+a}gWTpomG zxz{x6lfJa-T72v9%4|IPL1n_n@65hfajIwJ#p!e#sw?=sYezK66{0wdK~#5tG+%gM z{4FfkHFI7b)oWk8u5RFr99eF%ud;|1zK9eRJj@g68vx|}*7$QbG?Y7Fm62{%8f~Xm zT2sqIc;dcV#Fy^+ZkxoNhpcz`)Hxp4Z)QZ-o&Kg}$H50A#v34~@{>0I6$wx_S<_R7 z7+Cb}O4P5>iQJX~2iN0mb9m}Om!crFKW6on)FbqDRIiGW*!WQcI_OlYET$|gn9~V2 zvqD*1J)N3cYr+!QL{wEiy|5bz{o5&FwKGOpJw3M+n#qu~sQhYJ6SMxS_T2l`+c26S(F!))?T3634HbZFj&@17;;=V(Yo4A$vSk5=Pg!!5^!LvS z{`_$|H=}(wI~A)W%|G)k^(JboPj-nXS0mtXPfV}3rkThGnrU>bJTzyzo_TxrMfu<% zL(yJ}F(cahgiVZR`hxedHS6zJuC&8n*&a^l_}ocY3U^q=CM|fe*BJ_LbE`X3&C9>G zlMtzdqPc&khYQTe=26RZHayg|fK~DnQleo`Cq4)ettkL=W-`O7p4X>IZ&yjy}0AXc3$KxASg{N?ggk|Fdcpc&P*J#@Vn_Z4RmVkDE{d z{PKXuTgbdgc?h*(GGLi~qWgiX=|;53rPUzE5Zs?`4}F!EY`~wJj}$8l2Bzh@nKS@P z4INua7Z>8tX}nUaKcsFNL#O(WRV8#{ML)G>U)xfJ&P}`=``h!~RQ8>zRi0kYd+`w% z>lX_4tP#gshgOzd=9@IJQaK8NW>r~m#U1ozP40)Y+2k|b^UkXFjJ-7H(-IrY%%f-( z<=Zv#k`JCHULkcqLmifaIzDgDrsga!%MnS}OV?&PagmBYqdoPJpKox`dqRt3{}Ue# zfR)(T^jZ6*^x9oM2n7&vfzuD~Q{#?TS+4emI}O!pve(iR&+Rk-w9)iaxSY9+l@B^3 zGYJrtEwIl`_M|(x+TqY;*ZE;IG73Z{`y%4MHZ?9I<4{Qie{^-;v_7o#;K3=11BfDN zzxLf^ZMm{*zA=LJ4cm4A^-b2E;lxi+H1SxV5u5>>#BLVpF#g#$B!@@s;4$;Y7!Y03tf*kFaZmd|x{;Uw& zt&9GWRKgI)5#uTLsnQB10tEiEA#)61N77%+&xcd!m{sE{;9?$@BH(k5Y z^FnCBl*bK6c-X&+R~5|=Q4pkzVMD|B0#V%83)#C%ppptO0sY;Tn}MA8T{jvU#v>VYFcya2SZgP;xHynyUY+j}1DRSa4=$2IP8Xycg_b zHkG6S2!|rd$jIPv_$uaj0Z^8fq9ql-W-KKJQ@uYEgxBV+vk4$ZfD}Gf_ zZX^KsoBkuzdvk1_ly;+d<#eb2^@~SV@Sq~KQj*5M*Dt}DwJ2zzLx7kn)#qld16&El%y2z7h7b@iX}|f+I$1&^RA9G_?iJ0YG9r*qG;v9 z{Y`}!oQTXf$V}Z#0a#r|ICTqdd;d|=NP_22=9m<>RCnSN15WfwneVNN2a}NGp3?ZY z#?n=R(Ej@V`Wfn~FRh9wQ8@CJIL#M9v+64gxdVp#+GH=R&B#fbB~j7LGD;X^YL<=< z_slEs`u?V0Gd?FSuOk3B57>T;g8{66i0JK$YjRxH8{HO84Z(=RkBE6g4^Br&+7lotbyE z^#$!s0wAvp2vx;{C#8+mpywuMMqg!cO8+rzs*eL1r!*2kDxumzTiGvy8w)=NEo-x^T#trgFx>pn-%<< z?iX;PUuU_-vity7WnzCN5}~dQC!pQ#P1Q@DXDu=H?I`hSxMv-biz2BMW_Vb+#ZI$T z;LgndlV1Wk#WigNd0&Gkk#L_nZow?I$oX?z?`@NQ=O@-*%HE!LdUtL-$&Zo0-52tf zM6a<{Q$UxE_<8KsrcNcWx@2*M@@Z}4^*u&+^yG;8oM*5V4n^VcnvQ?2>*hoEi*Vj6 zufYAPK@2bo5)vC2oLI#Zt32W@ti`STYnkzSRouZW9Y`fvnt8W&WhhrUiZ@tq&kW(> zSyE#R$~FzR8JEyZsVNbZ249<(1&=kB{7tI2EQ*w*1^_E`4z6n`Tp!h_VD?;97hnr> zJ0zYhcPW+sTKmYoZ>EdQ4q6ssHzFy=NYe^jxOF6CD`(e4>Kgb}CX%i?=13*L6B|io z8ejo(Gd{algf%@RGD4{2n+|~|OTYYhIGH(C88cJUdM*>~)dQz?OZe{zY*gvWnknz> z>V-xkq*lSIy@x6LcX$~E&YE<xn zlzuK8ig#mtkkrijd7C|cpf-nH7d-ZV&)qzwRlNTGL&=hD@J=~Dhf`pY$j2wMD3a}= zIvf50n$@b+st^LAqN1v*s-~tT(kTxr`k^Hj5iLzkQNN;IIa_P8K-ui5+F86)AC{^C zl4^ToAKd@CydE;x?c)9JSnxuGzTo0|-d=26=x}SLWu|gb`EZcEPcO66kjRiSVM*M> z!Cd~m#Iw{{m1?qFk*u7#@_5ztd9elkR>@b6!OMN^5!5rk>8nAo=EE9!T^xl-Lo=&k@Dc)N}&{{setlm=Ys}LJ*wbVZQL}uw#I4 zUxrQ#rOshDv@gg{LR?x}TJmi5jR*J@8$0!8C2dU$+#X#UDX}P35iUbuh*qoe`#dL6 z%_cW+;S<_jGRJy5hDSt1golsl2ALtcEw41%!@z{e?G>A!fpw=4_z&%}SufY!pzZDL z1v5O8s32az3d;lHTydHj+mA4x_U!*+0}S*oz;H*yegXMi%{#iTSmwK z{uMILL6h{c0MBE|A>8ngx!S0cUEq5c<1e4j>wh6w`-i_g8yd~F0jMxRa-%go=#M@# zE|QS(qkqjI55j)u-d(**J;phSRZ~)_pRxtPC7wRL25~!|$5wZIcyI(!`H(8F7WThP zL6$1z{^?pE+gyLRY)^H>t$Z3f2UEviOy-eOWIJZgrqv-aVzHKUlH*|EpvRb#WUd&t z>R`X*@}gjsKvI?&UL2zrL4DoTA;1<)oZVpWq#{-8 zefedwduer|(A!D#^?t+gZ@jDD?rYB!zi(z0H0twvi;GDfgjS}r*Gqy+*u_sOfxY$D z(r_i;3MNzMlQ>6YZ@uoe(**W@ zKnfhm=}L$)k36{2X}MjQw&4dafOiuzU8f$j;6sG;DvIc7_n5zhmr8K|sR|8a#I$lB zKni%iJ9WF+8)<9fELYA*NGO;){_IgJAVw8D@Q(Pw4;jYl?IJQ9z%r60dh2^X!?Bsq zEL01MZo*;o^7L`yPIPTCWr;956_e#6KIe5h2KCxUEwJ}qFs>HSF2N%)u9)l$rxe$Tfcs>wP4 zMG_AIR6cVQLbErKqg|e9*Sm}gr3N8rrk5j<)~dsm>DuD5IMkNxUvU*$)qkI?)?@Ke zUd+fwKZ$_l4T-~Pa{QND+HT{Uy-`lia6D2@cj+JE(pdo6yKPS{m-EAH5}z-ZkbvNQ zh|n*|p5%wf+zP0Rj`2^vMFczNMA0lrl(M&8PzJr9&=E})#eB6lGnY45wx|8hJaFmK zFZOjY0-Q#0Qm0`Fbi<1lN_Xpd z>z&`5r6U;bqRUM8yG4J=Da4|46Rjew^XlC)2lN;VLW z&2sPf7zZE!Y{zuW2W5eq?N%ZF~M zcwAT^t?5vK>*E?pD*`v_ijxL=_qAs={u{dKL~NR}T);jy^} zX%RayX$E`wWmt<;ayvY$#cYva5VTANYx$m_a#G492c#l%`gTK|+NE%EC{!=AQ^Vn( z!cv9N9M>Iu8Tp8RQBBei2VW5Z2L095nVi>kVk|vN8L_i;R;SpS-Aja$#d>{1*>|Q} z=W@p}r{m^V^|`Rphs#YayT_U?{+gE;H9Lio9{OR!M1Y%HYtl18?d-A0Szs?-_C=pWN)Q`CinaUEV@0m0yXO8c zx`LD=$w;RZw;b7TY*}?`U}Z75+Jg`Sj_u`jwmLs7Q_DtfY5fb#$QMV!2kKg zm36vmx+tG6Uu0x5E;^a)CgS~Av-l|?TTuD0W zF*)-G*Jshfp`FJM!ZZv#Ur4;3R`c}5Z$*PTG-A0JO~~EU-Tb_AsENO?yl2{W3-K^` zE&JFHQFX{(m>N4OtJWA=cj_#|&|C9vEp=d}Ct0sPYUw#CPQmUCUUwu#W=6+Jb`qw5 zeJ^M9E7V~{lY?kyitGHNWcQSr=k?%-+(63a&07T?`nttv{V?CYGoxb_|HW+S1Ksv+ zqXH|1R3JXgCfK4kPIn>n{LP2?=@bR&+fxMgcDi~$jUYf)^bs#R>3eY9GNmNISG|!7 z%33Ji_Ez~pps8ki?N^YSZVGadY~s@*=g}zlR^R7=$WhZfv%nUxoh`%$$u%ou8B(nhFtT8R_mDj_IwM#ocmY+ ztCK$K)ND)N5{j!gFnX6Gf#!#+=v~Us72$t=nDERYYmF~4La251<|B;6dpcVG?aSrG zFHp`Ot*+Tw`Q)+s(a(q&IZ%Nb$piV66)FJq8X7!AdTUe)z}}EO02US&>Xfke|HHkm z_}$#&sGLrVVbGjEjg4D=BEDQ-7u0oDMz@pG^hx<8_#-R3Fgb|d^~_P7{O$AURiP4={)4V+l}8Yr;EFX@hqyj?#U{|Pm4eCU#%_%d8j-ssYhB}%MSEO43jAm6wTP) zPKscYy0f37t{c#2ZkFpx4bmYiXE}sbPr02` z)T%u6&~x(u<=O{&E;NfZo4%Vq-2xPsZj&&4ha&#fX3Lj_!!J~pK>ku4rc=jqee(#) z{YTgNeE$PHs;U(Rr=hd{H#oT8ZBDmlwjOCk(E3um+=w}hZS69XnK#!jLy#9RKpC6w zP{ATsZJ$LUO4K)(b*GsWCIWBKFTS?B8C`0d!(X?=PmwY>8Y6}CAI=bd&LRQ=zCL|h zQpf46uxF=kgiI~1wK#CVbD~;;g4k$b(1$gz2Lm;FFtYDAn5ftKc(x${;yPufCAX># zUp`V1u{7=ugnw10c$BEz`;+`quInD?G;;ukIG2)l7ND$oRWG9zvk5RzOAKXg91 zksL%fPI&(IyQ|@%IcJ}=Hl1X?JNq{_Pk?3k{d^_9nJ2Z@@gZyJxt{`?c2zEWW+4Xx z5~S&;GcTH}-uWKdc31=zZ6mIsossM@lR*7df*h!;XvUxK$RUeIbGGmA_OQxgpD?$q zV2_!6grl)rQl4a1L7=;Omm* zY$tZH?o+z-+A{k+M4%MJYtJ>&eYtuaAd3%NHT-Jx{;=Jqgd>6aZeOJZnhHYMvdMk5 zA0Nq#KN*~ijfhT+=ihMK>1rC=vEW}ifM8@!hsvt_%TxS@>k0T|5*H#%r@NLPRH=|y zVs9X(f5ojfQd~s7=w`pnb5g{D>fBpxXiK?iK zrW8X@QY4p~Vs5~hwL5$5yXagmiLo<~5c~G-v~8fX_GNBpp51JRo>s%XUio;7%ZJ0v z>+{=-CFE-}ob4mw#iGaGQaG828xNa^6G>FN%Oq}A5R+0SvYre}N+psFE%>Tmukll2 zt!1=LNpF?8toLm#RA~QP$Lx<(3(jmq3vYQ$gnm`FW4S4vsnu>^VZP`CA4(F!MzD}4tM3o zLn&98N8V1eCGzH~kfKqsiVpJd~Fc|B5?6jVIh+qXS_P*Up%4?CzvMY6q=6xG|TCy{(U?;KR@ z$|NT9<#%yPb2q-%b`)6hbp5e^TJ{}kkV%;+^gpEY?-hgY9xUoZQl@mbKV z0$`i$R%(e*{9WA3`_7=q$jHoh_3p_iHH_ogX~LY47;LpHNXd^M=t`k`?F)y9`tH7w z_OaoB(_`r=C3VB%h1}a<{r+NEzO?Blm%C!`#1AEKMTgIe_o99TLZqrRQ_{(7i zUFY~e>riPwr3#d#}755zl;0d z=r;Uv_%nNa$MOdn8wJcSu{nMAV);Tv4ZI(652q5XHysT7UyZndl;sjtBWwq-30!K_ z{@XmmT}VYmzwuY5SCn=U?Q^X_UJR*~JANo+8hQ`@O81=Pv6abC-i!&_587eB1#&wl@$PO&9Fp(#CF zctNm?ZL?_T?y_l?1cm`9BAc7Mj^V*Dbjd1!`A<)FY_xemNZ#%)mP zER%u;U}>3|yEY=--{FkD{5LOz_Y+G?)S=jt9p^*0cCE5PxggA6Cx{+i)GY zMXw(!Qq18K$7oGksMXn^cF%c*gBQ5=p38;#uJdfC&i|L?C0%mNHM_f-!=$%>ERvp0 z{k@v??)ip)Q4hfTZAzr^jwk@Ye6?Z@ z#-wOno6YPk8C$`^5}55Y9U~NtI$aYO4Gn}&6OkeBIKDr4#{>}D%~c({{TC~o<2($c zUl0I*o!@5dr4sLf2F-tGApe%?6-()P&+jc~_iEx-?|IMz!SCdMGG;1&3%4FEgAT{5 zNK}W`SDP!GWutHtp@k1#EepN8eCI$2qBIi^lh)RfxJ*XI%!J3Sx)_Vry93?c{FDl6 zWARAR2d7>$MK45Z0h`)5OkU&ETCSWaY&P5DyNMi|UM+5WhhC48Cf#0FoQn=uXUDqV zRnCG)@Hk|@rr$rbFm3(;motydkQTDe|A~ECpn>x=D!T0a9Fc$VgQ)EwCabmrCT|ub zLfu#2EtL;*qV2`6Ho1AofXIKDvYm*5TXcN{*JJj=J!%(|(#pt-P zzu}VG>$%b*^6cn4G=|`z47*01n#QP>YBUDwq&`K=QAlLzK^vOTRd$#m}&9hsTDr>m+!gT9|+#ezNdA4 z2K?{SgJT(VUT%kvIV|~AqKT#6Ml!h1?4oelUojN~-3ZMGPL^T9K34FImYh75oX}vE zK6yW&&H&Hr<#TB7`S3cCq%xJh&<^DJv>um&b$r9l*4X@+M3JPJ#+$;(b5f^+a6iHe z(V0!_-bA}||L#*SUl^Gg=kE**w{cc*!9YW*K{H7@{N{DG+8MMokU7|V`}YSG)4p683-=d8Z#L4 zJAE-oBnH*t6gr%W$lhH9z21*|?afz8xzGbZwSuLfwTgKwaSy9$EZGRM@E23Gm4Pm) z`{FV%e>0Vim1&d07j7p$R#g0zF1p71BKe~E%F`wfBfRvK8dnUq-YOloCuZhl>ZL`o zpwDn{szDl}hG!`4+d;DwqM~LJgDOl5fhVi%5F=v$bc5BdR&$O$TlTy9@yyS&qqVBJ zKz);t!RPB+6~XmRSE`N{P>$keEz0MR+MbK!B20 zTPxOAEAYNFKopy{s$>W3GC4njQ*hGhq9Bv z5Exj%>qkxurEI@7Rw3^&4 zDhlv8`@2IbrknZQX#TX#g-eHLQ_#eYwrG*^2mDA$p7O*=QY9z167=x8&F8oa-Sh2A zmu>Gd@%xP3GDU)y6?{w5F74Go(6r!V4QM*Mo-~00wKrE7jefvqQSh6&O~`2h1L|xi z%sczNDUu13wmmC8x*cbiy_K8z8`o)dXhN2f7aT~4D|8h?ONi;ORl6B3{9H~zSulDJ z(uN6#*^skdG4bwC#w|t(`1AFyGd^blrc$$9cbof(vvd&G?G29{u0*&&<)HTpo!D~3 zP1C%W82rIZT5Hkfu$2DrQ!;!WXQe1L4HtUF9nQ9o<;MV_EIZoL*OrwfaI)-Vj^q(Op0_a=v5KSJp{P3WTpd=G}j-^ZC=%-aeFk3U#4 zt~k7OksMRT4Tzpnxc1?QaoBeMb1oSup-k?L7tidCwo8SnbeW%*Qy(wt%dQFtrFpy3 z;)dibtdcW3d(Qc!13~|;kbA{8I@6I}99Lx>1EVi;W>#tYDD~=}hqF+m(E}qQvd+ha1tkDJ?i_U4S){QvB5h~+Q zQ+r7j8mN=X<5r}RjcV`y++E;*>l;i~3upI3v?~KabgCi8C^^bWb-9uH zDGzp%A^n^*N*#;4mC}NyYxrwAT@kNpQWijSkN{Y(sdl}w#?psL@!a1q5&Lh!Jq5F~ zL>fk|(lrb$8j45$QcJG$#bF97+LvpoZ5M39R9ODJCLZqs~R0et^}q1B^3Z>$NhSHk;zApetR#cj(u??CJ`11`f0dq8{cFxJ#TRM zj#P@|Ob#a2*_khyF&MT>DVlk+nTN5bKToN?Kc?-o7}z#3?Ch@T&gnCb(MQ zlX4fo6zn8|=;KEQcZ-y${~+DmW7O)u!*jwdW<2n*&&& zx{dEc?T6#n4asW{bUktqsNfbZpjA;m0n2Fv#mukH{BVFQU9Jx`=qceolEZn5znm)i z+Grb2VWnR+tF-u?r+_X?_H8o(`uibn&zML5kmL$lIDP!^k_d6CxHmTJQ^hChFWe<~4)z?9DU_ zjO}gDTYGlD*rtPEF)y#nzjl?SO_{0+{ZP$tVIs}S;sr~|!u%#&$--h6P0h+e7YrGN zrWo)D!y`FIz3rhZ7v(TQ?S^edb=45vgh|8>uS1Qf1bT^*(K9>^=tJpUd<^T^U%d(b4jsO0U(O{`98l(jGh-!N&%uy<{K}r_u5A)ee=&` zZYQedL*l|H&PMmu!6Lqos@KUFolvKvy-ckbGSAqwwcaS>*;?6)o>!HC9xbREP5#~x zt>W}qC;mp=+_i?MtLSM`Hb83UXrltOEGR?U`~~JCmhEruZg4{pxVYq}=4%)% zS~%htH@07+*Rwe~D(RP5u%Kw!EL~o;a5z-AJ5<4DStThY)#ea1Yu=38EUy*?993cS zl*;m;S!}PBPksILtkcCJdEur=)KPb&N$q-w(`@o{wj1r{cu4@VCcI*JPW!_wzKtHy zbR$`2&-Wm?Z!1J*R$zUN^bexbj(A+N$8KuluZP_lbA&_hJJbfoO!>9*rhlgVkcx}I z>lzy15fMARpBlo##O~u$8T48#<_6_I1C*MTa~1Q5v2x5!N{t6N@n7!W-_dw@68a4& zpN}&ZM4|FLyWB?N#n)^RQc&(kEv~g(ht;h9Jt5&eFD4Y$9 zwOMuir|J$35iEalHe;|p&sWnK_?zPdb;@}*-B;V>{Y))Nm(WrSJj_l6zg493YF|5yCL8B{u=hC0T{Ki+LGIka&LV~ zAon4EkUmR2SkF(0gRp^TbS$%o;g-|i?rt0j@_bque%2F=tWfh|*e!@ziDAqq4v5O9 z8WWHA6hW$S8FjoYrUVHKF9v7Qc2w!kUT+yrQwimKHPA-P2~@n@@my$I>TT-%1Bcib z1HW6F4zYa+w5J0TSpQdkR82|T(ZKTAyn52Qe`0qE|A{_|#u9WnA1e~XVq;>mIqdvI z4m0vb&MT(W%>TvdGMaB96}iobrP*>U7aGsvqde-DIn?q(b^gPEkg#vi z#0kXFtrV-VuX+`~L4CJ$8$!bf>XPSLch%&&Dc9;2>}&cs_#|fIs3E74h!2TVHMvF$NE-ja_5JsL&*n?3 z?rBVRM@yw1U9AoEUKW*e1&GwE>ClqEZ@({q;yPn-);a)tLdeK0XfOc?jxXc;L%IwC zfi^bY_Qz5QK7*_8?*kZ3s$;6iL(I%>1TJJP+`cr~A`4lgG$}-__`o6VU#?RZ~@Fs*M>>zse_<19W zANnc%xIK`3`@TE+g`PKBddWWc2c3Umi@8y1Dpdbq0$Egrq*{PzG%lO%dYeL_XtF-0 zxLEmu01K-O6NZSA@;wWfW~Irejelw1_&>dzGLzG3`AN(ko+Zh`aEnF-lQS z`MQ38UYWkOmRF&|w!|Ue7S{+^z*<*yv}2}0V4%6lE}BOe`VW{UlgkWn^9uQbhQU=6 zAwjE^E`+tJ8y$q1T)u0gT{0XoRl3H%FkSvlg@n1-h)EMFt!0IG)ERG!ys0o8UVPnj z)|@S?xZ(0|Zoa$OAFHmemTExEcpHyYw7Pk>XvP4L1inBT6~Umk`K`&9b#|Rfw-LaI z$x4hP-qxxn59QW1d@7-6UI@%I^b#5+W`Oqp@MPkiN#4~)q|hiqf@W%S*owqREz-VY zC9Sq?nU~GH4I%qp(9^SRRAyrQ7wL+lDOp&d^!RXGshsq$P7&``+|Y)_JTsQ-^$mnY1n3qAawEd5SaACnRB1{~ z!PVVL6q0XvYpEPcCvGrmgcHsWxAv^Nvo}XDL$QNFPA@0m1;3z7STZ$R?2q=|Kde_5 z;!w*kBb8FW7)iwRl~Ip#H=q#)D`-~l_68K-vN^8huje8P40gCZsMWBdWtptJJ}fBK zc75dVHEtjH!uxM&aeA`f*X!f4v#_cU7GG10FQq7wF)_~1oiNKs$aq>;LeqU~CG2@s z-PRF%+*V(|CiBCe;t^SOS@~^;g56c zG%b!!Xn4tKf<_W4jWcD`hPlRMzkk}EZt_we+7Lqf6T^}pV&nQl+gB)=?ZuP$Pmf@m zA%BFio#b-a(2lkKDUIY}w*9-Efza}LFfin}AVr)yEO`b7{f#GdK&K%*&7`q!16g+Y z_pQPk=tN4A3e4v0jzz9FKchJj$yTG;OgWD?Yv|b1Q8}OsCj9RIAbVlmf?D4 z^f8qKS=TeW0368AcI$Asg?5jGrB%e}HG?9yKWCqBrtJ#*Yxg*7(_arsBM!`;*%H!F z@nm!(F2K>>p}89L`Fg~jsDqM zW_PDJNz+1&N`E0?amoV!*c-dgMy!hk?}vaiG~&TxBZE|LC|NjQ{BkwE)u9`IgazC>YY`7ISS3{fl$OMzd4(?}Riga%6;jmX z2DECEZH0dXdMc2$R!|iiEQp2#mG9Ix%{MFBREQ3CqkghWtRc#@Yj4HbV82i6jnD{V za_k~Pv$)4lc|G!hwST|O{fL-CT?=`cBRqQ{ajw4s59v+nW*x@6`8e2Hwmx) zVG!N#VBGqee!ApuG6*w09nRqL&{}!fNj(?{QNud^;OWt=Famwg4E z)*l0AU32;>MJN&9$IAS=BAkvVSlz}0YbH2ntn4dory~ZJDrohXPKV6)FX($>x_|)@ zc4$m0X;r+`Y1oh@Ply?I=_;e@x9jZ?w(~@mC+K;sv&F(E8QjKT$i#mFKDN=%B8IX( z+r3Y&_&xb3BPB;|OHrJM2N+*tGaI#Hb~tRt(dxhM^GsZXSJ)%JWWv3AcGD{H38Y;7 zJ*why*e^HjA=UG??Sy$$7tYg5cprOG5d+~e^oT$#iB0pCT0jFt{-plHww#FBN^Q|# zpG_%)AM2YTg!;=18k5fy3i zY>~t%@Ja(jkI5#j@-4GU8na$YZVM$#fFY-Pf)*9CFXi+-vsTuu@dSD6PFu+My#R3n zK>Z3kX40%fYiU%`)%oL8hdGT6{omPmLLCu#s}E}iLUR5t8EmG>C+zQxYli4~HTx_pj6UfQmcz!hj)UDf*g_Fsi}ds^0wZ)62hl5rin)8Mo$l zh$na0gnok;!3Em8+`Y>((icTRWR!?ytrY?Sn?@AxA1_y0v?uUXd?#3L%yqPX$|_9& z5YlIKcaf;TbctsD5KMzjdq&%Hr>N?0BXniK5g_kV@hpwq<_u>gej-OfoMw0^zX$>R z+0T%STBAYK0yv%lUvObxCL`C@!@IfIPrWGt|KTKBjgXO8R3yI7C^T4KK@`xG0TaizL4GUX2;&(i{~P z9NE93NYHqjFfh%lVVSn!P`A;W5Mnw#9N2?4Es*$qh4E)7(O54JF@){G)QP#7_>0Me z$Vkj7Z|Qt0`L931kjN{hAtP*aK!T|qStnS1RSxV2~MZuiR zB1x|;HwZGjXfgHrevZf!u)4>8ntDmO9#f5|K6TI!T3$g|udN5UOtXVnn_as)Z)S-Ui` zZsVLEpQ3u%Hbq*fPB!z60=*?nX-2@KsH=z)t|KKVeofuCW!3rdXD)Rlm%9q_AX=0{;lA+oN#V zYEgLU$ZGa7z#U3e0z;YgUt~4fo2A8m-d!)cIlyG^zZz2AdxUZd@6bJ^Q3TrG2l zCbfo1M5#B~P}^{4uy`pIZx(#ZF?>SVUn8qn0_mGWH(XTKh)J!|qOxQz)Ea%wfr-@H zs~Nd0zxbQklul95V!25c*qb5VRUS?=4-xmXYbAlNCPSt_$*uw5G|o&;aLv=a%cK@W zATorp#dzsdqJ0rg%>Nj;5p*!q^UnBW-e9)DzgRmWkR>eG&uzY0fd+*2kHA9=onYA| ze4UyTe$8oq;7IwrUF}3XJAf#C72Rn6(-4{P#cn0@pPYuWn_fqlltRsx=<*PKxkpFY z1>~K_k@g3hN3YH>g&_|e*-Ybb(q>2J=c4=q(l3p(5>~s zND}8l;MsR27aK@7INm&>hptu|!OTUmihbUL3%)`p{chad&j3MIf0%uTiBx?^m0pe(?-hb8`3{PqCjK^> z^UZa(!s;@Lk}iSr@`WX=EamK`Z0O#hMDmX1QU*&3na+uSfBOd^R zBzlakHF}f$|M7_JRYF7g|M&Fm{}tT*|F}#48(9ATaqIl_Vg4sa{=b#~UsCJ-M-u)2 zZ!TN$^X~iW9DRH;e^5xUTM_JW{%#0O&>lAUf0^l!2gFr;C!-4Q z-!|m>ByZ7^)w?qq5+5s+Fw{Ie%%c|%Od1GAo44q+U`PN6 z1p~x*GNF1}df^{L;I?vumNv9$EpXX?cy3nc=EBRZSI7MoUINKiM0wgC$arT{Hv}?Y zo&Qb5Nw*9&@XyByWk+|KtUc41G$#xuhwhSu3={!Q7hYH?oQPlp!N9*B*jNvSD%Ij> ziZMEOJj>P~qg8q5b^!_Kpf#SQJ%{#ki79H|v&{UQMz%6JY?O>y84Zt}$5BD7l7a}U z{PecJ^ZC48pUHfmXEiKdcB{Rc+rf1CenlHKt%prWx><(Dj5MwX{7Wd|q+BoizGW2r z6$(gC(bWJ&5-QTE+#7<_=OJldADnE_9>oz<968&tyWWIj?zJ2`I z9Zlm7+t+($6RU&oj`n3t`cLJ)DUZo7Ynw zq?EYKlspZa024m0JL?r?Xyq&#K0CHKIq|d3>F<_gH!%~robGI<&504Nr>)7NNbE)w z^7jY5ofsr!aNqga9%H#2!>-y-{UkF5OgG2HAApfk7$CR0EWS#OmjJa^lc$<60e9Y( zXKxSdG5u;VkS!IQV3a1z9=0d~#~AyubK2i?ZnZ$+kq@^bShOv_7*KEBe5uT=%y_*4}tRkyCaFU~ZHRw99(TYKz;MSeC}RkpZ^ zM*m*{%my?0YIEx*R{aVPKt`te=$&wy;0$W(Vj`@trMl3ljI~Few)MAAt8`kDU;ro` z)w)%K#T$<{s_RzE)v-dxK$Ip^Cd(uU$W{Pd5j_9^G;QeJz4h~Jp-P$*&@2(n;?e*b zhNYymJU*{ihdS+=H>lJ*>M>{b^VyTDd-?%GTG}|@UAyEpP4}(ol^Pwx67u4&JolJ0 z8|!_=2w>ZZ2QGEofPwAj-i+ztSs@9^QfekFJLxRt@VIQXh9OA;04NGLT!Bwr?@=?? zo!UN!&nu(YHXpvdde>!|)-W_psnl}0g2f^Uf?ya%r%`xxoD2-j&~&ek0e_C~UFIxI z82-ca$*U!1o~9-efq)MHN|lOak#x%ADWk?$_8qlr*N%b3p|d79*t^j2jHj8E3qz~k z$Mc-+-#)%qbJ|?Hd=mqt>~nxqSDz3dd|O6_TLYf1gQBjB>QI(C9!% zlN7_!(yVm3E+RTTMaG23rO#WnyX-?0F)u@wVr?OGbFpbyzc#_*ve*I^M@X{yEt>gx z)OL|tNaPvmjqBAcPZl_A_MCCOQ=*@mn24noW>O0?iHSHZ_UY^~y?NZKc%)_DuATeb z<&n{EblOa1OahUTA(y8-zj(@Z+FX0A{S_jBi1$gCg5ChZ$kOGqbU8z*EcJ0y?(xD`!S(I6Hjbq*`ifq);dj2?a7) zOxFf>HC?M$*?pw}G#afgG*lZDq`iHc41LJ}Nn?Gl5CLd))UvIot!-^oDxF$GsWp^J zrLzz-s}4WW>dIBf(XokIW!m$b$Ifk=b!5d59$zRHiOtMROifL$o!b8B=IN-{j~JRd zdHzP3FR^sm06w8gNlB%EPjVz2z8PO+AvBRn%&oW_mc2Ra&x!pjq-1-4--(X9mm*6| zm8WZC@AM7qT4gsi^5Vs(lSX;U6sBnkfrVILAvR4@c*+z{Cyj~BSrnS6Pb#gnyHeSEs=<5ApRsd{N%JIB=`2TNkA-hZrc{C zei?g!J3%40Lf*4D0-9k1$t78Qg2e}tO9O`h@?prkn@^+4wUTHev@jD(%_Urk1CPfw z5sS=BB_fdk2vRH(h=l^NNI;V1dVJ9=z-L(B4#C$CibVn|sfCS|r9>ira_!K#!CmWm zxm94{nwy!<8THeQLEX*GO{?sVURu7OmB_?8MJBeiSYd89cHZJKe=b;IW+t|hS|_Kr z5{jN|+KlzSi~>lPWiH%!+)Qexqgf2eBUu6#htJ~)xLhHd&1V=khea;lb}2*u|t2X*uuT`IOgcxq;nza zYmZ~9?2dL_u;QYIO84_#Wo|xT&R-r~I@jsewcj6qt~N7E_w%`^);5|t73+N&hd^6S zT$NKImQ2lXXp%>;*(?^Dr=yt6EM112PS4OKrz$fuGf#!Y4ro%|rj#wR&dgMhB$>g= zl4oWyG*yAw=5je3*Dh+;v4@#$4U#19pWAZf{Bahmg5Qn(=im)j7b#7{hM;FHE8$%! zz1Y@mJ7J1Pm(JM->vZc108wYpG#UP@4ZaFdW&t$y^B`49hNc)g{??0E z0nNKgBoY812=c|_%Pl-CNCyj!pn7u`%krnp#MENn?k%)V&1hAWRw?AMD>mnDHLCwL zd-~Kle=#(@e8EhoY7P}%xQPkTcFt}*9yg^D-jy=0fx#y)6gpU^TUY4T6>EIC1klLK zwUL)A05A-5W73+(4=)P%JODza)(C9O#|`aWfhh|*JWH$9W&h3q!{x9mJo7*G?Ro9y zT^5_&E3kWI6z-ItTWr1_3$j;?pE0DaqE}L95kZQB*9U zp`m~~!Vp{qLOyAvR#w>jqW};D1%MzZ00cn+AP5QoK~Mk)f&xGg6aa#t01%{9umRw~ j{d-st2=)L7^40Nwnwn(!viLuD00000NkvXXu0mjfsRTGn literal 0 HcmV?d00001 diff --git a/documentation/source/manual/slidecontroller.png b/documentation/source/manual/slidecontroller.png new file mode 100644 index 0000000000000000000000000000000000000000..01e5c86d0b54b86171bc3ddff2612d9557350d36 GIT binary patch literal 92005 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

T8 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 ysmk$&1o2 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 literal 0 HcmV?d00001 diff --git a/documentation/source/manual/thememanager.png b/documentation/source/manual/thememanager.png new file mode 100644 index 0000000000000000000000000000000000000000..be35cadc18afcc013a2cd4cb08bd6d18bc723b61 GIT binary patch literal 31967 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 z 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 Date: Thu, 14 Oct 2010 13:15:02 -0500 Subject: [PATCH 35/36] In EasyWorship song importer, add initial support for non-latin1 encodings --- openlp/plugins/songs/lib/ewimport.py | 68 +++++++++++++++++++++++++--- 1 file changed, 61 insertions(+), 7 deletions(-) diff --git a/openlp/plugins/songs/lib/ewimport.py b/openlp/plugins/songs/lib/ewimport.py index 2db1df375..4188304cd 100644 --- a/openlp/plugins/songs/lib/ewimport.py +++ b/openlp/plugins/songs/lib/ewimport.py @@ -35,7 +35,7 @@ import struct from openlp.core.lib import translate from songimport import SongImport -def strip_rtf(blob): +def strip_rtf(blob, encoding): depth = 0 control = False clear_text = [] @@ -69,12 +69,42 @@ def strip_rtf(blob): if control_str == 'par' or control_str == 'line': clear_text.append(u'\n') elif control_str == 'tab': - clear_text.append(u'\n') + clear_text.append(u'\t') + # Prefer the encoding specified by the RTF data to that + # specified by the Paradox table header + # West European encoding + elif control_str == 'fcharset0': + encoding = u'cp1252' + # Greek encoding + elif control_str == 'fcharset161': + encoding = u'cp1253' + # Turkish encoding + elif control_str == 'fcharset162': + encoding = u'cp1254' + # Vietnamese encoding + elif control_str == 'fcharset163': + encoding = u'cp1258' + # Hebrew encoding + elif control_str == 'fcharset177': + encoding = u'cp1255' + # Arabic encoding + elif control_str == 'fcharset178': + encoding = u'cp1256' + # Baltic encoding + elif control_str == 'fcharset186': + encoding = u'cp1257' + # Cyrillic encoding + elif control_str == 'fcharset204': + encoding = u'cp1251' + # Thai encoding + elif control_str == 'fcharset222': + encoding = u'cp874' + # Central+East European encoding + elif control_str == 'fcharset238': + encoding = u'cp1250' elif control_str[0] == '\'': - # Really should take RTF character set into account but - # for now assume ANSI (Windows-1252) and call it good s = chr(int(control_str[1:3], 16)) - clear_text.append(s.decode(u'windows-1252')) + clear_text.append(s.decode(encoding)) del control_word[:] if c == '\\' and new_control: control = True @@ -126,6 +156,30 @@ class EasyWorshipSongImport(SongImport): db_file.close() self.memo_file.close() return False + # Take a stab at how text is encoded + self.encoding = u'cp1252' + db_file.seek(106) + code_page, = struct.unpack(' Date: Thu, 14 Oct 2010 20:15:55 -0500 Subject: [PATCH 36/36] Cleaned up the file structure with adding a folder for the screenshots. Added the documentation for dual monitors. Still missing documentation for OS X and for Nvidia and ATI cards in Linux that require a proprietary driver --- documentation/source/manual/dualmonitors.rst | 127 ++++++++++++++++++ documentation/source/manual/glossary.rst | 14 +- documentation/source/manual/index.rst | 1 + documentation/source/manual/pics/dvi.png | Bin 0 -> 19116 bytes documentation/source/manual/pics/gnome.png | Bin 0 -> 33644 bytes .../source/manual/pics/kdedisplay.png | Bin 0 -> 65252 bytes .../source/manual/pics/kdesystemsettings.png | Bin 0 -> 114445 bytes .../source/manual/{ => pics}/mainwindow.png | Bin .../source/manual/{ => pics}/mediamanager.png | Bin .../source/manual/{ => pics}/preview.png | Bin .../manual/{ => pics}/servicemanager.png | Bin .../manual/{ => pics}/slidecontroller.png | Bin .../source/manual/{ => pics}/thememanager.png | Bin documentation/source/manual/pics/vga.png | Bin 0 -> 7322 bytes .../manual/pics/vistadisplaysettings.png | Bin 0 -> 51854 bytes .../source/manual/pics/vistapersonalize.png | Bin 0 -> 142367 bytes .../source/manual/pics/winsevendisplay.png | Bin 0 -> 158561 bytes .../source/manual/pics/winsevenresolution.png | Bin 0 -> 144698 bytes .../source/manual/pics/xpdisplaysettings.png | Bin 0 -> 24927 bytes 19 files changed, 135 insertions(+), 7 deletions(-) create mode 100644 documentation/source/manual/dualmonitors.rst create mode 100644 documentation/source/manual/pics/dvi.png create mode 100644 documentation/source/manual/pics/gnome.png create mode 100644 documentation/source/manual/pics/kdedisplay.png create mode 100644 documentation/source/manual/pics/kdesystemsettings.png rename documentation/source/manual/{ => pics}/mainwindow.png (100%) rename documentation/source/manual/{ => pics}/mediamanager.png (100%) rename documentation/source/manual/{ => pics}/preview.png (100%) rename documentation/source/manual/{ => pics}/servicemanager.png (100%) rename documentation/source/manual/{ => pics}/slidecontroller.png (100%) rename documentation/source/manual/{ => pics}/thememanager.png (100%) create mode 100644 documentation/source/manual/pics/vga.png create mode 100755 documentation/source/manual/pics/vistadisplaysettings.png create mode 100755 documentation/source/manual/pics/vistapersonalize.png create mode 100755 documentation/source/manual/pics/winsevendisplay.png create mode 100755 documentation/source/manual/pics/winsevenresolution.png create mode 100644 documentation/source/manual/pics/xpdisplaysettings.png diff --git a/documentation/source/manual/dualmonitors.rst b/documentation/source/manual/dualmonitors.rst new file mode 100644 index 000000000..3e182998d --- /dev/null +++ b/documentation/source/manual/dualmonitors.rst @@ -0,0 +1,127 @@ +================== +Dual Monitor Setup +================== + +The first step in getting OpenLP working on your system is to setup your +computer properly for dual monitors. This is not very difficult, but the steps +do vary depending on operating system. + +Most modern computers do have the ability for dual monitors. To be certain +check your computer's documentation. A typical desktop computer capable of dual +monitors will have two of, or a combination of the two connectors below. + +**VGA** + +.. image:: /pics/vga.png + +**DVI** + +.. image:: /pics/dvi.png + +A laptop computer setup only varies slightly, generally you will need only one +of outputs pictured above since your laptops screen serves as one of the +monitors. Sometimes with older laptops a key stroke generally involving the FN +key and another key is required to enable the second monitor on laptops. + +Some computers also incorporate the use of S-Video or HDMI connections. + +A typical OpenLP set up consist of your normal single monitor setup, with your +projector setup as the second monitor. With the option of extending your +desktop across the second monitor, or your operating system's equivalent. + +Microsoft Windows +----------------- + +Dual monitor setup is similar among all the currently supported Windows +releases (XP, Vista, Windows 7), but does vary slightly from one release to the +next. + +Windows 7 +^^^^^^^^^ + +Windows 7 has using a projector in mind. Simply connect your projector and +press the **Windows key and tap P**. + +The more traditional way is also fairly straight forward. Go to the control +panel and click on display. This will open up the Display options. You can +also bypass this step by right click on a blank area on your desktop and +selecting **resolution**. + +.. image:: /pics/winsevendisplay.png + +Then click on the Screen Resolution from the left pane. + +.. image:: /pics/winsevenresolution.png + +Then enable your projector and ensure your desktop is extended. + +Windows Vista +^^^^^^^^^^^^^ + +From the control panel click on personalize, or right click a blank place on +the desktop and click personalization. + +.. image:: /pics/vistapersonalize.png + +From the **Personalization** window click on Display Settings. + +.. image:: /pics/vistadisplaysettings.png + +Then enable the montior that represents your projector an make sure your +you have checked Extend the desktop. + +Windows XP +^^^^^^^^^^ + +From the control panel select Display, or right click on a blank area of the +desktop and select properties. From the properties window click on the settings +tab. + +.. image:: /pics/xpdisplaysettings.png + +Then enable the monitor that represents your projector an make sure your +you have checked Extend the desktop. + +Linux +----- + +Due to the vast varieties of hardware, distributions, desktops, and drivers +this is not an exhaustive guide to dual monitor setup on Linux. This guide +assumes that you have properly set up any proprietary drivers if needed. You +should seek out your distributions documentation if this general guide does not +work. + +GNOME +^^^^^ + +This guide is for users of the GNOME desktop who do not use proprietary drivers. +From most distros go to System --> Preferences --> Display Settings (Monitors) + +.. image:: /pics/gnome.png + +Setup your projector with the correct resolution and make sure you do **not** +have mirrored desktop enabled (same image on all monitors). + +KDE +^^^ + +This guide is for users of the KDE desktop who do not use proprietary drivers. +From most distros click the Kick Off menu and navigate to **system settings** + +.. image:: /pics/kdesystemsettings.png + +Click on the display and monitor icon. + +.. image:: /pics/kdedisplay.png + +From here you will need to set up your projector with the appropriate +resolution, and position. OpenLP works best projecting to the monitor on the +right. + + + + + + + + diff --git a/documentation/source/manual/glossary.rst b/documentation/source/manual/glossary.rst index 2d4224b5d..c4a14e94e 100644 --- a/documentation/source/manual/glossary.rst +++ b/documentation/source/manual/glossary.rst @@ -11,7 +11,7 @@ Main Window The Main Window is what you will see when you first open OpenLP -.. image:: mainwindow.png +.. image:: /pics/mainwindow.png The Main Window contains all the tools and plugins that make OpenLP function @@ -21,7 +21,7 @@ Media Manager The Media Manager contains a number of tabs that plugins supply to OpenLP. Each tab in the Media Manager is called a **Media Item** -.. image:: mediamanager.png +.. image:: /pics/mediamanager.png From the Media Manager you can send Media Items to the Preview or Live screens. @@ -31,7 +31,7 @@ Preview The preview pane is a section to preview your media items before you go live with them. -.. image:: preview.png +.. image:: /pics/preview.png Service File ------------ @@ -47,11 +47,11 @@ A service item are the **media items** that are in the **service manager** Service Manger -------------- -The service manager contains the media items in your service file.This is the +The service manager contains the media items in your service file. This is the area from wich your media items go live, and you can also save, open, and edit services files. -.. image:: servicemanager.png +.. image:: /pics/servicemanager.png Slide Controller ---------------- @@ -59,7 +59,7 @@ Slide Controller The Slide Controller controls which slide from a **Service Item** is currently being displayed, and moving between the various slides. -.. image:: slidecontroller.png +.. image:: /pics/slidecontroller.png Theme Manager ------------- @@ -67,4 +67,4 @@ Theme Manager The theme manager is where themes are created and edited. Themes are the text styles backgrounds that you use to personalize your services. -.. image:: thememanager.png +.. image:: /pics/thememanager.png diff --git a/documentation/source/manual/index.rst b/documentation/source/manual/index.rst index d357a398b..180555cbb 100644 --- a/documentation/source/manual/index.rst +++ b/documentation/source/manual/index.rst @@ -13,6 +13,7 @@ Contents: introduction glossary + dualmonitors Indices and tables ================== diff --git a/documentation/source/manual/pics/dvi.png b/documentation/source/manual/pics/dvi.png new file mode 100644 index 0000000000000000000000000000000000000000..bc9e345b31027aaf60d2b58127237b6ca3d6238d GIT binary patch literal 19116 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 Lx?J7`Q{VpsL8t^O literal 0 HcmV?d00001 diff --git a/documentation/source/manual/pics/gnome.png b/documentation/source/manual/pics/gnome.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea060b7a78d17dd0d2c9d87951f4e2dfa0beabc GIT binary patch literal 33644 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