← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~trb143/openlp/bugfixes into lp:openlp

 

Tim Bentley has proposed merging lp:~trb143/openlp/bugfixes into lp:openlp.

Requested reviews:
    openlp.org Core (openlp-core)

Complete removal of EventManager.
With 2 event mechanisms in the application it has been agreed we only need one.
Remove the home grown one and replace it with the QT Slot version.
All references have been converted and tested.
-- 
https://code.launchpad.net/~trb143/openlp/bugfixes/+merge/10716
Your team openlp.org Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/lib/__init__.py'
--- openlp/core/lib/__init__.py	2009-07-08 17:18:48 +0000
+++ openlp/core/lib/__init__.py	2009-08-26 05:00:19 +0000
@@ -60,12 +60,9 @@
 from settingsmanager import SettingsManager
 from pluginconfig import PluginConfig
 from plugin import Plugin
-from eventmanager import EventManager
 from pluginmanager import PluginManager
 from settingstab import SettingsTab
 from mediamanageritem import MediaManagerItem
-from event import Event
-from event import EventType
 from xmlrootclass import XmlRootClass
 from serviceitem import ServiceItem
 from eventreceiver import Receiver

=== removed file 'openlp/core/lib/event.py'
--- openlp/core/lib/event.py	2009-08-15 07:33:01 +0000
+++ openlp/core/lib/event.py	1970-01-01 00:00:00 +0000
@@ -1,51 +0,0 @@
-# -*- coding: utf-8 -*-
-# vim: autoindent shiftwidth=4 expandtab textwidth=80
-"""
-OpenLP - Open Source Lyrics Projection
-
-Copyright (c) 2008 Raoul Snyman
-
-Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley, Scott Guerreri,
-Carsten Tingaard, Jonathan Corwin
-
-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
-"""
-
-class EventType(object):
-    """
-    Types of events are stored in this class.
-    """
-    # "Default" event - a non-event
-    Default = 0
-    TriggerAlert = 1
-    # General application events
-    Ready = 10
-    # Service events
-    LoadServiceItem = 20
-    # Preview events
-    PreviewShow = 30
-    LiveShow = 31
-    #Theme Related Events
-    ThemeListChanged = 40
-    #Plugin Related Events
-    LoadSongList = 50
-
-
-class Event(object):
-    """
-    Provides an Event class to encapsulate events within openlp.org.
-    """
-    def __init__(self, sender, event_type=EventType.Default,  payload=None):
-        self.event_type = event_type
-        self.payload = payload
-        self.sender = sender

=== removed file 'openlp/core/lib/eventmanager.py'
--- openlp/core/lib/eventmanager.py	2009-08-12 04:57:24 +0000
+++ openlp/core/lib/eventmanager.py	1970-01-01 00:00:00 +0000
@@ -1,72 +0,0 @@
-# -*- coding: utf-8 -*-
-# vim: autoindent shiftwidth=4 expandtab textwidth=80
-"""
-OpenLP - Open Source Lyrics Projection
-
-Copyright (c) 2008 Raoul Snyman
-
-Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley, Scott Guerreri,
-Carsten Tingaard, Jonathan Corwin
-
-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
-"""
-import os
-import logging
-
-class EventManager(object):
-    """
-    A mechanism to send events to all registered endpoints. The
-    endpoints are registered and listen with a handle_event method.
-    The endpoint will decide whether to do somthing with the event or
-    ignore it.
-    """
-    global log
-    log = logging.getLogger(u'EventManager')
-
-    def __init__(self):
-        """
-        Defines the class and a list of endpoints
-        """
-        self.endpoints = []
-        log.info(u'Initialising')
-        self.processing = False
-        self.events = []
-
-    def register(self, plugin):
-        """
-        Called by plugings who wish to receive event notifications
-        """
-        log.debug(u'Class %s registered with EventManager', plugin)
-        self.endpoints.append(plugin)
-
-    def post_event(self, event):
-        """
-        Called by any part of the system which wants send events to the plugins
-
-        ``event``
-            The event type to be triggered
-
-        """
-        log.debug(u'post event called for event %s (%s)', event.event_type, event.sender)
-        self.events.append(event)
-        if not self.processing:
-            self.processing = True
-            while len(self.events) > 0:
-                pEvent = self.events[0]
-                for point in self.endpoints:
-                    status = point.handle_event(pEvent)
-                    #if call returns true message is finished with
-                    if status is not None and status :
-                        break
-                self.events.remove(pEvent)
-            self.processing = False

=== modified file 'openlp/core/lib/eventreceiver.py'
--- openlp/core/lib/eventreceiver.py	2009-08-24 05:10:04 +0000
+++ openlp/core/lib/eventreceiver.py	2009-08-26 05:00:19 +0000
@@ -18,6 +18,7 @@
 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
 
