From f7591916141d0f367e6073d1d58cab7acb43909d Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 22 Jan 2013 19:34:15 +0000 Subject: [PATCH] Move to properties --- openlp/core/__init__.py | 4 +- openlp/core/lib/__init__.py | 2 +- openlp/core/lib/kernel.py | 78 ---------------------------------- openlp/core/lib/renderer.py | 4 +- openlp/core/lib/serviceitem.py | 17 +++++--- 5 files changed, 16 insertions(+), 89 deletions(-) delete mode 100644 openlp/core/lib/kernel.py diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 5dbb629e7..256e162d9 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -43,7 +43,7 @@ from traceback import format_exception from PyQt4 import QtCore, QtGui -from openlp.core.lib import Receiver, Settings, check_directory_exists, Kernel +from openlp.core.lib import Receiver, Settings, check_directory_exists, Registry from openlp.core.lib.ui import UiStrings from openlp.core.resources import qInitResources from openlp.core.ui.mainwindow import MainWindow @@ -288,7 +288,7 @@ def main(args=None): portable_settings.sync() else: app.setApplicationName(u'OpenLP') - kernel = Kernel.create() + registry = Registry.create() app.setApplicationVersion(get_application_version()[u'version']) # Instance check if not options.testing: diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 4016cbc2a..387c86e06 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -458,7 +458,7 @@ def create_separated_list(stringlist): u'Locale list separator: start') % (stringlist[0], merged) -from kernel import Kernel +from registry import Registry from eventreceiver import Receiver from listwidgetwithdnd import ListWidgetWithDnD from formattingtags import FormattingTags diff --git a/openlp/core/lib/kernel.py b/openlp/core/lib/kernel.py deleted file mode 100644 index 202d6efad..000000000 --- a/openlp/core/lib/kernel.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2013 Raoul Snyman # -# Portions copyright (c) 2008-2013 Tim Bentley, Gerald Britton, Jonathan # -# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, # -# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. # -# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, # -# Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # -# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock, # -# Frode Woldsund, Martin Zibricky, Patrick Zimmermann # -# --------------------------------------------------------------------------- # -# 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 # -############################################################################### -""" -Provide plugin management -""" -import os -import sys -import logging - -log = logging.getLogger(__name__) - -class Kernel(object): - """ - This is the Plugin manager, which loads all the plugins, - and executes all the hooks, as and when necessary. - """ - log.info(u'Kernel loaded') - __instance__ = None - - - def __new__(cls): - if not cls.__instance__: - cls.__instance__ = object.__new__(cls) - return cls.__instance__ - - @classmethod - def create(self): - """ - The constructor for the plugin manager. Passes the controllers on to - the plugins for them to interact with via their ServiceItems. - - ``plugin_dir`` - The directory to search for plugins. - """ - log.info(u'Kernel Initialising') - self.service_list = {} - - def get(self, key): - if key in self.service_list: - return self.service_list[key] - else: - log.error(u'Service %s not found in list' % key) - return None - - def register(self, key, reference): - print "register" - if key in self.service_list: - log.error(u'Duplicate service exception %s' % key) - raise Exception(u'Duplicate service exception %s' % key) - else: - self.service_list[key] = reference - print self.service_list diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 0c6869461..6f572e726 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -32,7 +32,7 @@ import logging from PyQt4 import QtGui, QtCore, QtWebKit from openlp.core.lib import ServiceItem, expand_tags, build_lyrics_format_css, build_lyrics_outline_css, Receiver, \ - ItemCapabilities, FormattingTags, ImageSource, Kernel + ItemCapabilities, FormattingTags, ImageSource, Registry from openlp.core.lib.theme import ThemeLevel from openlp.core.ui import MainDisplay, ScreenList @@ -71,7 +71,7 @@ class Renderer(object): self.theme_manager = theme_manager self.image_manager = image_manager self.screens = ScreenList() - Kernel().register(u'renderer', self) + Registry().register(u'renderer', self) self.theme_level = ThemeLevel.Global self.global_theme_name = u'' self.service_theme_name = u'' diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index c7180be46..8a257fbfa 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -39,7 +39,7 @@ import uuid from PyQt4 import QtGui -from openlp.core.lib import build_icon, clean_tags, expand_tags, translate, ImageSource, Settings, Kernel +from openlp.core.lib import build_icon, clean_tags, expand_tags, translate, ImageSource, Settings, Registry log = logging.getLogger(__name__) @@ -240,13 +240,11 @@ class ServiceItem(object): for the theme manager. """ log.debug(u'Render called') - renderer = Kernel().get(u'renderer') - print renderer self._display_frames = [] self.bg_image_bytes = None if not provides_own_theme_data: - renderer.set_item_theme(self.theme) - self.themedata, self.main, self.footer = renderer.pre_render() + self.renderer.set_item_theme(self.theme) + self.themedata, self.main, self.footer = self.renderer.pre_render() if self.service_item_type == ServiceItemType.Text: log.debug(u'Formatting slides: %s' % self.title) # Save rendered pages to this dict. In the case that a slide is used @@ -258,7 +256,7 @@ class ServiceItem(object): if verse_tag in previous_pages and previous_pages[verse_tag][0] == slide[u'raw_slide']: pages = previous_pages[verse_tag][1] else: - pages = renderer.format_slide(slide[u'raw_slide'], self) + pages = self.renderer.format_slide(slide[u'raw_slide'], self) previous_pages[verse_tag] = (slide[u'raw_slide'], pages) for page in pages: page = page.replace(u'
', u'{br}') @@ -646,3 +644,10 @@ class ServiceItem(object): type = frame[u'title'].split(u'.')[-1] if type.lower() not in suffix_list: self.is_valid = False + + def _get_renderer(self): + if not self._renderer: + self._renderer = Registry().get(u'renderer') + return self._renderer + + renderer = property(_get_renderer) \ No newline at end of file