diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 491f3e652..89eeb6ad4 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -274,8 +274,8 @@ def check_directory_exists(dir): from listwidgetwithdnd import ListWidgetWithDnD from displaytags import DisplayTags -from spelltextedit import SpellTextEdit from eventreceiver import Receiver +from spelltextedit import SpellTextEdit from imagemanager import ImageManager from settingsmanager import SettingsManager from plugin import PluginStatus, StringContent, Plugin diff --git a/openlp/core/lib/spelltextedit.py b/openlp/core/lib/spelltextedit.py index 95befad09..a99539775 100644 --- a/openlp/core/lib/spelltextedit.py +++ b/openlp/core/lib/spelltextedit.py @@ -36,7 +36,9 @@ except ImportError: # http://john.nachtimwald.com/2009/08/22/qplaintextedit-with-in-line-spell-check from PyQt4 import QtCore, QtGui + from openlp.core.lib import translate, DisplayTags +from openlp.core.lib.ui import checkable_action log = logging.getLogger(__name__) @@ -80,6 +82,19 @@ class SpellTextEdit(QtGui.QPlainTextEdit): if not cursor.hasSelection(): cursor.select(QtGui.QTextCursor.WordUnderCursor) self.setTextCursor(cursor) + # Add menu with available languages. + if ENCHANT_AVAILABLE: + lang_menu = QtGui.QMenu( + translate('OpenLP.SpellTextEdit', 'Language:')) + for lang in enchant.list_languages(): + action = checkable_action( + lang_menu, lang, lang == self.dictionary.tag) + action.setText(lang) + lang_menu.addAction(action) + popupMenu.insertSeparator(popupMenu.actions()[0]) + popupMenu.insertMenu(popupMenu.actions()[0], lang_menu) + QtCore.QObject.connect(lang_menu, + QtCore.SIGNAL(u'triggered(QAction*)'), self.setLanguage) # Check if the selected word is misspelled and offer spelling # suggestions if it is. if ENCHANT_AVAILABLE and self.textCursor().hasSelection(): @@ -93,19 +108,30 @@ class SpellTextEdit(QtGui.QPlainTextEdit): spell_menu.addAction(action) # Only add the spelling suggests to the menu if there are # suggestions. - if len(spell_menu.actions()) != 0: - popupMenu.insertSeparator(popupMenu.actions()[0]) + if len(spell_menu.actions()): popupMenu.insertMenu(popupMenu.actions()[0], spell_menu) tagMenu = QtGui.QMenu(translate('OpenLP.SpellTextEdit', 'Formatting Tags')) for html in DisplayTags.get_html_tags(): - action = SpellAction( html[u'desc'], tagMenu) + action = SpellAction(html[u'desc'], tagMenu) action.correct.connect(self.htmlTag) tagMenu.addAction(action) popupMenu.insertSeparator(popupMenu.actions()[0]) popupMenu.insertMenu(popupMenu.actions()[0], tagMenu) popupMenu.exec_(event.globalPos()) + def setLanguage(self, action): + """ + Changes the language for this spelltextedit. + + ``action`` + The action. + """ + self.dictionary = enchant.Dict(action.text()) + self.highlighter.spellingDictionary = self.dictionary + self.highlighter.highlightBlock(self.toPlainText()) + self.highlighter.rehighlight() + def correctWord(self, word): """ Replaces the selected text with word. diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index 3365b32a0..d54135937 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -87,7 +87,6 @@ class UiStrings(object): OpenService = translate('OpenLP.Ui', 'Open Service') Preview = translate('OpenLP.Ui', 'Preview') PreviewPanel = translate('OpenLP.Ui', 'Preview Panel') - PreviewToolbar = translate('OpenLP.Ui', 'Preview Toolbar') PrintServiceOrder = translate('OpenLP.Ui', 'Print Service Order') ReplaceBG = translate('OpenLP.Ui', 'Replace Background') ReplaceLiveBG = translate('OpenLP.Ui', 'Replace Live Background') @@ -427,4 +426,4 @@ def find_and_set_in_combo_box(combo_box, value_to_find): if index == -1: # Not Found. index = 0 - combo_box.setCurrentIndex(index) \ No newline at end of file + combo_box.setCurrentIndex(index) diff --git a/openlp/core/ui/printserviceform.py b/openlp/core/ui/printserviceform.py index 01b937d61..0de20d8a9 100644 --- a/openlp/core/ui/printserviceform.py +++ b/openlp/core/ui/printserviceform.py @@ -222,6 +222,7 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog): unicode(datetime.timedelta(seconds=tme)), title) # Add the custom service notes: if self.footerTextEdit.toPlainText(): + div = self._addChildToParent(u'div', parent=html_data.body) self._addChildToParent(u'span', translate('OpenLP.ServiceManager', u'Custom Service Notes:'), div, u'class', u'customNotesTitle') self._addChildToParent( diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 4f5ed1ea7..7a26bea19 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -368,10 +368,8 @@ class SlideController(QtGui.QWidget): self.previousItem.setObjectName(u'previousItemPreview') self.nextItem.setObjectName(u'nextItemPreview') action_list = ActionList.get_instance() - action_list.add_category( - UiStrings.PreviewToolbar, CategoryOrder.standardToolbar) - action_list.add_action(self.previousItem, UiStrings.PreviewToolbar) - action_list.add_action(self.nextItem, UiStrings.PreviewToolbar) + action_list.add_action(self.previousItem) + action_list.add_action(self.nextItem) def setLiveHotkeys(self, parent=None): self.previousItem.setObjectName(u'previousItemLive') @@ -379,8 +377,8 @@ class SlideController(QtGui.QWidget): action_list = ActionList.get_instance() action_list.add_category( UiStrings.LiveToolbar, CategoryOrder.standardToolbar) - action_list.add_action(self.previousItem, UiStrings.LiveToolbar) - action_list.add_action(self.nextItem, UiStrings.LiveToolbar) + action_list.add_action(self.previousItem) + action_list.add_action(self.nextItem) self.previousService = shortcut_action(parent, u'previousService', [QtCore.Qt.Key_Left], self.servicePrevious, UiStrings.LiveToolbar) self.previousService.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut)