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 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.lib.ui import UiStrings
from openlp.core.resources import qInitResources from openlp.core.resources import qInitResources
from openlp.core.ui.mainwindow import MainWindow from openlp.core.ui.mainwindow import MainWindow
@ -288,7 +288,7 @@ def main(args=None):
portable_settings.sync() portable_settings.sync()
else: else:
app.setApplicationName(u'OpenLP') app.setApplicationName(u'OpenLP')
kernel = Kernel.create() registry = Registry.create()
app.setApplicationVersion(get_application_version()[u'version']) app.setApplicationVersion(get_application_version()[u'version'])
# Instance check # Instance check
if not options.testing: if not options.testing:

View File

@ -458,7 +458,7 @@ def create_separated_list(stringlist):
u'Locale list separator: start') % (stringlist[0], merged) u'Locale list separator: start') % (stringlist[0], merged)
from kernel import Kernel from registry import Registry
from eventreceiver import Receiver from eventreceiver import Receiver
from listwidgetwithdnd import ListWidgetWithDnD from listwidgetwithdnd import ListWidgetWithDnD
from formattingtags import FormattingTags 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 PyQt4 import QtGui, QtCore, QtWebKit
from openlp.core.lib import ServiceItem, expand_tags, build_lyrics_format_css, build_lyrics_outline_css, Receiver, \ 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.lib.theme import ThemeLevel
from openlp.core.ui import MainDisplay, ScreenList from openlp.core.ui import MainDisplay, ScreenList
@ -71,7 +71,7 @@ class Renderer(object):
self.theme_manager = theme_manager self.theme_manager = theme_manager
self.image_manager = image_manager self.image_manager = image_manager
self.screens = ScreenList() self.screens = ScreenList()
Kernel().register(u'renderer', self) Registry().register(u'renderer', self)
self.theme_level = ThemeLevel.Global self.theme_level = ThemeLevel.Global
self.global_theme_name = u'' self.global_theme_name = u''
self.service_theme_name = u'' self.service_theme_name = u''

View File

@ -39,7 +39,7 @@ import uuid
from PyQt4 import QtGui 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__) log = logging.getLogger(__name__)
@ -240,13 +240,11 @@ class ServiceItem(object):
for the theme manager. for the theme manager.
""" """
log.debug(u'Render called') log.debug(u'Render called')
renderer = Kernel().get(u'renderer')
print renderer
self._display_frames = [] self._display_frames = []
self.bg_image_bytes = None self.bg_image_bytes = None
if not provides_own_theme_data: if not provides_own_theme_data:
renderer.set_item_theme(self.theme) self.renderer.set_item_theme(self.theme)
self.themedata, self.main, self.footer = renderer.pre_render() self.themedata, self.main, self.footer = self.renderer.pre_render()
if self.service_item_type == ServiceItemType.Text: if self.service_item_type == ServiceItemType.Text:
log.debug(u'Formatting slides: %s' % self.title) log.debug(u'Formatting slides: %s' % self.title)
# Save rendered pages to this dict. In the case that a slide is used # 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']: if verse_tag in previous_pages and previous_pages[verse_tag][0] == slide[u'raw_slide']:
pages = previous_pages[verse_tag][1] pages = previous_pages[verse_tag][1]
else: 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) previous_pages[verse_tag] = (slide[u'raw_slide'], pages)
for page in pages: for page in pages:
page = page.replace(u'<br>', u'{br}') page = page.replace(u'<br>', u'{br}')
@ -646,3 +644,10 @@ class ServiceItem(object):
type = frame[u'title'].split(u'.')[-1] type = frame[u'title'].split(u'.')[-1]
if type.lower() not in suffix_list: if type.lower() not in suffix_list:
self.is_valid = False 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)