@@ -25,11 +26,39 @@
     """
     Class to allow events to be passed from different parts of the system.
     This is a private class and should not be used directly but via the Receiver class
+
+    ``stop_import``
+        Stops the Bible Import
+    ``pre_load_bibles``
+        Triggers the plugin to relaod the bible lists
+    ``process_events``
+        Requests the Application to flush the events queue
+    ``{preview|live}_slide_first``
+        display the first slide on the list
+    ``{preview|live}_slide_previous``
+        display the previous slide on the list
+    ``{preview|live}_slide_next``
+        display the next slide on the list
+    ``{preview|live}_slide_last``
+        display the last slide on the list
+    ``{plugin}_add_service_item ``
+        ask the plugin to push the selected items to the service item
+    ``update_themes ``
+        send out message with new themes
+    ``update_global_theme ``
+        Tell the components we have a new global theme
+    ``load_song_list``
+        Tells the the song plugin to reload the song list
+
     """
+    global log
+    log = logging.getLogger(u'EventReceiver')
+
     def __init__(self):
         QtCore.QObject.__init__(self)
 
     def send_message(self, event, msg=None):
+        log.debug(u'Event %s passed with payload %s' % (event, msg))
         self.emit(QtCore.SIGNAL(event), msg)
 
 class Receiver():
@@ -39,11 +68,11 @@
     As there is only one instance of it in the systems the QT signal/slot architecture
     can send messages across the system
 
-    Send message
-       Receiver().send_message(u'messageid',data)
+    ``Send message``
+       Receiver().send_message(u'<<Message ID>>', data)
 
-    Receive Message
-        QtCore.QObject.connect(Receiver().get_receiver(),QtCore.SIGNAL(u'openlprepaint'),<<ACTION>>)
+    ``Receive Message``
+        QtCore.QObject.connect(Receiver().get_receiver(),QtCore.SIGNAL(u'<<Message ID>>'),<<ACTION>>)
     """
     eventreceiver = EventReceiver()
 

=== modified file 'openlp/core/lib/plugin.py'
--- openlp/core/lib/plugin.py	2009-08-15 11:02:24 +0000
+++ openlp/core/lib/plugin.py	2009-08-26 05:00:19 +0000
@@ -19,12 +19,13 @@
 """
 
 import logging
+from PyQt4 import QtCore
 
 from openlp.core.lib import PluginConfig
 # why does this not work???
 # from openlp.core.lib import Event,  EventType
 # so I have to do this???
-from event import Event, EventType
+from eventreceiver import Receiver
 
 class Plugin(object):
     """
@@ -122,11 +123,11 @@
         self.log = logging.getLogger(self.name)
         self.preview_controller = plugin_helpers[u'preview']
         self.live_controller = plugin_helpers[u'live']
-        self.event_manager = plugin_helpers[u'event']
         self.render_manager = plugin_helpers[u'render']
         self.service_manager = plugin_helpers[u'service']
         self.settings = plugin_helpers[u'settings']
-        self.dnd_id=None
+        QtCore.QObject.connect(Receiver.get_receiver(),
+            QtCore.SIGNAL(u'%s_add_service_item'% self.name), self.process_add_service_event)
 
     def check_pre_conditions(self):
         """
@@ -177,29 +178,13 @@
         """
         pass
 
-    def handle_event(self, event):
-        """
-        Handle the event contained in the event object.  If you want
-        to use this default behaviour, you must set self.dnd_id equal
-        to that sent by the dnd source - eg the MediaItem
-
-        ``event``
-            An object describing the event.
-        """
-        # default behaviour - can be overridden if desired
-        log.debug(u'Handle event called with event %s with payload %s'%(event.event_type, event.payload))
-        if event.event_type == EventType.LoadServiceItem and event.payload == self.dnd_id:
-            log.debug(u'Load Service Item received')
-            self.media_item.onAddClick()
-            return True
-        if event.event_type == EventType.PreviewShow and event.payload == self.dnd_id:
-            log.debug(u'Load Preview Item received')
-            self.media_item.onPreviewClick()
-            return True
-        if event.event_type == EventType.LiveShow and event.payload == self.dnd_id:
-            log.debug(u'Load Live Show Item received')
-            return True
-            self.media_item.onLiveClick()
+    def process_add_service_event(self):
+        """
+        Proxy method as method is not defined early enough
+        in the processing
+        """
+        log.debug(u'process_add_service_event event called for plugin %s' % self.name)
+        self.media_item.onAddClick()
 
     def about(self):
         """
@@ -208,38 +193,6 @@
         """
         pass
 
-    def save(self, data):
-        """
-        Service item data is passed to this function, which should return a
-        string which can be written to the service file.
-
-        ``data``
-            The data to be saved.
-        """
-        pass
-
-    def load(self, string):
-        """
-        A string from the service file is passed in. This function parses and
-        sets up the internals of the plugin.
-
-        ``string``
-            The data to be loaded into the plugin.
-        """
-        pass
-
-    def render(self, theme, screen=None):
-        """
-        Render the screenth screenful of data using theme settings in theme.
-
-        ``theme``
-            The theme to use when rendering.
-
-        ``screen``
-            Defaults to *None*. The screen to render to.
-        """
-        pass
-
     def initialise(self):
         """
         Called by the plugin Manager to initialise anything it needs.

=== modified file 'openlp/core/lib/pluginmanager.py'
--- openlp/core/lib/pluginmanager.py	2009-08-15 07:55:16 +0000
+++ openlp/core/lib/pluginmanager.py	2009-08-26 05:00:19 +0000
@@ -21,7 +21,7 @@
 import sys
 import logging
 
-from openlp.core.lib import Plugin, EventManager
+from openlp.core.lib import Plugin
 
 class PluginManager(object):
     """
@@ -50,7 +50,7 @@
         # this has to happen after the UI is sorted self.find_plugins(dir)
         log.info(u'Plugin manager done init')
 
-    def find_plugins(self, dir, plugin_helpers, eventmanager):
+    def find_plugins(self, dir, plugin_helpers):
         """
         Scan the directory dir for objects inheriting from ``openlp.plugin``.
 
@@ -60,8 +60,6 @@
         ``plugin_helpers``
             A list of helper objects to pass to the plugins.
 
-        ``eventmanager``
-            The event manager to pass to the plugins.
         """
         self.plugin_helpers = plugin_helpers
         startdepth = len(os.path.abspath(dir).split(os.sep))
@@ -103,11 +101,9 @@
             pList = {u'plugin': plugin,  u'status': u'Inactive'}
             if plugin.check_pre_conditions():
                 log.debug(u'Plugin %s active', unicode(plugin.name))
-                eventmanager.register(plugin)
                 pList[u'status'] = u'Active'
             self.plugins.append(pList)
 
-
     def order_by_weight(self, x, y):
         """
         Sort two plugins and order them by their weight.

=== modified file 'openlp/core/ui/amendthemeform.py'
--- openlp/core/ui/amendthemeform.py	2009-08-07 17:19:32 +0000
+++ openlp/core/ui/amendthemeform.py	2009-08-26 05:00:19 +0000
@@ -32,11 +32,9 @@
     def __init__(self, thememanager, parent=None):
         QtGui.QDialog.__init__(self, parent)
         self.thememanager = thememanager
-        # Needed here as UI setup generates Events
         self.path = None
         self.theme = ThemeXML()
         self.setupUi(self)
-
         #define signals
         #Buttons
         QtCore.QObject.connect(self.Color1PushButton ,

=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py	2009-08-24 04:30:04 +0000
+++ openlp/core/ui/maindisplay.py	2009-08-26 05:00:19 +0000
@@ -21,7 +21,7 @@
 from PyQt4 import QtCore, QtGui
 
 from time import sleep
-from openlp.core.lib import translate,  EventManager,  Event,  EventType,  Receiver
+from openlp.core.lib import translate,  Receiver
 
 class MainDisplay(QtGui.QWidget):
     """
@@ -58,20 +58,10 @@
         self.alertactive = False
         self.alertTab = None
         self.timer_id = 0
-        # Register the main form as an event consumer.
-        self.parent.EventManager.register(self)
         QtCore.QObject.connect(Receiver.get_receiver(),
             QtCore.SIGNAL(u'live_slide_blank'), self.blankDisplay)
-
-    def handle_event(self, event):
-        """
-        Accept Events for the system and If It's for Alert
-        action it and Return true to stop futher processing
-        """
-        log.debug(u'MainDisplay received event %s with payload %s'%(event.event_type, event.payload))
-        if event.event_type == EventType.TriggerAlert:
-            self.displayAlert(event.payload)
-            return True
+        QtCore.QObject.connect(Receiver.get_receiver(),
+            QtCore.SIGNAL(u'alert_text'), self.displayAlert)
 
     def setup(self, screenNumber):
         """

=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py	2009-08-15 11:02:24 +0000
+++ openlp/core/ui/mainwindow.py	2009-08-26 05:00:19 +0000
@@ -26,8 +26,8 @@
     ServiceManager, ThemeManager, MainDisplay, SlideController,  \
     PluginForm
 from openlp.core.lib import translate, Plugin, MediaManagerItem, \
-    SettingsTab, EventManager, RenderManager, PluginConfig, \
-    SettingsManager, PluginManager, EventType
+    SettingsTab, RenderManager, PluginConfig, \
+    SettingsManager, PluginManager, Receiver
 
 class Ui_MainWindow(object):
     def setupUi(self, MainWindow):
@@ -416,7 +416,6 @@
         self.screenList = screens
         self.oosNotSaved = False
         self.settingsmanager = SettingsManager(screens)
-        self.EventManager = EventManager()
         self.mainDisplay = MainDisplay(self, screens)
         self.generalConfig = PluginConfig(u'General')
         self.alertForm = AlertForm(self)
@@ -458,6 +457,8 @@
             QtCore.SIGNAL(u'triggered()'), self.onPluginItemClicked)
         QtCore.QObject.connect(self.OptionsSettingsItem,
             QtCore.SIGNAL(u'triggered()'), self.onOptionsSettingsItemClicked)
+        QtCore.QObject.connect(Receiver.get_receiver(),
+            QtCore.SIGNAL(u'update_global_theme'), self.defaultThemeChanged)
         #warning cyclic dependency
         #RenderManager needs to call ThemeManager and
         #ThemeManager needs to call RenderManager
@@ -467,12 +468,10 @@
         #make the controllers available to the plugins
         self.plugin_helpers[u'preview'] = self.PreviewController
         self.plugin_helpers[u'live'] = self.LiveController
-        self.plugin_helpers[u'event'] = self.EventManager
         self.plugin_helpers[u'render'] = self.RenderManager
         self.plugin_helpers[u'service'] = self.ServiceManagerContents
         self.plugin_helpers[u'settings'] = self.settingsForm
-        self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers,
-            self.EventManager)
+        self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers)
         # hook methods have to happen after find_plugins. Find plugins needs the
         # controllers hence the hooks have moved from setupUI() to here
 
@@ -490,8 +489,6 @@
         # Call the initialise method to setup plugins.
         log.info(u'initialise plugins')
         self.plugin_manager.initialise_plugins()
-        # Register the main form as an event consumer.
-        self.EventManager.register(self)
         # Once all components are initialised load the Themes
         log.info(u'Load Themes')
         self.ThemeManagerContents.loadThemes()
@@ -593,9 +590,5 @@
             title = u'%s - %s*' % (self.mainTitle, service_name)
         self.setWindowTitle(title)
 
-    def handle_event(self, event):
-        if event.event_type == EventType.ThemeListChanged:
-            self.ServiceManagerContents.updateThemeList(event.payload)
-            self.settingsForm.ThemesTab.updateThemeList(event.payload)
-            self.DefaultThemeLabel.setText(self.defaultThemeText + \
-                self.ThemeManagerContents.getDefault())
+    def defaultThemeChanged(self, theme):
+        self.DefaultThemeLabel.setText(self.defaultThemeText + theme)

=== modified file 'openlp/core/ui/servicemanager.py'
--- openlp/core/ui/servicemanager.py	2009-08-15 07:33:01 +0000
+++ openlp/core/ui/servicemanager.py	2009-08-25 05:18:09 +0000
@@ -24,9 +24,9 @@
 import shutil
 
 from PyQt4 import QtCore, QtGui
-from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, Event, \
-    RenderManager, EventType, EventManager, translate, buildIcon, \
-    contextMenuAction, contextMenuSeparator
+from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, \
+    RenderManager, translate, buildIcon, \
+    contextMenuAction, contextMenuSeparator,  Receiver
 from openlp.core.utils import ConfigHelper
 
 class ServiceManagerList(QtGui.QTreeWidget):
@@ -66,6 +66,7 @@
 class Iter(QtGui.QTreeWidgetItemIterator):
   def __init__(self, *args):
         QtGui.QTreeWidgetItemIterator.__init__(self, *args)
+
   def next(self):
         self.__iadd__(1)
         value = self.value()
@@ -158,6 +159,8 @@
            QtCore.SIGNAL(u'itemCollapsed(QTreeWidgetItem*)'), self.collapsed)
         QtCore.QObject.connect(self.ServiceManagerList,
            QtCore.SIGNAL(u'itemExpanded(QTreeWidgetItem*)'), self.expanded)
+        QtCore.QObject.connect(Receiver.get_receiver(),
+            QtCore.SIGNAL(u'update_themes'), self.updateThemeList)
         # Last little bits of setting up
         self.config = PluginConfig(u'ServiceManager')
         self.servicePath = self.config.get_data_path()
@@ -488,7 +491,7 @@
         link = event.mimeData()
         if link.hasText():
             plugin = event.mimeData().text()
-            self.parent.EventManager.post_event(Event(u'ServiceManager', EventType.LoadServiceItem, plugin))
+            Receiver().send_message(u'%s_add_service_item' % plugin)
 
     def updateThemeList(self, theme_list):
         """

=== modified file 'openlp/core/ui/thememanager.py'
--- openlp/core/ui/thememanager.py	2009-08-15 07:33:01 +0000
+++ openlp/core/ui/thememanager.py	2009-08-26 05:00:19 +0000
@@ -28,9 +28,9 @@
 
 from openlp.core.ui import AmendThemeForm, ServiceManager
 from openlp.core.theme import Theme
-from openlp.core.lib import PluginConfig, Event, EventType, \
-    EventManager, OpenLPToolbar, ThemeXML, Renderer, translate, \
-    file_to_xml, buildIcon
+from openlp.core.lib import PluginConfig,  \
+    OpenLPToolbar, ThemeXML, Renderer, translate, \
+    file_to_xml, buildIcon,  Receiver
 from openlp.core.utils import ConfigHelper
 
 class ThemeManager(QtGui.QWidget):
@@ -72,7 +72,9 @@
         self.Layout.addWidget(self.ThemeListWidget)
         #Signals
         QtCore.QObject.connect(self.ThemeListWidget,
-           QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.changeGlobal)
+           QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.changeGlobalFromScreen)
+        QtCore.QObject.connect(Receiver.get_receiver(),
+            QtCore.SIGNAL(u'update_global_theme'), self.changeGlobalFromTab)
         #Variables
         self.themelist = []
         self.path = os.path.join(ConfigHelper.get_data_path(), u'themes')
@@ -86,7 +88,22 @@
     def getDefault(self):
         return self.global_theme
 
-    def changeGlobal(self, index):
+    def changeGlobalFromTab(self, themeName):
+        log.debug(u'changeGlobalFromTab %s', themeName)
+        for count in range (0,  self.ThemeListWidget.count()):
+            #reset the old name
+            item = self.ThemeListWidget.item(count)
+            oldName =  item.text()
+            newName = unicode(item.data(QtCore.Qt.UserRole).toString())
+            if oldName != newName:
+                self.ThemeListWidget.item(count).setText(newName)
+            #Set the new name
+            if themeName  == newName:
+                name = u'%s (%s)' % (newName, translate(u'ThemeManager', u'default'))
+                self.ThemeListWidget.item(count).setText(name)
+
+    def changeGlobalFromScreen(self, index):
+        log.debug(u'changeGlobalFromScreen %s', index)
         for count in range (0,  self.ThemeListWidget.count()):
             item = self.ThemeListWidget.item(count)
             oldName =  item.text()
@@ -99,6 +116,7 @@
                 name = u'%s (%s)' % (self.global_theme, translate(u'ThemeManager', u'default'))
                 self.ThemeListWidget.item(count).setText(name)
                 self.config.set_config(u'theme global theme', self.global_theme)
+                Receiver().send_message(u'update_global_theme',  self.global_theme )
                 self.pushThemes()
 
     def onAddTheme(self):
@@ -184,7 +202,7 @@
         self.pushThemes()
 
     def pushThemes(self):
-        self.parent.EventManager.post_event(Event(u'ThemeManager', EventType.ThemeListChanged, self.getThemes()))
+        Receiver().send_message(u'update_themes',  self.getThemes() )
 
     def getThemes(self):
         return self.themelist
@@ -194,7 +212,6 @@
         xml_file = os.path.join(self.path, unicode(themename), unicode(themename) + u'.xml')
         try:
             xml = file_to_xml(xml_file)
-            #print xml
         except:
             newtheme = ThemeXML()
             newtheme.new_document(u'New Theme')
@@ -205,9 +222,7 @@
                 unicode(0), unicode(0), unicode(0))
             xml = newtheme.extract_xml()
         theme = ThemeXML()
-        #print theme
         theme.parse(xml)
-        #print "A ", theme
         theme.extend_image_filename(self.path)
         return theme
 

=== modified file 'openlp/core/ui/themestab.py'
--- openlp/core/ui/themestab.py	2009-08-07 19:05:00 +0000
+++ openlp/core/ui/themestab.py	2009-08-25 20:04:58 +0000
@@ -20,7 +20,7 @@
 
 from PyQt4 import QtCore, QtGui
 
-from openlp.core.lib import SettingsTab,  translate
+from openlp.core.lib import SettingsTab,  translate,  Receiver
 
 class ThemesTab(SettingsTab):
     """
@@ -88,16 +88,16 @@
         self.LevelLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
             self.GlobalLevelLabel)
         self.ThemesTabLayout.addWidget(self.LevelGroupBox)
-
         QtCore.QObject.connect(self.SongLevelRadioButton,
             QtCore.SIGNAL(u'pressed()'), self.onSongLevelButtonPressed)
         QtCore.QObject.connect(self.ServiceLevelRadioButton,
             QtCore.SIGNAL(u'pressed()'), self.onServiceLevelButtonPressed)
         QtCore.QObject.connect(self.GlobalLevelRadioButton,
             QtCore.SIGNAL(u'pressed()'), self.onGlobalLevelButtonPressed)
-
         QtCore.QObject.connect(self.DefaultComboBox,
             QtCore.SIGNAL(u'activated(int)'), self.onDefaultComboBoxChanged)
+        QtCore.QObject.connect(Receiver.get_receiver(),
+            QtCore.SIGNAL(u'update_themes'), self.updateThemeList)
 
     def retranslateUi(self):
         self.GlobalGroupBox.setTitle(translate(u'ThemesTab', u'Global theme'))
@@ -122,6 +122,7 @@
     def save(self):
         self.config.set_config(u'theme global style', self.global_style )
         self.config.set_config(u'theme global theme',self.global_theme)
+        Receiver().send_message(u'update_global_theme',  self.global_theme )
 
     def onSongLevelButtonPressed(self):
         self.global_style= u'Song'

=== modified file 'openlp/plugins/bibles/bibleplugin.py'
--- openlp/plugins/bibles/bibleplugin.py	2009-08-15 07:33:01 +0000
+++ openlp/plugins/bibles/bibleplugin.py	2009-08-26 05:00:19 +0000
@@ -22,7 +22,7 @@
 from PyQt4 import QtCore, QtGui
 from PyQt4.QtCore import *
 
