openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #00096
[Merge] lp:~raoul-snyman/openlp/dualdisplay2 into lp:openlp
Raoul Snyman has proposed merging lp:~raoul-snyman/openlp/dualdisplay2 into lp:openlp.
Requested reviews:
Tim Bentley (trb143)
Fixed displaying of "display" label on the display form.
Display form is displayed on the correct screen at startup.
Display form switches to active non-primary screen or hidden on primary screen after set in the settings dialog.
A few syntax tidy-ups.
Made the loading and saving of things to the "registry" better.
--
https://code.launchpad.net/~raoul-snyman/openlp/dualdisplay2/+merge/7122
Your team openlp.org Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/lib/pluginconfig.py'
--- openlp/core/lib/pluginconfig.py 2009-05-20 20:17:20 +0000
+++ openlp/core/lib/pluginconfig.py 2009-06-05 18:53:50 +0000
@@ -56,10 +56,8 @@
safe_name = self.section.replace(u' ',u'-')
plugin_data = self.get_config(u'data path', safe_name)
path = os.path.join(app_data, plugin_data)
-
if not os.path.exists(path):
os.makedirs(path)
-
return path
def set_data_path(self, path):
@@ -74,8 +72,8 @@
if suffix != None:
return_files = []
for f in files:
- if f.find('.') != -1:
- nme = f.split('.')
+ if f.find(u'.') != -1:
+ nme = f.split(u'.')
bname = nme[0]
sfx = nme[1].lower()
sfx = sfx.lower()
@@ -127,7 +125,7 @@
name = u'last directory'
last_dir = self.get_config(name)
if last_dir is None:
- last_dir = ''
+ last_dir = u''
return last_dir
def set_last_dir(self, directory, num=None):
=== modified file 'openlp/core/lib/renderer.py'
--- openlp/core/lib/renderer.py 2009-06-03 15:38:14 +0000
+++ openlp/core/lib/renderer.py 2009-06-05 18:53:50 +0000
@@ -27,11 +27,8 @@
from copy import copy
class Renderer:
-
- global log
- log = logging.getLogger(u'Renderer')
- log.info(u'Renderer Loaded')
- """All the functions for rendering a set of words onto a Device Context
+ """
+ All the functions for rendering a set of words onto a Device Context
How to use:
set the words to be displayed with a call to format_slide() - this returns an array of screenfuls of data
@@ -39,8 +36,11 @@
tell it which DC to render to with set_DC()
set the borders of where you want the text (if not the whole DC) with set_text_rectangle()
tell it to render a particular screenfull with render_screen(n)
+ """
+ global log
+ log = logging.getLogger(u'Renderer')
+ log.info(u'Renderer Loaded')
- """
def __init__(self):
self._rect = None
self._debug = 0
@@ -119,19 +119,11 @@
lines = verse.split(u'\n')
for line in lines:
text.append(line)
-
split_text = self._split_set_of_lines(text, False)
print "split text ", split_text
print "text ", text
return split_text
-# def render_screen(self, screennum):
-# log.debug(u'render screen\n %s %s ', screennum, self.words[screennum])
-# t = 0.0
-# words = self.words[screennum]
-# retval = self._render_lines(words)
-# return retval
-
def set_text_rectangle(self, rect_main, rect_footer):
"""
Sets the rectangle within which text should be rendered
@@ -145,23 +137,17 @@
"""
#print "########## Generate frame from lines ##################"
log.debug(u'generate_frame_from_lines - Start')
-
#print "Render Lines ", lines
-
bbox = self._render_lines_unaligned(lines, False)
if footer_lines is not None:
bbox1 = self._render_lines_unaligned(footer_lines, True)
-
# reset the frame. first time do not worrk about what you paint on.
self._frame = QtGui.QPixmap(self._bg_frame)
-
x, y = self._correctAlignment(self._rect, bbox)
bbox = self._render_lines_unaligned(lines, False, (x, y))
-
if footer_lines is not None:
bbox = self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()) )
log.debug(u'generate_frame_from_lines - Finish')
-
return self._frame
def _generate_background_frame(self):
@@ -189,23 +175,18 @@
w = int(self._frame.width()) / 2
h = int(self._frame.height()) / 2
gradient = QtGui.QRadialGradient(w, h, w) # Circular
-
gradient.setColorAt(0, QtGui.QColor(self._theme.background_startColor))
gradient.setColorAt(1, QtGui.QColor(self._theme.background_endColor))
-
painter.setBrush(QtGui.QBrush(gradient))
rectPath = QtGui.QPainterPath()
-
max_x = self._frame.width()
max_y = self._frame.height()
rectPath.moveTo(0, 0)
rectPath.lineTo(0, max_y)
rectPath.lineTo(max_x, max_y)
rectPath.lineTo(max_x, 0)
-
rectPath.closeSubpath()
painter.drawPath(rectPath)
-
elif self._theme.background_type== u'image': # image
if self.bg_image is not None:
painter.drawPixmap(0 ,0 , self.bg_image)
@@ -219,24 +200,19 @@
def _split_set_of_lines(self, lines, footer):
"""
Given a list of lines, decide how to split them best if they don't all fit on the screen
- - this is done by splitting at 1/2, 1/3 or 1/4 of the set
- If it doesn't fit, even at this size, just split at each opportunity
-
- We'll do this by getting the bounding box of each line, and then summing them appropriately
- Returns a list of [lists of lines], one set for each screenful
- """
+ - this is done by splitting at 1/2, 1/3 or 1/4 of the set
+ If it doesn't fit, even at this size, just split at each opportunity.
+ We'll do this by getting the bounding box of each line, and then summing them appropriately
+ Returns a list of [lists of lines], one set for each screenful
+ """
bboxes = []
#print "lines ", lines
-
for line in lines:
bboxes.append(self._render_and_wrap_single_line(line, footer))
#print "bboxes ", bboxes
-
numlines = len(lines)
bottom = self._rect.bottom()
-
count = 0
-
for ratio in (numlines, numlines/2, numlines/3, numlines/4):
good = 1
startline = 0
@@ -258,7 +234,6 @@
endline = startline + ratio
if good == 1:
break
-
retval = []
numlines_per_page = ratio
#print "good ", good, ratio
@@ -276,7 +251,7 @@
retval.append(thislines)
#print "extra ", thislines
else:
-# print "Just split where you can"
+ # print "Just split where you can"
retval = []
startline = 0
endline = startline + 1
@@ -312,7 +287,6 @@
(using the _render_single_line fn - which may result in going
off the bottom) They are expected to be pre-arranged to less
than a screenful (eg. by using split_set_of_lines)
-
Returns the bounding box of the text as QRect
"""
log.debug(u'render lines unaligned Start')
@@ -339,10 +313,8 @@
"""
Render a single line of words onto the DC, top left corner
specified.
-
If the line is too wide for the context, it wraps, but
right-aligns the surplus words in the manner of song lyrics
-
Returns the bottom-right corner (of what was rendered) as a tuple(x, y).
"""
log.debug(u'Render single line %s @ %s '%( line, tlcorner))
@@ -374,7 +346,6 @@
align = 0
else:
align = int(self._theme .display_horizontalAlign)
-
for linenum in range(len(lines)):
line = lines[linenum]
#find out how wide line is
@@ -420,7 +391,6 @@
color = self._theme.display_outline_color)
self._get_extent_and_render(line, footer,(x-self._outline_offset,y-self._outline_offset), draw=True,
color = self._theme.display_outline_color)
-
self._get_extent_and_render(line, footer,tlcorner=(x, y), draw=True)
y += h
if linenum == 0:
@@ -432,7 +402,6 @@
painter.setPen(QtGui.QPen(QtGui.QColor(0,255,0)))
painter.drawRect(startx , starty , rightextent-startx , y-starty)
painter.end()
-
brcorner = (rightextent , y)
log.debug(u'Render single line Finish')
return brcorner
@@ -489,3 +458,10 @@
if image2 is not None:
im = image2.toImage()
im.save("renderer2.png", "png")
+
+# def render_screen(self, screennum):
+# log.debug(u'render screen\n %s %s ', screennum, self.words[screennum])
+# t = 0.0
+# words = self.words[screennum]
+# retval = self._render_lines(words)
+# return retval
=== modified file 'openlp/core/lib/rendermanager.py'
--- openlp/core/lib/rendermanager.py 2009-06-01 17:50:37 +0000
+++ openlp/core/lib/rendermanager.py 2009-06-05 18:53:50 +0000
@@ -54,17 +54,25 @@
log=logging.getLogger(u'RenderManager')
log.info(u'RenderManager Loaded')
- def __init__(self, theme_manager, screen_list):
+ def __init__(self, theme_manager, screen_list, screen_number=0):
log.debug(u'Initilisation started')
self.screen_list = screen_list
self.theme_manager = theme_manager
self.displays = len(screen_list)
- self.current_display = 0
+ self.current_display = screen_number
self.renderer = Renderer()
self.calculate_default(self.screen_list[self.current_display]['size'])
self.theme = u''
self.service_theme = u''
+ def update_display(self, screen_number):
+ """
+ Updates the render manager's information about the current screen.
+ """
+ if self.current_display != screen_number:
+ self.current_display = screen_number
+ self.calculate_default(self.screen_list[self.current_display]['size'])
+
def set_global_theme(self, global_theme, global_style = u'Global'):
self.global_theme = global_theme
self.global_style = global_style
@@ -95,7 +103,7 @@
if self.theme is not self.renderer.theme_name:
log.debug(u'theme is now %s', self.theme)
self.themedata = self.theme_manager.getThemeData(self.theme)
- self.calculate_default(self.screen_list[self.current_display]['size'])
+ self.calculate_default(self.screen_list[self.current_display][u'size'])
self.renderer.set_theme(self.themedata)
self.build_text_rectangle(self.themedata)
@@ -140,14 +148,14 @@
def format_slide(self, words):
log.debug(u'format slide')
- self.calculate_default(self.screen_list[self.current_display]['size'])
+ self.calculate_default(self.screen_list[self.current_display][u'size'])
self.build_text_rectangle(self.themedata)
self.renderer.set_frame_dest(self.width, self.height)
return self.renderer.format_slide(words, False)
def generate_slide(self,main_text, footer_text):
log.debug(u'generate slide')
- self.calculate_default(self.screen_list[self.current_display]['size'])
+ self.calculate_default(self.screen_list[self.current_display][u'size'])
self.build_text_rectangle(self.themedata)
self.renderer.set_frame_dest(self.width, self.height)
return self.renderer.generate_frame_from_lines(main_text, footer_text)
=== modified file 'openlp/core/lib/settingstab.py'
--- openlp/core/lib/settingstab.py 2009-05-01 11:50:09 +0000
+++ openlp/core/lib/settingstab.py 2009-06-05 18:53:50 +0000
@@ -25,7 +25,7 @@
"""
SettingsTab is a helper widget for plugins to define Tabs for the settings dialog.
"""
- def __init__(self, title=None):
+ def __init__(self, title=None, section=None):
"""
Constructor to create the Steetings tab item.
"""
@@ -34,10 +34,10 @@
self.setupUi()
self.retranslateUi()
self.initialise()
- if title == None:
- self.config = PluginConfig(u'Main')
+ if section == None:
+ self.config = PluginConfig(title)
else:
- self.config = PluginConfig(str(title))
+ self.config = PluginConfig(section)
self.load()
def setTitle(self, title):
=== modified file 'openlp/core/ui/alertstab.py'
--- openlp/core/ui/alertstab.py 2009-05-20 20:17:20 +0000
+++ openlp/core/ui/alertstab.py 2009-06-05 18:53:50 +0000
@@ -29,7 +29,7 @@
def __init__(self):
self.font_color = '#ffffff'
self.bg_color = '#660000'
- SettingsTab.__init__(self, u'Alerts')
+ SettingsTab.__init__(self, translate(u'AlertsTab', u'Alerts'), u'Alerts')
def setupUi(self):
self.setObjectName(u'AlertsTab')
@@ -130,13 +130,13 @@
self.AlertsLayout.addWidget(self.AlertRightColumn)
# Signals and slots
QtCore.QObject.connect(self.BackgroundColorButton,
- QtCore.SIGNAL("pressed()"), self.onBackgroundColorButtonClicked)
+ QtCore.SIGNAL(u'pressed()'), self.onBackgroundColorButtonClicked)
QtCore.QObject.connect(self.FontColorButton,
- QtCore.SIGNAL("pressed()"), self.onFontColorButtonClicked)
+ QtCore.SIGNAL(u'pressed()'), self.onFontColorButtonClicked)
QtCore.QObject.connect(self.FontComboBox,
- QtCore.SIGNAL("activated(int)"), self.onFontComboBoxClicked)
+ QtCore.SIGNAL(u'activated(int)'), self.onFontComboBoxClicked)
QtCore.QObject.connect(self.TimeoutSpinBox,
- QtCore.SIGNAL("valueChanged(int)"), self.onTimeoutSpinBoxChanged)
+ QtCore.SIGNAL(u'valueChanged(int)'), self.onTimeoutSpinBoxChanged)
def retranslateUi(self):
self.FontGroupBox.setTitle(translate(u'AlertsTab', u'Font'))
@@ -146,13 +146,13 @@
self.TimeoutLabel.setText(translate(u'AlertsTab', u'Alert timeout:'))
self.TimeoutSpinBox.setSuffix(translate(u'AlertsTab', u's'))
self.PreviewGroupBox.setTitle(translate(u'AlertsTab', u'Preview'))
- self.FontPreview.setText(translate(u'AlertsTab', 'openlp.org 2.0 rocks!'))
+ self.FontPreview.setText(translate(u'AlertsTab', u'openlp.org 2.0 rocks!'))
def onBackgroundColorButtonClicked(self):
self.bg_color = QtGui.QColorDialog.getColor(
- QColor(self.bg_color), self).name()
+ QtGui.QColor(self.bg_color), self).name()
self.BackgroundColorButton.setStyleSheet(
- 'background-color: %s' % self.bg_color)
+ u'background-color: %s' % self.bg_color)
self.updateDisplay()
def onFontComboBoxClicked(self):
@@ -160,22 +160,22 @@
def onFontColorButtonClicked(self):
self.font_color = QtGui.QColorDialog.getColor(
- QColor(self.font_color), self).name()
+ QtGui.QColor(self.font_color), self).name()
self.FontColorButton.setStyleSheet(
- 'background-color: %s' % self.font_color)
+ u'background-color: %s' % self.font_color)
self.updateDisplay()
def onTimeoutSpinBoxChanged(self):
self.timeout = self.TimeoutSpinBox.value()
def load(self):
- self.timeout = int(self.config.get_config('timeout', 5))
- self.font_color = str(self.config.get_config('font color', u'#ffffff'))
- self.bg_color = str(self.config.get_config('background color', u'#660000'))
- self.font_face = str(self.config.get_config('font face', QtGui.QFont().family()))
+ self.timeout = int(self.config.get_config(u'timeout', 5))
+ self.font_color = str(self.config.get_config(u'font color', u'#ffffff'))
+ self.bg_color = str(self.config.get_config(u'background color', u'#660000'))
+ self.font_face = str(self.config.get_config(u'font face', QtGui.QFont().family()))
self.TimeoutSpinBox.setValue(self.timeout)
- self.FontColorButton.setStyleSheet('background-color: %s' % self.font_color)
- self.BackgroundColorButton.setStyleSheet('background-color: %s' % self.bg_color)
+ self.FontColorButton.setStyleSheet(u'background-color: %s' % self.font_color)
+ self.BackgroundColorButton.setStyleSheet(u'background-color: %s' % self.bg_color)
font = QtGui.QFont()
font.setFamily(self.font_face)
self.FontComboBox.setCurrentFont(font)
@@ -183,10 +183,10 @@
def save(self):
self.font_face = self.FontComboBox.currentFont().family()
- self.config.set_config('background color', str(self.bg_color))
- self.config.set_config('font color', str(self.font_color))
- self.config.set_config('font face', str(self.font_face))
- self.config.set_config('timeout', str(self.timeout))
+ self.config.set_config(u'background color', str(self.bg_color))
+ self.config.set_config(u'font color', str(self.font_color))
+ self.config.set_config(u'font face', str(self.font_face))
+ self.config.set_config(u'timeout', str(self.timeout))
def updateDisplay(self):
font = QtGui.QFont()
@@ -195,4 +195,4 @@
font.setPointSize(16)
self.FontPreview.setFont(font)
self.FontPreview.setStyleSheet(
- 'background-color: %s; color: %s' % (self.bg_color, self.font_color))
+ u'background-color: %s; color: %s' % (self.bg_color, self.font_color))
=== modified file 'openlp/core/ui/generaltab.py'
--- openlp/core/ui/generaltab.py 2009-06-01 17:50:37 +0000
+++ openlp/core/ui/generaltab.py 2009-06-05 18:53:50 +0000
@@ -28,7 +28,7 @@
"""
def __init__(self, screen_list):
self.screen_list = screen_list
- SettingsTab.__init__(self, translate(u'GeneralTab', u'General'))
+ SettingsTab.__init__(self, translate(u'GeneralTab', u'General'), u'General')
def setupUi(self):
self.setObjectName(u'GeneralTab')
@@ -114,18 +114,17 @@
self.GeneralRightLayout.addItem(self.GeneralRightSpacer)
self.GeneralLayout.addWidget(self.GeneralRightWidget)
QtCore.QObject.connect(self.MonitorComboBox,
- QtCore.SIGNAL("activated(int)"), self.onMonitorComboBoxChanged)
+ QtCore.SIGNAL(u'activated(int)'), self.onMonitorComboBoxChanged)
QtCore.QObject.connect(self.WarningCheckBox,
- QtCore.SIGNAL("stateChanged(int)"), self.onWarningCheckBoxChanged)
+ QtCore.SIGNAL(u'stateChanged(int)'), self.onWarningCheckBoxChanged)
QtCore.QObject.connect(self.AutoOpenCheckBox,
- QtCore.SIGNAL("stateChanged(int)"), self.onAutoOpenCheckBoxChanged)
+ QtCore.SIGNAL(u'stateChanged(int)'), self.onAutoOpenCheckBoxChanged)
QtCore.QObject.connect(self.NumberEdit,
- QtCore.SIGNAL("lostFocus()"), self.onNumberEditLostFocus)
+ QtCore.SIGNAL(u'lostFocus()'), self.onNumberEditLostFocus)
QtCore.QObject.connect(self.UsernameEdit,
- QtCore.SIGNAL("lostFocus()"), self.onUsernameEditLostFocus)
+ QtCore.SIGNAL(u'lostFocus()'), self.onUsernameEditLostFocus)
QtCore.QObject.connect(self.PasswordEdit,
- QtCore.SIGNAL("lostFocus()"), self.onPasswordEditLostFocus)
-
+ QtCore.SIGNAL(u'lostFocus()'), self.onPasswordEditLostFocus)
def retranslateUi(self):
self.MonitorGroupBox.setTitle(translate(u'GeneralTab', u'Monitors'))
@@ -144,12 +143,14 @@
def onAutoOpenCheckBoxChanged(self, value):
self.AutoOpen = False
- if value == 2: # we have a set value convert to True/False
+ if value == 2:
+ # we have a set value convert to True/False
self.AutoOpen = True
def onWarningCheckBoxChanged(self, value):
self.Warning = False
- if value == 2: # we have a set value convert to True/False
+ if value == 2:
+ # we have a set value convert to True/False
self.Warning = True
def onNumberEditLostFocus(self):
@@ -164,19 +165,19 @@
def load(self):
for screen in self.screen_list:
screen_name = translate(u'GeneralTab', u'Screen') + u' ' + \
- str(screen['number'] + 1)
- if screen['primary']:
+ str(screen[u'number'] + 1)
+ if screen[u'primary']:
screen_name = screen_name + u' (' + \
translate(u'GeneralTab', u'primary') + u')'
self.MonitorComboBox.addItem(screen_name)
-
+ # Get the configs
self.MonitorNumber = int(self.config.get_config(u'Monitor', u'0'))
- self.Warning = str_to_bool(self.config.get_config(u'Warning', u"False"))
- self.AutoOpen = str_to_bool(self.config.get_config(u'Auto Open', u"False"))
- self.CCLNumber = str(self.config.get_config('CCL Number', u'XXX'))
- self.Username = str(self.config.get_config('User Name', u''))
- self.Password = str(self.config.get_config('Password', u''))
-
+ self.Warning = str_to_bool(self.config.get_config(u'Warning', u'False'))
+ self.AutoOpen = str_to_bool(self.config.get_config(u'Auto Open', u'False'))
+ self.CCLNumber = str(self.config.get_config(u'CCL Number', u'XXX'))
+ self.Username = str(self.config.get_config(u'User Name', u''))
+ self.Password = str(self.config.get_config(u'Password', u''))
+ # Set a few things up
self.MonitorComboBox.setCurrentIndex(self.MonitorNumber)
self.WarningCheckBox.setChecked(self.Warning)
self.AutoOpenCheckBox.setChecked(self.AutoOpen)
@@ -185,9 +186,9 @@
self.PasswordEdit.setText(self.Password)
def save(self):
- self.config.set_config(u'Monitor',str(self.MonitorNumber))
- self.config.set_config(u'Warning', str(self.Warning))
- self.config.set_config(u'Auto Open', str(self.AutoOpen))
- self.config.set_config('CCL Number', str(self.CCLNumber))
- self.config.set_config('User Name',str(self.Username))
- self.config.set_config('Password', str(self.Password ))
+ self.config.set_config(u'Monitor', self.MonitorNumber)
+ self.config.set_config(u'Warning', self.Warning)
+ self.config.set_config(u'Auto Open', self.AutoOpen)
+ self.config.set_config(u'CCL Number', self.CCLNumber)
+ self.config.set_config(u'User Name', self.Username)
+ self.config.set_config(u'Password', self.Password)
=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py 2009-06-01 17:50:37 +0000
+++ openlp/core/ui/maindisplay.py 2009-06-05 18:53:50 +0000
@@ -29,8 +29,13 @@
QtGui.QWidget.__init__(self, parent)
self.setWindowTitle(u'OpenLP Display')
self.screens = screens
+ self.layout = QtGui.QVBoxLayout(self)
+ self.layout.setSpacing(0)
+ self.layout.setMargin(0)
+ self.layout.setObjectName(u'layout')
self.display = QtGui.QLabel(self)
self.display.setScaledContents(True)
+ self.layout.addWidget(self.display)
self.displayBlank = False
self.blankFrame= None
self.alertactive = False
@@ -43,23 +48,21 @@
@param (integer) screen This is the screen number.
"""
screen = self.screens[screenNumber]
- if screen['number'] != screenNumber:
+ if screen[u'number'] != screenNumber:
# We will most probably never actually hit this bit, but just in
# case the index in the list doesn't match the screen number, we
# search for it.
for scrn in self.screens:
- if scrn['number'] == screenNumber:
+ if scrn[u'number'] == screenNumber:
screen = scrn
break
- self.setGeometry(screen['size'])
- self.display.setGeometry(screen['size'])
- if not screen['primary']:
+ self.setGeometry(screen[u'size'])
+ if not screen[u'primary']:
self.showFullScreen()
else:
- self.showMinimized()
-
- painter=QtGui.QPainter()
- self.blankFrame = QtGui.QPixmap(screen['size'].width(), screen['size'].height())
+ self.hide()
+ painter = QtGui.QPainter()
+ self.blankFrame = QtGui.QPixmap(screen[u'size'].width(), screen[u'size'].height())
painter.begin(self.blankFrame)
painter.fillRect(self.blankFrame.rect(), QtGui.QColor(u'#000000'))
self.frameView(self.blankFrame)
=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py 2009-06-02 19:02:12 +0000
+++ openlp/core/ui/mainwindow.py 2009-06-05 18:53:50 +0000
@@ -25,7 +25,7 @@
from openlp.core.ui import AboutForm, SettingsForm, AlertForm, ServiceManager, \
ThemeManager, MainDisplay, SlideController
from openlp.core.lib import translate, Plugin, MediaManagerItem, SettingsTab, \
- EventManager, RenderManager
+ EventManager, RenderManager, PluginConfig
from openlp.core import PluginManager
class MainWindow(object):
@@ -46,6 +46,7 @@
self.mainDisplay = MainDisplay(None, screens)
self.screenList = screens
self.EventManager = EventManager()
+ self.generalConfig = PluginConfig(u'General')
self.alertForm = AlertForm(self)
self.aboutForm = AboutForm()
self.settingsForm = SettingsForm(self.screenList, self)
@@ -60,7 +61,8 @@
#warning cyclic dependency
#RenderManager needs to call ThemeManager and
#ThemeManager needs to call RenderManager
- self.RenderManager = RenderManager(self.ThemeManagerContents, self.screenList)
+ self.RenderManager = RenderManager(self.ThemeManagerContents,
+ self.screenList, int(self.generalConfig.get_config(u'Monitor', 0)))
log.info(u'Load Plugins')
self.plugin_helpers[u'preview'] = self.PreviewController
self.plugin_helpers[u'live'] = self.LiveController
@@ -91,6 +93,43 @@
log.info(u'Load Themes')
self.ThemeManagerContents.loadThemes()
+ def show(self):
+ """
+ Show the main form, as well as the display form
+ """
+ self.mainWindow.showMaximized()
+ self.mainDisplay.setup(self.settingsForm.GeneralTab.MonitorNumber)
+ self.mainDisplay.show()
+ #self.mainWindow.setFocus(QtCore.Qt.OtherFocusReason)
+
+ def onHelpAboutItemClicked(self):
+ """
+ Show the About form
+ """
+ self.aboutForm.exec_()
+
+ def onToolsAlertItemClicked(self):
+ """
+ Show the Alert form
+ """
+ self.alertForm.exec_()
+
+ def onOptionsSettingsItemClicked(self):
+ """
+ Show the Settings dialog
+ """
+ self.settingsForm.exec_()
+ screen_number = int(self.generalConfig.get_config(u'Monitor', 0))
+ self.RenderManager.update_display(screen_number)
+ self.mainDisplay.setup(screen_number)
+
+ def onCloseEvent(self, event):
+ """
+ Hook to close the main window and display windows on exit
+ """
+ self.mainDisplay.close()
+ event.accept()
+
def setupUi(self):
"""
Set up the user interface
@@ -459,36 +498,3 @@
self.action_Preview_Panel.setText(
translate(u'mainWindow', u'&Preview Pane'))
self.ModeLiveItem.setText(translate(u'mainWindow', u'&Live'))
-
- def show(self):
- """
- Show the main form, as well as the display form
- """
- self.mainWindow.showMaximized()
- self.mainDisplay.setup(self.settingsForm.GeneralTab.MonitorNumber)
- self.mainDisplay.show()
-
- def onHelpAboutItemClicked(self):
- """
- Show the About form
- """
- self.aboutForm.exec_()
-
- def onToolsAlertItemClicked(self):
- """
- Show the Alert form
- """
- self.alertForm.exec_()
-
- def onOptionsSettingsItemClicked(self):
- """
- Show the Settings dialog
- """
- self.settingsForm.exec_()
-
- def onCloseEvent(self, event):
- """
- Hook to close the main window and display windows on exit
- """
- self.mainDisplay.close()
- event.accept()
=== modified file 'openlp/core/ui/themestab.py'
--- openlp/core/ui/themestab.py 2009-05-20 20:17:20 +0000
+++ openlp/core/ui/themestab.py 2009-06-05 18:53:50 +0000
@@ -28,7 +28,7 @@
"""
def __init__(self, parent):
self.parent = parent
- SettingsTab.__init__(self, u'Themes')
+ SettingsTab.__init__(self, translate(u'ThemesTab', u'Themes'), u'Themes')
def setupUi(self):
self.setObjectName(u'ThemesTab')
@@ -90,11 +90,11 @@
self.ThemesTabLayout.addWidget(self.LevelGroupBox)
QtCore.QObject.connect(self.SongLevelRadioButton,
- QtCore.SIGNAL("pressed()"), self.onSongLevelButtonPressed)
+ QtCore.SIGNAL(u'pressed()'), self.onSongLevelButtonPressed)
QtCore.QObject.connect(self.ServiceLevelRadioButton,
- QtCore.SIGNAL("pressed()"), self.onServiceLevelButtonPressed)
+ QtCore.SIGNAL(u'pressed()'), self.onServiceLevelButtonPressed)
QtCore.QObject.connect(self.GlobalLevelRadioButton,
- QtCore.SIGNAL("pressed()"), self.onGlobalLevelButtonPressed)
+ QtCore.SIGNAL(u'pressed()'), self.onGlobalLevelButtonPressed)
QtCore.QObject.connect(self.DefaultComboBox,
QtCore.SIGNAL("activated(int)"), self.onDefaultComboBoxChanged)
=== modified file 'openlp/core/utils/registry.py'
--- openlp/core/utils/registry.py 2009-06-04 16:53:49 +0000
+++ openlp/core/utils/registry.py 2009-06-05 18:53:50 +0000
@@ -28,8 +28,8 @@
"""
def __init__(self, dir):
self.config = SafeConfigParser()
- self.file_name = os.path.join(dir, 'openlp.conf')
- self.config.read(self.file_name)
+ self.file_name = os.path.join(dir, u'openlp.conf')
+ self._load()
def has_value(self, section, key):
"""
@@ -95,14 +95,24 @@
except:
return False
+ def _load(self):
+ try:
+ if not os.path.isfile(self.file_name):
+ return False
+ file_handle = open(self.file_name, u'r')
+ self.config.readfp(file_handle)
+ file_handle.close()
+ return True
+ except:
+ return False
+
def _save(self):
try:
if not os.path.exists(os.path.dirname(self.file_name)):
os.makedirs(os.path.dirname(self.file_name))
- file_handle = open(self.file_name, 'w')
+ file_handle = open(self.file_name, u'w')
self.config.write(file_handle)
- close(file_handle)
- self.config.read(self.file_name)
- return True
+ file_handle.close()
+ return self._load()
except:
return False
=== modified file 'openlp/plugins/bibles/lib/biblestab.py'
--- openlp/plugins/bibles/lib/biblestab.py 2009-05-21 05:15:51 +0000
+++ openlp/plugins/bibles/lib/biblestab.py 2009-06-05 18:53:50 +0000
@@ -32,7 +32,7 @@
self.show_new_chapters = False
self.display_style = 0
self.bible_search = True
- SettingsTab.__init__(self, u'Bibles')
+ SettingsTab.__init__(self, translate(u'BiblesTab', u'Bibles'), u'Bibles')
def setupUi(self):
self.setObjectName(u'BiblesTab')
@@ -134,32 +134,32 @@
self.BibleLayout.addWidget(self.BibleRightWidget)
# Signals and slots
QtCore.QObject.connect(self.NewChaptersCheckBox,
- QtCore.SIGNAL("stateChanged(int)"), self.onNewChaptersCheckBoxChanged)
+ QtCore.SIGNAL(u'stateChanged(int)'), self.onNewChaptersCheckBoxChanged)
QtCore.QObject.connect(self.BibleSearchCheckBox,
- QtCore.SIGNAL("stateChanged(int)"), self.onBibleSearchCheckBoxChanged)
+ QtCore.SIGNAL(u'stateChanged(int)'), self.onBibleSearchCheckBoxChanged)
QtCore.QObject.connect(self.VerseRadioButton,
- QtCore.SIGNAL("pressed()"), self.onVerseRadioButtonPressed)
+ QtCore.SIGNAL(u'pressed()'), self.onVerseRadioButtonPressed)
QtCore.QObject.connect(self.ParagraphRadioButton,
- QtCore.SIGNAL("pressed()"), self.onParagraphRadioButtonPressed)
+ QtCore.SIGNAL(u'pressed()'), self.onParagraphRadioButtonPressed)
QtCore.QObject.connect(self.DisplayStyleComboBox,
- QtCore.SIGNAL("activated(int)"), self.onDisplayStyleComboBoxChanged)
+ QtCore.SIGNAL(u'activated(int)'), self.onDisplayStyleComboBoxChanged)
QtCore.QObject.connect(self.BibleThemeComboBox,
- QtCore.SIGNAL("activated(int)"), self.onBibleThemeComboBoxChanged)
+ QtCore.SIGNAL(u'activated(int)'), self.onBibleThemeComboBoxChanged)
def retranslateUi(self):
- self.VerseDisplayGroupBox.setTitle(translate('SettingsForm', 'Verse Display'))
- self.VerseRadioButton.setText(translate('SettingsForm', 'Verse style'))
- self.ParagraphRadioButton.setText(translate('SettingsForm','Paragraph style'))
- self.NewChaptersCheckBox.setText(translate('SettingsForm', 'Only show new chapter numbers'))
- self.DisplayStyleLabel.setText(translate('SettingsForm', 'Display Style:'))
- self.BibleThemeLabel.setText(translate('SettingsForm', 'Bible Theme:'))
- self.DisplayStyleComboBox.setItemText(0, translate('SettingsForm', 'No brackets'))
- self.DisplayStyleComboBox.setItemText(1, translate('SettingsForm', '( and )'))
- self.DisplayStyleComboBox.setItemText(2, translate('SettingsForm', '{ and }'))
- self.DisplayStyleComboBox.setItemText(3, translate('SettingsForm', '[ and ]'))
- self.ChangeNoteLabel.setText(translate('SettingsForm', 'Note:\nChanges don\'t affect verses already in the service'))
- self.BibleSearchGroupBox.setTitle(translate('SettingsForm', 'Search'))
- self.BibleSearchCheckBox.setText(translate('SettingsForm', 'Search-as-you-type'))
+ self.VerseDisplayGroupBox.setTitle(translate(u'SettingsForm', u'Verse Display'))
+ self.VerseRadioButton.setText(translate(u'SettingsForm', u'Verse style'))
+ self.ParagraphRadioButton.setText(translate(u'SettingsForm', u'Paragraph style'))
+ self.NewChaptersCheckBox.setText(translate(u'SettingsForm', u'Only show new chapter numbers'))
+ self.DisplayStyleLabel.setText(translate(u'SettingsForm', u'Display Style:'))
+ self.BibleThemeLabel.setText(translate(u'SettingsForm', u'Bible Theme:'))
+ self.DisplayStyleComboBox.setItemText(0, translate(u'SettingsForm', u'No brackets'))
+ self.DisplayStyleComboBox.setItemText(1, translate(u'SettingsForm', u'( and )'))
+ self.DisplayStyleComboBox.setItemText(2, translate(u'SettingsForm', u'{ and }'))
+ self.DisplayStyleComboBox.setItemText(3, translate(u'SettingsForm', u'[ and ]'))
+ self.ChangeNoteLabel.setText(translate(u'SettingsForm', u'Note:\nChanges don\'t affect verses already in the service'))
+ self.BibleSearchGroupBox.setTitle(translate(u'SettingsForm', u'Search'))
+ self.BibleSearchCheckBox.setText(translate(u'SettingsForm', u'Search-as-you-type'))
def onBibleThemeComboBoxChanged(self):
self.bible_theme = self.BibleThemeComboBox.currentText()
@@ -187,7 +187,7 @@
def load(self):
self.paragraph_style = str_to_bool(self.config.get_config(u'paragraph style', u'True'))
- self.show_new_chapters = str_to_bool(self.config.get_config(u'display new chapter', u"False"))
+ self.show_new_chapters = str_to_bool(self.config.get_config(u'display new chapter', u'False'))
self.display_style = int(self.config.get_config(u'display brackets', u'0'))
self.bible_theme = self.config.get_config(u'bible theme', u'0')
self.bible_search = str_to_bool(self.config.get_config(u'search as type', u'True'))
@@ -216,6 +216,7 @@
self.BibleThemeComboBox.addItem(theme)
id = self.BibleThemeComboBox.findText(str(self.bible_theme), QtCore.Qt.MatchExactly)
if id == -1:
- id = 0 # Not Found
+ # Not Found
+ id = 0
self.bible_theme = u''
self.BibleThemeComboBox.setCurrentIndex(id)
=== modified file 'openlp/plugins/custom/lib/customtab.py'
--- openlp/plugins/custom/lib/customtab.py 2009-05-21 16:07:01 +0000
+++ openlp/plugins/custom/lib/customtab.py 2009-06-05 18:53:50 +0000
@@ -27,7 +27,7 @@
SongsTab is the songs settings tab in the settings dialog.
"""
def __init__(self):
- SettingsTab.__init__(self, u'Custom')
+ SettingsTab.__init__(self, translate(u'CustomTab', u'Custom'), u'Custom')
def setupUi(self):
self.setObjectName(u'CustomTab')
=== modified file 'openlp/plugins/media/lib/mediatab.py'
--- openlp/plugins/media/lib/mediatab.py 2009-05-21 05:15:51 +0000
+++ openlp/plugins/media/lib/mediatab.py 2009-06-05 18:53:50 +0000
@@ -27,40 +27,38 @@
mediaTab is the media settings tab in the settings dialog.
"""
def __init__(self):
- SettingsTab.__init__(self, u'Media')
+ SettingsTab.__init__(self, translate(u'MediaTab', u'Media'), u'Media')
def setupUi(self):
self.setObjectName(u'MediaTab')
-
self.MediaLayout = QtGui.QFormLayout(self)
- self.MediaLayout.setObjectName("MediaLayout")
-
+ self.MediaLayout.setObjectName(u'MediaLayout')
self.MediaModeGroupBox = QtGui.QGroupBox(self)
- self.MediaModeGroupBox.setObjectName("MediaModeGroupBox")
+ self.MediaModeGroupBox.setObjectName(u'MediaModeGroupBox')
self.MediaModeLayout = QtGui.QVBoxLayout(self.MediaModeGroupBox)
self.MediaModeLayout.setSpacing(8)
self.MediaModeLayout.setMargin(8)
- self.MediaModeLayout.setObjectName("MediaModeLayout")
+ self.MediaModeLayout.setObjectName(u'MediaModeLayout')
self.UseVMRCheckBox = QtGui.QCheckBox(self.MediaModeGroupBox)
- self.UseVMRCheckBox.setObjectName("UseVMRCheckBox")
+ self.UseVMRCheckBox.setObjectName(u'UseVMRCheckBox')
self.MediaModeLayout.addWidget(self.UseVMRCheckBox)
self.UseVMRLabel = QtGui.QLabel(self.MediaModeGroupBox)
- self.UseVMRLabel.setObjectName("UseVMRLabel")
+ self.UseVMRLabel.setObjectName(u'UseVMRLabel')
self.MediaModeLayout.addWidget(self.UseVMRLabel)
self.MediaLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.MediaModeGroupBox)
# Signals and slots
QtCore.QObject.connect(self.UseVMRCheckBox,
- QtCore.SIGNAL("stateChanged(int)"), self.onVMRCheckBoxChanged)
+ QtCore.SIGNAL(u'stateChanged(int)'), self.onVMRCheckBoxChanged)
def retranslateUi(self):
- self.MediaModeGroupBox.setTitle(translate("SettingsForm", "Media Mode"))
- self.UseVMRCheckBox.setText(translate("SettingsForm", "Use Video Mode Rendering"))
- self.UseVMRLabel.setText(translate("SettingsForm", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
-"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
-"p, li { white-space: pre-wrap; }\n"
-"</style></head><body style=\" font-family:\'DejaVu Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
-"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-style:italic;\">No video preview available with VMR enabled</span></p></body></html>"))
+ self.MediaModeGroupBox.setTitle(translate(u'MediaTab', u'Media Mode'))
+ self.UseVMRCheckBox.setText(translate(u'MediaTab', u'Use Video Mode Rendering'))
+ self.UseVMRLabel.setText(translate(u'MediaTab', u'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">\n'
+ u'<html><head><meta name="qrichtext" content="1" /><style type="text/css">\n'
+ u'p, li { white-space: pre-wrap; }\n'
+ u'</style></head><body style="font-family:\'DejaVu Sans\'; font-size:10pt; font-weight:400; font-style:normal;">\n'
+ u'<p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">No video preview available with VMR enabled</span></p></body></html>'))
def onVMRCheckBoxChanged(self):
use_vmr_mode = self.UseVMRCheckBox.checkState()
=== modified file 'openlp/plugins/presentations/lib/presentationtab.py'
--- openlp/plugins/presentations/lib/presentationtab.py 2009-06-01 18:37:06 +0000
+++ openlp/plugins/presentations/lib/presentationtab.py 2009-06-05 18:53:50 +0000
@@ -24,23 +24,23 @@
class PresentationTab(SettingsTab):
"""
- BiblesTab is the Bibles settings tab in the settings dialog.
+ PresentationsTab is the Presentations settings tab in the settings dialog.
"""
def __init__(self):
- SettingsTab.__init__(self, u'Presentation')
+ SettingsTab.__init__(self, translate(u'PresentationTab', u'Presentation'), u'Presentation')
def setupUi(self):
- self.setObjectName(u'BiblesTab')
- self.BibleLayout = QtGui.QHBoxLayout(self)
- self.BibleLayout.setSpacing(8)
- self.BibleLayout.setMargin(8)
- self.BibleLayout.setObjectName(u'BibleLayout')
- self.BibleLeftWidget = QtGui.QWidget(self)
- self.BibleLeftWidget.setObjectName(u'BibleLeftWidget')
- self.BibleLeftLayout = QtGui.QVBoxLayout(self.BibleLeftWidget)
- self.BibleLeftLayout.setObjectName(u'BibleLeftLayout')
- self.BibleLeftLayout.setSpacing(8)
- self.BibleLeftLayout.setMargin(0)
+ self.setObjectName(u'PresentationTab')
+ self.PresentationLayout = QtGui.QHBoxLayout(self)
+ self.PresentationLayout.setSpacing(8)
+ self.PresentationLayout.setMargin(8)
+ self.PresentationLayout.setObjectName(u'PresentationLayout')
+ self.PresentationLeftWidget = QtGui.QWidget(self)
+ self.PresentationLeftWidget.setObjectName(u'PresentationLeftWidget')
+ self.PresentationLeftLayout = QtGui.QVBoxLayout(self.PresentationLeftWidget)
+ self.PresentationLeftLayout.setObjectName(u'PresentationLeftLayout')
+ self.PresentationLeftLayout.setSpacing(8)
+ self.PresentationLeftLayout.setMargin(0)
self.VerseDisplayGroupBox = QtGui.QGroupBox(self)
self.VerseDisplayGroupBox.setObjectName(u'VerseDisplayGroupBox')
@@ -70,29 +70,29 @@
self.ImpressPath.setObjectName("ImpressPath")
self.VerseDisplayLayout.addWidget(self.ImpressPath, 3, 0, 1, 1)
- self.BibleThemeWidget = QtGui.QWidget(self.VerseDisplayGroupBox)
- self.BibleThemeWidget.setObjectName(u'BibleThemeWidget')
- self.BibleThemeLayout = QtGui.QHBoxLayout(self.BibleThemeWidget)
- self.BibleThemeLayout.setSpacing(8)
- self.BibleThemeLayout.setMargin(0)
- self.BibleThemeLayout.setObjectName(u'BibleThemeLayout')
-
- self.BibleLeftLayout.addWidget(self.VerseDisplayGroupBox)
- self.BibleLeftSpacer = QtGui.QSpacerItem(40, 20,
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.BibleLeftLayout.addItem(self.BibleLeftSpacer)
- self.BibleLayout.addWidget(self.BibleLeftWidget)
-
- self.BibleRightWidget = QtGui.QWidget(self)
- self.BibleRightWidget.setObjectName(u'BibleRightWidget')
- self.BibleRightLayout = QtGui.QVBoxLayout(self.BibleRightWidget)
- self.BibleRightLayout.setObjectName(u'BibleRightLayout')
- self.BibleRightLayout.setSpacing(8)
- self.BibleRightLayout.setMargin(0)
- self.BibleRightSpacer = QtGui.QSpacerItem(50, 20,
- QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.BibleRightLayout.addItem(self.BibleRightSpacer)
- self.BibleLayout.addWidget(self.BibleRightWidget)
+ self.PresentationThemeWidget = QtGui.QWidget(self.VerseDisplayGroupBox)
+ self.PresentationThemeWidget.setObjectName(u'PresentationThemeWidget')
+ self.PresentationThemeLayout = QtGui.QHBoxLayout(self.PresentationThemeWidget)
+ self.PresentationThemeLayout.setSpacing(8)
+ self.PresentationThemeLayout.setMargin(0)
+ self.PresentationThemeLayout.setObjectName(u'PresentationThemeLayout')
+
+ self.PresentationLeftLayout.addWidget(self.VerseDisplayGroupBox)
+ self.PresentationLeftSpacer = QtGui.QSpacerItem(40, 20,
+ QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.PresentationLeftLayout.addItem(self.PresentationLeftSpacer)
+ self.PresentationLayout.addWidget(self.PresentationLeftWidget)
+
+ self.PresentationRightWidget = QtGui.QWidget(self)
+ self.PresentationRightWidget.setObjectName(u'PresentationRightWidget')
+ self.PresentationRightLayout = QtGui.QVBoxLayout(self.PresentationRightWidget)
+ self.PresentationRightLayout.setObjectName(u'PresentationRightLayout')
+ self.PresentationRightLayout.setSpacing(8)
+ self.PresentationRightLayout.setMargin(0)
+ self.PresentationRightSpacer = QtGui.QSpacerItem(50, 20,
+ QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+ self.PresentationRightLayout.addItem(self.PresentationRightSpacer)
+ self.PresentationLayout.addWidget(self.PresentationRightWidget)
# Signals and slots
#QtCore.QObject.connect(self.NewChaptersCheckBox,
@@ -116,20 +116,20 @@
# self.paragraph_style = (self.config.get_config(u'paragraph style', u'True'))
# self.show_new_chapters = (self.config.get_config(u'display new chapter', u"False"))
# self.display_style = int(self.config.get_config(u'display brackets', u'0'))
-# self.bible_theme = int(self.config.get_config(u'bible theme', u'0'))
-# self.bible_search = (self.config.get_config(u'search as type', u'True'))
+# self.Presentation_theme = int(self.config.get_config(u'Presentation theme', u'0'))
+# self.Presentation_search = (self.config.get_config(u'search as type', u'True'))
# if self.paragraph_style:
# self.ParagraphRadioButton.setChecked(True)
# else:
# self.VerseRadioButton.setChecked(True)
# self.NewChaptersCheckBox.setChecked(self.show_new_chapters)
# self.DisplayStyleComboBox.setCurrentIndex(self.display_style)
-# self.BibleSearchCheckBox.setChecked(self.bible_search)
+# self.PresentationSearchCheckBox.setChecked(self.Presentation_search)
def save(self):
pass
# self.config.set_config(u'paragraph style', str(self.paragraph_style))
# self.config.set_config(u'display new chapter', str(self.show_new_chapters))
# self.config.set_config(u'display brackets', str(self.display_style))
-# self.config.set_config(u'search as type', str(self.bible_search))
-# self.config.set_config(u'bible theme', str(self.bible_theme))
+# self.config.set_config(u'search as type', str(self.Presentation_search))
+# self.config.set_config(u'Presentation theme', str(self.Presentation_theme))
=== modified file 'openlp/plugins/songs/lib/songstab.py'
--- openlp/plugins/songs/lib/songstab.py 2009-05-21 16:07:01 +0000
+++ openlp/plugins/songs/lib/songstab.py 2009-06-05 18:53:50 +0000
@@ -20,14 +20,14 @@
from PyQt4 import QtCore, QtGui
-from openlp.core.lib import SettingsTab, translate
+from openlp.core.lib import SettingsTab, translate
class SongsTab(SettingsTab):
"""
SongsTab is the songs settings tab in the settings dialog.
"""
def __init__(self):
- SettingsTab.__init__(self, u'Songs')
+ SettingsTab.__init__(self, translate(u'SongsTab', u'Songs'), u'Songs')
def setupUi(self):
self.setObjectName(u'SongsTab')
References