diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py
index 863943e40..5dfe00d36 100644
--- a/openlp/core/lib/htmlbuilder.py
+++ b/openlp/core/lib/htmlbuilder.py
@@ -610,24 +610,3 @@ def build_footer_css(item, height):
theme.font_footer_size, theme.font_footer_color)
return lyrics_html
-def build_alert_css(alertTab, width):
- """
- Build the display of the footer
-
- ``alertTab``
- Details from the Alert tab for fonts etc
- """
- style = u"""
- width: %spx;
- vertical-align: %s;
- font-family: %s;
- font-size: %spt;
- color: %s;
- background-color: %s;
- """
- if not alertTab:
- return u''
- align = VerticalType.Names[alertTab.location]
- alert = style % (width, align, alertTab.font_face, alertTab.font_size,
- alertTab.font_color, alertTab.bg_color)
- return alert
diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py
index 7d2dfa0ba..6a04a080b 100644
--- a/openlp/core/ui/__init__.py
+++ b/openlp/core/ui/__init__.py
@@ -52,6 +52,24 @@ class HideMode(object):
Theme = 2
Screen = 3
+class AlertLocation(object):
+ """
+ This is an enumeration class which controls where Alerts are placed on the
+ screen.
+
+ ``Top``
+ Place the text at the top of the screen.
+
+ ``Middle``
+ Place the text in the middle of the screen.
+
+ ``Bottom``
+ Place the text at the bottom of the screen.
+ """
+ Top = 0
+ Middle = 1
+ Bottom = 2
+
from firsttimeform import FirstTimeForm
from firsttimelanguageform import FirstTimeLanguageForm
from themelayoutform import ThemeLayoutForm
diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py
index 10fee7f6f..0cda4bd60 100644
--- a/openlp/core/ui/exceptionform.py
+++ b/openlp/core/ui/exceptionform.py
@@ -178,6 +178,8 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
'Please add the information that bug reports are favoured written '
'in English.'))
content = self._createReport()
+ source = u''
+ exception = u''
for line in content[2].split(u'\n'):
if re.search(r'[/\\]openlp[/\\]', line):
source = re.sub(r'.*[/\\]openlp[/\\](.*)".*', r'\1', line)
diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py
index aa94454b7..0f932c2f5 100644
--- a/openlp/core/ui/maindisplay.py
+++ b/openlp/core/ui/maindisplay.py
@@ -37,7 +37,7 @@ from PyQt4.phonon import Phonon
from openlp.core.lib import Receiver, build_html, ServiceItem, image_to_byte, \
translate, PluginManager
-from openlp.core.ui import HideMode, ScreenList
+from openlp.core.ui import HideMode, ScreenList, AlertLocation
log = logging.getLogger(__name__)
@@ -213,7 +213,7 @@ class MainDisplay(QtGui.QGraphicsView):
self.frame.evaluateJavaScript(u'show_text("%s")' %
slide.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"'))
- def alert(self, text):
+ def alert(self, text, location):
"""
Display an alert.
@@ -241,10 +241,10 @@ class MainDisplay(QtGui.QGraphicsView):
alert_height = int(height.toString())
shrinkItem.resize(self.width(), alert_height)
shrinkItem.setVisible(True)
- if self.alertTab.location == 1:
+ if location == AlertLocation.Middle:
shrinkItem.move(self.screen[u'size'].left(),
(self.screen[u'size'].height() - alert_height) / 2)
- elif self.alertTab.location == 2:
+ elif location == AlertLocation.Bottom:
shrinkItem.move(self.screen[u'size'].left(),
self.screen[u'size'].height() - alert_height)
else:
diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py
index 213c6814f..493f08ba0 100644
--- a/openlp/plugins/alerts/alertsplugin.py
+++ b/openlp/plugins/alerts/alertsplugin.py
@@ -71,11 +71,24 @@ JAVASCRIPT = """
function update_css(align, font, size, color, bgcolor){
var text = document.getElementById('alert');
- text.style.verticalAlign = align;
text.style.fontSize = size + "pt";
text.style.fontFamily = font;
text.style.color = color;
text.style.backgroundColor = bgcolor;
+ switch(align)
+ {
+ case 'top':
+ text.style.top = '0px';
+ break;
+ case 'middle':
+ text.style.top = ((window.innerHeight - text.clientHeight) / 2)
+ + 'px';
+ break;
+ case 'bottom':
+ text.style.top = (window.innerHeight - text.clientHeight)
+ + 'px';
+ break;
+ }
}
"""
CSS = """
diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py
index 8e91aecf5..e73273fe7 100644
--- a/openlp/plugins/alerts/lib/alertsmanager.py
+++ b/openlp/plugins/alerts/lib/alertsmanager.py
@@ -85,7 +85,7 @@ class AlertsManager(QtCore.QObject):
return
text = self.alertList.pop(0)
alertTab = self.parent().settings_tab
- self.parent().liveController.display.alert(text)
+ self.parent().liveController.display.alert(text, alertTab.location)
# Check to see if we have a timer running.
if self.timer_id == 0:
self.timer_id = self.startTimer(int(alertTab.timeout) * 1000)
@@ -100,7 +100,8 @@ class AlertsManager(QtCore.QObject):
"""
log.debug(u'timer event')
if event.timerId() == self.timer_id:
- self.parent().liveController.display.alert(u'')
+ alertTab = self.parent().settings_tab
+ self.parent().liveController.display.alert(u'', alertTab.location)
self.killTimer(self.timer_id)
self.timer_id = 0
self.generateAlert()
diff --git a/openlp/plugins/alerts/lib/alertstab.py b/openlp/plugins/alerts/lib/alertstab.py
index 8720c5111..bd879fef3 100644
--- a/openlp/plugins/alerts/lib/alertstab.py
+++ b/openlp/plugins/alerts/lib/alertstab.py
@@ -28,6 +28,7 @@
from PyQt4 import QtCore, QtGui
from openlp.core.lib import SettingsTab, translate, Receiver
+from openlp.core.ui import AlertLocation
from openlp.core.lib.ui import UiStrings, create_valign_combo
class AlertsTab(SettingsTab):
@@ -159,7 +160,7 @@ class AlertsTab(SettingsTab):
self.font_face = unicode(settings.value(
u'font face', QtCore.QVariant(QtGui.QFont().family())).toString())
self.location = settings.value(
- u'location', QtCore.QVariant(1)).toInt()[0]
+ u'location', QtCore.QVariant(AlertLocation.Bottom)).toInt()[0]
settings.endGroup()
self.fontSizeSpinBox.setValue(self.font_size)
self.timeoutSpinBox.setValue(self.timeout)
diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py
index 4a97e43b0..f817bfb45 100644
--- a/openlp/plugins/songs/lib/oooimport.py
+++ b/openlp/plugins/songs/lib/oooimport.py
@@ -65,7 +65,7 @@ class OooImport(SongImport):
if not isinstance(self.importSource, list):
return
try:
- self.start_ooo()
+ self.startOoo()
except NoConnectException as exc:
self.logError(
self.importSource[0],
@@ -145,7 +145,7 @@ class OooImport(SongImport):
process.waitForStarted()
self.processStarted = True
except:
- log.exception("start_ooo_process failed")
+ log.exception("startOooProcess failed")
def openOooFile(self, filepath):
"""
@@ -171,7 +171,7 @@ class OooImport(SongImport):
self.importWizard.incrementProgressBar(
u'Processing file ' + filepath, 0)
except AttributeError:
- log.exception("open_ooo_file failed: %s", url)
+ log.exception("openOooFile failed: %s", url)
return
def closeOooFile(self):
diff --git a/scripts/check_dependencies.py b/scripts/check_dependencies.py
index dd2907ba9..d1ec2228b 100755
--- a/scripts/check_dependencies.py
+++ b/scripts/check_dependencies.py
@@ -73,6 +73,7 @@ MODULES = [
'BeautifulSoup',
'mako',
'migrate',
+ 'uno',
]
diff --git a/scripts/windows-builder.py b/scripts/windows-builder.py
index b7bf70472..9076971cb 100644
--- a/scripts/windows-builder.py
+++ b/scripts/windows-builder.py
@@ -48,10 +48,10 @@ Inno Setup 5
Sphinx
This is used to build the documentation. The documentation trunk must be at
- the same directory level as Openlp trunk and named "documentation"
+ the same directory level as Openlp trunk and named "documentation".
HTML Help Workshop
- This is used to create the help file
+ This is used to create the help file.
PyInstaller
PyInstaller should be a checkout of revision 1470 of trunk, and in a
@@ -65,10 +65,6 @@ PyInstaller
http://svn.pyinstaller.org/trunk
- Then you need to copy the two hook-*.py files from the "pyinstaller"
- subdirectory in OpenLP's "resources" directory into PyInstaller's
- "PyInstaller/hooks" directory.
-
Bazaar
You need the command line "bzr" client installed.
@@ -79,7 +75,7 @@ OpenLP
Visual C++ 2008 Express Edition
This is to build pptviewlib.dll, the library for controlling the
- PowerPointViewer
+ PowerPointViewer.
windows-builder.py
This script, of course. It should be in the "scripts" directory of OpenLP.
@@ -88,15 +84,25 @@ psvince.dll
This dll is used during the actual install of OpenLP to check if OpenLP is
running on the users machine prior to the setup. If OpenLP is running,
the install will fail. The dll can be obtained from here:
- http://www.vincenzo.net/isxkb/index.php?title=PSVince)
+
+ http://www.vincenzo.net/isxkb/index.php?title=PSVince)
+
+ The dll is presently included in .\\resources\\windows
Mako
Mako Templates for Python. This package is required for building the
remote plugin. It can be installed by going to your
python_directory\scripts\.. and running "easy_install Mako". If you do not
have easy_install, the Mako package can be obtained here:
- http://www.makotemplates.org/download.html
-
+
+ http://www.makotemplates.org/download.html
+
+Sqlalchemy Migrate
+ Required for the data-bases used in OpenLP. The package can be
+ obtained here:
+
+ http://code.google.com/p/sqlalchemy-migrate/
+
"""
import os
@@ -149,6 +155,7 @@ build_path = os.path.join(branch_path, u'build')
dist_path = os.path.join(branch_path, u'dist', u'OpenLP')
pptviewlib_path = os.path.join(source_path, u'plugins', u'presentations',
u'lib', u'pptviewlib')
+hooks_path = os.path.join(branch_path , u'resources', u'pyinstaller')
def update_code():
os.chdir(branch_path)
@@ -173,7 +180,8 @@ def run_pyinstaller():
pyinstaller = Popen((python_exe, pyi_build,
u'--noconfirm',
u'--windowed',
- u'--noupx',
+ u'--noupx',
+ u'--additional-hooks-dir', hooks_path,
u'-o', branch_path,
u'-i', win32_icon,
u'-p', branch_path,