-from openlp.core.lib import Plugin, Event,  EventType,  translate
+from openlp.core.lib import Plugin, translate
 
 from openlp.plugins.bibles.lib import BibleManager, BiblesTab, BibleMediaItem
 
@@ -41,9 +41,6 @@
             QtGui.QIcon.Normal, QtGui.QIcon.Off)
         #Register the bible Manager
         self.biblemanager = BibleManager(self.config)
-        # passed with drag and drop messages
-        self.dnd_id = u'Bibles'
-
 
     def get_settings_tab(self):
         self.bibles_tab = BiblesTab()
@@ -68,18 +65,6 @@
         export_menu.addAction(self.ExportBibleItem)
         self.ExportBibleItem.setText(translate(u'BiblePlugin', u'&Bible'))
 
-    def initialise(self):
-        pass
-
     def onBibleNewClick(self):
         self.media_item.onBibleNewClick()
 
-    def handle_event(self, event):
-        """
-        Handle the event contained in the event object.
-        """
-        log.debug(u'Handle event called with event %s with payload %s'%(event.event_type, event.payload))
-        if event.event_type == EventType.ThemeListChanged:
-            log.debug(u'New Theme request received')
-            self.bibles_tab.updateThemeList(event.payload)
-        return Plugin.handle_event(self, event)

=== modified file 'openlp/plugins/bibles/forms/bibleimportform.py'
--- openlp/plugins/bibles/forms/bibleimportform.py	2009-08-15 07:55:16 +0000
+++ openlp/plugins/bibles/forms/bibleimportform.py	2009-08-24 20:05:46 +0000
@@ -152,9 +152,9 @@
     def onCancelButtonClicked(self):
         # tell import to stop
         self.message = u'Bible import stopped'
-        Receiver().send_message(u'openlpstopimport')
+        Receiver().send_message(u'stop_import')
         # tell bibleplugin to reload the bibles
-        Receiver().send_message(u'openlpreloadbibles')
+        Receiver().send_message(u'pre_load_bibles')
         self.close()
 
     def onImportButtonClicked(self):
@@ -172,7 +172,7 @@
                 self.MessageLabel.setText(message)
                 self.ProgressBar.setValue(self.barmax)
                 # tell bibleplugin to reload the bibles
-                Receiver().send_message(u'openlpreloadbibles')
+                Receiver().send_message(u'pre_load_bibles')
                 reply = QtGui.QMessageBox.information(self,
                     translate(u'BibleMediaItem', u'Information'),
                     translate(u'BibleMediaItem', message))

=== modified file 'openlp/plugins/bibles/lib/biblestab.py'
--- openlp/plugins/bibles/lib/biblestab.py	2009-07-23 05:17:26 +0000
+++ openlp/plugins/bibles/lib/biblestab.py	2009-08-25 05:18:09 +0000
@@ -21,7 +21,7 @@
 
 from PyQt4 import Qt, QtCore, QtGui
 
-from openlp.core.lib import translate, str_to_bool
+from openlp.core.lib import translate, str_to_bool,  Receiver
 from openlp.core.lib import SettingsTab
 
 class BiblesTab(SettingsTab):
@@ -146,6 +146,8 @@
             QtCore.SIGNAL(u'activated(int)'), self.onBibleThemeComboBoxChanged)
         QtCore.QObject.connect(self.LayoutStyleComboBox,
             QtCore.SIGNAL(u'activated(int)'), self.onLayoutStyleComboBoxChanged)
+        QtCore.QObject.connect(Receiver.get_receiver(),
+            QtCore.SIGNAL(u'update_themes'), self.updateThemeList)
 
     def retranslateUi(self):
         self.VerseDisplayGroupBox.setTitle(translate(u'SettingsForm', u'Verse Display'))

=== modified file 'openlp/plugins/custom/customplugin.py'
--- openlp/plugins/custom/customplugin.py	2009-08-15 07:33:01 +0000
+++ openlp/plugins/custom/customplugin.py	2009-08-26 05:00:19 +0000
@@ -22,7 +22,7 @@
 from PyQt4 import QtCore, QtGui
 
 from forms import EditCustomForm
-from openlp.core.lib import Plugin, Event,  EventType
+from openlp.core.lib import Plugin
 from openlp.plugins.custom.lib import CustomManager, CustomTab, CustomMediaItem
 
 
