reactivate old translate functionality

This commit is contained in:
rimach 2010-04-20 21:09:14 +02:00
commit 707ad60850
17 changed files with 616 additions and 565 deletions

View File

@ -35,7 +35,7 @@ from PyQt4 import QtCore, QtGui
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
def translate(context, text): def translate(context, text, comment=None):
""" """
A special shortcut method to wrap around the Qt4 translation functions. A special shortcut method to wrap around the Qt4 translation functions.
This abstracts the translation procedure so that we can change it if at a This abstracts the translation procedure so that we can change it if at a
@ -48,8 +48,8 @@ def translate(context, text):
``text`` ``text``
The text to put into the translation tables for translation. The text to put into the translation tables for translation.
""" """
return QtGui.QApplication.translate( return QtCore.QCoreApplication.translate(context, text,
context, text, None, QtGui.QApplication.UnicodeUTF8) comment)
def get_text_file_string(text_file): def get_text_file_string(text_file):
""" """

View File

@ -115,6 +115,9 @@ class EventReceiver(QtCore.QObject):
``version_check`` ``version_check``
Version has changed so pop up window. Version has changed so pop up window.
``mainDisplay_active``
Version has changed so pop up window.
""" """
def __init__(self): def __init__(self):
""" """

View File

@ -29,6 +29,7 @@ from serviceitemeditform import ServiceItemEditForm
from screen import ScreenList from screen import ScreenList
from maindisplay import MainDisplay from maindisplay import MainDisplay
from maindisplay import VideoDisplay from maindisplay import VideoDisplay
from maindisplay import DisplayManager
from amendthemeform import AmendThemeForm from amendthemeform import AmendThemeForm
from slidecontroller import SlideController from slidecontroller import SlideController
from splashscreen import SplashScreen from splashscreen import SplashScreen

View File

@ -34,6 +34,28 @@ from openlp.core.ui import HideMode
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
class DisplayManager(QtGui.QWidget):
"""
Wrapper class to hold the display widgets.
I will provide API's in future to access the screens allow for
extra displays to be added.
"""
def __init__(self, screens):
QtGui.QWidget.__init__(self)
self.screens = screens
self.videoDisplay = VideoDisplay(self, screens)
self.mainDisplay = MainDisplay(self, screens)
def setup(self):
self.videoDisplay.setup()
self.mainDisplay.setup()
def close(self):
self.videoDisplay.close()
self.mainDisplay.close()
class DisplayWidget(QtGui.QWidget): class DisplayWidget(QtGui.QWidget):
""" """
Customised version of QTableWidget which can respond to keyboard Customised version of QTableWidget which can respond to keyboard
@ -42,7 +64,7 @@ class DisplayWidget(QtGui.QWidget):
log.info(u'MainDisplay loaded') log.info(u'MainDisplay loaded')
def __init__(self, parent=None, name=None): def __init__(self, parent=None, name=None):
QtGui.QWidget.__init__(self, parent) QtGui.QWidget.__init__(self, None)
self.parent = parent self.parent = parent
self.hotkey_map = {QtCore.Qt.Key_Return: 'servicemanager_next_item', self.hotkey_map = {QtCore.Qt.Key_Return: 'servicemanager_next_item',
QtCore.Qt.Key_Space: 'live_slidecontroller_next_noloop', QtCore.Qt.Key_Space: 'live_slidecontroller_next_noloop',
@ -92,11 +114,10 @@ class MainDisplay(DisplayWidget):
The list of screens. The list of screens.
""" """
log.debug(u'Initilisation started') log.debug(u'Initilisation started')
DisplayWidget.__init__(self, None) DisplayWidget.__init__(self, parent)
self.parent = parent self.parent = parent
self.setWindowTitle(u'OpenLP Display') self.setWindowTitle(u'OpenLP Display')
self.setAttribute(QtCore.Qt.WA_TranslucentBackground) self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.screens = screens self.screens = screens
self.display_image = QtGui.QLabel(self) self.display_image = QtGui.QLabel(self)
self.display_image.setScaledContents(True) self.display_image.setScaledContents(True)
@ -116,7 +137,7 @@ class MainDisplay(DisplayWidget):
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'live_slide_show'), self.showDisplay) QtCore.SIGNAL(u'live_slide_show'), self.showDisplay)
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'media_start'), self.onMediaQueue) QtCore.SIGNAL(u'media_start'), self.hideDisplay)
def setup(self): def setup(self):
""" """
@ -184,6 +205,13 @@ class MainDisplay(DisplayWidget):
self.display_image.setPixmap(self.transparent) self.display_image.setPixmap(self.transparent)
self.display_alert.setPixmap(self.transparent) self.display_alert.setPixmap(self.transparent)
self.display_text.setPixmap(self.transparent) self.display_text.setPixmap(self.transparent)
self.moveToTop()
def moveToTop(self):
log.debug(u'moveToTop')
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint \
| QtCore.Qt.FramelessWindowHint | QtCore.Qt.Dialog)
self.show()
def showDisplay(self): def showDisplay(self):
log.debug(u'showDisplay') log.debug(u'showDisplay')
@ -198,6 +226,7 @@ class MainDisplay(DisplayWidget):
self.screen[u'size'].width(), self.screen[u'size'].width(),
self.screen[u'size'].height() ) self.screen[u'size'].height() )
self.display_image.setPixmap(QtGui.QPixmap.fromImage(frame)) self.display_image.setPixmap(QtGui.QPixmap.fromImage(frame))
self.moveToTop()
def setAlertSize(self, top, height): def setAlertSize(self, top, height):
log.debug(u'setAlertSize') log.debug(u'setAlertSize')
@ -211,6 +240,7 @@ class MainDisplay(DisplayWidget):
self.display_alert.setPixmap(self.transparent) self.display_alert.setPixmap(self.transparent)
else: else:
self.display_alert.setPixmap(frame) self.display_alert.setPixmap(frame)
self.moveToTop()
def frameView(self, frame, transition=False): def frameView(self, frame, transition=False):
""" """
@ -266,59 +296,15 @@ class MainDisplay(DisplayWidget):
elif self.display_frame: elif self.display_frame:
self.frameView(self.display_frame) self.frameView(self.display_frame)
def onMediaQueue(self, message):
log.debug(u'Queue new media message %s' % message)
self.hideDisplay()
self.activateWindow()
class VideoWidget(QtGui.QWidget): class VideoDisplay(Phonon.VideoWidget):
"""
Customised version of QTableWidget which can respond to keyboard
events.
"""
log.info(u'MainDisplay loaded')
def __init__(self, parent=None, name=None):
QtGui.QWidget.__init__(self, None)
self.parent = parent
self.hotkey_map = {QtCore.Qt.Key_Return: 'servicemanager_next_item',
QtCore.Qt.Key_Space: 'live_slidecontroller_next_noloop',
QtCore.Qt.Key_Enter: 'live_slidecontroller_next_noloop',
QtCore.Qt.Key_0: 'servicemanager_next_item',
QtCore.Qt.Key_Backspace: 'live_slidecontroller_previous_noloop'}
def keyPressEvent(self, event):
if type(event) == QtGui.QKeyEvent:
#here accept the event and do something
if event.key() == QtCore.Qt.Key_Up:
Receiver.send_message(u'live_slidecontroller_previous')
event.accept()
elif event.key() == QtCore.Qt.Key_Down:
Receiver.send_message(u'live_slidecontroller_next')
event.accept()
elif event.key() == QtCore.Qt.Key_PageUp:
Receiver.send_message(u'live_slidecontroller_first')
event.accept()
elif event.key() == QtCore.Qt.Key_PageDown:
Receiver.send_message(u'live_slidecontroller_last')
event.accept()
elif event.key() in self.hotkey_map:
Receiver.send_message(self.hotkey_map[event.key()])
event.accept()
elif event.key() == QtCore.Qt.Key_Escape:
self.resetDisplay()
event.accept()
event.ignore()
else:
event.ignore()
class VideoDisplay(VideoWidget):
""" """
This is the form that is used to display videos on the projector. This is the form that is used to display videos on the projector.
""" """
log.info(u'VideoDisplay Loaded') log.info(u'VideoDisplay Loaded')
def __init__(self, parent, screens): def __init__(self, parent, screens,
aspect=Phonon.VideoWidget.AspectRatioWidget):
""" """
The constructor for the display form. The constructor for the display form.
@ -329,19 +315,15 @@ class VideoDisplay(VideoWidget):
The list of screens. The list of screens.
""" """
log.debug(u'VideoDisplay Initilisation started') log.debug(u'VideoDisplay Initilisation started')
VideoWidget.__init__(self, parent) Phonon.VideoWidget.__init__(self)
self.setWindowTitle(u'OpenLP Video Display') self.setWindowTitle(u'OpenLP Video Display')
self.parent = parent self.parent = parent
self.screens = screens self.screens = screens
self.setAttribute(QtCore.Qt.WA_TranslucentBackground) self.mediaObject = Phonon.MediaObject()
self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.setAspectRatio(aspect)
self.mediaObject = Phonon.MediaObject(self) self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory)
self.video = Phonon.VideoWidget() Phonon.createPath(self.mediaObject, self)
self.video.setVisible(False) Phonon.createPath(self.mediaObject, self.audioObject)
self.audio = Phonon.AudioOutput(Phonon.VideoCategory, self.mediaObject)
Phonon.createPath(self.mediaObject, self.video)
Phonon.createPath(self.mediaObject, self.audio)
self.firstTime = True
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'media_start'), self.onMediaQueue) QtCore.SIGNAL(u'media_start'), self.onMediaQueue)
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
@ -353,6 +335,16 @@ class VideoDisplay(VideoWidget):
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'update_config'), self.setup) QtCore.SIGNAL(u'update_config'), self.setup)
def keyPressEvent(self, event):
if type(event) == QtGui.QKeyEvent:
#here accept the event and do something
if event.key() == QtCore.Qt.Key_Escape:
self.onMediaStop()
event.accept()
event.ignore()
else:
event.ignore()
def setup(self): def setup(self):
""" """
Sets up the screen on a particular screen. Sets up the screen on a particular screen.
@ -363,30 +355,30 @@ class VideoDisplay(VideoWidget):
self.screen = self.screens.current self.screen = self.screens.current
#Sort out screen locations and sizes #Sort out screen locations and sizes
self.setGeometry(self.screen[u'size']) self.setGeometry(self.screen[u'size'])
self.video.setGeometry(self.screen[u'size']) # To display or not to display?
if not self.screen[u'primary']:
self.showFullScreen()
self.primary = False
else:
self.setVisible(False)
self.primary = True
def onMediaQueue(self, message): def onMediaQueue(self, message):
log.debug(u'VideoDisplay Queue new media message %s' % message) log.debug(u'VideoDisplay Queue new media message %s' % message)
file = os.path.join(message[1], message[2]) file = os.path.join(message[1], message[2])
if self.firstTime: source = self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
source = self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
self.firstTime = False
else:
self.mediaObject.enqueue(Phonon.MediaSource(file))
self.onMediaPlay() self.onMediaPlay()
def onMediaPlay(self): def onMediaPlay(self):
log.debug(u'VideoDisplay Play the new media, Live ') log.debug(u'VideoDisplay Play the new media, Live ')
self.firstTime = True
self.setWindowState(QtCore.Qt.WindowMinimized)
self.video.setFullScreen(True)
self.mediaObject.play() self.mediaObject.play()
self.setVisible(True) self.setVisible(True)
self.lower() self.showFullScreen()
def onMediaPause(self): def onMediaPause(self):
log.debug(u'VideoDisplay Media paused by user') log.debug(u'VideoDisplay Media paused by user')
self.mediaObject.pause() self.mediaObject.pause()
self.show()
def onMediaStop(self): def onMediaStop(self):
log.debug(u'VideoDisplay Media stopped by user') log.debug(u'VideoDisplay Media stopped by user')
@ -395,7 +387,5 @@ class VideoDisplay(VideoWidget):
def onMediaFinish(self): def onMediaFinish(self):
log.debug(u'VideoDisplay Reached end of media playlist') log.debug(u'VideoDisplay Reached end of media playlist')
self.mediaObject.stop()
self.mediaObject.clearQueue() self.mediaObject.clearQueue()
self.video.setVisible(False)
self.setVisible(False) self.setVisible(False)

View File

@ -29,9 +29,9 @@ import time
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.ui import AboutForm, SettingsForm, \ from openlp.core.ui import AboutForm, SettingsForm, \
ServiceManager, ThemeManager, MainDisplay, SlideController, \ ServiceManager, ThemeManager, SlideController, \
PluginForm, MediaDockManager, VideoDisplay PluginForm, MediaDockManager, DisplayManager
from openlp.core.lib import RenderManager, PluginConfig, build_icon, \ from openlp.core.lib import translate, RenderManager, PluginConfig, build_icon, \
OpenLPDockWidget, SettingsManager, PluginManager, Receiver, str_to_bool OpenLPDockWidget, SettingsManager, PluginManager, Receiver, str_to_bool
from openlp.core.utils import check_latest_version, AppLocation, LanguageManager, ConfigHelper from openlp.core.utils import check_latest_version, AppLocation, LanguageManager, ConfigHelper
@ -74,7 +74,6 @@ class VersionThread(QtCore.QThread):
if version != self.app_version[u'full']: if version != self.app_version[u'full']:
Receiver.send_message(u'version_check', u'%s' % version) Receiver.send_message(u'version_check', u'%s' % version)
class Ui_MainWindow(object): class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
""" """
@ -354,98 +353,98 @@ class Ui_MainWindow(object):
""" """
Set up the translation system Set up the translation system
""" """
MainWindow.mainTitle = MainWindow.trUtf8('OpenLP 2.0') MainWindow.mainTitle = translate('MainWindow','OpenLP 2.0')
MainWindow.language = MainWindow.trUtf8('English') MainWindow.language = translate('MainWindow', 'English')
MainWindow.defaultThemeText = MainWindow.trUtf8( MainWindow.defaultThemeText = translate('MainWindow',
'Default Theme: ') 'Default Theme: ')
MainWindow.setWindowTitle(MainWindow.mainTitle) MainWindow.setWindowTitle(MainWindow.mainTitle)
self.FileMenu.setTitle(MainWindow.trUtf8('&File')) self.FileMenu.setTitle(translate('MainWindow', '&File'))
self.FileImportMenu.setTitle(MainWindow.trUtf8('&Import')) self.FileImportMenu.setTitle(translate('MainWindow', '&Import'))
self.FileExportMenu.setTitle(MainWindow.trUtf8('&Export')) self.FileExportMenu.setTitle(translate('MainWindow', '&Export'))
self.OptionsMenu.setTitle(MainWindow.trUtf8('&Options')) self.OptionsMenu.setTitle(translate('MainWindow', '&Options'))
self.OptionsViewMenu.setTitle(MainWindow.trUtf8('&View')) self.OptionsViewMenu.setTitle(translate('MainWindow', '&View'))
self.ViewModeMenu.setTitle(MainWindow.trUtf8('M&ode')) self.ViewModeMenu.setTitle(translate('MainWindow', 'M&ode'))
self.OptionsLanguageMenu.setTitle(MainWindow.trUtf8( self.OptionsLanguageMenu.setTitle(translate('MainWindow',
u'&Language')) u'&Language'))
self.ToolsMenu.setTitle(MainWindow.trUtf8('&Tools')) self.ToolsMenu.setTitle(translate('MainWindow', '&Tools'))
self.HelpMenu.setTitle(MainWindow.trUtf8('&Help')) self.HelpMenu.setTitle(translate('MainWindow', '&Help'))
self.MediaManagerDock.setWindowTitle( self.MediaManagerDock.setWindowTitle(
MainWindow.trUtf8('Media Manager')) translate('MainWindow', 'Media Manager'))
self.ServiceManagerDock.setWindowTitle( self.ServiceManagerDock.setWindowTitle(
MainWindow.trUtf8('Service Manager')) translate('MainWindow', 'Service Manager'))
self.ThemeManagerDock.setWindowTitle( self.ThemeManagerDock.setWindowTitle(
MainWindow.trUtf8('Theme Manager')) translate('MainWindow', 'Theme Manager'))
self.FileNewItem.setText(MainWindow.trUtf8('&New')) self.FileNewItem.setText(translate('MainWindow', '&New'))
self.FileNewItem.setToolTip(MainWindow.trUtf8('New Service')) self.FileNewItem.setToolTip(translate('MainWindow', 'New Service'))
self.FileNewItem.setStatusTip(MainWindow.trUtf8('Create a new Service')) self.FileNewItem.setStatusTip(translate('MainWindow', 'Create a new Service'))
self.FileNewItem.setShortcut(MainWindow.trUtf8('Ctrl+N')) self.FileNewItem.setShortcut(translate('MainWindow', 'Ctrl+N'))
self.FileOpenItem.setText(MainWindow.trUtf8('&Open')) self.FileOpenItem.setText(translate('MainWindow', '&Open'))
self.FileOpenItem.setToolTip(MainWindow.trUtf8('Open Service')) self.FileOpenItem.setToolTip(translate('MainWindow', 'Open Service'))
self.FileOpenItem.setStatusTip(MainWindow.trUtf8('Open an existing service')) self.FileOpenItem.setStatusTip(translate('MainWindow', 'Open an existing service'))
self.FileOpenItem.setShortcut(MainWindow.trUtf8('Ctrl+O')) self.FileOpenItem.setShortcut(translate('MainWindow', 'Ctrl+O'))
self.FileSaveItem.setText(MainWindow.trUtf8('&Save')) self.FileSaveItem.setText(translate('MainWindow', '&Save'))
self.FileSaveItem.setToolTip(MainWindow.trUtf8('Save Service')) self.FileSaveItem.setToolTip(translate('MainWindow', 'Save Service'))
self.FileSaveItem.setStatusTip( self.FileSaveItem.setStatusTip(
MainWindow.trUtf8('Save the current service to disk')) translate('MainWindow', 'Save the current service to disk'))
self.FileSaveItem.setShortcut(MainWindow.trUtf8('Ctrl+S')) self.FileSaveItem.setShortcut(translate('MainWindow', 'Ctrl+S'))
self.FileSaveAsItem.setText(MainWindow.trUtf8('Save &As...')) self.FileSaveAsItem.setText(translate('MainWindow', 'Save &As...'))
self.FileSaveAsItem.setToolTip(MainWindow.trUtf8('Save Service As')) self.FileSaveAsItem.setToolTip(translate('MainWindow', 'Save Service As'))
self.FileSaveAsItem.setStatusTip( self.FileSaveAsItem.setStatusTip(
MainWindow.trUtf8('Save the current service under a new name')) translate('MainWindow', 'Save the current service under a new name'))
self.FileSaveAsItem.setShortcut(MainWindow.trUtf8('F12')) self.FileSaveAsItem.setShortcut(translate('MainWindow', 'F12'))
self.FileExitItem.setText(MainWindow.trUtf8('E&xit')) self.FileExitItem.setText(translate('MainWindow', 'E&xit'))
self.FileExitItem.setStatusTip(MainWindow.trUtf8('Quit OpenLP')) self.FileExitItem.setStatusTip(translate('MainWindow', 'Quit OpenLP'))
self.FileExitItem.setShortcut(MainWindow.trUtf8('Alt+F4')) self.FileExitItem.setShortcut(translate('MainWindow', 'Alt+F4'))
self.ImportThemeItem.setText(MainWindow.trUtf8('&Theme')) self.ImportThemeItem.setText(translate('MainWindow', '&Theme'))
self.ImportLanguageItem.setText(MainWindow.trUtf8('&Language')) self.ImportLanguageItem.setText(translate('MainWindow', '&Language'))
self.ExportThemeItem.setText(MainWindow.trUtf8('&Theme')) self.ExportThemeItem.setText(translate('MainWindow', '&Theme'))
self.ExportLanguageItem.setText(MainWindow.trUtf8('&Language')) self.ExportLanguageItem.setText(translate('MainWindow', '&Language'))
self.actionLook_Feel.setText(MainWindow.trUtf8('Look && &Feel')) self.actionLook_Feel.setText(translate('MainWindow', 'Look && &Feel'))
self.OptionsSettingsItem.setText(MainWindow.trUtf8('&Settings')) self.OptionsSettingsItem.setText(translate('MainWindow', '&Settings'))
self.ViewMediaManagerItem.setText(MainWindow.trUtf8('&Media Manager')) self.ViewMediaManagerItem.setText(translate('MainWindow', '&Media Manager'))
self.ViewMediaManagerItem.setToolTip(MainWindow.trUtf8('Toggle Media Manager')) self.ViewMediaManagerItem.setToolTip(translate('MainWindow', 'Toggle Media Manager'))
self.ViewMediaManagerItem.setStatusTip( self.ViewMediaManagerItem.setStatusTip(
MainWindow.trUtf8('Toggle the visibility of the Media Manager')) translate('MainWindow', 'Toggle the visibility of the Media Manager'))
self.ViewMediaManagerItem.setShortcut(MainWindow.trUtf8('F8')) self.ViewMediaManagerItem.setShortcut(translate('MainWindow', 'F8'))
self.ViewThemeManagerItem.setText(MainWindow.trUtf8('&Theme Manager')) self.ViewThemeManagerItem.setText(translate('MainWindow', '&Theme Manager'))
self.ViewThemeManagerItem.setToolTip(MainWindow.trUtf8('Toggle Theme Manager')) self.ViewThemeManagerItem.setToolTip(translate('MainWindow', 'Toggle Theme Manager'))
self.ViewThemeManagerItem.setStatusTip( self.ViewThemeManagerItem.setStatusTip(
MainWindow.trUtf8('Toggle the visibility of the Theme Manager')) translate('MainWindow', 'Toggle the visibility of the Theme Manager'))
self.ViewThemeManagerItem.setShortcut(MainWindow.trUtf8('F10')) self.ViewThemeManagerItem.setShortcut(translate('MainWindow', 'F10'))
self.ViewServiceManagerItem.setText(MainWindow.trUtf8('&Service Manager')) self.ViewServiceManagerItem.setText(translate('MainWindow', '&Service Manager'))
self.ViewServiceManagerItem.setToolTip( self.ViewServiceManagerItem.setToolTip(
MainWindow.trUtf8('Toggle Service Manager')) translate('MainWindow', 'Toggle Service Manager'))
self.ViewServiceManagerItem.setStatusTip( self.ViewServiceManagerItem.setStatusTip(
MainWindow.trUtf8('Toggle the visibility of the Service Manager')) translate('MainWindow', 'Toggle the visibility of the Service Manager'))
self.ViewServiceManagerItem.setShortcut(MainWindow.trUtf8('F9')) self.ViewServiceManagerItem.setShortcut(translate('MainWindow', 'F9'))
self.action_Preview_Panel.setText(MainWindow.trUtf8('&Preview Panel')) self.action_Preview_Panel.setText(translate('MainWindow', '&Preview Panel'))
self.action_Preview_Panel.setToolTip(MainWindow.trUtf8('Toggle Preview Panel')) self.action_Preview_Panel.setToolTip(translate('MainWindow', 'Toggle Preview Panel'))
self.action_Preview_Panel.setStatusTip( self.action_Preview_Panel.setStatusTip(
MainWindow.trUtf8('Toggle the visibility of the Preview Panel')) translate('MainWindow', 'Toggle the visibility of the Preview Panel'))
self.action_Preview_Panel.setShortcut(MainWindow.trUtf8('F11')) self.action_Preview_Panel.setShortcut(translate('MainWindow', 'F11'))
self.PluginItem.setText(MainWindow.trUtf8('&Plugin List')) self.PluginItem.setText(translate('MainWindow', '&Plugin List'))
self.PluginItem.setStatusTip(MainWindow.trUtf8('List the Plugins')) self.PluginItem.setStatusTip(translate('MainWindow', 'List the Plugins'))
self.PluginItem.setShortcut(MainWindow.trUtf8('Alt+F7')) self.PluginItem.setShortcut(translate('MainWindow', 'Alt+F7'))
self.HelpDocumentationItem.setText(MainWindow.trUtf8('&User Guide')) self.HelpDocumentationItem.setText(translate('MainWindow', '&User Guide'))
self.HelpAboutItem.setText(MainWindow.trUtf8('&About')) self.HelpAboutItem.setText(translate('MainWindow', '&About'))
self.HelpAboutItem.setStatusTip( self.HelpAboutItem.setStatusTip(
MainWindow.trUtf8('More information about OpenLP')) translate('MainWindow', 'More information about OpenLP'))
self.HelpAboutItem.setShortcut(MainWindow.trUtf8('Ctrl+F1')) self.HelpAboutItem.setShortcut(translate('MainWindow', 'Ctrl+F1'))
self.HelpOnlineHelpItem.setText(MainWindow.trUtf8('&Online Help')) self.HelpOnlineHelpItem.setText(translate('MainWindow', '&Online Help'))
self.HelpWebSiteItem.setText(MainWindow.trUtf8('&Web Site')) self.HelpWebSiteItem.setText(translate('MainWindow', '&Web Site'))
#i18n #i18n
self.AutoLanguageItem.setText(MainWindow.trUtf8('&Auto Detect')) self.AutoLanguageItem.setText(translate('MainWindow', '&Auto Detect'))
self.AutoLanguageItem.setStatusTip( self.AutoLanguageItem.setStatusTip(
MainWindow.trUtf8('Choose System language, if available')) translate('MainWindow', 'Choose System language, if available'))
for item in self.LanguageItem: for item in self.LanguageItem:
self.LanguageItem[item].setText(self.LanguageItem[item].objectName()) self.LanguageItem[item].setText(self.LanguageItem[item].objectName())
self.LanguageItem[item].setStatusTip( self.LanguageItem[item].setStatusTip(
MainWindow.trUtf8('Set the interface language to %1').arg(self.LanguageItem[item].objectName())) translate('MainWindow', 'Set the interface language to %1').arg(self.LanguageItem[item].objectName()))
self.ToolsAddToolItem.setText(MainWindow.trUtf8('Add &Tool...')) self.ToolsAddToolItem.setText(translate('MainWindow', 'Add &Tool...'))
self.ToolsAddToolItem.setStatusTip( self.ToolsAddToolItem.setStatusTip(
MainWindow.trUtf8('Add an application to the list of tools')) translate('MainWindow', 'Add an application to the list of tools'))
self.action_Preview_Panel.setText(MainWindow.trUtf8('&Preview Pane')) self.action_Preview_Panel.setText(translate('MainWindow', '&Preview Pane'))
self.ModeLiveItem.setText(MainWindow.trUtf8('&Live')) self.ModeLiveItem.setText(translate('MainWindow', '&Live'))
class MainWindow(QtGui.QMainWindow, Ui_MainWindow): class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
@ -465,8 +464,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
self.serviceNotSaved = False self.serviceNotSaved = False
self.settingsmanager = SettingsManager(screens) self.settingsmanager = SettingsManager(screens)
self.generalConfig = PluginConfig(u'General') self.generalConfig = PluginConfig(u'General')
self.videoDisplay = VideoDisplay(self, screens) self.displayManager = DisplayManager(screens)
self.mainDisplay = MainDisplay(self, screens)
self.aboutForm = AboutForm(self, applicationVersion) self.aboutForm = AboutForm(self, applicationVersion)
self.settingsForm = SettingsForm(self.screens, self, self) self.settingsForm = SettingsForm(self.screens, self, self)
# Set up the path with plugins # Set up the path with plugins
@ -521,6 +519,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
QtCore.SIGNAL(u'blank_check'), self.blankCheck) QtCore.SIGNAL(u'blank_check'), self.blankCheck)
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'screen_changed'), self.screenChanged) QtCore.SIGNAL(u'screen_changed'), self.screenChanged)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'status_message'), self.showStatusMessage)
QtCore.QObject.connect(self.FileNewItem, QtCore.QObject.connect(self.FileNewItem,
QtCore.SIGNAL(u'triggered()'), QtCore.SIGNAL(u'triggered()'),
self.ServiceManagerContents.onNewService) self.ServiceManagerContents.onNewService)
@ -553,7 +553,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
self.plugin_helpers[u'service'] = self.ServiceManagerContents self.plugin_helpers[u'service'] = self.ServiceManagerContents
self.plugin_helpers[u'settings'] = self.settingsForm self.plugin_helpers[u'settings'] = self.settingsForm
self.plugin_helpers[u'toolbox'] = self.mediaDockManager self.plugin_helpers[u'toolbox'] = self.mediaDockManager
self.plugin_helpers[u'maindisplay'] = self.mainDisplay self.plugin_helpers[u'maindisplay'] = self.displayManager.mainDisplay
self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers) self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers)
# hook methods have to happen after find_plugins. Find plugins needs # hook methods have to happen after find_plugins. Find plugins needs
# the controllers hence the hooks have moved from setupUI() to here # the controllers hence the hooks have moved from setupUI() to here
@ -581,13 +581,14 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
#i18n #i18n
def setAutoLanguage(self, value): def setAutoLanguage(self, value):
self.LanguageGroup.setEnabled(not value) self.LanguageGroup.setDisabled(value)
LanguageManager.AutoLanguage = value LanguageManager.AutoLanguage = value
LanguageManager.set_language(self.LanguageGroup.checkedAction()) LanguageManager.set_language(self.LanguageGroup.checkedAction())
def versionCheck(self, version): def versionCheck(self, version):
""" """
Checks the version of the Application called from openlp.pyw Checks the version of the Application called from openlp.pyw
Triggered by delay thread.
""" """
app_version = self.applicationVersion[u'full'] app_version = self.applicationVersion[u'full']
version_text = unicode(self.trUtf8('Version %s of OpenLP is now ' version_text = unicode(self.trUtf8('Version %s of OpenLP is now '
@ -605,17 +606,18 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
""" """
self.showMaximized() self.showMaximized()
#screen_number = self.getMonitorNumber() #screen_number = self.getMonitorNumber()
self.mainDisplay.setup() self.displayManager.setup()
self.videoDisplay.setup() if self.displayManager.mainDisplay.isVisible():
if self.mainDisplay.isVisible(): self.displayManager.mainDisplay.setFocus()
self.mainDisplay.setFocus()
self.activateWindow() self.activateWindow()
if str_to_bool(self.generalConfig.get_config(u'auto open', False)): if str_to_bool(self.generalConfig.get_config(u'auto open', False)):
self.ServiceManagerContents.onLoadService(True) self.ServiceManagerContents.onLoadService(True)
self.videoDisplay.lower()
self.mainDisplay.raise_()
def blankCheck(self): def blankCheck(self):
"""
Check and display message if screen blank on setup.
Triggered by delay thread.
"""
if str_to_bool(self.generalConfig.get_config(u'screen blank', False)) \ if str_to_bool(self.generalConfig.get_config(u'screen blank', False)) \
and str_to_bool(self.generalConfig.get_config(u'blank warning', False)): and str_to_bool(self.generalConfig.get_config(u'blank warning', False)):
self.LiveController.onBlankDisplay(True) self.LiveController.onBlankDisplay(True)
@ -626,6 +628,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
QtGui.QMessageBox.Ok) QtGui.QMessageBox.Ok)
def versionThread(self): def versionThread(self):
"""
Start an initial setup thread to delay notifications
"""
vT = VersionThread(self, self.applicationVersion, self.generalConfig) vT = VersionThread(self, self.applicationVersion, self.generalConfig)
vT.start() vT.start()
@ -650,8 +655,13 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
self.settingsForm.exec_() self.settingsForm.exec_()
def screenChanged(self): def screenChanged(self):
"""
The screen has changed to so tell the displays to update_display
their locations
"""
self.RenderManager.update_display() self.RenderManager.update_display()
self.mainDisplay.setup() self.displayManager.setup()
self.setFocus()
self.activateWindow() self.activateWindow()
def closeEvent(self, event): def closeEvent(self, event):
@ -669,20 +679,14 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
QtGui.QMessageBox.Save) QtGui.QMessageBox.Save)
if ret == QtGui.QMessageBox.Save: if ret == QtGui.QMessageBox.Save:
self.ServiceManagerContents.onSaveService() self.ServiceManagerContents.onSaveService()
self.mainDisplay.close()
self.videoDisplay.close()
self.cleanUp() self.cleanUp()
event.accept() event.accept()
elif ret == QtGui.QMessageBox.Discard: elif ret == QtGui.QMessageBox.Discard:
self.mainDisplay.close()
self.videoDisplay.close()
self.cleanUp() self.cleanUp()
event.accept() event.accept()
else: else:
event.ignore() event.ignore()
else: else:
self.mainDisplay.close()
self.videoDisplay.close()
self.cleanUp() self.cleanUp()
event.accept() event.accept()
@ -695,10 +699,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
# Call the cleanup method to shutdown plugins. # Call the cleanup method to shutdown plugins.
log.info(u'cleanup plugins') log.info(u'cleanup plugins')
self.plugin_manager.finalise_plugins() self.plugin_manager.finalise_plugins()
#Close down the displays
self.displayManager.close()
def serviceChanged(self, reset=False, serviceName=None): def serviceChanged(self, reset=False, serviceName=None):
""" """
Hook to change the main window title when the service changes Hook to change the main window title when the service chmainwindow.pyanges
``reset`` ``reset``
Shows if the service has been cleared or saved Shows if the service has been cleared or saved
@ -718,6 +724,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
title = u'%s - %s*' % (self.mainTitle, service_name) title = u'%s - %s*' % (self.mainTitle, service_name)
self.setWindowTitle(title) self.setWindowTitle(title)
def showStatusMessage(self, message):
self.StatusBar.showMessage(message)
def defaultThemeChanged(self, theme): def defaultThemeChanged(self, theme):
self.DefaultThemeLabel.setText( self.DefaultThemeLabel.setText(
u'%s %s' % (self.defaultThemeText, theme)) u'%s %s' % (self.defaultThemeText, theme))
@ -743,4 +752,4 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
def togglePreviewPanel(self): def togglePreviewPanel(self):
previewBool = self.PreviewController.Panel.isVisible() previewBool = self.PreviewController.Panel.isVisible()
self.PreviewController.Panel.setVisible(not previewBool) self.PreviewController.Panel.setVisible(not previewBool)
self.settingsmanager.togglePreviewPanel(not previewBool) self.settingsmanager.togglePreviewPanel(not previewBool)

View File

@ -635,7 +635,7 @@ class SlideController(QtGui.QWidget):
self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame[u'main'])) self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame[u'main']))
log.log(15, u'Slide Rendering took %4s' % (time.time() - before)) log.log(15, u'Slide Rendering took %4s' % (time.time() - before))
if self.isLive: if self.isLive:
self.parent.mainDisplay.frameView(frame, True) self.parent.displayManager.mainDisplay.frameView(frame, True)
self.selectedRow = row self.selectedRow = row
def onSlideChange(self, row): def onSlideChange(self, row):

View File

@ -29,6 +29,7 @@ from logging import FileHandler
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
import os import os
from openlp.core.utils import AppLocation, ConfigHelper from openlp.core.utils import AppLocation, ConfigHelper
from openlp.core.lib import translate
log = logging.getLogger() log = logging.getLogger()
@ -86,9 +87,10 @@ class LanguageManager(object):
language = u'%s' % qmList[actionName] language = u'%s' % qmList[actionName]
log.info(u'Language file: \'%s\' written to conf file' % language) log.info(u'Language file: \'%s\' written to conf file' % language)
ConfigHelper.set_config(u'general', u'language', language) ConfigHelper.set_config(u'general', u'language', language)
QtGui.QMessageBox.information(None, QtGui.QMessageBox.information(None,
u'Language', translate('LanguageManager', 'Language'),
u'After restart new Language settings will be used.') translate('LanguageManager',
'After restart new Language settings will be used.'))
@staticmethod @staticmethod
def init_qm_list(): def init_qm_list():
@ -105,4 +107,4 @@ class LanguageManager(object):
def get_qm_list(): def get_qm_list():
if LanguageManager.__qmList__ == None: if LanguageManager.__qmList__ == None:
LanguageManager.init_qm_list() LanguageManager.init_qm_list()
return LanguageManager.__qmList__ return LanguageManager.__qmList__

