Move to properties

This commit is contained in:
Tim Bentley 2013-01-22 19:34:15 +00:00
parent 5051b9a177
commit f759191614
5 changed files with 16 additions and 89 deletions

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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''

View File

@ -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'<br>', 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)