@@ -42,20 +42,8 @@
         self.icon = QtGui.QIcon()
         self.icon.addPixmap(QtGui.QPixmap(u':/media/media_custom.png'),
             QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        # passed with drag and drop messages
-        self.dnd_id=u'Custom'
 
     def get_media_manager_item(self):
         # Create the CustomManagerItem object
         self.media_item = CustomMediaItem(self, self.icon, u'Custom Slides')
         return self.media_item
-
-    def handle_event(self, event):
-        """
-        Handle the event contained in the event object.
-        """
-        log.debug(u'Handle event called with event %s with payload %s'%(event.event_type, event.payload))
-        if event.event_type == EventType.ThemeListChanged:
-            log.debug(u'New Theme request received')
-            self.edit_custom_form.loadThemes(event.payload)
-        return Plugin.handle_event(self, event)

=== modified file 'openlp/plugins/custom/forms/editcustomform.py'
--- openlp/plugins/custom/forms/editcustomform.py	2009-06-17 05:11:16 +0000
+++ openlp/plugins/custom/forms/editcustomform.py	2009-08-25 20:04:58 +0000
@@ -20,7 +20,7 @@
 from PyQt4 import Qt, QtCore, QtGui
 
 from editcustomdialog import Ui_customEditDialog
-from openlp.core.lib import SongXMLBuilder, SongXMLParser
+from openlp.core.lib import SongXMLBuilder, SongXMLParser,  Receiver
 from openlp.plugins.custom.lib.models import CustomSlide
 
 class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):
@@ -50,6 +50,8 @@
             QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem*)'), self.onVerseListViewSelected)
         QtCore.QObject.connect(self.VerseListView,
             QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), self.onVerseListViewPressed)
+        QtCore.QObject.connect(Receiver.get_receiver(),
+            QtCore.SIGNAL(u'update_themes'), self.loadThemes)
         # Create other objects and forms
         self.custommanager = custommanager
         self.initialise()

=== modified file 'openlp/plugins/images/imageplugin.py'
--- openlp/plugins/images/imageplugin.py	2009-07-03 20:32:33 +0000
+++ openlp/plugins/images/imageplugin.py	2009-08-26 05:00:19 +0000
@@ -21,7 +21,7 @@
 
 from PyQt4 import QtCore, QtGui
 
-from openlp.core.lib import Plugin, Event,  EventType
+from openlp.core.lib import Plugin
 from openlp.plugins.images.lib import ImageMediaItem,  ImageTab
 
 class ImagePlugin(Plugin):
