2009-02-28 23:19:45 +00:00
# -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
"""
OpenLP - Open Source Lyrics Projection
Copyright ( c ) 2008 Raoul Snyman
2009-05-18 19:47:18 +00:00
Portions copyright ( c ) 2008 - 2009 Martin Thompson , Tim Bentley ,
2009-02-28 23:19:45 +00:00
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
"""
from PyQt4 import QtCore , QtGui
2009-05-20 20:17:20 +00:00
from openlp . core . lib import SettingsTab , translate
2009-02-28 23:19:45 +00:00
class ThemesTab ( SettingsTab ) :
"""
ThemesTab is the theme settings tab in the settings dialog .
"""
2009-05-18 19:04:25 +00:00
def __init__ ( self , parent ) :
self . parent = parent
2009-06-05 18:53:50 +00:00
SettingsTab . __init__ ( self , translate ( u ' ThemesTab ' , u ' Themes ' ) , u ' Themes ' )
2009-02-28 23:19:45 +00:00
def setupUi ( self ) :
self . setObjectName ( u ' ThemesTab ' )
self . ThemesTabLayout = QtGui . QHBoxLayout ( self )
self . ThemesTabLayout . setSpacing ( 8 )
self . ThemesTabLayout . setMargin ( 8 )
self . ThemesTabLayout . setObjectName ( u ' ThemesTabLayout ' )
self . GlobalGroupBox = QtGui . QGroupBox ( self )
self . GlobalGroupBox . setObjectName ( u ' GlobalGroupBox ' )
self . GlobalGroupBoxLayout = QtGui . QVBoxLayout ( self . GlobalGroupBox )
self . GlobalGroupBoxLayout . setSpacing ( 8 )
self . GlobalGroupBoxLayout . setMargin ( 8 )
self . GlobalGroupBoxLayout . setObjectName ( u ' GlobalGroupBoxLayout ' )
self . DefaultComboBox = QtGui . QComboBox ( self . GlobalGroupBox )
self . DefaultComboBox . setObjectName ( u ' DefaultComboBox ' )
self . GlobalGroupBoxLayout . addWidget ( self . DefaultComboBox )
2009-05-18 19:04:25 +00:00
self . DefaultListView = QtGui . QLabel ( self . GlobalGroupBox )
2009-02-28 23:19:45 +00:00
self . DefaultListView . setObjectName ( u ' DefaultListView ' )
self . GlobalGroupBoxLayout . addWidget ( self . DefaultListView )
self . ThemesTabLayout . addWidget ( self . GlobalGroupBox )
self . LevelGroupBox = QtGui . QGroupBox ( self )
self . LevelGroupBox . setObjectName ( u ' LevelGroupBox ' )
self . LevelLayout = QtGui . QFormLayout ( self . LevelGroupBox )
self . LevelLayout . setLabelAlignment (
QtCore . Qt . AlignLeading | QtCore . Qt . AlignLeft | QtCore . Qt . AlignTop )
self . LevelLayout . setFormAlignment (
QtCore . Qt . AlignLeading | QtCore . Qt . AlignLeft | QtCore . Qt . AlignTop )
self . LevelLayout . setMargin ( 8 )
self . LevelLayout . setSpacing ( 8 )
self . LevelLayout . setObjectName ( u ' LevelLayout ' )
self . SongLevelRadioButton = QtGui . QRadioButton ( self . LevelGroupBox )
self . SongLevelRadioButton . setObjectName ( u ' SongLevelRadioButton ' )
self . LevelLayout . setWidget ( 0 , QtGui . QFormLayout . LabelRole ,
self . SongLevelRadioButton )
self . SongLevelLabel = QtGui . QLabel ( self . LevelGroupBox )
self . SongLevelLabel . setWordWrap ( True )
self . SongLevelLabel . setObjectName ( u ' SongLevelLabel ' )
self . LevelLayout . setWidget ( 0 , QtGui . QFormLayout . FieldRole ,
self . SongLevelLabel )
self . ServiceLevelRadioButton = QtGui . QRadioButton ( self . LevelGroupBox )
self . ServiceLevelRadioButton . setObjectName ( u ' ServiceLevelRadioButton ' )
self . LevelLayout . setWidget ( 1 , QtGui . QFormLayout . LabelRole ,
self . ServiceLevelRadioButton )
self . ServiceLevelLabel = QtGui . QLabel ( self . LevelGroupBox )
self . ServiceLevelLabel . setWordWrap ( True )
self . ServiceLevelLabel . setObjectName ( u ' ServiceLevelLabel ' )
self . LevelLayout . setWidget ( 1 , QtGui . QFormLayout . FieldRole ,
self . ServiceLevelLabel )
self . GlobalLevelRadioButton = QtGui . QRadioButton ( self . LevelGroupBox )
self . GlobalLevelRadioButton . setChecked ( True )
self . GlobalLevelRadioButton . setObjectName ( u ' GlobalLevelRadioButton ' )
self . LevelLayout . setWidget ( 2 , QtGui . QFormLayout . LabelRole ,
self . GlobalLevelRadioButton )
self . GlobalLevelLabel = QtGui . QLabel ( self . LevelGroupBox )
self . GlobalLevelLabel . setWordWrap ( True )
self . GlobalLevelLabel . setObjectName ( u ' GlobalLevelLabel ' )
self . LevelLayout . setWidget ( 2 , QtGui . QFormLayout . FieldRole ,
self . GlobalLevelLabel )
self . ThemesTabLayout . addWidget ( self . LevelGroupBox )
2009-05-18 19:04:25 +00:00
QtCore . QObject . connect ( self . SongLevelRadioButton ,
2009-06-05 18:53:50 +00:00
QtCore . SIGNAL ( u ' pressed() ' ) , self . onSongLevelButtonPressed )
2009-05-18 19:04:25 +00:00
QtCore . QObject . connect ( self . ServiceLevelRadioButton ,
2009-06-05 18:53:50 +00:00
QtCore . SIGNAL ( u ' pressed() ' ) , self . onServiceLevelButtonPressed )
2009-05-18 19:04:25 +00:00
QtCore . QObject . connect ( self . GlobalLevelRadioButton ,
2009-06-05 18:53:50 +00:00
QtCore . SIGNAL ( u ' pressed() ' ) , self . onGlobalLevelButtonPressed )
2009-05-18 19:04:25 +00:00
QtCore . QObject . connect ( self . DefaultComboBox ,
2009-06-16 18:21:24 +00:00
QtCore . SIGNAL ( u ' activated(int) ' ) , self . onDefaultComboBoxChanged )
2009-05-18 19:04:25 +00:00
2009-02-28 23:19:45 +00:00
def retranslateUi ( self ) :
self . GlobalGroupBox . setTitle ( translate ( u ' ThemesTab ' , u ' Global theme ' ) )
self . LevelGroupBox . setTitle ( translate ( u ' ThemesTab ' , u ' Theme level ' ) )
self . SongLevelRadioButton . setText ( translate ( u ' ThemesTab ' , u ' Song level ' ) )
self . SongLevelLabel . setText ( translate ( u ' ThemesTab ' , u ' Use the theme from each song in the database. If a song doesn \' t have a theme associated with it, then use the service \' s theme. If the service doesn \' t have a theme, then use the global theme. ' ) )
self . ServiceLevelRadioButton . setText ( translate ( u ' ThemesTab ' , u ' Service level ' ) )
self . ServiceLevelLabel . setText ( translate ( u ' ThemesTab ' , u ' Use the theme from the service , overriding any of the individual songs \' themes. If the service doesn \' t have a theme, then use the global theme. ' ) )
self . GlobalLevelRadioButton . setText ( translate ( u ' ThemesTab ' , u ' Global level ' ) )
self . GlobalLevelLabel . setText ( translate ( u ' ThemesTab ' , u ' Use the global theme, overriding any themes associated wither either the service or the songs. ' ) )
2009-05-16 16:38:03 +00:00
2009-05-18 19:04:25 +00:00
def load ( self ) :
self . global_style = self . config . get_config ( u ' theme global style ' , u ' Global ' )
self . global_theme = self . config . get_config ( u ' theme global theme ' , u ' ' )
if self . global_style == u ' Global ' :
self . GlobalLevelRadioButton . setChecked ( True )
elif self . global_style == u ' Service ' :
self . ServiceLevelRadioButton . setChecked ( True )
else :
self . SongLevelRadioButton . setChecked ( True )
def save ( self ) :
self . config . set_config ( u ' theme global style ' , self . global_style )
self . config . set_config ( u ' theme global theme ' , self . global_theme )
def onSongLevelButtonPressed ( self ) :
self . global_style = u ' Song '
self . parent . RenderManager . set_global_theme ( self . global_theme , self . global_style )
def onServiceLevelButtonPressed ( self ) :
self . global_style = u ' Service '
self . parent . RenderManager . set_global_theme ( self . global_theme , self . global_style )
def onGlobalLevelButtonPressed ( self ) :
self . global_style = u ' Global '
self . parent . RenderManager . set_global_theme ( self . global_theme , self . global_style )
def onDefaultComboBoxChanged ( self , value ) :
2009-08-06 17:43:53 +00:00
self . global_theme = unicode ( self . DefaultComboBox . currentText ( ) )
2009-05-18 19:04:25 +00:00
self . parent . RenderManager . set_global_theme ( self . global_theme , self . global_style )
2009-08-06 17:43:53 +00:00
image = self . parent . ThemeManagerContents . getPreviewImage ( self . global_theme )
2009-06-16 18:21:24 +00:00
preview = QtGui . QPixmap ( unicode ( image ) )
2009-05-18 19:47:18 +00:00
display = preview . scaled ( 300 , 255 , QtCore . Qt . KeepAspectRatio , QtCore . Qt . SmoothTransformation )
self . DefaultListView . setPixmap ( display )
2009-05-18 19:04:25 +00:00
2009-05-16 16:38:03 +00:00
def updateThemeList ( self , theme_list ) :
"""
Called from ThemeManager when the Themes have changed
"""
2009-08-07 19:05:00 +00:00
#reload as may have been triggered by the ThemeManager
self . global_theme = self . config . get_config ( u ' theme global theme ' , u ' ' )
2009-05-16 16:38:03 +00:00
self . DefaultComboBox . clear ( )
for theme in theme_list :
self . DefaultComboBox . addItem ( theme )
2009-08-06 17:43:53 +00:00
id = self . DefaultComboBox . findText ( self . global_theme , QtCore . Qt . MatchExactly )
2009-05-18 19:04:25 +00:00
if id == - 1 :
id = 0 # Not Found
self . global_theme = u ' '
self . DefaultComboBox . setCurrentIndex ( id )
self . parent . RenderManager . set_global_theme ( self . global_theme , self . global_style )
2009-05-18 19:47:18 +00:00
if self . global_theme is not u ' ' :
2009-08-06 17:43:53 +00:00
image = self . parent . ThemeManagerContents . getPreviewImage ( self . global_theme )
2009-06-16 18:21:24 +00:00
preview = QtGui . QPixmap ( unicode ( image ) )
2009-05-18 19:47:18 +00:00
display = preview . scaled ( 300 , 255 , QtCore . Qt . KeepAspectRatio , QtCore . Qt . SmoothTransformation )
2009-08-06 17:43:53 +00:00
self . DefaultListView . setPixmap ( display )