View File

@ -27,7 +27,7 @@ import logging
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import Plugin, build_icon, PluginStatus from openlp.core.lib import Plugin, build_icon, PluginStatus, Receiver
from openlp.plugins.alerts.lib import AlertsManager, DBManager from openlp.plugins.alerts.lib import AlertsManager, DBManager
from openlp.plugins.alerts.forms import AlertsTab, AlertForm from openlp.plugins.alerts.forms import AlertsTab, AlertForm
@ -88,6 +88,7 @@ class alertsPlugin(Plugin):
def onAlertsTrigger(self): def onAlertsTrigger(self):
self.alertForm.loadList() self.alertForm.loadList()
self.alertForm.exec_() self.alertForm.exec_()
Receiver.send_message(u'text_onTop')
def about(self): def about(self):
about_text = self.trUtf8('<b>Alerts Plugin</b><br>This plugin ' about_text = self.trUtf8('<b>Alerts Plugin</b><br>This plugin '

View File

@ -1,87 +1,134 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
############################################################################### # Form implementation generated from reading ui file 'alertdialog.ui'
# OpenLP - Open Source Lyrics Projection # #
# --------------------------------------------------------------------------- # # Created: Sat Apr 17 08:07:40 2010
# Copyright (c) 2008-2010 Raoul Snyman # # by: PyQt4 UI code generator 4.7
# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # #
# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # # WARNING! All changes made in this file will be lost!
# Thompson, Jon Tibble, Carsten Tinggaard #
# --------------------------------------------------------------------------- #
# 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 from PyQt4 import QtCore, QtGui
class Ui_AlertDialog(object): class Ui_AlertDialog(object):
def setupUi(self, AlertForm): def setupUi(self, AlertDialog):
AlertForm.setObjectName(u'AlertDialog') AlertDialog.setObjectName("AlertDialog")
AlertForm.resize(430, 320) AlertDialog.resize(567, 440)
icon = QtGui.QIcon() icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(u':/icon/openlp.org-icon-32.bmp'), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon.addPixmap(QtGui.QPixmap(":/icon/openlp.org-icon-32.bmp"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
AlertForm.setWindowIcon(icon) AlertDialog.setWindowIcon(icon)
self.AlertFormLayout = QtGui.QVBoxLayout(AlertForm) self.AlertFormLayout = QtGui.QVBoxLayout(AlertDialog)
self.AlertFormLayout.setSpacing(8) self.AlertFormLayout.setSpacing(8)
self.AlertFormLayout.setMargin(8) self.AlertFormLayout.setMargin(8)
self.AlertFormLayout.setObjectName(u'AlertFormLayout') self.AlertFormLayout.setObjectName("AlertFormLayout")
self.AlertEntryWidget = QtGui.QWidget(AlertForm) self.AlertTextLayout = QtGui.QFormLayout()
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) self.AlertTextLayout.setContentsMargins(0, 0, -1, -1)
sizePolicy.setHorizontalStretch(0) self.AlertTextLayout.setSpacing(8)
sizePolicy.setVerticalStretch(0) self.AlertTextLayout.setObjectName("AlertTextLayout")
sizePolicy.setHeightForWidth(self.AlertEntryWidget.sizePolicy().hasHeightForWidth()) self.AlertEntryLabel = QtGui.QLabel(AlertDialog)
self.AlertEntryWidget.setSizePolicy(sizePolicy)
self.AlertEntryWidget.setObjectName(u'AlertEntryWidget')
self.verticalLayout_2 = QtGui.QVBoxLayout(self.AlertEntryWidget)
self.verticalLayout_2.setObjectName(u'verticalLayout_2')
self.verticalLayout = QtGui.QVBoxLayout()
self.verticalLayout.setObjectName(u'verticalLayout')
self.AlertEntryLabel = QtGui.QLabel(self.AlertEntryWidget)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.AlertEntryLabel.sizePolicy().hasHeightForWidth()) sizePolicy.setHeightForWidth(self.AlertEntryLabel.sizePolicy().hasHeightForWidth())
self.AlertEntryLabel.setSizePolicy(sizePolicy) self.AlertEntryLabel.setSizePolicy(sizePolicy)
self.AlertEntryLabel.setObjectName(u'AlertEntryLabel') self.AlertEntryLabel.setObjectName("AlertEntryLabel")
self.verticalLayout.addWidget(self.AlertEntryLabel) self.AlertTextLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.AlertEntryLabel)
self.AlertEntryEditItem = QtGui.QLineEdit(self.AlertEntryWidget) self.AlertParameter = QtGui.QLabel(AlertDialog)
self.AlertEntryEditItem.setObjectName(u'AlertEntryEditItem') self.AlertParameter.setObjectName("AlertParameter")
self.verticalLayout.addWidget(self.AlertEntryEditItem) self.AlertTextLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.AlertParameter)
self.AlertListWidget = QtGui.QListWidget(self.AlertEntryWidget) self.ParameterEdit = QtGui.QLineEdit(AlertDialog)
self.ParameterEdit.setObjectName("ParameterEdit")
self.AlertTextLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.ParameterEdit)
self.AlertTextEdit = QtGui.QLineEdit(AlertDialog)
self.AlertTextEdit.setObjectName("AlertTextEdit")
self.AlertTextLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.AlertTextEdit)
self.AlertFormLayout.addLayout(self.AlertTextLayout)
self.ManagementLayout = QtGui.QHBoxLayout()
self.ManagementLayout.setSpacing(8)
self.ManagementLayout.setContentsMargins(-1, -1, -1, 0)
self.ManagementLayout.setObjectName("ManagementLayout")
self.AlertListWidget = QtGui.QListWidget(AlertDialog)
self.AlertListWidget.setAlternatingRowColors(True) self.AlertListWidget.setAlternatingRowColors(True)
self.AlertListWidget.setObjectName(u'AlertListWidget') self.AlertListWidget.setObjectName("AlertListWidget")
self.verticalLayout.addWidget(self.AlertListWidget) self.ManagementLayout.addWidget(self.AlertListWidget)
self.verticalLayout_2.addLayout(self.verticalLayout) self.ManageButtonLayout = QtGui.QVBoxLayout()
self.horizontalLayout = QtGui.QHBoxLayout() self.ManageButtonLayout.setSpacing(8)
self.horizontalLayout.setObjectName(u'horizontalLayout') self.ManageButtonLayout.setObjectName("ManageButtonLayout")
spacerItem = QtGui.QSpacerItem(181, 38, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.NewButton = QtGui.QPushButton(AlertDialog)
self.horizontalLayout.addItem(spacerItem) icon1 = QtGui.QIcon()
self.DisplayButton = QtGui.QPushButton(self.AlertEntryWidget) icon1.addPixmap(QtGui.QPixmap(":/general/general_new.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.DisplayButton.setObjectName(u'DisplayButton') self.NewButton.setIcon(icon1)
self.horizontalLayout.addWidget(self.DisplayButton) self.NewButton.setObjectName("NewButton")
self.CancelButton = QtGui.QPushButton(self.AlertEntryWidget) self.ManageButtonLayout.addWidget(self.NewButton)
self.CancelButton.setObjectName(u'CancelButton') self.SaveButton = QtGui.QPushButton(AlertDialog)
self.horizontalLayout.addWidget(self.CancelButton) self.SaveButton.setEnabled(False)
self.verticalLayout_2.addLayout(self.horizontalLayout) icon2 = QtGui.QIcon()
self.AlertFormLayout.addWidget(self.AlertEntryWidget) icon2.addPixmap(QtGui.QPixmap(":/general/general_save.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.SaveButton.setIcon(icon2)
self.SaveButton.setObjectName("SaveButton")
self.ManageButtonLayout.addWidget(self.SaveButton)
self.EditButton = QtGui.QPushButton(AlertDialog)
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(":/general/general_edit.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.EditButton.setIcon(icon3)
self.EditButton.setObjectName("EditButton")
self.ManageButtonLayout.addWidget(self.EditButton)
self.DeleteButton = QtGui.QPushButton(AlertDialog)
icon4 = QtGui.QIcon()
icon4.addPixmap(QtGui.QPixmap(":/general/general_delete.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.DeleteButton.setIcon(icon4)
self.DeleteButton.setObjectName("DeleteButton")
self.ManageButtonLayout.addWidget(self.DeleteButton)
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.ManageButtonLayout.addItem(spacerItem)
self.ManagementLayout.addLayout(self.ManageButtonLayout)
self.AlertFormLayout.addLayout(self.ManagementLayout)
self.AlertButtonLayout = QtGui.QHBoxLayout()
self.AlertButtonLayout.setSpacing(8)
self.AlertButtonLayout.setObjectName("AlertButtonLayout")
spacerItem1 = QtGui.QSpacerItem(181, 0, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.AlertButtonLayout.addItem(spacerItem1)
self.DisplayButton = QtGui.QPushButton(AlertDialog)
icon5 = QtGui.QIcon()
icon5.addPixmap(QtGui.QPixmap(":/general/general_live.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.DisplayButton.setIcon(icon5)
self.DisplayButton.setObjectName("DisplayButton")
self.AlertButtonLayout.addWidget(self.DisplayButton)
self.DisplayCloseButton = QtGui.QPushButton(AlertDialog)
self.DisplayCloseButton.setIcon(icon5)
self.DisplayCloseButton.setObjectName("DisplayCloseButton")
self.AlertButtonLayout.addWidget(self.DisplayCloseButton)
self.CloseButton = QtGui.QPushButton(AlertDialog)
icon6 = QtGui.QIcon()
icon6.addPixmap(QtGui.QPixmap(":/system/system_close.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.CloseButton.setIcon(icon6)
self.CloseButton.setObjectName("CloseButton")
self.AlertButtonLayout.addWidget(self.CloseButton)
self.AlertFormLayout.addLayout(self.AlertButtonLayout)
self.AlertEntryLabel.setBuddy(self.AlertTextEdit)
self.AlertParameter.setBuddy(self.ParameterEdit)
self.retranslateUi(AlertForm) self.retranslateUi(AlertDialog)
QtCore.QObject.connect(self.CancelButton, QtCore.SIGNAL(u'clicked()'), self.close) QtCore.QObject.connect(self.CloseButton, QtCore.SIGNAL("clicked()"), AlertDialog.close)
QtCore.QMetaObject.connectSlotsByName(AlertForm) QtCore.QMetaObject.connectSlotsByName(AlertDialog)
AlertDialog.setTabOrder(self.AlertTextEdit, self.ParameterEdit)
AlertDialog.setTabOrder(self.ParameterEdit, self.AlertListWidget)
AlertDialog.setTabOrder(self.AlertListWidget, self.NewButton)
AlertDialog.setTabOrder(self.NewButton, self.SaveButton)
AlertDialog.setTabOrder(self.SaveButton, self.EditButton)
AlertDialog.setTabOrder(self.EditButton, self.DeleteButton)
AlertDialog.setTabOrder(self.DeleteButton, self.DisplayButton)
AlertDialog.setTabOrder(self.DisplayButton, self.DisplayCloseButton)
AlertDialog.setTabOrder(self.DisplayCloseButton, self.CloseButton)
def retranslateUi(self, AlertDialog):
AlertDialog.setWindowTitle(QtGui.QApplication.translate("AlertDialog", "Alert Message", None, QtGui.QApplication.UnicodeUTF8))
self.AlertEntryLabel.setText(QtGui.QApplication.translate("AlertDialog", "Alert &text:", None, QtGui.QApplication.UnicodeUTF8))
self.AlertParameter.setText(QtGui.QApplication.translate("AlertDialog", "&Parameter(s):", None, QtGui.QApplication.UnicodeUTF8))
self.NewButton.setText(QtGui.QApplication.translate("AlertDialog", "&New", None, QtGui.QApplication.UnicodeUTF8))
self.SaveButton.setText(QtGui.QApplication.translate("AlertDialog", "&Save", None, QtGui.QApplication.UnicodeUTF8))
self.EditButton.setText(QtGui.QApplication.translate("AlertDialog", "&Edit", None, QtGui.QApplication.UnicodeUTF8))
self.DeleteButton.setText(QtGui.QApplication.translate("AlertDialog", "&Delete", None, QtGui.QApplication.UnicodeUTF8))
self.DisplayButton.setText(QtGui.QApplication.translate("AlertDialog", "Displ&ay", None, QtGui.QApplication.UnicodeUTF8))
self.DisplayCloseButton.setText(QtGui.QApplication.translate("AlertDialog", "Display && Cl&ose", None, QtGui.QApplication.UnicodeUTF8))
self.CloseButton.setText(QtGui.QApplication.translate("AlertDialog", "&Close", None, QtGui.QApplication.UnicodeUTF8))
def retranslateUi(self, AlertForm):
AlertForm.setWindowTitle(self.trUtf8('Alert Message'))
self.AlertEntryLabel.setText(self.trUtf8('Alert Text:'))
self.DisplayButton.setText(self.trUtf8('Display'))
self.CancelButton.setText(self.trUtf8('Cancel'))

View File

@ -45,9 +45,24 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
QtCore.QObject.connect(self.DisplayButton, QtCore.QObject.connect(self.DisplayButton,
QtCore.SIGNAL(u'clicked()'), QtCore.SIGNAL(u'clicked()'),
self.onDisplayClicked) self.onDisplayClicked)
QtCore.QObject.connect(self.AlertEntryEditItem, QtCore.QObject.connect(self.DisplayCloseButton,
QtCore.SIGNAL(u'clicked()'),
self.onDisplayCloseClicked)
QtCore.QObject.connect(self.AlertTextEdit,
QtCore.SIGNAL(u'textChanged(const QString&)'), QtCore.SIGNAL(u'textChanged(const QString&)'),
self.onTextChanged) self.onTextChanged)
QtCore.QObject.connect(self.NewButton,
QtCore.SIGNAL(u'clicked()'),
self.onNewClick)
QtCore.QObject.connect(self.DeleteButton,
QtCore.SIGNAL(u'clicked()'),
self.onDeleteClick)
QtCore.QObject.connect(self.EditButton,
QtCore.SIGNAL(u'clicked()'),
self.onEditClick)
QtCore.QObject.connect(self.SaveButton,
QtCore.SIGNAL(u'clicked()'),
self.onSaveClick)
QtCore.QObject.connect(self.AlertListWidget, QtCore.QObject.connect(self.AlertListWidget,
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
self.onDoubleClick) self.onDoubleClick)
@ -60,19 +75,64 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
alerts = self.manager.get_all_alerts() alerts = self.manager.get_all_alerts()
for alert in alerts: for alert in alerts:
item_name = QtGui.QListWidgetItem(alert.text) item_name = QtGui.QListWidgetItem(alert.text)
item_name.setData(
QtCore.Qt.UserRole, QtCore.QVariant(alert.id))
self.AlertListWidget.addItem(item_name) self.AlertListWidget.addItem(item_name)
self.SaveButton.setEnabled(False)
self.EditButton.setEnabled(False)
self.DeleteButton.setEnabled(False)
def onDisplayClicked(self): def onDisplayClicked(self):
self.triggerAlert(unicode(self.AlertEntryEditItem.text())) if self.triggerAlert(unicode(self.AlertTextEdit.text())):
if self.parent.alertsTab.save_history and self.history_required: self.history_required = False
self.loadList()
def onDisplayCloseClicked(self):
if self.triggerAlert(unicode(self.AlertTextEdit.text())):
self.close()
def onDeleteClick(self):
item = self.AlertListWidget.currentItem()
if item:
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
self.parent.manager.delete_alert(item_id)
row = self.AlertListWidget.row(item)
self.AlertListWidget.takeItem(row)
self.AlertTextEdit.setText(u'')
self.SaveButton.setEnabled(False)
self.DeleteButton.setEnabled(False)
self.EditButton.setEnabled(False)
def onEditClick(self):
item = self.AlertListWidget.currentItem()
if item:
self.item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
self.AlertTextEdit.setText(unicode(item.text()))
self.SaveButton.setEnabled(True)
self.DeleteButton.setEnabled(True)
self.EditButton.setEnabled(False)
def onNewClick(self):
if len(self.AlertTextEdit.text()) == 0:
QtGui.QMessageBox.information(self,
self.trUtf8('Item selected to Add'),
self.trUtf8('Missing data'))
else:
alert = AlertItem() alert = AlertItem()
alert.text = unicode(self.AlertEntryEditItem.text()) alert.text = unicode(self.AlertTextEdit.text())
self.manager.save_alert(alert) self.manager.save_alert(alert)
self.history_required = False self.onClearClick()
self.loadList()
def onSaveClick(self):
alert = self.manager.get_alert(self.item_id)
alert.text = unicode(self.AlertTextEdit.text())
self.manager.save_alert(alert)
self.onClearClick()
self.loadList() self.loadList()
def onTextChanged(self): def onTextChanged(self):
#Data has changed by editing it so potential storage #Data has changed by editing it so potential storage required
self.history_required = True self.history_required = True
def onDoubleClick(self): def onDoubleClick(self):
@ -93,8 +153,17 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
items = self.AlertListWidget.selectedIndexes() items = self.AlertListWidget.selectedIndexes()
for item in items: for item in items:
bitem = self.AlertListWidget.item(item.row()) bitem = self.AlertListWidget.item(item.row())
self.AlertEntryEditItem.setText(bitem.text()) self.AlertTextEdit.setText(bitem.text())
self.history_required = False self.history_required = False
self.EditButton.setEnabled(True)
self.DeleteButton.setEnabled(True)
def triggerAlert(self, text): def triggerAlert(self, text):
self.parent.alertsmanager.displayAlert(text) if text:
self.parent.alertsmanager.displayAlert(text)
if self.parent.alertsTab.save_history and self.history_required:
alert = AlertItem()
alert.text = unicode(self.AlertTextEdit.text())
self.manager.save_alert(alert)
return True
return False

View File

@ -188,43 +188,6 @@ class AlertsTab(SettingsTab):
self.SlideRightSpacer = QtGui.QSpacerItem(20, 40, self.SlideRightSpacer = QtGui.QSpacerItem(20, 40,
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.SlideRightLayout.addItem(self.SlideRightSpacer) self.SlideRightLayout.addItem(self.SlideRightSpacer)
self.layoutWidget = QtGui.QWidget(self)
self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 361, 251))
self.layoutWidget.setObjectName(u'layoutWidget')
self.verticalLayout_2 = QtGui.QVBoxLayout(self.layoutWidget)
self.verticalLayout_2.setObjectName(u'verticalLayout_2')
self.horizontalLayout_2 = QtGui.QHBoxLayout()
self.horizontalLayout_2.setObjectName(u'horizontalLayout_2')
self.AlertLineEdit = QtGui.QLineEdit(self.layoutWidget)
self.AlertLineEdit.setObjectName(u'AlertLineEdit')
self.horizontalLayout_2.addWidget(self.AlertLineEdit)
self.verticalLayout_2.addLayout(self.horizontalLayout_2)
self.horizontalLayout = QtGui.QHBoxLayout()
self.horizontalLayout.setObjectName(u'horizontalLayout')
self.AlertListWidget = QtGui.QListWidget(self.layoutWidget)
self.AlertListWidget.setAlternatingRowColors(True)
self.AlertListWidget.setObjectName(u'AlertListWidget')
self.horizontalLayout.addWidget(self.AlertListWidget)
self.verticalLayout = QtGui.QVBoxLayout()
self.verticalLayout.setObjectName(u'verticalLayout')
self.SaveButton = QtGui.QPushButton(self.layoutWidget)
self.SaveButton.setObjectName(u'SaveButton')
self.verticalLayout.addWidget(self.SaveButton)
self.ClearButton = QtGui.QPushButton(self.layoutWidget)
self.ClearButton.setObjectName(u'ClearButton')
self.verticalLayout.addWidget(self.ClearButton)
self.AddButton = QtGui.QPushButton(self.layoutWidget)
self.AddButton.setObjectName(u'AddButton')
self.verticalLayout.addWidget(self.AddButton)
self.EditButton = QtGui.QPushButton(self.layoutWidget)
self.EditButton.setObjectName(u'EditButton')
self.verticalLayout.addWidget(self.EditButton)
self.DeleteButton = QtGui.QPushButton(self.layoutWidget)
self.DeleteButton.setObjectName(u'DeleteButton')
self.verticalLayout.addWidget(self.DeleteButton)
self.horizontalLayout.addLayout(self.verticalLayout)
self.verticalLayout_2.addLayout(self.horizontalLayout)
self.SlideRightLayout.addWidget(self.layoutWidget)
self.AlertsLayout.addWidget(self.AlertRightColumn) self.AlertsLayout.addWidget(self.AlertRightColumn)
# Signals and slots # Signals and slots
QtCore.QObject.connect(self.HistoryCheckBox, QtCore.QObject.connect(self.HistoryCheckBox,
@ -242,27 +205,6 @@ class AlertsTab(SettingsTab):
QtCore.SIGNAL(u'valueChanged(int)'), self.onTimeoutSpinBoxChanged) QtCore.SIGNAL(u'valueChanged(int)'), self.onTimeoutSpinBoxChanged)
QtCore.QObject.connect(self.FontSizeSpinBox, QtCore.QObject.connect(self.FontSizeSpinBox,
QtCore.SIGNAL(u'valueChanged(int)'), self.onFontSizeSpinBoxChanged) QtCore.SIGNAL(u'valueChanged(int)'), self.onFontSizeSpinBoxChanged)
QtCore.QObject.connect(self.DeleteButton,
QtCore.SIGNAL(u'clicked()'),
self.onDeleteClick)
QtCore.QObject.connect(self.ClearButton,
QtCore.SIGNAL(u'clicked()'),
self.onClearClick)
QtCore.QObject.connect(self.EditButton,
QtCore.SIGNAL(u'clicked()'),
self.onEditClick)
QtCore.QObject.connect(self.AddButton,
QtCore.SIGNAL(u'clicked()'),
self.onAddClick)
QtCore.QObject.connect(self.SaveButton,
QtCore.SIGNAL(u'clicked()'),
self.onSaveClick)
QtCore.QObject.connect(self.AlertListWidget,
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
self.onItemSelected)
QtCore.QObject.connect(self.AlertListWidget,
QtCore.SIGNAL(u'clicked(QModelIndex)'),
self.onItemSelected)
def retranslateUi(self): def retranslateUi(self):
self.FontGroupBox.setTitle(self.trUtf8('Font')) self.FontGroupBox.setTitle(self.trUtf8('Font'))
@ -279,11 +221,6 @@ class AlertsTab(SettingsTab):
self.FontPreview.setText(self.trUtf8('openlp.org')) self.FontPreview.setText(self.trUtf8('openlp.org'))
self.LocationComboBox.setItemText(0, self.trUtf8('Top')) self.LocationComboBox.setItemText(0, self.trUtf8('Top'))
self.LocationComboBox.setItemText(1, self.trUtf8('Bottom')) self.LocationComboBox.setItemText(1, self.trUtf8('Bottom'))
self.SaveButton.setText(self.trUtf8('Save'))
self.ClearButton.setText(self.trUtf8('Clear'))
self.AddButton.setText(self.trUtf8('Add'))
self.EditButton.setText(self.trUtf8('Edit'))
self.DeleteButton.setText(self.trUtf8('Delete'))
def onBackgroundColorButtonClicked(self): def onBackgroundColorButtonClicked(self):
self.bg_color = QtGui.QColorDialog.getColor( self.bg_color = QtGui.QColorDialog.getColor(
@ -342,76 +279,11 @@ class AlertsTab(SettingsTab):
font.setFamily(self.font_face) font.setFamily(self.font_face)
self.FontComboBox.setCurrentFont(font) self.FontComboBox.setCurrentFont(font)
self.updateDisplay() self.updateDisplay()
self.loadList()
def loadList(self):
self.AlertListWidget.clear()
alerts = self.manager.get_all_alerts()
for alert in alerts:
item_name = QtGui.QListWidgetItem(alert.text)
item_name.setData(
QtCore.Qt.UserRole, QtCore.QVariant(alert.id))
self.AlertListWidget.addItem(item_name)
self.AddButton.setEnabled(True)
self.ClearButton.setEnabled(False)
self.SaveButton.setEnabled(False)
self.EditButton.setEnabled(False)
self.DeleteButton.setEnabled(False)
def onItemSelected(self): def onItemSelected(self):
self.EditButton.setEnabled(True) self.EditButton.setEnabled(True)
self.DeleteButton.setEnabled(True) self.DeleteButton.setEnabled(True)
def onDeleteClick(self):
item = self.AlertListWidget.currentItem()
if item:
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
self.parent.manager.delete_alert(item_id)
row = self.AlertListWidget.row(item)
self.AlertListWidget.takeItem(row)
self.AddButton.setEnabled(True)
self.SaveButton.setEnabled(False)
self.DeleteButton.setEnabled(False)
self.EditButton.setEnabled(False)
def onEditClick(self):
item = self.AlertListWidget.currentItem()
if item:
self.item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
self.AlertLineEdit.setText(unicode(item.text()))
self.AddButton.setEnabled(True)
self.ClearButton.setEnabled(True)
self.SaveButton.setEnabled(True)
self.DeleteButton.setEnabled(True)
self.EditButton.setEnabled(False)
def onClearClick(self):
self.AlertLineEdit.setText(u'')
self.AddButton.setEnabled(False)
self.ClearButton.setEnabled(True)
self.SaveButton.setEnabled(False)
self.DeleteButton.setEnabled(False)
self.EditButton.setEnabled(False)
def onAddClick(self):
if len(self.AlertLineEdit.text()) == 0:
QtGui.QMessageBox.information(self,
self.trUtf8('Item selected to Add'),
self.trUtf8('Missing data'))
else:
alert = AlertItem()
alert.text = unicode(self.AlertLineEdit.text())
self.manager.save_alert(alert)
self.onClearClick()
self.loadList()
def onSaveClick(self):
alert = self.manager.get_alert(self.item_id)
alert.text = unicode(self.AlertLineEdit.text())
self.manager.save_alert(alert)
self.onClearClick()
self.loadList()
def save(self): def save(self):
self.font_face = self.FontComboBox.currentFont().family() self.font_face = self.FontComboBox.currentFont().family()
self.config.set_config(u'background color', unicode(self.bg_color)) self.config.set_config(u'background color', unicode(self.bg_color))

View File

@ -65,9 +65,12 @@ class AlertsManager(QtCore.QObject):
if self.alertTab.location == 0: if self.alertTab.location == 0:
self.alertScreenPosition = 0 self.alertScreenPosition = 0
else: else:
self.alertScreenPosition = self.screen[u'size'].height() - self.alertHeight self.alertScreenPosition = self.screen[u'size'].height() \
self.alertHeight = self.screen[u'size'].height() - self.alertScreenPosition - self.alertHeight
self.parent.maindisplay.setAlertSize(self.alertScreenPosition, self.alertHeight) self.alertHeight = self.screen[u'size'].height() \
- self.alertScreenPosition
self.parent.maindisplay.setAlertSize(self.alertScreenPosition,\
self.alertHeight)
def displayAlert(self, text=u''): def displayAlert(self, text=u''):
""" """
@ -79,12 +82,12 @@ class AlertsManager(QtCore.QObject):
log.debug(u'display alert called %s' % text) log.debug(u'display alert called %s' % text)
if not self.screen: if not self.screen:
self.screenChanged() self.screenChanged()
self.parent.maindisplay.parent.StatusBar.showMessage(u'')
self.alertList.append(text) self.alertList.append(text)
if self.timer_id != 0: if self.timer_id != 0:
self.parent.maindisplay.parent.StatusBar.showMessage(\ Receiver.send_message(u'status_message',
self.trUtf8(u'Alert message created and delayed')) self.trUtf8(u'Alert message created and delayed'))
return return
Receiver.send_message(u'status_message', u'')
self.generateAlert() self.generateAlert()
def generateAlert(self): def generateAlert(self):
@ -116,6 +119,7 @@ class AlertsManager(QtCore.QObject):
self.timer_id = self.startTimer(int(alertTab.timeout) * 1000) self.timer_id = self.startTimer(int(alertTab.timeout) * 1000)
def timerEvent(self, event): def timerEvent(self, event):
log.debug(u'timer event')
if event.timerId() == self.timer_id: if event.timerId() == self.timer_id:
self.parent.maindisplay.addAlertImage(None, True) self.parent.maindisplay.addAlertImage(None, True)
self.killTimer(self.timer_id) self.killTimer(self.timer_id)

View File

@ -155,6 +155,10 @@ class ImpressController(PresentationController):
desktop = self.get_uno_desktop() desktop = self.get_uno_desktop()
else: else:
desktop = self.get_com_desktop() desktop = self.get_com_desktop()
#Sometimes we get a failure and desktop is None
if not desktop:
log.exception(u'Failed to terminate OpenOffice')
return
docs = desktop.getComponents() docs = desktop.getComponents()
if docs.hasElements(): if docs.hasElements():
log.debug(u'OpenOffice not terminated') log.debug(u'OpenOffice not terminated')

View File

@ -135,7 +135,7 @@ class Ui_EditSongDialog(object):
sizePolicy.setHeightForWidth( sizePolicy.setHeightForWidth(
self.AuthorsSelectionComboItem.sizePolicy().hasHeightForWidth()) self.AuthorsSelectionComboItem.sizePolicy().hasHeightForWidth())
self.AuthorsSelectionComboItem.setSizePolicy(sizePolicy) self.AuthorsSelectionComboItem.setSizePolicy(sizePolicy)
self.AuthorsSelectionComboItem.setEditable(False) self.AuthorsSelectionComboItem.setEditable(True)
self.AuthorsSelectionComboItem.setInsertPolicy( self.AuthorsSelectionComboItem.setInsertPolicy(
QtGui.QComboBox.InsertAlphabetically) QtGui.QComboBox.InsertAlphabetically)
self.AuthorsSelectionComboItem.setSizeAdjustPolicy( self.AuthorsSelectionComboItem.setSizeAdjustPolicy(
@ -212,6 +212,7 @@ class Ui_EditSongDialog(object):
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth( sizePolicy.setHeightForWidth(
self.SongTopicCombo.sizePolicy().hasHeightForWidth()) self.SongTopicCombo.sizePolicy().hasHeightForWidth())
self.SongTopicCombo.setEditable(True)
self.SongTopicCombo.setSizePolicy(sizePolicy) self.SongTopicCombo.setSizePolicy(sizePolicy)
self.SongTopicCombo.setObjectName(u'SongTopicCombo') self.SongTopicCombo.setObjectName(u'SongTopicCombo')
self.TopicAddLayout.addWidget(self.SongTopicCombo) self.TopicAddLayout.addWidget(self.SongTopicCombo)
@ -256,6 +257,7 @@ class Ui_EditSongDialog(object):
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.SongbookCombo.sizePolicy().hasHeightForWidth()) sizePolicy.setHeightForWidth(self.SongbookCombo.sizePolicy().hasHeightForWidth())
self.SongbookCombo.setEditable(True)
self.SongbookCombo.setSizePolicy(sizePolicy) self.SongbookCombo.setSizePolicy(sizePolicy)
self.SongbookCombo.setObjectName(u'SongbookCombo') self.SongbookCombo.setObjectName(u'SongbookCombo')
self.SongbookLayout.addWidget(self.SongbookCombo, 0, 0, 1, 1) self.SongbookLayout.addWidget(self.SongbookCombo, 0, 0, 1, 1)
@ -293,6 +295,7 @@ class Ui_EditSongDialog(object):
self.ThemeLayout.setMargin(8) self.ThemeLayout.setMargin(8)
self.ThemeLayout.setObjectName(u'ThemeLayout') self.ThemeLayout.setObjectName(u'ThemeLayout')
self.ThemeSelectionComboItem = QtGui.QComboBox(self.ThemeGroupBox) self.ThemeSelectionComboItem = QtGui.QComboBox(self.ThemeGroupBox)
self.ThemeSelectionComboItem.setEditable(True)
self.ThemeSelectionComboItem.setObjectName(u'ThemeSelectionComboItem') self.ThemeSelectionComboItem.setObjectName(u'ThemeSelectionComboItem')
self.ThemeLayout.addWidget(self.ThemeSelectionComboItem) self.ThemeLayout.addWidget(self.ThemeSelectionComboItem)
self.ThemeAddButton = QtGui.QPushButton(self.ThemeGroupBox) self.ThemeAddButton = QtGui.QPushButton(self.ThemeGroupBox)

View File

@ -122,6 +122,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def loadAuthors(self): def loadAuthors(self):
authors = self.songmanager.get_authors() authors = self.songmanager.get_authors()
authorsCompleter = QtGui.QCompleter(
[author.display_name for author in authors],
self.AuthorsSelectionComboItem)
authorsCompleter.setCaseSensitivity(QtCore.Qt.CaseInsensitive);
self.AuthorsSelectionComboItem.setCompleter(authorsCompleter);
self.AuthorsSelectionComboItem.clear() self.AuthorsSelectionComboItem.clear()
for author in authors: for author in authors:
row = self.AuthorsSelectionComboItem.count() row = self.AuthorsSelectionComboItem.count()
@ -131,6 +136,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def loadTopics(self): def loadTopics(self):
topics = self.songmanager.get_topics() topics = self.songmanager.get_topics()
topicsCompleter = QtGui.QCompleter(
[topic.name for topic in topics],
self.SongTopicCombo)
topicsCompleter.setCaseSensitivity(QtCore.Qt.CaseInsensitive);
self.SongTopicCombo.setCompleter(topicsCompleter);
self.SongTopicCombo.clear() self.SongTopicCombo.clear()
for topic in topics: for topic in topics:
row = self.SongTopicCombo.count() row = self.SongTopicCombo.count()
@ -139,6 +149,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def loadBooks(self): def loadBooks(self):
books = self.songmanager.get_books() books = self.songmanager.get_books()
booksCompleter = QtGui.QCompleter(
[book.name for book in books],
self.SongbookCombo)
booksCompleter.setCaseSensitivity(QtCore.Qt.CaseInsensitive);
self.SongbookCombo.setCompleter(booksCompleter);
self.SongbookCombo.clear() self.SongbookCombo.clear()
self.SongbookCombo.addItem(u' ') self.SongbookCombo.addItem(u' ')
for book in books: for book in books:
@ -147,6 +162,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.SongbookCombo.setItemData(row, QtCore.QVariant(book.id)) self.SongbookCombo.setItemData(row, QtCore.QVariant(book.id))
def loadThemes(self, theme_list): def loadThemes(self, theme_list):
themesCompleter = QtGui.QCompleter(
[theme for theme in theme_list],
self.ThemeSelectionComboItem)
themesCompleter.setCaseSensitivity(QtCore.Qt.CaseInsensitive);
self.ThemeSelectionComboItem.setCompleter(themesCompleter);
self.ThemeSelectionComboItem.clear() self.ThemeSelectionComboItem.clear()
self.ThemeSelectionComboItem.addItem(u' ') self.ThemeSelectionComboItem.addItem(u' ')
for theme in theme_list: for theme in theme_list:

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>AlertForm</class> <class>AlertDialog</class>
<widget class="QWidget" name="AlertForm"> <widget class="QDialog" name="AlertDialog">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>430</width> <width>567</width>
<height>320</height> <height>440</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -25,85 +25,212 @@
<number>8</number> <number>8</number>
</property> </property>
<item> <item>
<widget class="QWidget" name="AlertEntryWidget" native="true"> <layout class="QFormLayout" name="AlertTextLayout">
<property name="sizePolicy"> <property name="horizontalSpacing">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <number>8</number>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_2"> <property name="verticalSpacing">
<item> <number>8</number>
<layout class="QVBoxLayout" name="verticalLayout"> </property>
<item> <property name="leftMargin">
<widget class="QLabel" name="AlertEntryLabel"> <number>0</number>
<property name="sizePolicy"> </property>
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <property name="topMargin">
<horstretch>0</horstretch> <number>0</number>
<verstretch>0</verstretch> </property>
</sizepolicy> <item row="0" column="0">
</property> <widget class="QLabel" name="AlertEntryLabel">
<property name="text"> <property name="sizePolicy">
<string>Alert Text:</string> <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
</property> <horstretch>0</horstretch>
</widget> <verstretch>0</verstretch>
</item> </sizepolicy>
<item> </property>
<widget class="QLineEdit" name="AlertEntryEditItem"/> <property name="text">
</item> <string>Alert &amp;text:</string>
<item> </property>
<widget class="QListWidget" name="AlertListWidget"> <property name="buddy">
<property name="alternatingRowColors"> <cstring>AlertTextEdit</cstring>
<bool>true</bool> </property>
</property> </widget>
</widget> </item>
</item> <item row="1" column="0">
</layout> <widget class="QLabel" name="AlertParameter">
</item> <property name="text">
<item> <string>&amp;Parameter(s):</string>
<layout class="QHBoxLayout" name="horizontalLayout"> </property>
<item> <property name="buddy">
<spacer name="ButtonBoxWidgetSpacer"> <cstring>ParameterEdit</cstring>
<property name="orientation"> </property>
<enum>Qt::Horizontal</enum> </widget>
</property> </item>
<property name="sizeHint" stdset="0"> <item row="1" column="1">
<size> <widget class="QLineEdit" name="ParameterEdit"/>
<width>181</width> </item>
<height>38</height> <item row="0" column="1">
</size> <widget class="QLineEdit" name="AlertTextEdit"/>
</property> </item>
</spacer> </layout>
</item> </item>
<item> <item>
<widget class="QPushButton" name="DisplayButton"> <layout class="QHBoxLayout" name="ManagementLayout">
<property name="text"> <property name="spacing">
<string>Display</string> <number>8</number>
</property> </property>
</widget> <property name="bottomMargin">
</item> <number>0</number>
<item> </property>
<widget class="QPushButton" name="CancelButton"> <item>
<property name="text"> <widget class="QListWidget" name="AlertListWidget">
<string>Cancel</string> <property name="alternatingRowColors">
</property> <bool>true</bool>
</widget> </property>
</item> </widget>
</layout> </item>
</item> <item>
</layout> <layout class="QVBoxLayout" name="ManageButtonLayout">
</widget> <property name="spacing">
<number>8</number>
</property>
<item>
<widget class="QPushButton" name="NewButton">
<property name="text">
<string>&amp;New</string>
</property>
<property name="icon">
<iconset resource="../Projects/OpenLP/trunk/resources/images/openlp-2.qrc">
<normaloff>:/general/general_new.png</normaloff>:/general/general_new.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="SaveButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>&amp;Save</string>
</property>
<property name="icon">
<iconset resource="../Projects/OpenLP/trunk/resources/images/openlp-2.qrc">
<normaloff>:/general/general_save.png</normaloff>:/general/general_save.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="EditButton">
<property name="text">
<string>&amp;Edit</string>
</property>
<property name="icon">
<iconset resource="../Projects/OpenLP/trunk/resources/images/openlp-2.qrc">
<normaloff>:/general/general_edit.png</normaloff>:/general/general_edit.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="DeleteButton">
<property name="text">
<string>&amp;Delete</string>
</property>
<property name="icon">
<iconset resource="../Projects/OpenLP/trunk/resources/images/openlp-2.qrc">
<normaloff>:/general/general_delete.png</normaloff>:/general/general_delete.png</iconset>
</property>
</widget>
</item>
<item>
<spacer name="ManagementSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="AlertButtonLayout">
<property name="spacing">
<number>8</number>
</property>
<item>
<spacer name="ButtonBoxWidgetSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>181</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="DisplayButton">
<property name="text">
<string>Displ&amp;ay</string>
</property>
<property name="icon">
<iconset resource="../Projects/OpenLP/trunk/resources/images/openlp-2.qrc">
<normaloff>:/general/general_live.png</normaloff>:/general/general_live.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="DisplayCloseButton">
<property name="text">
<string>Display &amp;&amp; Cl&amp;ose</string>
</property>
<property name="icon">
<iconset resource="../Projects/OpenLP/trunk/resources/images/openlp-2.qrc">
<normaloff>:/general/general_live.png</normaloff>:/general/general_live.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="CloseButton">
<property name="text">
<string>&amp;Close</string>
</property>
<property name="icon">
<iconset resource="../Projects/OpenLP/trunk/resources/images/openlp-2.qrc">
<normaloff>:/system/system_close.png</normaloff>:/system/system_close.png</iconset>
</property>
</widget>
</item>
</layout>
</item> </item>
</layout> </layout>
</widget> </widget>
<tabstops>
<tabstop>AlertTextEdit</tabstop>
<tabstop>ParameterEdit</tabstop>
<tabstop>AlertListWidget</tabstop>
<tabstop>NewButton</tabstop>
<tabstop>SaveButton</tabstop>
<tabstop>EditButton</tabstop>
<tabstop>DeleteButton</tabstop>
<tabstop>DisplayButton</tabstop>
<tabstop>DisplayCloseButton</tabstop>
<tabstop>CloseButton</tabstop>
</tabstops>
<resources> <resources>
<include location="../images/openlp-2.qrc"/> <include location="../Projects/OpenLP/trunk/resources/images/openlp-2.qrc"/>
</resources> </resources>
<connections> <connections>
<connection> <connection>
<sender>CancelButton</sender> <sender>CloseButton</sender>
<signal>clicked()</signal> <signal>clicked()</signal>
<receiver>AlertForm</receiver> <receiver>AlertDialog</receiver>
<slot>close()</slot> <slot>close()</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">

View File

@ -1,101 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AlertEditDialog</class>
<widget class="QWidget" name="AlertEditDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Maintain Alerts</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>220</x>
<y>270</y>
<width>173</width>
<height>27</height>
</rect>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel</set>
</property>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>20</x>
<y>10</y>
<width>361</width>
<height>251</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="AlertLineEdit"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QListWidget" name="AlertListWidget">
<property name="alternatingRowColors">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="SaveButton">
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ClearButton">
<property name="text">
<string>Clear</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="AddButton">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="EdirButton">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="DeleteButton">
<property name="text">
<string>Delete</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>