@@ -37,8 +37,6 @@
         self.icon = QtGui.QIcon()
         self.icon.addPixmap(QtGui.QPixmap(u':/media/media_image.png'),
             QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        # passed with drag and drop messages
-        self.dnd_id = u'Image'
 
     def get_settings_tab(self):
         self.ImageTab = ImageTab()

=== modified file 'openlp/plugins/images/lib/mediaitem.py'
--- openlp/plugins/images/lib/mediaitem.py	2009-08-24 17:43:15 +0000
+++ openlp/plugins/images/lib/mediaitem.py	2009-08-25 05:18:09 +0000
@@ -28,7 +28,7 @@
 # in order for DnD to the Service manager to work correctly.
 class ImageListView(BaseListWithDnD):
     def __init__(self, parent=None):
-        self.PluginName = u'Image'
+        self.PluginName = u'Images'
         BaseListWithDnD.__init__(self, parent)
 
 class ImageMediaItem(MediaManagerItem):

=== modified file 'openlp/plugins/presentations/presentationplugin.py'
--- openlp/plugins/presentations/presentationplugin.py	2009-08-15 19:10:59 +0000
+++ openlp/plugins/presentations/presentationplugin.py	2009-08-24 20:05:46 +0000
@@ -41,7 +41,6 @@
         self.icon = QtGui.QIcon()
         self.icon.addPixmap(QtGui.QPixmap(u':/media/media_presentation.png'),
             QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.dnd_id = u'Presentations'
 
     def get_settings_tab(self):
         """

=== modified file 'openlp/plugins/remotes/remoteplugin.py'
--- openlp/plugins/remotes/remoteplugin.py	2009-08-24 05:10:04 +0000
+++ openlp/plugins/remotes/remoteplugin.py	2009-08-26 05:00:19 +0000
@@ -22,7 +22,7 @@
 
 from PyQt4 import QtNetwork, QtGui, QtCore
 
-from openlp.core.lib import Plugin, Event,  EventType,  Receiver
+from openlp.core.lib import Plugin, Receiver
 from openlp.plugins.remotes.lib import RemoteTab
 
 class RemotesPlugin(Plugin):
@@ -58,7 +58,7 @@
         event = unicode(datagram[:pos].lower())
 
         if event == u'alert':
-            self.event_manager.post_event(Event(u'RemotePlugin', EventType.TriggerAlert , unicode(datagram[pos + 1:])))
+            Receiver().send_message(u'alert_text', unicode(datagram[pos + 1:]))
         if event == u'next_slide':
             Receiver().send_message(u'live_slide_next')
 

=== modified file 'openlp/plugins/songs/forms/editsongform.py'
--- openlp/plugins/songs/forms/editsongform.py	2009-08-15 19:19:34 +0000
+++ openlp/plugins/songs/forms/editsongform.py	2009-08-26 05:00:19 +0000
@@ -22,8 +22,8 @@
 
 from PyQt4 import Qt, QtCore, QtGui
 
-from openlp.core.lib import SongXMLBuilder, SongXMLParser, Event, \
-    EventType, EventManager,  translate
+from openlp.core.lib import SongXMLBuilder, SongXMLParser,  \
+    translate,  Receiver
 from openlp.plugins.songs.forms import EditVerseForm
 from openlp.plugins.songs.lib.models import Song
 from editsongdialog import Ui_EditSongDialog
@@ -36,7 +36,7 @@
     log = logging.getLogger(u'EditSongForm')
     log.info(u'Song Editor loaded')
 
-    def __init__(self, songmanager, eventmanager, parent=None):
+    def __init__(self, songmanager, parent=None):
         """
         Constructor
         """
@@ -71,9 +71,10 @@
             QtCore.SIGNAL(u'activated(int)'), self.onThemeComboChanged)
         QtCore.QObject.connect(self.MaintenanceButton,
             QtCore.SIGNAL(u'clicked()'), self.onMaintenanceButtonClicked)
+        QtCore.QObject.connect(Receiver.get_receiver(),
+            QtCore.SIGNAL(u'update_themes'), self.loadThemes)
         # Create other objects and forms
         self.songmanager = songmanager
-        self.eventmanager = eventmanager
         self.parent = parent
         self.verse_form = EditVerseForm()
         self.initialise()
@@ -364,7 +365,7 @@
         self.processTitle()
         self.songmanager.save_song(self.song)
         if self.title_change:
-            self.eventmanager.post_event(Event(u'EditSongForm', EventType.LoadSongList))
+            Receiver().send_message(u'load_song_list')
         self.close()
 
     def processLyrics(self):

=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py	2009-08-15 11:02:24 +0000
+++ openlp/plugins/songs/lib/mediaitem.py	2009-08-26 05:00:19 +0000
@@ -22,12 +22,13 @@
 from PyQt4 import QtCore, QtGui
 
 from openlp.core.lib import MediaManagerItem, translate, ServiceItem, \
-    SongXMLParser, contextMenuAction, contextMenuSeparator, BaseListWithDnD
+    SongXMLParser, contextMenuAction, contextMenuSeparator, BaseListWithDnD,  \
+    Receiver
 from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm
 
 class SongListView(BaseListWithDnD):
     def __init__(self, parent=None):
-        self.PluginName = u'Song'
+        self.PluginName = u'Songs'
         BaseListWithDnD.__init__(self, parent)
 
 class SongMediaItem(MediaManagerItem):
@@ -43,7 +44,7 @@
         self.PluginTextShort = u'Song'
         self.ConfigSection = u'song'
         MediaManagerItem.__init__(self, parent, icon, title)
-        self.edit_song_form = EditSongForm(self.parent.songmanager, self.parent.event_manager, self)
+        self.edit_song_form = EditSongForm(self.parent.songmanager,  self)
         self.song_maintenance_form = SongMaintenanceForm(self.parent.songmanager, self)
 
     def setupUi(self):
@@ -127,6 +128,9 @@
             QtCore.SIGNAL(u'textChanged(const QString&)'), self.onSearchTextEditChanged)
         QtCore.QObject.connect(self.ListView,
            QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onSongPreviewClick)
+        QtCore.QObject.connect(Receiver.get_receiver(),
+            QtCore.SIGNAL(u'load_song_list'), self.onSearchTextButtonClick)
+
         #define and add the context menu
         self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
         self.ListView.addAction(contextMenuAction(self.ListView,

=== modified file 'openlp/plugins/songs/songsplugin.py'
--- openlp/plugins/songs/songsplugin.py	2009-08-15 07:33:01 +0000
+++ openlp/plugins/songs/songsplugin.py	2009-08-26 05:00:19 +0000
@@ -22,7 +22,7 @@
 
 from PyQt4 import QtCore, QtGui
 
-from openlp.core.lib import Plugin, Event,  EventType,  translate
+from openlp.core.lib import Plugin, translate
 from openlp.plugins.songs.lib import SongManager, SongsTab, SongMediaItem
 from openlp.plugins.songs.forms import OpenLPImportForm, OpenSongExportForm, \
     OpenSongImportForm, OpenLPExportForm
@@ -46,8 +46,6 @@
         self.icon = QtGui.QIcon()
         self.icon.addPixmap(QtGui.QPixmap(u':/media/media_song.png'),
             QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        # passed with drag and drop messages
-        self.dnd_id=u'Song'
 
     def get_media_manager_item(self):
         # Create the MediaManagerItem object
@@ -128,16 +126,3 @@
 
     def onExportOpenSongItemClicked(self):
         self.opensong_export_form.show()
-
-    def handle_event(self, event):
-        """
-        Handle the event contained in the event object.
-        """
-        log.debug(u'Handle event called with event %s' % event.event_type)
-        if event.event_type == EventType.ThemeListChanged:
-            log.debug(u'New Theme request received')
-            self.media_item.edit_song_form.loadThemes(event.payload)
-        if event.event_type == EventType.LoadSongList :
-            log.debug(u'Load Load Song List Item received')
-            self.media_item.displayResultsSong(self.songmanager.get_songs())
-        return Plugin.handle_event(self, event)


Follow ups