diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py
index 38bcd127c..bd117c6b0 100644
--- a/openlp/core/lib/__init__.py
+++ b/openlp/core/lib/__init__.py
@@ -35,7 +35,7 @@ from PyQt4 import QtCore, QtGui
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.
This abstracts the translation procedure so that we can change it if at a
@@ -48,8 +48,8 @@ def translate(context, text):
``text``
The text to put into the translation tables for translation.
"""
- return QtGui.QApplication.translate(
- context, text, None, QtGui.QApplication.UnicodeUTF8)
+ return QtCore.QCoreApplication.translate(context, text,
+ comment)
def get_text_file_string(text_file):
"""
diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py
index 5b79fc40a..2e1cf9d39 100644
--- a/openlp/core/lib/eventreceiver.py
+++ b/openlp/core/lib/eventreceiver.py
@@ -115,6 +115,9 @@ class EventReceiver(QtCore.QObject):
``version_check``
Version has changed so pop up window.
+ ``mainDisplay_active``
+ Version has changed so pop up window.
+
"""
def __init__(self):
"""
diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py
index 0ba8f8da8..675c57476 100644
--- a/openlp/core/ui/__init__.py
+++ b/openlp/core/ui/__init__.py
@@ -29,6 +29,7 @@ from serviceitemeditform import ServiceItemEditForm
from screen import ScreenList
from maindisplay import MainDisplay
from maindisplay import VideoDisplay
+from maindisplay import DisplayManager
from amendthemeform import AmendThemeForm
from slidecontroller import SlideController
from splashscreen import SplashScreen
diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py
index 4883cd732..15fc29650 100644
--- a/openlp/core/ui/maindisplay.py
+++ b/openlp/core/ui/maindisplay.py
@@ -34,6 +34,28 @@ from openlp.core.ui import HideMode
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):
"""
Customised version of QTableWidget which can respond to keyboard
@@ -42,7 +64,7 @@ class DisplayWidget(QtGui.QWidget):
log.info(u'MainDisplay loaded')
def __init__(self, parent=None, name=None):
- QtGui.QWidget.__init__(self, parent)
+ 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',
@@ -92,11 +114,10 @@ class MainDisplay(DisplayWidget):
The list of screens.
"""
log.debug(u'Initilisation started')
- DisplayWidget.__init__(self, None)
+ DisplayWidget.__init__(self, parent)
self.parent = parent
self.setWindowTitle(u'OpenLP Display')
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
- self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.screens = screens
self.display_image = QtGui.QLabel(self)
self.display_image.setScaledContents(True)
@@ -116,7 +137,7 @@ class MainDisplay(DisplayWidget):
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'live_slide_show'), self.showDisplay)
QtCore.QObject.connect(Receiver.get_receiver(),
- QtCore.SIGNAL(u'media_start'), self.onMediaQueue)
+ QtCore.SIGNAL(u'media_start'), self.hideDisplay)
def setup(self):
"""
@@ -184,6 +205,13 @@ class MainDisplay(DisplayWidget):
self.display_image.setPixmap(self.transparent)
self.display_alert.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):
log.debug(u'showDisplay')
@@ -198,6 +226,7 @@ class MainDisplay(DisplayWidget):
self.screen[u'size'].width(),
self.screen[u'size'].height() )
self.display_image.setPixmap(QtGui.QPixmap.fromImage(frame))
+ self.moveToTop()
def setAlertSize(self, top, height):
log.debug(u'setAlertSize')
@@ -211,6 +240,7 @@ class MainDisplay(DisplayWidget):
self.display_alert.setPixmap(self.transparent)
else:
self.display_alert.setPixmap(frame)
+ self.moveToTop()
def frameView(self, frame, transition=False):
"""
@@ -266,59 +296,15 @@ class MainDisplay(DisplayWidget):
elif 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):
- """
- 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):
+class VideoDisplay(Phonon.VideoWidget):
"""
This is the form that is used to display videos on the projector.
"""
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.
@@ -329,19 +315,15 @@ class VideoDisplay(VideoWidget):
The list of screens.
"""
log.debug(u'VideoDisplay Initilisation started')
- VideoWidget.__init__(self, parent)
+ Phonon.VideoWidget.__init__(self)
self.setWindowTitle(u'OpenLP Video Display')
self.parent = parent
self.screens = screens
- self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
- self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
- self.mediaObject = Phonon.MediaObject(self)
- self.video = Phonon.VideoWidget()
- self.video.setVisible(False)
- self.audio = Phonon.AudioOutput(Phonon.VideoCategory, self.mediaObject)
- Phonon.createPath(self.mediaObject, self.video)
- Phonon.createPath(self.mediaObject, self.audio)
- self.firstTime = True
+ self.mediaObject = Phonon.MediaObject()
+ self.setAspectRatio(aspect)
+ self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory)
+ Phonon.createPath(self.mediaObject, self)
+ Phonon.createPath(self.mediaObject, self.audioObject)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'media_start'), self.onMediaQueue)
QtCore.QObject.connect(Receiver.get_receiver(),
@@ -353,6 +335,16 @@ class VideoDisplay(VideoWidget):
QtCore.QObject.connect(Receiver.get_receiver(),
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):
"""
Sets up the screen on a particular screen.
@@ -363,30 +355,30 @@ class VideoDisplay(VideoWidget):
self.screen = self.screens.current
#Sort out screen locations and sizes
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):
log.debug(u'VideoDisplay Queue new media message %s' % message)
file = os.path.join(message[1], message[2])
- if self.firstTime:
- source = self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
- self.firstTime = False
- else:
- self.mediaObject.enqueue(Phonon.MediaSource(file))
+ source = self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
self.onMediaPlay()
def onMediaPlay(self):
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.setVisible(True)
- self.lower()
+ self.showFullScreen()
def onMediaPause(self):
log.debug(u'VideoDisplay Media paused by user')
self.mediaObject.pause()
+ self.show()
def onMediaStop(self):
log.debug(u'VideoDisplay Media stopped by user')
@@ -395,7 +387,5 @@ class VideoDisplay(VideoWidget):
def onMediaFinish(self):
log.debug(u'VideoDisplay Reached end of media playlist')
- self.mediaObject.stop()
self.mediaObject.clearQueue()
- self.video.setVisible(False)
self.setVisible(False)
diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py
index c52c62fcd..aded72482 100644
--- a/openlp/core/ui/mainwindow.py
+++ b/openlp/core/ui/mainwindow.py
@@ -29,9 +29,9 @@ import time
from PyQt4 import QtCore, QtGui
from openlp.core.ui import AboutForm, SettingsForm, \
- ServiceManager, ThemeManager, MainDisplay, SlideController, \
- PluginForm, MediaDockManager, VideoDisplay
-from openlp.core.lib import RenderManager, PluginConfig, build_icon, \
+ ServiceManager, ThemeManager, SlideController, \
+ PluginForm, MediaDockManager, DisplayManager
+from openlp.core.lib import translate, RenderManager, PluginConfig, build_icon, \
OpenLPDockWidget, SettingsManager, PluginManager, Receiver, str_to_bool
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']:
Receiver.send_message(u'version_check', u'%s' % version)
-
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
"""
@@ -354,98 +353,98 @@ class Ui_MainWindow(object):
"""
Set up the translation system
"""
- MainWindow.mainTitle = MainWindow.trUtf8('OpenLP 2.0')
- MainWindow.language = MainWindow.trUtf8('English')
- MainWindow.defaultThemeText = MainWindow.trUtf8(
+ MainWindow.mainTitle = translate('MainWindow','OpenLP 2.0')
+ MainWindow.language = translate('MainWindow', 'English')
+ MainWindow.defaultThemeText = translate('MainWindow',
'Default Theme: ')
MainWindow.setWindowTitle(MainWindow.mainTitle)
- self.FileMenu.setTitle(MainWindow.trUtf8('&File'))
- self.FileImportMenu.setTitle(MainWindow.trUtf8('&Import'))
- self.FileExportMenu.setTitle(MainWindow.trUtf8('&Export'))
- self.OptionsMenu.setTitle(MainWindow.trUtf8('&Options'))
- self.OptionsViewMenu.setTitle(MainWindow.trUtf8('&View'))
- self.ViewModeMenu.setTitle(MainWindow.trUtf8('M&ode'))
- self.OptionsLanguageMenu.setTitle(MainWindow.trUtf8(
+ self.FileMenu.setTitle(translate('MainWindow', '&File'))
+ self.FileImportMenu.setTitle(translate('MainWindow', '&Import'))
+ self.FileExportMenu.setTitle(translate('MainWindow', '&Export'))
+ self.OptionsMenu.setTitle(translate('MainWindow', '&Options'))
+ self.OptionsViewMenu.setTitle(translate('MainWindow', '&View'))
+ self.ViewModeMenu.setTitle(translate('MainWindow', 'M&ode'))
+ self.OptionsLanguageMenu.setTitle(translate('MainWindow',
u'&Language'))
- self.ToolsMenu.setTitle(MainWindow.trUtf8('&Tools'))
- self.HelpMenu.setTitle(MainWindow.trUtf8('&Help'))
+ self.ToolsMenu.setTitle(translate('MainWindow', '&Tools'))
+ self.HelpMenu.setTitle(translate('MainWindow', '&Help'))
self.MediaManagerDock.setWindowTitle(
- MainWindow.trUtf8('Media Manager'))
+ translate('MainWindow', 'Media Manager'))
self.ServiceManagerDock.setWindowTitle(
- MainWindow.trUtf8('Service Manager'))
+ translate('MainWindow', 'Service Manager'))
self.ThemeManagerDock.setWindowTitle(
- MainWindow.trUtf8('Theme Manager'))
- self.FileNewItem.setText(MainWindow.trUtf8('&New'))
- self.FileNewItem.setToolTip(MainWindow.trUtf8('New Service'))
- self.FileNewItem.setStatusTip(MainWindow.trUtf8('Create a new Service'))
- self.FileNewItem.setShortcut(MainWindow.trUtf8('Ctrl+N'))
- self.FileOpenItem.setText(MainWindow.trUtf8('&Open'))
- self.FileOpenItem.setToolTip(MainWindow.trUtf8('Open Service'))
- self.FileOpenItem.setStatusTip(MainWindow.trUtf8('Open an existing service'))
- self.FileOpenItem.setShortcut(MainWindow.trUtf8('Ctrl+O'))
- self.FileSaveItem.setText(MainWindow.trUtf8('&Save'))
- self.FileSaveItem.setToolTip(MainWindow.trUtf8('Save Service'))
+ translate('MainWindow', 'Theme Manager'))
+ self.FileNewItem.setText(translate('MainWindow', '&New'))
+ self.FileNewItem.setToolTip(translate('MainWindow', 'New Service'))
+ self.FileNewItem.setStatusTip(translate('MainWindow', 'Create a new Service'))
+ self.FileNewItem.setShortcut(translate('MainWindow', 'Ctrl+N'))
+ self.FileOpenItem.setText(translate('MainWindow', '&Open'))
+ self.FileOpenItem.setToolTip(translate('MainWindow', 'Open Service'))
+ self.FileOpenItem.setStatusTip(translate('MainWindow', 'Open an existing service'))
+ self.FileOpenItem.setShortcut(translate('MainWindow', 'Ctrl+O'))
+ self.FileSaveItem.setText(translate('MainWindow', '&Save'))
+ self.FileSaveItem.setToolTip(translate('MainWindow', 'Save Service'))
self.FileSaveItem.setStatusTip(
- MainWindow.trUtf8('Save the current service to disk'))
- self.FileSaveItem.setShortcut(MainWindow.trUtf8('Ctrl+S'))
- self.FileSaveAsItem.setText(MainWindow.trUtf8('Save &As...'))
- self.FileSaveAsItem.setToolTip(MainWindow.trUtf8('Save Service As'))
+ translate('MainWindow', 'Save the current service to disk'))
+ self.FileSaveItem.setShortcut(translate('MainWindow', 'Ctrl+S'))
+ self.FileSaveAsItem.setText(translate('MainWindow', 'Save &As...'))
+ self.FileSaveAsItem.setToolTip(translate('MainWindow', 'Save Service As'))
self.FileSaveAsItem.setStatusTip(
- MainWindow.trUtf8('Save the current service under a new name'))
- self.FileSaveAsItem.setShortcut(MainWindow.trUtf8('F12'))
- self.FileExitItem.setText(MainWindow.trUtf8('E&xit'))
- self.FileExitItem.setStatusTip(MainWindow.trUtf8('Quit OpenLP'))
- self.FileExitItem.setShortcut(MainWindow.trUtf8('Alt+F4'))
- self.ImportThemeItem.setText(MainWindow.trUtf8('&Theme'))
- self.ImportLanguageItem.setText(MainWindow.trUtf8('&Language'))
- self.ExportThemeItem.setText(MainWindow.trUtf8('&Theme'))
- self.ExportLanguageItem.setText(MainWindow.trUtf8('&Language'))
- self.actionLook_Feel.setText(MainWindow.trUtf8('Look && &Feel'))
- self.OptionsSettingsItem.setText(MainWindow.trUtf8('&Settings'))
- self.ViewMediaManagerItem.setText(MainWindow.trUtf8('&Media Manager'))
- self.ViewMediaManagerItem.setToolTip(MainWindow.trUtf8('Toggle Media Manager'))
+ translate('MainWindow', 'Save the current service under a new name'))
+ self.FileSaveAsItem.setShortcut(translate('MainWindow', 'F12'))
+ self.FileExitItem.setText(translate('MainWindow', 'E&xit'))
+ self.FileExitItem.setStatusTip(translate('MainWindow', 'Quit OpenLP'))
+ self.FileExitItem.setShortcut(translate('MainWindow', 'Alt+F4'))
+ self.ImportThemeItem.setText(translate('MainWindow', '&Theme'))
+ self.ImportLanguageItem.setText(translate('MainWindow', '&Language'))
+ self.ExportThemeItem.setText(translate('MainWindow', '&Theme'))
+ self.ExportLanguageItem.setText(translate('MainWindow', '&Language'))
+ self.actionLook_Feel.setText(translate('MainWindow', 'Look && &Feel'))
+ self.OptionsSettingsItem.setText(translate('MainWindow', '&Settings'))
+ self.ViewMediaManagerItem.setText(translate('MainWindow', '&Media Manager'))
+ self.ViewMediaManagerItem.setToolTip(translate('MainWindow', 'Toggle Media Manager'))
self.ViewMediaManagerItem.setStatusTip(
- MainWindow.trUtf8('Toggle the visibility of the Media Manager'))
- self.ViewMediaManagerItem.setShortcut(MainWindow.trUtf8('F8'))
- self.ViewThemeManagerItem.setText(MainWindow.trUtf8('&Theme Manager'))
- self.ViewThemeManagerItem.setToolTip(MainWindow.trUtf8('Toggle Theme Manager'))
+ translate('MainWindow', 'Toggle the visibility of the Media Manager'))
+ self.ViewMediaManagerItem.setShortcut(translate('MainWindow', 'F8'))
+ self.ViewThemeManagerItem.setText(translate('MainWindow', '&Theme Manager'))
+ self.ViewThemeManagerItem.setToolTip(translate('MainWindow', 'Toggle Theme Manager'))
self.ViewThemeManagerItem.setStatusTip(
- MainWindow.trUtf8('Toggle the visibility of the Theme Manager'))
- self.ViewThemeManagerItem.setShortcut(MainWindow.trUtf8('F10'))
- self.ViewServiceManagerItem.setText(MainWindow.trUtf8('&Service Manager'))
+ translate('MainWindow', 'Toggle the visibility of the Theme Manager'))
+ self.ViewThemeManagerItem.setShortcut(translate('MainWindow', 'F10'))
+ self.ViewServiceManagerItem.setText(translate('MainWindow', '&Service Manager'))
self.ViewServiceManagerItem.setToolTip(
- MainWindow.trUtf8('Toggle Service Manager'))
+ translate('MainWindow', 'Toggle Service Manager'))
self.ViewServiceManagerItem.setStatusTip(
- MainWindow.trUtf8('Toggle the visibility of the Service Manager'))
- self.ViewServiceManagerItem.setShortcut(MainWindow.trUtf8('F9'))
- self.action_Preview_Panel.setText(MainWindow.trUtf8('&Preview Panel'))
- self.action_Preview_Panel.setToolTip(MainWindow.trUtf8('Toggle Preview Panel'))
+ translate('MainWindow', 'Toggle the visibility of the Service Manager'))
+ self.ViewServiceManagerItem.setShortcut(translate('MainWindow', 'F9'))
+ self.action_Preview_Panel.setText(translate('MainWindow', '&Preview Panel'))
+ self.action_Preview_Panel.setToolTip(translate('MainWindow', 'Toggle Preview Panel'))
self.action_Preview_Panel.setStatusTip(
- MainWindow.trUtf8('Toggle the visibility of the Preview Panel'))
- self.action_Preview_Panel.setShortcut(MainWindow.trUtf8('F11'))
- self.PluginItem.setText(MainWindow.trUtf8('&Plugin List'))
- self.PluginItem.setStatusTip(MainWindow.trUtf8('List the Plugins'))
- self.PluginItem.setShortcut(MainWindow.trUtf8('Alt+F7'))
- self.HelpDocumentationItem.setText(MainWindow.trUtf8('&User Guide'))
- self.HelpAboutItem.setText(MainWindow.trUtf8('&About'))
+ translate('MainWindow', 'Toggle the visibility of the Preview Panel'))
+ self.action_Preview_Panel.setShortcut(translate('MainWindow', 'F11'))
+ self.PluginItem.setText(translate('MainWindow', '&Plugin List'))
+ self.PluginItem.setStatusTip(translate('MainWindow', 'List the Plugins'))
+ self.PluginItem.setShortcut(translate('MainWindow', 'Alt+F7'))
+ self.HelpDocumentationItem.setText(translate('MainWindow', '&User Guide'))
+ self.HelpAboutItem.setText(translate('MainWindow', '&About'))
self.HelpAboutItem.setStatusTip(
- MainWindow.trUtf8('More information about OpenLP'))
- self.HelpAboutItem.setShortcut(MainWindow.trUtf8('Ctrl+F1'))
- self.HelpOnlineHelpItem.setText(MainWindow.trUtf8('&Online Help'))
- self.HelpWebSiteItem.setText(MainWindow.trUtf8('&Web Site'))
+ translate('MainWindow', 'More information about OpenLP'))
+ self.HelpAboutItem.setShortcut(translate('MainWindow', 'Ctrl+F1'))
+ self.HelpOnlineHelpItem.setText(translate('MainWindow', '&Online Help'))
+ self.HelpWebSiteItem.setText(translate('MainWindow', '&Web Site'))
#i18n
- self.AutoLanguageItem.setText(MainWindow.trUtf8('&Auto Detect'))
+ self.AutoLanguageItem.setText(translate('MainWindow', '&Auto Detect'))
self.AutoLanguageItem.setStatusTip(
- MainWindow.trUtf8('Choose System language, if available'))
+ translate('MainWindow', 'Choose System language, if available'))
for item in self.LanguageItem:
self.LanguageItem[item].setText(self.LanguageItem[item].objectName())
self.LanguageItem[item].setStatusTip(
- MainWindow.trUtf8('Set the interface language to %1').arg(self.LanguageItem[item].objectName()))
- self.ToolsAddToolItem.setText(MainWindow.trUtf8('Add &Tool...'))
+ translate('MainWindow', 'Set the interface language to %1').arg(self.LanguageItem[item].objectName()))
+ self.ToolsAddToolItem.setText(translate('MainWindow', 'Add &Tool...'))
self.ToolsAddToolItem.setStatusTip(
- MainWindow.trUtf8('Add an application to the list of tools'))
- self.action_Preview_Panel.setText(MainWindow.trUtf8('&Preview Pane'))
- self.ModeLiveItem.setText(MainWindow.trUtf8('&Live'))
+ translate('MainWindow', 'Add an application to the list of tools'))
+ self.action_Preview_Panel.setText(translate('MainWindow', '&Preview Pane'))
+ self.ModeLiveItem.setText(translate('MainWindow', '&Live'))
class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
@@ -465,8 +464,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
self.serviceNotSaved = False
self.settingsmanager = SettingsManager(screens)
self.generalConfig = PluginConfig(u'General')
- self.videoDisplay = VideoDisplay(self, screens)
- self.mainDisplay = MainDisplay(self, screens)
+ self.displayManager = DisplayManager(screens)
self.aboutForm = AboutForm(self, applicationVersion)
self.settingsForm = SettingsForm(self.screens, self, self)
# Set up the path with plugins
@@ -521,6 +519,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
QtCore.SIGNAL(u'blank_check'), self.blankCheck)
QtCore.QObject.connect(Receiver.get_receiver(),
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.SIGNAL(u'triggered()'),
self.ServiceManagerContents.onNewService)
@@ -553,7 +553,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
self.plugin_helpers[u'service'] = self.ServiceManagerContents
self.plugin_helpers[u'settings'] = self.settingsForm
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)
# hook methods have to happen after find_plugins. Find plugins needs
# the controllers hence the hooks have moved from setupUI() to here
@@ -581,13 +581,14 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
#i18n
def setAutoLanguage(self, value):
- self.LanguageGroup.setEnabled(not value)
+ self.LanguageGroup.setDisabled(value)
LanguageManager.AutoLanguage = value
LanguageManager.set_language(self.LanguageGroup.checkedAction())
def versionCheck(self, version):
"""
Checks the version of the Application called from openlp.pyw
+ Triggered by delay thread.
"""
app_version = self.applicationVersion[u'full']
version_text = unicode(self.trUtf8('Version %s of OpenLP is now '
@@ -605,17 +606,18 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
"""
self.showMaximized()
#screen_number = self.getMonitorNumber()
- self.mainDisplay.setup()
- self.videoDisplay.setup()
- if self.mainDisplay.isVisible():
- self.mainDisplay.setFocus()
+ self.displayManager.setup()
+ if self.displayManager.mainDisplay.isVisible():
+ self.displayManager.mainDisplay.setFocus()
self.activateWindow()
if str_to_bool(self.generalConfig.get_config(u'auto open', False)):
self.ServiceManagerContents.onLoadService(True)
- self.videoDisplay.lower()
- self.mainDisplay.raise_()
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)) \
and str_to_bool(self.generalConfig.get_config(u'blank warning', False)):
self.LiveController.onBlankDisplay(True)
@@ -626,6 +628,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
QtGui.QMessageBox.Ok)
def versionThread(self):
+ """
+ Start an initial setup thread to delay notifications
+ """
vT = VersionThread(self, self.applicationVersion, self.generalConfig)
vT.start()
@@ -650,8 +655,13 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
self.settingsForm.exec_()
def screenChanged(self):
+ """
+ The screen has changed to so tell the displays to update_display
+ their locations
+ """
self.RenderManager.update_display()
- self.mainDisplay.setup()
+ self.displayManager.setup()
+ self.setFocus()
self.activateWindow()
def closeEvent(self, event):
@@ -669,20 +679,14 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
QtGui.QMessageBox.Save)
if ret == QtGui.QMessageBox.Save:
self.ServiceManagerContents.onSaveService()
- self.mainDisplay.close()
- self.videoDisplay.close()
self.cleanUp()
event.accept()
elif ret == QtGui.QMessageBox.Discard:
- self.mainDisplay.close()
- self.videoDisplay.close()
self.cleanUp()
event.accept()
else:
event.ignore()
else:
- self.mainDisplay.close()
- self.videoDisplay.close()
self.cleanUp()
event.accept()
@@ -695,10 +699,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
# Call the cleanup method to shutdown plugins.
log.info(u'cleanup plugins')
self.plugin_manager.finalise_plugins()
+ #Close down the displays
+ self.displayManager.close()
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``
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)
self.setWindowTitle(title)
+ def showStatusMessage(self, message):
+ self.StatusBar.showMessage(message)
+
def defaultThemeChanged(self, theme):
self.DefaultThemeLabel.setText(
u'%s %s' % (self.defaultThemeText, theme))
@@ -743,4 +752,4 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
def togglePreviewPanel(self):
previewBool = self.PreviewController.Panel.isVisible()
self.PreviewController.Panel.setVisible(not previewBool)
- self.settingsmanager.togglePreviewPanel(not previewBool)
\ No newline at end of file
+ self.settingsmanager.togglePreviewPanel(not previewBool)
diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py
index 09122dea2..aae646f52 100644
--- a/openlp/core/ui/slidecontroller.py
+++ b/openlp/core/ui/slidecontroller.py
@@ -635,7 +635,7 @@ class SlideController(QtGui.QWidget):
self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame[u'main']))
log.log(15, u'Slide Rendering took %4s' % (time.time() - before))
if self.isLive:
- self.parent.mainDisplay.frameView(frame, True)
+ self.parent.displayManager.mainDisplay.frameView(frame, True)
self.selectedRow = row
def onSlideChange(self, row):
diff --git a/openlp/core/utils/languagemanager.py b/openlp/core/utils/languagemanager.py
index 81e885070..ff5c20b1f 100644
--- a/openlp/core/utils/languagemanager.py
+++ b/openlp/core/utils/languagemanager.py
@@ -29,6 +29,7 @@ from logging import FileHandler
from PyQt4 import QtCore, QtGui
import os
from openlp.core.utils import AppLocation, ConfigHelper
+from openlp.core.lib import translate
log = logging.getLogger()
@@ -86,9 +87,10 @@ class LanguageManager(object):
language = u'%s' % qmList[actionName]
log.info(u'Language file: \'%s\' written to conf file' % language)
ConfigHelper.set_config(u'general', u'language', language)
- QtGui.QMessageBox.information(None,
- u'Language',
- u'After restart new Language settings will be used.')
+ QtGui.QMessageBox.information(None,
+ translate('LanguageManager', 'Language'),
+ translate('LanguageManager',
+ 'After restart new Language settings will be used.'))
@staticmethod
def init_qm_list():
@@ -105,4 +107,4 @@ class LanguageManager(object):
def get_qm_list():
if LanguageManager.__qmList__ == None:
LanguageManager.init_qm_list()
- return LanguageManager.__qmList__
\ No newline at end of file
+ return LanguageManager.__qmList__
diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py
index 819e8eed6..aeba0ab41 100644
--- a/openlp/plugins/alerts/alertsplugin.py
+++ b/openlp/plugins/alerts/alertsplugin.py
@@ -27,7 +27,7 @@ import logging
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.forms import AlertsTab, AlertForm
@@ -88,6 +88,7 @@ class alertsPlugin(Plugin):
def onAlertsTrigger(self):
self.alertForm.loadList()
self.alertForm.exec_()
+ Receiver.send_message(u'text_onTop')
def about(self):
about_text = self.trUtf8('Alerts Plugin
This plugin '
diff --git a/openlp/plugins/alerts/forms/alertdialog.py b/openlp/plugins/alerts/forms/alertdialog.py
index 442cfadd2..804975ff1 100644
--- a/openlp/plugins/alerts/forms/alertdialog.py
+++ b/openlp/plugins/alerts/forms/alertdialog.py
@@ -1,87 +1,134 @@
# -*- coding: utf-8 -*-
-# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
-###############################################################################
-# OpenLP - Open Source Lyrics Projection #
-# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2010 Raoul Snyman #
-# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
-# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin #
-# 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 #
-###############################################################################
+# Form implementation generated from reading ui file 'alertdialog.ui'
+#
+# Created: Sat Apr 17 08:07:40 2010
+# by: PyQt4 UI code generator 4.7
+#
+# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
class Ui_AlertDialog(object):
- def setupUi(self, AlertForm):
- AlertForm.setObjectName(u'AlertDialog')
- AlertForm.resize(430, 320)
+ def setupUi(self, AlertDialog):
+ AlertDialog.setObjectName("AlertDialog")
+ AlertDialog.resize(567, 440)
icon = QtGui.QIcon()
- icon.addPixmap(QtGui.QPixmap(u':/icon/openlp.org-icon-32.bmp'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- AlertForm.setWindowIcon(icon)
- self.AlertFormLayout = QtGui.QVBoxLayout(AlertForm)
+ icon.addPixmap(QtGui.QPixmap(":/icon/openlp.org-icon-32.bmp"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ AlertDialog.setWindowIcon(icon)
+ self.AlertFormLayout = QtGui.QVBoxLayout(AlertDialog)
self.AlertFormLayout.setSpacing(8)
self.AlertFormLayout.setMargin(8)
- self.AlertFormLayout.setObjectName(u'AlertFormLayout')
- self.AlertEntryWidget = QtGui.QWidget(AlertForm)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.AlertEntryWidget.sizePolicy().hasHeightForWidth())
- 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)
+ self.AlertFormLayout.setObjectName("AlertFormLayout")
+ self.AlertTextLayout = QtGui.QFormLayout()
+ self.AlertTextLayout.setContentsMargins(0, 0, -1, -1)
+ self.AlertTextLayout.setSpacing(8)
+ self.AlertTextLayout.setObjectName("AlertTextLayout")
+ self.AlertEntryLabel = QtGui.QLabel(AlertDialog)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.AlertEntryLabel.sizePolicy().hasHeightForWidth())
self.AlertEntryLabel.setSizePolicy(sizePolicy)
- self.AlertEntryLabel.setObjectName(u'AlertEntryLabel')
- self.verticalLayout.addWidget(self.AlertEntryLabel)
- self.AlertEntryEditItem = QtGui.QLineEdit(self.AlertEntryWidget)
- self.AlertEntryEditItem.setObjectName(u'AlertEntryEditItem')
- self.verticalLayout.addWidget(self.AlertEntryEditItem)
- self.AlertListWidget = QtGui.QListWidget(self.AlertEntryWidget)
+ self.AlertEntryLabel.setObjectName("AlertEntryLabel")
+ self.AlertTextLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.AlertEntryLabel)
+ self.AlertParameter = QtGui.QLabel(AlertDialog)
+ self.AlertParameter.setObjectName("AlertParameter")
+ self.AlertTextLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.AlertParameter)
+ 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.setObjectName(u'AlertListWidget')
- self.verticalLayout.addWidget(self.AlertListWidget)
- self.verticalLayout_2.addLayout(self.verticalLayout)
- self.horizontalLayout = QtGui.QHBoxLayout()
- self.horizontalLayout.setObjectName(u'horizontalLayout')
- spacerItem = QtGui.QSpacerItem(181, 38, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- self.horizontalLayout.addItem(spacerItem)
- self.DisplayButton = QtGui.QPushButton(self.AlertEntryWidget)
- self.DisplayButton.setObjectName(u'DisplayButton')
- self.horizontalLayout.addWidget(self.DisplayButton)
- self.CancelButton = QtGui.QPushButton(self.AlertEntryWidget)
- self.CancelButton.setObjectName(u'CancelButton')
- self.horizontalLayout.addWidget(self.CancelButton)
- self.verticalLayout_2.addLayout(self.horizontalLayout)
- self.AlertFormLayout.addWidget(self.AlertEntryWidget)
+ self.AlertListWidget.setObjectName("AlertListWidget")
+ self.ManagementLayout.addWidget(self.AlertListWidget)
+ self.ManageButtonLayout = QtGui.QVBoxLayout()
+ self.ManageButtonLayout.setSpacing(8)
+ self.ManageButtonLayout.setObjectName("ManageButtonLayout")
+ self.NewButton = QtGui.QPushButton(AlertDialog)
+ icon1 = QtGui.QIcon()
+ icon1.addPixmap(QtGui.QPixmap(":/general/general_new.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.NewButton.setIcon(icon1)
+ self.NewButton.setObjectName("NewButton")
+ self.ManageButtonLayout.addWidget(self.NewButton)
+ self.SaveButton = QtGui.QPushButton(AlertDialog)
+ self.SaveButton.setEnabled(False)
+ icon2 = QtGui.QIcon()
+ 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)
- QtCore.QObject.connect(self.CancelButton, QtCore.SIGNAL(u'clicked()'), self.close)
- QtCore.QMetaObject.connectSlotsByName(AlertForm)
+ self.retranslateUi(AlertDialog)
+ QtCore.QObject.connect(self.CloseButton, QtCore.SIGNAL("clicked()"), AlertDialog.close)
+ 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'))
diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py
index 0d21cf4b9..08e5f5e02 100644
--- a/openlp/plugins/alerts/forms/alertform.py
+++ b/openlp/plugins/alerts/forms/alertform.py
@@ -45,9 +45,24 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
QtCore.QObject.connect(self.DisplayButton,
QtCore.SIGNAL(u'clicked()'),
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&)'),
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.SIGNAL(u'doubleClicked(QModelIndex)'),
self.onDoubleClick)
@@ -60,19 +75,64 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
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.SaveButton.setEnabled(False)
+ self.EditButton.setEnabled(False)
+ self.DeleteButton.setEnabled(False)
def onDisplayClicked(self):
- self.triggerAlert(unicode(self.AlertEntryEditItem.text()))
- if self.parent.alertsTab.save_history and self.history_required:
+ if self.triggerAlert(unicode(self.AlertTextEdit.text())):
+ 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.text = unicode(self.AlertEntryEditItem.text())
+ alert.text = unicode(self.AlertTextEdit.text())
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()
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
def onDoubleClick(self):
@@ -93,8 +153,17 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
items = self.AlertListWidget.selectedIndexes()
for item in items:
bitem = self.AlertListWidget.item(item.row())
- self.AlertEntryEditItem.setText(bitem.text())
+ self.AlertTextEdit.setText(bitem.text())
self.history_required = False
+ self.EditButton.setEnabled(True)
+ self.DeleteButton.setEnabled(True)
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
diff --git a/openlp/plugins/alerts/forms/alertstab.py b/openlp/plugins/alerts/forms/alertstab.py
index 33c574de5..d15865a6d 100644
--- a/openlp/plugins/alerts/forms/alertstab.py
+++ b/openlp/plugins/alerts/forms/alertstab.py
@@ -188,43 +188,6 @@ class AlertsTab(SettingsTab):
self.SlideRightSpacer = QtGui.QSpacerItem(20, 40,
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
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)
# Signals and slots
QtCore.QObject.connect(self.HistoryCheckBox,
@@ -242,27 +205,6 @@ class AlertsTab(SettingsTab):
QtCore.SIGNAL(u'valueChanged(int)'), self.onTimeoutSpinBoxChanged)
QtCore.QObject.connect(self.FontSizeSpinBox,
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):
self.FontGroupBox.setTitle(self.trUtf8('Font'))
@@ -279,11 +221,6 @@ class AlertsTab(SettingsTab):
self.FontPreview.setText(self.trUtf8('openlp.org'))
self.LocationComboBox.setItemText(0, self.trUtf8('Top'))
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):
self.bg_color = QtGui.QColorDialog.getColor(
@@ -342,76 +279,11 @@ class AlertsTab(SettingsTab):
font.setFamily(self.font_face)
self.FontComboBox.setCurrentFont(font)
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):
self.EditButton.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):
self.font_face = self.FontComboBox.currentFont().family()
self.config.set_config(u'background color', unicode(self.bg_color))
diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py
index 69a6d6f53..2243b5bef 100644
--- a/openlp/plugins/alerts/lib/alertsmanager.py
+++ b/openlp/plugins/alerts/lib/alertsmanager.py
@@ -65,9 +65,12 @@ class AlertsManager(QtCore.QObject):
if self.alertTab.location == 0:
self.alertScreenPosition = 0
else:
- self.alertScreenPosition = self.screen[u'size'].height() - self.alertHeight
- self.alertHeight = self.screen[u'size'].height() - self.alertScreenPosition
- self.parent.maindisplay.setAlertSize(self.alertScreenPosition, self.alertHeight)
+ self.alertScreenPosition = self.screen[u'size'].height() \
+ - self.alertHeight
+ self.alertHeight = self.screen[u'size'].height() \
+ - self.alertScreenPosition
+ self.parent.maindisplay.setAlertSize(self.alertScreenPosition,\
+ self.alertHeight)
def displayAlert(self, text=u''):
"""
@@ -79,12 +82,12 @@ class AlertsManager(QtCore.QObject):
log.debug(u'display alert called %s' % text)
if not self.screen:
self.screenChanged()
- self.parent.maindisplay.parent.StatusBar.showMessage(u'')
self.alertList.append(text)
if self.timer_id != 0:
- self.parent.maindisplay.parent.StatusBar.showMessage(\
- self.trUtf8(u'Alert message created and delayed'))
+ Receiver.send_message(u'status_message',
+ self.trUtf8(u'Alert message created and delayed'))
return
+ Receiver.send_message(u'status_message', u'')
self.generateAlert()
def generateAlert(self):
@@ -116,6 +119,7 @@ class AlertsManager(QtCore.QObject):
self.timer_id = self.startTimer(int(alertTab.timeout) * 1000)
def timerEvent(self, event):
+ log.debug(u'timer event')
if event.timerId() == self.timer_id:
self.parent.maindisplay.addAlertImage(None, True)
self.killTimer(self.timer_id)
diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py
index 7b4367a72..92717b6d7 100644
--- a/openlp/plugins/presentations/lib/impresscontroller.py
+++ b/openlp/plugins/presentations/lib/impresscontroller.py
@@ -155,6 +155,10 @@ class ImpressController(PresentationController):
desktop = self.get_uno_desktop()
else:
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()
if docs.hasElements():
log.debug(u'OpenOffice not terminated')
diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py
index 87f7d3601..b992aeea4 100644
--- a/openlp/plugins/songs/forms/editsongdialog.py
+++ b/openlp/plugins/songs/forms/editsongdialog.py
@@ -135,7 +135,7 @@ class Ui_EditSongDialog(object):
sizePolicy.setHeightForWidth(
self.AuthorsSelectionComboItem.sizePolicy().hasHeightForWidth())
self.AuthorsSelectionComboItem.setSizePolicy(sizePolicy)
- self.AuthorsSelectionComboItem.setEditable(False)
+ self.AuthorsSelectionComboItem.setEditable(True)
self.AuthorsSelectionComboItem.setInsertPolicy(
QtGui.QComboBox.InsertAlphabetically)
self.AuthorsSelectionComboItem.setSizeAdjustPolicy(
@@ -212,6 +212,7 @@ class Ui_EditSongDialog(object):
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.SongTopicCombo.sizePolicy().hasHeightForWidth())
+ self.SongTopicCombo.setEditable(True)
self.SongTopicCombo.setSizePolicy(sizePolicy)
self.SongTopicCombo.setObjectName(u'SongTopicCombo')
self.TopicAddLayout.addWidget(self.SongTopicCombo)
@@ -256,6 +257,7 @@ class Ui_EditSongDialog(object):
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.SongbookCombo.sizePolicy().hasHeightForWidth())
+ self.SongbookCombo.setEditable(True)
self.SongbookCombo.setSizePolicy(sizePolicy)
self.SongbookCombo.setObjectName(u'SongbookCombo')
self.SongbookLayout.addWidget(self.SongbookCombo, 0, 0, 1, 1)
@@ -293,6 +295,7 @@ class Ui_EditSongDialog(object):
self.ThemeLayout.setMargin(8)
self.ThemeLayout.setObjectName(u'ThemeLayout')
self.ThemeSelectionComboItem = QtGui.QComboBox(self.ThemeGroupBox)
+ self.ThemeSelectionComboItem.setEditable(True)
self.ThemeSelectionComboItem.setObjectName(u'ThemeSelectionComboItem')
self.ThemeLayout.addWidget(self.ThemeSelectionComboItem)
self.ThemeAddButton = QtGui.QPushButton(self.ThemeGroupBox)
diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py
index b2b1b14c4..2c03d13f6 100644
--- a/openlp/plugins/songs/forms/editsongform.py
+++ b/openlp/plugins/songs/forms/editsongform.py
@@ -122,6 +122,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def loadAuthors(self):
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()
for author in authors:
row = self.AuthorsSelectionComboItem.count()
@@ -131,6 +136,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def loadTopics(self):
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()
for topic in topics:
row = self.SongTopicCombo.count()
@@ -139,6 +149,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def loadBooks(self):
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.addItem(u' ')
for book in books:
@@ -147,6 +162,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.SongbookCombo.setItemData(row, QtCore.QVariant(book.id))
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.addItem(u' ')
for theme in theme_list:
diff --git a/resources/forms/alertdialog.ui b/resources/forms/alertdialog.ui
index da56f3847..fd4cee5fc 100644
--- a/resources/forms/alertdialog.ui
+++ b/resources/forms/alertdialog.ui
@@ -1,13 +1,13 @@
- AlertForm
-
+ AlertDialog
+
0
0
- 430
- 320
+ 567
+ 440
@@ -25,85 +25,212 @@
8
-
-
-
-
- 0
- 0
-
+
+
+ 8
-
-
-
-
-
-
-
-
-
- 0
- 0
-
-
-
- Alert Text:
-
-
-
- -
-
-
- -
-
-
- true
-
-
-
-
-
- -
-
-
-
-
-
- Qt::Horizontal
-
-
-
- 181
- 38
-
-
-
-
- -
-
-
- Display
-
-
-
- -
-
-
- Cancel
-
-
-
-
-
-
-
+
+ 8
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Alert &text:
+
+
+ AlertTextEdit
+
+
+
+ -
+
+
+ &Parameter(s):
+
+
+ ParameterEdit
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ 8
+
+
+ 0
+
+
-
+
+
+ true
+
+
+
+ -
+
+
+ 8
+
+
-
+
+
+ &New
+
+
+
+ :/general/general_new.png:/general/general_new.png
+
+
+
+ -
+
+
+ false
+
+
+ &Save
+
+
+
+ :/general/general_save.png:/general/general_save.png
+
+
+
+ -
+
+
+ &Edit
+
+
+
+ :/general/general_edit.png:/general/general_edit.png
+
+
+
+ -
+
+
+ &Delete
+
+
+
+ :/general/general_delete.png:/general/general_delete.png
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+ -
+
+
+ 8
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 181
+ 0
+
+
+
+
+ -
+
+
+ Displ&ay
+
+
+
+ :/general/general_live.png:/general/general_live.png
+
+
+
+ -
+
+
+ Display && Cl&ose
+
+
+
+ :/general/general_live.png:/general/general_live.png
+
+
+
+ -
+
+
+ &Close
+
+
+
+ :/system/system_close.png:/system/system_close.png
+
+
+
+
+
+ AlertTextEdit
+ ParameterEdit
+ AlertListWidget
+ NewButton
+ SaveButton
+ EditButton
+ DeleteButton
+ DisplayButton
+ DisplayCloseButton
+ CloseButton
+
-
+
- CancelButton
+ CloseButton
clicked()
- AlertForm
+ AlertDialog
close()
diff --git a/resources/forms/alerteditdialog.ui b/resources/forms/alerteditdialog.ui
deleted file mode 100644
index 352e3d7b1..000000000
--- a/resources/forms/alerteditdialog.ui
+++ /dev/null
@@ -1,101 +0,0 @@
-
-
- AlertEditDialog
-
-
-
- 0
- 0
- 400
- 300
-
-
-
- Maintain Alerts
-
-
-
-
- 220
- 270
- 173
- 27
-
-
-
- QDialogButtonBox::Cancel
-
-
-
-
-
- 20
- 10
- 361
- 251
-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
-
-
-
- true
-
-
-
- -
-
-
-
-
-
- Save
-
-
-
- -
-
-
- Clear
-
-
-
- -
-
-
- Add
-
-
-
- -
-
-
- Edit
-
-
-
- -
-
-
- Delete
-
-
-
-
-
-
-
-
-
-
-
-
-