2008-11-25 20:50:19 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
2008-11-28 14:05:41 +00:00
|
|
|
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
|
2008-11-25 20:50:19 +00:00
|
|
|
|
2009-09-08 19:58:05 +00:00
|
|
|
###############################################################################
|
|
|
|
# OpenLP - Open Source Lyrics Projection #
|
|
|
|
# --------------------------------------------------------------------------- #
|
2009-12-31 12:52:01 +00:00
|
|
|
# Copyright (c) 2008-2010 Raoul Snyman #
|
|
|
|
# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael #
|
2010-03-21 23:58:01 +00:00
|
|
|
# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin #
|
|
|
|
# Thompson, Jon Tibble, Carsten Tinggaard #
|
2009-09-08 19:58:05 +00:00
|
|
|
# --------------------------------------------------------------------------- #
|
|
|
|
# This program is free software; you can redistribute it and/or modify it #
|
|
|
|
# under the terms of the GNU General Public License as published by the Free #
|
|
|
|
# Software Foundation; version 2 of the License. #
|
|
|
|
# #
|
|
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT #
|
|
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
|
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
|
|
|
|
# more details. #
|
|
|
|
# #
|
|
|
|
# You should have received a copy of the GNU General Public License along #
|
|
|
|
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
|
|
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
|
|
|
###############################################################################
|
2008-11-25 20:50:19 +00:00
|
|
|
|
2009-03-22 07:13:34 +00:00
|
|
|
import logging
|
2010-02-02 20:05:21 +00:00
|
|
|
import time
|
2010-05-25 17:12:21 +00:00
|
|
|
import re
|
2009-03-22 07:13:34 +00:00
|
|
|
|
2008-11-25 20:50:19 +00:00
|
|
|
from PyQt4 import QtCore, QtGui
|
|
|
|
|
2010-04-23 18:30:53 +00:00
|
|
|
from openlp.core.ui import AboutForm, SettingsForm, ServiceManager, \
|
|
|
|
ThemeManager, SlideController, PluginForm, MediaDockManager, DisplayManager
|
2010-04-27 16:27:57 +00:00
|
|
|
from openlp.core.lib import RenderManager, build_icon, OpenLPDockWidget, \
|
2010-04-30 19:23:02 +00:00
|
|
|
SettingsManager, PluginManager, Receiver, translate
|
2010-06-06 09:52:11 +00:00
|
|
|
from openlp.core.utils import check_latest_version, AppLocation, add_actions, \
|
|
|
|
LanguageManager
|
2009-09-06 15:26:02 +00:00
|
|
|
|
2010-02-27 15:31:23 +00:00
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
2010-07-07 14:44:22 +00:00
|
|
|
MEDIA_MANAGER_STYLE = """
|
2009-10-17 18:41:56 +00:00
|
|
|
QToolBox::tab {
|
|
|
|
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
|
2010-02-21 10:28:35 +00:00
|
|
|
stop: 0 palette(button), stop: 1.0 palette(dark));
|
2009-10-17 18:41:56 +00:00
|
|
|
border-width: 1px;
|
|
|
|
border-style: outset;
|
2010-02-21 10:28:35 +00:00
|
|
|
border-color: palette(dark);
|
2009-10-17 18:41:56 +00:00
|
|
|
border-radius: 5px;
|
|
|
|
}
|
|
|
|
QToolBox::tab:selected {
|
|
|
|
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
|
2010-02-21 10:28:35 +00:00
|
|
|
stop: 0 palette(light), stop: 1.0 palette(button));
|
2010-03-09 20:26:12 +00:00
|
|
|
border-color: palette(button);
|
2009-10-17 18:41:56 +00:00
|
|
|
}
|
|
|
|
"""
|
2010-03-09 20:29:45 +00:00
|
|
|
class VersionThread(QtCore.QThread):
|
|
|
|
"""
|
|
|
|
A special Qt thread class to fetch the version of OpenLP from the website.
|
|
|
|
This is threaded so that it doesn't affect the loading time of OpenLP.
|
|
|
|
"""
|
2010-04-27 16:27:57 +00:00
|
|
|
def __init__(self, parent, app_version):
|
2010-02-02 20:05:21 +00:00
|
|
|
QtCore.QThread.__init__(self, parent)
|
|
|
|
self.parent = parent
|
2010-02-25 21:09:27 +00:00
|
|
|
self.app_version = app_version
|
2010-05-28 00:18:26 +00:00
|
|
|
self.version_splitter = re.compile(
|
2010-06-27 12:49:01 +00:00
|
|
|
r'([0-9]+).([0-9]+).([0-9]+)(?:-bzr([0-9]+))?')
|
2010-03-09 20:29:45 +00:00
|
|
|
|
|
|
|
def run(self):
|
|
|
|
"""
|
|
|
|
Run the thread.
|
|
|
|
"""
|
2010-03-21 14:24:41 +00:00
|
|
|
time.sleep(1)
|
2010-04-16 07:31:01 +00:00
|
|
|
Receiver.send_message(u'maindisplay_blank_check')
|
2010-04-27 16:27:57 +00:00
|
|
|
version = check_latest_version(self.app_version)
|
2010-05-25 17:12:21 +00:00
|
|
|
remote_version = {}
|
|
|
|
local_version = {}
|
|
|
|
match = self.version_splitter.match(version)
|
|
|
|
if match:
|
|
|
|
remote_version[u'major'] = int(match.group(1))
|
|
|
|
remote_version[u'minor'] = int(match.group(2))
|
|
|
|
remote_version[u'release'] = int(match.group(3))
|
2010-06-27 12:49:01 +00:00
|
|
|
if len(match.groups()) > 3 and match.group(4):
|
2010-05-25 17:12:21 +00:00
|
|
|
remote_version[u'revision'] = int(match.group(4))
|
|
|
|
match = self.version_splitter.match(self.app_version[u'full'])
|
|
|
|
if match:
|
|
|
|
local_version[u'major'] = int(match.group(1))
|
|
|
|
local_version[u'minor'] = int(match.group(2))
|
|
|
|
local_version[u'release'] = int(match.group(3))
|
2010-06-27 12:49:01 +00:00
|
|
|
if len(match.groups()) > 3 and match.group(4):
|
2010-05-25 17:12:21 +00:00
|
|
|
local_version[u'revision'] = int(match.group(4))
|
|
|
|
if remote_version[u'major'] > local_version[u'major'] or \
|
2010-05-25 18:55:02 +00:00
|
|
|
remote_version[u'minor'] > local_version[u'minor'] or \
|
|
|
|
remote_version[u'release'] > local_version[u'release']:
|
2010-05-25 17:12:21 +00:00
|
|
|
Receiver.send_message(u'openlp_version_check', u'%s' % version)
|
|
|
|
elif remote_version.get(u'revision') and \
|
2010-05-25 18:55:02 +00:00
|
|
|
local_version.get(u'revision') and \
|
|
|
|
remote_version[u'revision'] > local_version[u'revision']:
|
2010-04-16 07:31:01 +00:00
|
|
|
Receiver.send_message(u'openlp_version_check', u'%s' % version)
|
2010-02-02 20:05:21 +00:00
|
|
|
|
2009-08-09 17:58:37 +00:00
|
|
|
class Ui_MainWindow(object):
|
|
|
|
def setupUi(self, MainWindow):
|
2009-05-16 10:24:03 +00:00
|
|
|
"""
|
2009-06-02 19:02:12 +00:00
|
|
|
Set up the user interface
|
2009-05-16 10:24:03 +00:00
|
|
|
"""
|
2009-08-09 17:58:37 +00:00
|
|
|
MainWindow.setObjectName(u'MainWindow')
|
2009-09-06 15:26:02 +00:00
|
|
|
MainWindow.resize(self.settingsmanager.width,
|
|
|
|
self.settingsmanager.height)
|
2009-05-01 22:26:43 +00:00
|
|
|
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
|
|
|
|
QtGui.QSizePolicy.Expanding)
|
2008-11-25 20:50:19 +00:00
|
|
|
sizePolicy.setHorizontalStretch(0)
|
|
|
|
sizePolicy.setVerticalStretch(0)
|
2009-06-02 19:02:12 +00:00
|
|
|
sizePolicy.setHeightForWidth(
|
2009-08-09 17:58:37 +00:00
|
|
|
MainWindow.sizePolicy().hasHeightForWidth())
|
|
|
|
MainWindow.setSizePolicy(sizePolicy)
|
2009-11-30 20:29:26 +00:00
|
|
|
MainIcon = build_icon(u':/icon/openlp-logo-16x16.png')
|
2009-09-29 02:54:32 +00:00
|
|
|
MainWindow.setWindowIcon(MainIcon)
|
2009-06-02 19:02:12 +00:00
|
|
|
# Set up the main container, which contains all the other form widgets
|
2009-08-09 17:58:37 +00:00
|
|
|
self.MainContent = QtGui.QWidget(MainWindow)
|
2009-06-02 19:02:12 +00:00
|
|
|
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
|
|
|
|
QtGui.QSizePolicy.Expanding)
|
2008-11-25 20:50:19 +00:00
|
|
|
sizePolicy.setHorizontalStretch(0)
|
|
|
|
sizePolicy.setVerticalStretch(0)
|
2009-06-02 19:02:12 +00:00
|
|
|
sizePolicy.setHeightForWidth(
|
|
|
|
self.MainContent.sizePolicy().hasHeightForWidth())
|
2008-11-25 20:50:19 +00:00
|
|
|
self.MainContent.setSizePolicy(sizePolicy)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.MainContent.setObjectName(u'MainContent')
|
2008-11-25 20:50:19 +00:00
|
|
|
self.MainContentLayout = QtGui.QHBoxLayout(self.MainContent)
|
|
|
|
self.MainContentLayout.setSpacing(0)
|
|
|
|
self.MainContentLayout.setMargin(0)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.MainContentLayout.setObjectName(u'MainContentLayout')
|
2009-08-09 17:58:37 +00:00
|
|
|
MainWindow.setCentralWidget(self.MainContent)
|
2008-11-25 20:50:19 +00:00
|
|
|
self.ControlSplitter = QtGui.QSplitter(self.MainContent)
|
|
|
|
self.ControlSplitter.setOrientation(QtCore.Qt.Horizontal)
|
2009-11-08 17:40:43 +00:00
|
|
|
self.ControlSplitter.setOpaqueResize(False)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ControlSplitter.setObjectName(u'ControlSplitter')
|
2009-03-05 10:52:55 +00:00
|
|
|
self.MainContentLayout.addWidget(self.ControlSplitter)
|
2009-06-02 19:02:12 +00:00
|
|
|
# Create slide controllers
|
2009-09-06 19:23:57 +00:00
|
|
|
self.PreviewController = SlideController(self, self.settingsmanager)
|
|
|
|
self.LiveController = SlideController(self, self.settingsmanager, True)
|
2009-06-02 19:02:12 +00:00
|
|
|
# Create menu
|
2009-08-09 17:58:37 +00:00
|
|
|
self.MenuBar = QtGui.QMenuBar(MainWindow)
|
2008-11-25 20:50:19 +00:00
|
|
|
self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.MenuBar.setObjectName(u'MenuBar')
|
2008-11-25 20:50:19 +00:00
|
|
|
self.FileMenu = QtGui.QMenu(self.MenuBar)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.FileMenu.setObjectName(u'FileMenu')
|
2008-11-25 20:50:19 +00:00
|
|
|
self.FileImportMenu = QtGui.QMenu(self.FileMenu)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.FileImportMenu.setObjectName(u'FileImportMenu')
|
2008-11-25 20:50:19 +00:00
|
|
|
self.FileExportMenu = QtGui.QMenu(self.FileMenu)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.FileExportMenu.setObjectName(u'FileExportMenu')
|
2010-07-03 20:39:29 +00:00
|
|
|
# View Menu
|
|
|
|
self.ViewMenu = QtGui.QMenu(self.MenuBar)
|
|
|
|
self.ViewMenu.setObjectName(u'ViewMenu')
|
|
|
|
self.ViewModeMenu = QtGui.QMenu(self.ViewMenu)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ViewModeMenu.setObjectName(u'ViewModeMenu')
|
2010-07-03 20:39:29 +00:00
|
|
|
# Tools Menu
|
2008-11-25 20:50:19 +00:00
|
|
|
self.ToolsMenu = QtGui.QMenu(self.MenuBar)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ToolsMenu.setObjectName(u'ToolsMenu')
|
2010-07-03 20:39:29 +00:00
|
|
|
# Settings Menu
|
|
|
|
self.SettingsMenu = QtGui.QMenu(self.MenuBar)
|
|
|
|
self.SettingsMenu.setObjectName(u'SettingsMenu')
|
|
|
|
self.SettingsLanguageMenu = QtGui.QMenu(self.SettingsMenu)
|
|
|
|
self.SettingsLanguageMenu.setObjectName(u'SettingsLanguageMenu')
|
|
|
|
# Help Menu
|
2008-11-25 20:50:19 +00:00
|
|
|
self.HelpMenu = QtGui.QMenu(self.MenuBar)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.HelpMenu.setObjectName(u'HelpMenu')
|
2009-08-09 17:58:37 +00:00
|
|
|
MainWindow.setMenuBar(self.MenuBar)
|
|
|
|
self.StatusBar = QtGui.QStatusBar(MainWindow)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.StatusBar.setObjectName(u'StatusBar')
|
2009-08-09 17:58:37 +00:00
|
|
|
MainWindow.setStatusBar(self.StatusBar)
|
|
|
|
self.DefaultThemeLabel = QtGui.QLabel(self.StatusBar)
|
|
|
|
self.DefaultThemeLabel.setObjectName(u'DefaultThemeLabel')
|
|
|
|
self.StatusBar.addPermanentWidget(self.DefaultThemeLabel)
|
2009-06-02 19:02:12 +00:00
|
|
|
# Create the MediaManager
|
2009-09-19 11:25:01 +00:00
|
|
|
self.MediaManagerDock = OpenLPDockWidget(MainWindow)
|
2010-07-06 20:05:48 +00:00
|
|
|
self.MediaManagerDock.setWindowIcon(
|
|
|
|
build_icon(u':/system/system_mediamanager.png'))
|
2010-07-07 14:44:22 +00:00
|
|
|
self.MediaManagerDock.setStyleSheet(MEDIA_MANAGER_STYLE)
|
2009-09-11 19:51:06 +00:00
|
|
|
self.MediaManagerDock.setMinimumWidth(
|
|
|
|
self.settingsmanager.mainwindow_left)
|
2009-10-17 10:55:28 +00:00
|
|
|
self.MediaManagerDock.setObjectName(u'MediaManagerDock')
|
2008-11-25 20:50:19 +00:00
|
|
|
self.MediaManagerContents = QtGui.QWidget()
|
2009-05-01 22:26:43 +00:00
|
|
|
self.MediaManagerContents.setObjectName(u'MediaManagerContents')
|
2008-11-25 20:50:19 +00:00
|
|
|
self.MediaManagerLayout = QtGui.QHBoxLayout(self.MediaManagerContents)
|
|
|
|
self.MediaManagerLayout.setContentsMargins(0, 2, 0, 0)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.MediaManagerLayout.setObjectName(u'MediaManagerLayout')
|
2009-10-03 18:39:44 +00:00
|
|
|
# Create the media toolbox
|
2008-11-25 20:50:19 +00:00
|
|
|
self.MediaToolBox = QtGui.QToolBox(self.MediaManagerContents)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.MediaToolBox.setObjectName(u'MediaToolBox')
|
2008-11-25 20:50:19 +00:00
|
|
|
self.MediaManagerLayout.addWidget(self.MediaToolBox)
|
|
|
|
self.MediaManagerDock.setWidget(self.MediaManagerContents)
|
2009-08-09 17:58:37 +00:00
|
|
|
MainWindow.addDockWidget(
|
2009-06-02 19:02:12 +00:00
|
|
|
QtCore.Qt.DockWidgetArea(1), self.MediaManagerDock)
|
|
|
|
# Create the service manager
|
2009-09-19 11:25:01 +00:00
|
|
|
self.ServiceManagerDock = OpenLPDockWidget(MainWindow)
|
2010-07-06 20:05:48 +00:00
|
|
|
self.ServiceManagerDock.setWindowIcon(
|
|
|
|
build_icon(u':/system/system_servicemanager.png'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ServiceManagerDock.setObjectName(u'ServiceManagerDock')
|
2009-09-10 20:18:15 +00:00
|
|
|
self.ServiceManagerDock.setMinimumWidth(
|
2009-09-11 19:29:57 +00:00
|
|
|
self.settingsmanager.mainwindow_right)
|
2009-03-23 19:17:07 +00:00
|
|
|
self.ServiceManagerContents = ServiceManager(self)
|
2008-11-25 20:50:19 +00:00
|
|
|
self.ServiceManagerDock.setWidget(self.ServiceManagerContents)
|
2009-08-09 17:58:37 +00:00
|
|
|
MainWindow.addDockWidget(
|
2009-06-02 19:02:12 +00:00
|
|
|
QtCore.Qt.DockWidgetArea(2), self.ServiceManagerDock)
|
|
|
|
# Create the theme manager
|
2009-09-19 11:25:01 +00:00
|
|
|
self.ThemeManagerDock = OpenLPDockWidget(MainWindow)
|
2010-07-06 20:05:48 +00:00
|
|
|
self.ThemeManagerDock.setWindowIcon(
|
|
|
|
build_icon(u':/system/system_thememanager.png'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ThemeManagerDock.setObjectName(u'ThemeManagerDock')
|
2010-04-26 16:41:31 +00:00
|
|
|
self.ThemeManagerDock.setMinimumWidth(
|
|
|
|
self.settingsmanager.mainwindow_right)
|
2009-04-06 18:45:45 +00:00
|
|
|
self.ThemeManagerContents = ThemeManager(self)
|
2008-11-25 20:50:19 +00:00
|
|
|
self.ThemeManagerDock.setWidget(self.ThemeManagerContents)
|
2009-08-09 17:58:37 +00:00
|
|
|
MainWindow.addDockWidget(
|
2009-06-02 19:02:12 +00:00
|
|
|
QtCore.Qt.DockWidgetArea(2), self.ThemeManagerDock)
|
|
|
|
# Create the menu items
|
2009-08-09 17:58:37 +00:00
|
|
|
self.FileNewItem = QtGui.QAction(MainWindow)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.FileNewItem.setIcon(
|
2009-09-06 15:26:02 +00:00
|
|
|
self.ServiceManagerContents.Toolbar.getIconFromTitle(
|
|
|
|
u'New Service'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.FileNewItem.setObjectName(u'FileNewItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.FileOpenItem = QtGui.QAction(MainWindow)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.FileOpenItem.setIcon(
|
2009-09-06 15:26:02 +00:00
|
|
|
self.ServiceManagerContents.Toolbar.getIconFromTitle(
|
|
|
|
u'Open Service'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.FileOpenItem.setObjectName(u'FileOpenItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.FileSaveItem = QtGui.QAction(MainWindow)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.FileSaveItem.setIcon(
|
2009-09-06 15:26:02 +00:00
|
|
|
self.ServiceManagerContents.Toolbar.getIconFromTitle(
|
|
|
|
u'Save Service'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.FileSaveItem.setObjectName(u'FileSaveItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.FileSaveAsItem = QtGui.QAction(MainWindow)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.FileSaveAsItem.setObjectName(u'FileSaveAsItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.FileExitItem = QtGui.QAction(MainWindow)
|
2010-07-06 20:05:48 +00:00
|
|
|
self.FileExitItem.setIcon(build_icon(u':/system/system_exit.png'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.FileExitItem.setObjectName(u'FileExitItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.ImportThemeItem = QtGui.QAction(MainWindow)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ImportThemeItem.setObjectName(u'ImportThemeItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.ImportLanguageItem = QtGui.QAction(MainWindow)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ImportLanguageItem.setObjectName(u'ImportLanguageItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.ExportThemeItem = QtGui.QAction(MainWindow)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ExportThemeItem.setObjectName(u'ExportThemeItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.ExportLanguageItem = QtGui.QAction(MainWindow)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ExportLanguageItem.setObjectName(u'ExportLanguageItem')
|
2010-07-03 20:39:29 +00:00
|
|
|
self.SettingsConfigureItem = QtGui.QAction(MainWindow)
|
2010-07-06 20:05:48 +00:00
|
|
|
self.SettingsConfigureItem.setIcon(
|
|
|
|
build_icon(u':/system/system_settings.png'))
|
2010-07-03 20:39:29 +00:00
|
|
|
self.SettingsConfigureItem.setObjectName(u'SettingsConfigureItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.ViewMediaManagerItem = QtGui.QAction(MainWindow)
|
2008-11-25 20:50:19 +00:00
|
|
|
self.ViewMediaManagerItem.setCheckable(True)
|
2010-04-26 16:41:31 +00:00
|
|
|
self.ViewMediaManagerItem.setChecked(self.MediaManagerDock.isVisible())
|
2010-07-06 20:05:48 +00:00
|
|
|
self.ViewMediaManagerItem.setIcon(
|
|
|
|
build_icon(u':/system/system_mediamanager.png'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ViewMediaManagerItem.setObjectName(u'ViewMediaManagerItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.ViewThemeManagerItem = QtGui.QAction(MainWindow)
|
2008-11-25 20:50:19 +00:00
|
|
|
self.ViewThemeManagerItem.setCheckable(True)
|
2010-04-26 16:41:31 +00:00
|
|
|
self.ViewThemeManagerItem.setChecked(self.ThemeManagerDock.isVisible())
|
2010-07-06 20:05:48 +00:00
|
|
|
self.ViewThemeManagerItem.setIcon(
|
|
|
|
build_icon(u':/system/system_thememanager.png'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ViewThemeManagerItem.setObjectName(u'ViewThemeManagerItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.ViewServiceManagerItem = QtGui.QAction(MainWindow)
|
2008-11-25 20:50:19 +00:00
|
|
|
self.ViewServiceManagerItem.setCheckable(True)
|
2009-09-07 16:46:20 +00:00
|
|
|
self.ViewServiceManagerItem.setChecked(
|
2010-04-26 16:41:31 +00:00
|
|
|
self.ServiceManagerDock.isVisible())
|
2010-07-06 20:05:48 +00:00
|
|
|
self.ViewServiceManagerItem.setIcon(
|
|
|
|
build_icon(u':/system/system_servicemanager.png'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ViewServiceManagerItem.setObjectName(u'ViewServiceManagerItem')
|
2010-07-03 20:39:29 +00:00
|
|
|
self.SettingsPluginListItem = QtGui.QAction(MainWindow)
|
2010-07-06 20:05:48 +00:00
|
|
|
self.SettingsPluginListItem.setIcon(
|
|
|
|
build_icon(u':/system/settings_plugin_list.png'))
|
2010-07-03 20:39:29 +00:00
|
|
|
self.SettingsPluginListItem.setObjectName(u'SettingsPluginListItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.HelpDocumentationItem = QtGui.QAction(MainWindow)
|
2010-07-06 20:05:48 +00:00
|
|
|
self.HelpDocumentationItem.setIcon(
|
|
|
|
build_icon(u':/system/system_help_contents.png'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.HelpDocumentationItem.setObjectName(u'HelpDocumentationItem')
|
2010-04-29 12:35:40 +00:00
|
|
|
self.HelpDocumentationItem.setEnabled(False)
|
2009-08-09 17:58:37 +00:00
|
|
|
self.HelpAboutItem = QtGui.QAction(MainWindow)
|
2010-07-06 20:05:48 +00:00
|
|
|
self.HelpAboutItem.setIcon(
|
|
|
|
build_icon(u':/system/system_about.png'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.HelpAboutItem.setObjectName(u'HelpAboutItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.HelpOnlineHelpItem = QtGui.QAction(MainWindow)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.HelpOnlineHelpItem.setObjectName(u'HelpOnlineHelpItem')
|
2010-04-29 12:35:40 +00:00
|
|
|
self.HelpOnlineHelpItem.setEnabled(False)
|
2009-08-09 17:58:37 +00:00
|
|
|
self.HelpWebSiteItem = QtGui.QAction(MainWindow)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.HelpWebSiteItem.setObjectName(u'HelpWebSiteItem')
|
2010-04-16 22:06:28 +00:00
|
|
|
#i18n Language Items
|
|
|
|
self.AutoLanguageItem = QtGui.QAction(MainWindow)
|
|
|
|
self.AutoLanguageItem.setObjectName(u'AutoLanguageItem')
|
|
|
|
self.AutoLanguageItem.setCheckable(True)
|
|
|
|
self.LanguageGroup = QtGui.QActionGroup(MainWindow)
|
2010-04-19 19:12:34 +00:00
|
|
|
qmList = LanguageManager.get_qm_list()
|
|
|
|
savedLanguage = LanguageManager.get_language()
|
2010-04-30 19:23:02 +00:00
|
|
|
self.AutoLanguageItem.setChecked(LanguageManager.AutoLanguage)
|
2010-05-11 19:00:21 +00:00
|
|
|
for key in sorted(qmList.keys()):
|
|
|
|
languageItem = QtGui.QAction(MainWindow)
|
|
|
|
languageItem.setObjectName(key)
|
|
|
|
languageItem.setCheckable(True)
|
2010-04-16 22:06:28 +00:00
|
|
|
if qmList[key] == savedLanguage:
|
2010-05-11 19:00:21 +00:00
|
|
|
languageItem.setChecked(True)
|
|
|
|
add_actions(self.LanguageGroup, [languageItem])
|
|
|
|
self.LanguageGroup.setDisabled(LanguageManager.AutoLanguage)
|
2009-08-09 17:58:37 +00:00
|
|
|
self.ToolsAddToolItem = QtGui.QAction(MainWindow)
|
2010-07-06 20:05:48 +00:00
|
|
|
self.ToolsAddToolItem.setIcon(build_icon(u':/tools/tools_add.png'))
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ToolsAddToolItem.setObjectName(u'ToolsAddToolItem')
|
2010-07-03 20:39:29 +00:00
|
|
|
self.ViewPreviewPanel = QtGui.QAction(MainWindow)
|
|
|
|
self.ViewPreviewPanel.setCheckable(True)
|
|
|
|
self.ViewPreviewPanel.setChecked(
|
2010-07-06 20:05:48 +00:00
|
|
|
self.settingsmanager.get_preview_visibility())
|
2010-07-03 20:39:29 +00:00
|
|
|
self.ViewPreviewPanel.setObjectName(u'ViewPreviewPanel')
|
2009-09-07 16:46:20 +00:00
|
|
|
self.PreviewController.Panel.setVisible(
|
2010-07-06 20:05:48 +00:00
|
|
|
self.settingsmanager.get_preview_visibility())
|
|
|
|
self.ViewLivePanel = QtGui.QAction(MainWindow)
|
|
|
|
self.ViewLivePanel.setCheckable(True)
|
|
|
|
self.ViewLivePanel.setChecked(
|
|
|
|
self.settingsmanager.get_live_visibility())
|
|
|
|
self.ViewLivePanel.setObjectName(u'ViewLivePanel')
|
|
|
|
self.LiveController.Panel.setVisible(
|
|
|
|
self.settingsmanager.get_live_visibility())
|
|
|
|
self.ModeDefaultItem = QtGui.QAction(MainWindow)
|
|
|
|
self.ModeDefaultItem.setCheckable(True)
|
|
|
|
self.ModeDefaultItem.setObjectName(u'ModeDefaultItem')
|
|
|
|
self.ModeSetupItem = QtGui.QAction(MainWindow)
|
|
|
|
self.ModeSetupItem.setCheckable(True)
|
|
|
|
self.ModeSetupItem.setObjectName(u'ModeLiveItem')
|
2009-08-09 17:58:37 +00:00
|
|
|
self.ModeLiveItem = QtGui.QAction(MainWindow)
|
2010-07-06 20:05:48 +00:00
|
|
|
self.ModeLiveItem.setCheckable(True)
|
2009-05-01 22:26:43 +00:00
|
|
|
self.ModeLiveItem.setObjectName(u'ModeLiveItem')
|
2010-07-06 20:05:48 +00:00
|
|
|
self.ModeGroup = QtGui.QActionGroup(MainWindow)
|
|
|
|
self.ModeGroup.addAction(self.ModeDefaultItem)
|
|
|
|
self.ModeGroup.addAction(self.ModeSetupItem)
|
|
|
|
self.ModeGroup.addAction(self.ModeLiveItem)
|
|
|
|
self.ModeDefaultItem.setChecked(True)
|
2010-04-23 18:30:53 +00:00
|
|
|
add_actions(self.FileImportMenu,
|
|
|
|
(self.ImportThemeItem, self.ImportLanguageItem))
|
|
|
|
add_actions(self.FileExportMenu,
|
|
|
|
(self.ExportThemeItem, self.ExportLanguageItem))
|
|
|
|
self.FileMenuActions = (self.FileNewItem, self.FileOpenItem,
|
|
|
|
self.FileSaveItem, self.FileSaveAsItem, None,
|
|
|
|
self.FileImportMenu.menuAction(), self.FileExportMenu.menuAction(),
|
|
|
|
self.FileExitItem)
|
2010-07-06 20:05:48 +00:00
|
|
|
add_actions(self.ViewModeMenu, (self.ModeDefaultItem,
|
|
|
|
self.ModeSetupItem, self.ModeLiveItem))
|
2010-07-03 20:39:29 +00:00
|
|
|
add_actions(self.ViewMenu, (self.ViewModeMenu.menuAction(),
|
2010-04-23 18:30:53 +00:00
|
|
|
None, self.ViewMediaManagerItem, self.ViewServiceManagerItem,
|
2010-07-06 20:05:48 +00:00
|
|
|
self.ViewThemeManagerItem, None, self.ViewPreviewPanel,
|
|
|
|
self.ViewLivePanel))
|
2010-04-16 22:06:28 +00:00
|
|
|
#i18n add Language Actions
|
2010-07-03 20:39:29 +00:00
|
|
|
add_actions(self.SettingsLanguageMenu, (self.AutoLanguageItem, None))
|
|
|
|
add_actions(self.SettingsLanguageMenu, self.LanguageGroup.actions())
|
|
|
|
add_actions(self.SettingsMenu, (self.SettingsPluginListItem,
|
|
|
|
self.SettingsLanguageMenu.menuAction(), None,
|
|
|
|
self.SettingsConfigureItem))
|
2010-04-23 18:30:53 +00:00
|
|
|
add_actions(self.ToolsMenu,
|
2010-07-03 20:39:29 +00:00
|
|
|
(self.ToolsAddToolItem, None))
|
2010-04-23 18:30:53 +00:00
|
|
|
add_actions(self.HelpMenu,
|
|
|
|
(self.HelpDocumentationItem, self.HelpOnlineHelpItem, None,
|
|
|
|
self.HelpWebSiteItem, self.HelpAboutItem))
|
|
|
|
add_actions(self.MenuBar,
|
2010-07-03 20:39:29 +00:00
|
|
|
(self.FileMenu.menuAction(), self.ViewMenu.menuAction(),
|
|
|
|
self.ToolsMenu.menuAction(), self.SettingsMenu.menuAction(),
|
|
|
|
self.HelpMenu.menuAction()))
|
2009-06-02 19:02:12 +00:00
|
|
|
# Initialise the translation
|
2009-08-09 17:58:37 +00:00
|
|
|
self.retranslateUi(MainWindow)
|
2008-11-25 20:50:19 +00:00
|
|
|
self.MediaToolBox.setCurrentIndex(0)
|
2009-06-02 19:02:12 +00:00
|
|
|
# Connect up some signals and slots
|
2010-04-23 18:30:53 +00:00
|
|
|
QtCore.QObject.connect(self.FileMenu,
|
|
|
|
QtCore.SIGNAL(u'aboutToShow()'), self.updateFileMenu)
|
2009-05-01 22:26:43 +00:00
|
|
|
QtCore.QObject.connect(self.FileExitItem,
|
2009-08-09 17:58:37 +00:00
|
|
|
QtCore.SIGNAL(u'triggered()'), MainWindow.close)
|
2009-11-08 14:16:02 +00:00
|
|
|
QtCore.QObject.connect(self.ControlSplitter,
|
|
|
|
QtCore.SIGNAL(u'splitterMoved(int, int)'), self.trackSplitter)
|
2009-08-09 17:58:37 +00:00
|
|
|
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
2008-11-25 20:50:19 +00:00
|
|
|
|
2009-11-08 14:16:02 +00:00
|
|
|
def trackSplitter(self, tab, pos):
|
2009-11-08 17:02:46 +00:00
|
|
|
"""
|
|
|
|
Splitter between the Preview and Live Controllers.
|
|
|
|
"""
|
2009-11-08 17:40:43 +00:00
|
|
|
self.LiveController.widthChanged()
|
|
|
|
self.PreviewController.widthChanged()
|
2009-11-08 14:16:02 +00:00
|
|
|
|
2009-08-09 17:58:37 +00:00
|
|
|
def retranslateUi(self, MainWindow):
|
2009-06-02 19:02:12 +00:00
|
|
|
"""
|
|
|
|
Set up the translation system
|
|
|
|
"""
|
2010-06-18 23:48:16 +00:00
|
|
|
MainWindow.mainTitle = translate('MainWindow', 'OpenLP 2.0')
|
|
|
|
MainWindow.language = translate('MainWindow', 'English')
|
2009-08-09 17:58:37 +00:00
|
|
|
MainWindow.setWindowTitle(MainWindow.mainTitle)
|
2010-06-18 23:48:16 +00:00
|
|
|
self.FileMenu.setTitle(translate('MainWindow', '&File'))
|
|
|
|
self.FileImportMenu.setTitle(translate('MainWindow', '&Import'))
|
|
|
|
self.FileExportMenu.setTitle(translate('MainWindow', '&Export'))
|
2010-07-03 20:39:29 +00:00
|
|
|
self.ViewMenu.setTitle(translate('MainWindow', '&View'))
|
2010-06-18 23:48:16 +00:00
|
|
|
self.ViewModeMenu.setTitle(translate('MainWindow', 'M&ode'))
|
|
|
|
self.ToolsMenu.setTitle(translate('MainWindow', '&Tools'))
|
2010-07-03 20:39:29 +00:00
|
|
|
self.SettingsMenu.setTitle(translate('MainWindow', '&Settings'))
|
|
|
|
self.SettingsLanguageMenu.setTitle(translate('MainWindow',
|
|
|
|
'&Language'))
|
2010-06-18 23:48:16 +00:00
|
|
|
self.HelpMenu.setTitle(translate('MainWindow', '&Help'))
|
2009-06-02 19:02:12 +00:00
|
|
|
self.MediaManagerDock.setWindowTitle(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'Media Manager'))
|
2009-06-02 19:02:12 +00:00
|
|
|
self.ServiceManagerDock.setWindowTitle(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'Service Manager'))
|
2009-06-02 19:02:12 +00:00
|
|
|
self.ThemeManagerDock.setWindowTitle(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'Theme Manager'))
|
|
|
|
self.FileNewItem.setText(translate('MainWindow', '&New'))
|
|
|
|
self.FileNewItem.setToolTip(translate('MainWindow', 'New Service'))
|
2010-05-25 16:16:43 +00:00
|
|
|
self.FileNewItem.setStatusTip(
|
2010-07-03 20:39:29 +00:00
|
|
|
translate('MainWindow', 'Create a new service.'))
|
2010-06-18 23:48:16 +00:00
|
|
|
self.FileNewItem.setShortcut(translate('MainWindow', 'Ctrl+N'))
|
|
|
|
self.FileOpenItem.setText(translate('MainWindow', '&Open'))
|
|
|
|
self.FileOpenItem.setToolTip(translate('MainWindow', 'Open Service'))
|
2010-05-25 16:16:43 +00:00
|
|
|
self.FileOpenItem.setStatusTip(
|
2010-07-03 20:39:29 +00:00
|
|
|
translate('MainWindow', 'Open an existing service.'))
|
2010-06-18 23:48:16 +00:00
|
|
|
self.FileOpenItem.setShortcut(translate('MainWindow', 'Ctrl+O'))
|
|
|
|
self.FileSaveItem.setText(translate('MainWindow', '&Save'))
|
|
|
|
self.FileSaveItem.setToolTip(translate('MainWindow', 'Save Service'))
|
2009-06-02 19:02:12 +00:00
|
|
|
self.FileSaveItem.setStatusTip(
|
2010-07-03 20:39:29 +00:00
|
|
|
translate('MainWindow', 'Save the current service to disk.'))
|
2010-06-18 23:48:16 +00:00
|
|
|
self.FileSaveItem.setShortcut(translate('MainWindow', 'Ctrl+S'))
|
|
|
|
self.FileSaveAsItem.setText(translate('MainWindow', 'Save &As...'))
|
2010-05-25 16:16:43 +00:00
|
|
|
self.FileSaveAsItem.setToolTip(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'Save Service As'))
|
|
|
|
self.FileSaveAsItem.setStatusTip(translate('MainWindow',
|
2010-07-03 20:39:29 +00:00
|
|
|
'Save the current service under a new name.'))
|
2010-07-06 20:05:48 +00:00
|
|
|
self.FileSaveAsItem.setShortcut(translate('MainWindow', 'Ctrl+Shift+S'))
|
2010-06-18 23:48:16 +00:00
|
|
|
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'))
|
2010-07-03 20:39:29 +00:00
|
|
|
self.SettingsConfigureItem.setText(translate('MainWindow',
|
|
|
|
'&Configure OpenLP...'))
|
2010-05-25 16:16:43 +00:00
|
|
|
self.ViewMediaManagerItem.setText(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', '&Media Manager'))
|
2010-04-28 14:17:42 +00:00
|
|
|
self.ViewMediaManagerItem.setToolTip(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'Toggle Media Manager'))
|
|
|
|
self.ViewMediaManagerItem.setStatusTip(translate('MainWindow',
|
2010-07-03 20:39:29 +00:00
|
|
|
'Toggle the visibility of the media manager.'))
|
2010-06-18 23:48:16 +00:00
|
|
|
self.ViewMediaManagerItem.setShortcut(translate('MainWindow', 'F8'))
|
2010-05-25 16:16:43 +00:00
|
|
|
self.ViewThemeManagerItem.setText(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', '&Theme Manager'))
|
2010-04-28 14:17:42 +00:00
|
|
|
self.ViewThemeManagerItem.setToolTip(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'Toggle Theme Manager'))
|
|
|
|
self.ViewThemeManagerItem.setStatusTip(translate('MainWindow',
|
2010-07-03 20:39:29 +00:00
|
|
|
'Toggle the visibility of the theme manager.'))
|
2010-06-18 23:48:16 +00:00
|
|
|
self.ViewThemeManagerItem.setShortcut(translate('MainWindow', 'F10'))
|
2010-05-25 16:16:43 +00:00
|
|
|
self.ViewServiceManagerItem.setText(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', '&Service Manager'))
|
2009-06-02 19:02:12 +00:00
|
|
|
self.ViewServiceManagerItem.setToolTip(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'Toggle Service Manager'))
|
|
|
|
self.ViewServiceManagerItem.setStatusTip(translate('MainWindow',
|
2010-07-03 20:39:29 +00:00
|
|
|
'Toggle the visibility of the service manager.'))
|
2010-06-18 23:48:16 +00:00
|
|
|
self.ViewServiceManagerItem.setShortcut(translate('MainWindow', 'F9'))
|
2010-07-03 20:39:29 +00:00
|
|
|
self.ViewPreviewPanel.setText(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', '&Preview Panel'))
|
2010-07-03 20:39:29 +00:00
|
|
|
self.ViewPreviewPanel.setToolTip(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'Toggle Preview Panel'))
|
2010-07-03 20:39:29 +00:00
|
|
|
self.ViewPreviewPanel.setStatusTip(translate('MainWindow',
|
|
|
|
'Toggle the visibility of the preview panel.'))
|
|
|
|
self.ViewPreviewPanel.setShortcut(translate('MainWindow', 'F11'))
|
2010-07-06 20:05:48 +00:00
|
|
|
self.ViewLivePanel.setText(
|
|
|
|
translate('MainWindow', '&Live Panel'))
|
|
|
|
self.ViewLivePanel.setToolTip(
|
|
|
|
translate('MainWindow', 'Toggle Live Panel'))
|
|
|
|
self.ViewLivePanel.setStatusTip(translate('MainWindow',
|
|
|
|
'Toggle the visibility of the live panel.'))
|
|
|
|
self.ViewLivePanel.setShortcut(translate('MainWindow', 'F12'))
|
2010-07-03 20:39:29 +00:00
|
|
|
self.SettingsPluginListItem.setText(translate('MainWindow',
|
|
|
|
'&Plugin List'))
|
|
|
|
self.SettingsPluginListItem.setStatusTip(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'List the Plugins'))
|
2010-07-10 10:31:36 +00:00
|
|
|
self.SettingsPluginListItem.setShortcut(
|
|
|
|
translate('MainWindow', 'Alt+F7'))
|
2010-05-25 16:16:43 +00:00
|
|
|
self.HelpDocumentationItem.setText(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', '&User Guide'))
|
|
|
|
self.HelpAboutItem.setText(translate('MainWindow', '&About'))
|
2009-06-02 19:02:12 +00:00
|
|
|
self.HelpAboutItem.setStatusTip(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'More information about OpenLP'))
|
|
|
|
self.HelpAboutItem.setShortcut(translate('MainWindow', 'Ctrl+F1'))
|
2010-06-06 09:52:11 +00:00
|
|
|
self.HelpOnlineHelpItem.setText(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', '&Online Help'))
|
|
|
|
self.HelpWebSiteItem.setText(translate('MainWindow', '&Web Site'))
|
|
|
|
self.AutoLanguageItem.setText(translate('MainWindow', '&Auto Detect'))
|
2010-04-16 22:06:28 +00:00
|
|
|
self.AutoLanguageItem.setStatusTip(
|
2010-07-06 20:05:48 +00:00
|
|
|
translate('MainWindow', 'Use the system language, if available.'))
|
2010-05-11 19:00:21 +00:00
|
|
|
for item in self.LanguageGroup.actions():
|
|
|
|
item.setText(item.objectName())
|
2010-06-18 23:48:16 +00:00
|
|
|
item.setStatusTip(unicode(translate('MainWindow',
|
|
|
|
'Set the interface language to %s')) % item.objectName())
|
|
|
|
self.ToolsAddToolItem.setText(translate('MainWindow', 'Add &Tool...'))
|
2009-10-23 13:17:43 +00:00
|
|
|
self.ToolsAddToolItem.setStatusTip(
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow',
|
2010-07-06 20:05:48 +00:00
|
|
|
'Add an application to the list of tools.'))
|
|
|
|
self.ModeDefaultItem.setText(translate('MainWindow', '&Default'))
|
|
|
|
self.ModeDefaultItem.setStatusTip(
|
|
|
|
translate('MainWindow',
|
|
|
|
'Set the view mode back to the default.'))
|
|
|
|
self.ModeSetupItem.setText(translate('MainWindow', '&Setup'))
|
|
|
|
self.ModeSetupItem.setStatusTip(
|
|
|
|
translate('MainWindow',
|
|
|
|
'Set the view mode to Setup.'))
|
2010-06-18 23:48:16 +00:00
|
|
|
self.ModeLiveItem.setText(translate('MainWindow', '&Live'))
|
2010-07-06 20:05:48 +00:00
|
|
|
self.ModeLiveItem.setStatusTip(
|
|
|
|
translate('MainWindow',
|
|
|
|
'Set the view mode to Live.'))
|
2009-08-09 17:58:37 +00:00
|
|
|
|
|
|
|
|
|
|
|
class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|
|
|
"""
|
|
|
|
The main window.
|
|
|
|
"""
|
|
|
|
log.info(u'MainWindow loaded')
|
|
|
|
|
2010-04-18 19:11:28 +00:00
|
|
|
def __init__(self, screens, applicationVersion):
|
2009-08-09 17:58:37 +00:00
|
|
|
"""
|
|
|
|
This constructor sets up the interface, the various managers, and the
|
|
|
|
plugins.
|
|
|
|
"""
|
|
|
|
QtGui.QMainWindow.__init__(self)
|
2010-01-16 07:22:50 +00:00
|
|
|
self.screens = screens
|
2009-11-01 09:07:10 +00:00
|
|
|
self.applicationVersion = applicationVersion
|
2010-04-30 01:31:41 +00:00
|
|
|
# Set up settings sections for the main application
|
|
|
|
# (not for use by plugins)
|
2010-04-30 22:38:15 +00:00
|
|
|
self.uiSettingsSection = u'user interface'
|
|
|
|
self.generalSettingsSection = u'general'
|
|
|
|
self.serviceSettingsSection = u'servicemanager'
|
|
|
|
self.songsSettingsSection = u'songs'
|
2009-09-19 21:45:50 +00:00
|
|
|
self.serviceNotSaved = False
|
2009-08-09 17:58:37 +00:00
|
|
|
self.settingsmanager = SettingsManager(screens)
|
2010-04-13 15:53:00 +00:00
|
|
|
self.displayManager = DisplayManager(screens)
|
2009-11-01 09:07:10 +00:00
|
|
|
self.aboutForm = AboutForm(self, applicationVersion)
|
2010-01-16 07:22:50 +00:00
|
|
|
self.settingsForm = SettingsForm(self.screens, self, self)
|
2010-06-11 13:26:24 +00:00
|
|
|
self.recentFiles = QtCore.QStringList()
|
2009-08-09 17:58:37 +00:00
|
|
|
# Set up the path with plugins
|
2010-02-21 12:43:03 +00:00
|
|
|
pluginpath = AppLocation.get_directory(AppLocation.PluginsDir)
|
2009-08-09 17:58:37 +00:00
|
|
|
self.plugin_manager = PluginManager(pluginpath)
|
|
|
|
self.plugin_helpers = {}
|
|
|
|
# Set up the interface
|
|
|
|
self.setupUi(self)
|
2010-04-28 01:28:37 +00:00
|
|
|
# Load settings after setupUi so default UI sizes are overwritten
|
2010-04-23 18:30:53 +00:00
|
|
|
self.loadSettings()
|
|
|
|
# Once settings are loaded update FileMenu with recentFiles
|
|
|
|
self.updateFileMenu()
|
2009-10-06 21:07:12 +00:00
|
|
|
self.pluginForm = PluginForm(self)
|
2009-08-09 17:58:37 +00:00
|
|
|
# Set up signals and slots
|
|
|
|
QtCore.QObject.connect(self.ImportThemeItem,
|
2009-09-06 15:26:02 +00:00
|
|
|
QtCore.SIGNAL(u'triggered()'),
|
|
|
|
self.ThemeManagerContents.onImportTheme)
|
2009-08-09 17:58:37 +00:00
|
|
|
QtCore.QObject.connect(self.ExportThemeItem,
|
2009-09-06 15:26:02 +00:00
|
|
|
QtCore.SIGNAL(u'triggered()'),
|
|
|
|
self.ThemeManagerContents.onExportTheme)
|
2009-08-09 17:58:37 +00:00
|
|
|
QtCore.QObject.connect(self.ViewMediaManagerItem,
|
2009-09-06 15:26:02 +00:00
|
|
|
QtCore.SIGNAL(u'triggered(bool)'),
|
2009-09-07 16:46:20 +00:00
|
|
|
self.toggleMediaManager)
|
2009-08-09 17:58:37 +00:00
|
|
|
QtCore.QObject.connect(self.ViewServiceManagerItem,
|
2009-09-06 15:26:02 +00:00
|
|
|
QtCore.SIGNAL(u'triggered(bool)'),
|
2009-09-07 16:46:20 +00:00
|
|
|
self.toggleServiceManager)
|
2009-08-09 17:58:37 +00:00
|
|
|
QtCore.QObject.connect(self.ViewThemeManagerItem,
|
2009-09-06 15:26:02 +00:00
|
|
|
QtCore.SIGNAL(u'triggered(bool)'),
|
2009-09-07 16:46:20 +00:00
|
|
|
self.toggleThemeManager)
|
2010-07-03 20:39:29 +00:00
|
|
|
QtCore.QObject.connect(self.ViewPreviewPanel,
|
2009-09-06 15:26:02 +00:00
|
|
|
QtCore.SIGNAL(u'toggled(bool)'),
|
2010-07-06 21:23:09 +00:00
|
|
|
self.setPreviewPanelVisibility)
|
2010-07-06 20:05:48 +00:00
|
|
|
QtCore.QObject.connect(self.ViewLivePanel,
|
|
|
|
QtCore.SIGNAL(u'toggled(bool)'),
|
2010-07-06 21:23:09 +00:00
|
|
|
self.setLivePanelVisibility)
|
2009-08-09 17:58:37 +00:00
|
|
|
QtCore.QObject.connect(self.MediaManagerDock,
|
2009-09-06 15:26:02 +00:00
|
|
|
QtCore.SIGNAL(u'visibilityChanged(bool)'),
|
|
|
|
self.ViewMediaManagerItem.setChecked)
|
2009-08-09 17:58:37 +00:00
|
|
|
QtCore.QObject.connect(self.ServiceManagerDock,
|
2009-09-06 15:26:02 +00:00
|
|
|
QtCore.SIGNAL(u'visibilityChanged(bool)'),
|
|
|
|
self.ViewServiceManagerItem.setChecked)
|
2009-08-09 17:58:37 +00:00
|
|
|
QtCore.QObject.connect(self.ThemeManagerDock,
|
2009-09-06 15:26:02 +00:00
|
|
|
QtCore.SIGNAL(u'visibilityChanged(bool)'),
|
|
|
|
self.ViewThemeManagerItem.setChecked)
|
2010-04-29 12:35:40 +00:00
|
|
|
QtCore.QObject.connect(self.HelpWebSiteItem,
|
|
|
|
QtCore.SIGNAL(u'triggered()'), self.onHelpWebSiteClicked)
|
2009-08-09 17:58:37 +00:00
|
|
|
QtCore.QObject.connect(self.HelpAboutItem,
|
|
|
|
QtCore.SIGNAL(u'triggered()'), self.onHelpAboutItemClicked)
|
2010-07-03 20:39:29 +00:00
|
|
|
QtCore.QObject.connect(self.SettingsPluginListItem,
|
2009-08-13 20:02:38 +00:00
|
|
|
QtCore.SIGNAL(u'triggered()'), self.onPluginItemClicked)
|
2010-07-03 20:39:29 +00:00
|
|
|
QtCore.QObject.connect(self.SettingsConfigureItem,
|
2009-08-09 17:58:37 +00:00
|
|
|
QtCore.SIGNAL(u'triggered()'), self.onOptionsSettingsItemClicked)
|
2009-09-23 15:51:03 +00:00
|
|
|
QtCore.QObject.connect(self.FileNewItem,
|
2009-09-19 11:25:01 +00:00
|
|
|
QtCore.SIGNAL(u'triggered()'),
|
|
|
|
self.ServiceManagerContents.onNewService)
|
2009-09-23 15:51:03 +00:00
|
|
|
QtCore.QObject.connect(self.FileOpenItem,
|
2009-09-19 11:25:01 +00:00
|
|
|
QtCore.SIGNAL(u'triggered()'),
|
|
|
|
self.ServiceManagerContents.onLoadService)
|
2009-09-23 15:51:03 +00:00
|
|
|
QtCore.QObject.connect(self.FileSaveItem,
|
2009-09-19 11:25:01 +00:00
|
|
|
QtCore.SIGNAL(u'triggered()'),
|
|
|
|
self.ServiceManagerContents.onQuickSaveService)
|
2009-09-23 15:51:03 +00:00
|
|
|
QtCore.QObject.connect(self.FileSaveAsItem,
|
2009-09-19 11:25:01 +00:00
|
|
|
QtCore.SIGNAL(u'triggered()'),
|
|
|
|
self.ServiceManagerContents.onSaveService)
|
2010-04-16 22:06:28 +00:00
|
|
|
#i18n set signals for languages
|
2010-05-17 18:39:28 +00:00
|
|
|
QtCore.QObject.connect(self.AutoLanguageItem,
|
2010-04-16 22:06:28 +00:00
|
|
|
QtCore.SIGNAL(u'toggled(bool)'),
|
|
|
|
self.setAutoLanguage)
|
2010-04-19 19:12:34 +00:00
|
|
|
self.LanguageGroup.triggered.connect(LanguageManager.set_language)
|
2010-07-06 20:05:48 +00:00
|
|
|
QtCore.QObject.connect(self.ModeDefaultItem,
|
|
|
|
QtCore.SIGNAL(u'triggered()'),
|
|
|
|
self.onModeDefaultItemClicked)
|
|
|
|
QtCore.QObject.connect(self.ModeSetupItem,
|
|
|
|
QtCore.SIGNAL(u'triggered()'),
|
|
|
|
self.onModeSetupItemClicked)
|
|
|
|
QtCore.QObject.connect(self.ModeLiveItem,
|
|
|
|
QtCore.SIGNAL(u'triggered()'),
|
|
|
|
self.onModeLiveItemClicked)
|
|
|
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
|
|
QtCore.SIGNAL(u'theme_update_global'), self.defaultThemeChanged)
|
|
|
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
|
|
QtCore.SIGNAL(u'openlp_version_check'), self.versionCheck)
|
|
|
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
|
|
QtCore.SIGNAL(u'maindisplay_blank_check'), self.blankCheck)
|
|
|
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
|
|
QtCore.SIGNAL(u'config_screen_changed'), self.screenChanged)
|
|
|
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
|
|
QtCore.SIGNAL(u'maindisplay_status_text'), self.showStatusMessage)
|
2009-08-09 17:58:37 +00:00
|
|
|
#warning cyclic dependency
|
|
|
|
#RenderManager needs to call ThemeManager and
|
|
|
|
#ThemeManager needs to call RenderManager
|
2010-04-28 14:17:42 +00:00
|
|
|
self.RenderManager = RenderManager(
|
|
|
|
self.ThemeManagerContents, self.screens)
|
2010-04-29 19:33:45 +00:00
|
|
|
self.displayManager.renderManager = self.RenderManager
|
2009-10-07 05:09:35 +00:00
|
|
|
#Define the media Dock Manager
|
|
|
|
self.mediaDockManager = MediaDockManager(self.MediaToolBox)
|
2009-08-09 17:58:37 +00:00
|
|
|
log.info(u'Load Plugins')
|
|
|
|
#make the controllers available to the plugins
|
|
|
|
self.plugin_helpers[u'preview'] = self.PreviewController
|
|
|
|
self.plugin_helpers[u'live'] = self.LiveController
|
|
|
|
self.plugin_helpers[u'render'] = self.RenderManager
|
|
|
|
self.plugin_helpers[u'service'] = self.ServiceManagerContents
|
2010-04-27 16:27:57 +00:00
|
|
|
self.plugin_helpers[u'settings form'] = self.settingsForm
|
2009-10-07 05:09:35 +00:00
|
|
|
self.plugin_helpers[u'toolbox'] = self.mediaDockManager
|
2010-07-02 18:21:45 +00:00
|
|
|
self.plugin_helpers[u'displaymanager'] = self.displayManager
|
2010-07-02 22:18:54 +00:00
|
|
|
self.plugin_helpers[u'pluginmanager'] = self.plugin_manager
|
2009-08-26 05:00:19 +00:00
|
|
|
self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers)
|
2009-09-19 21:45:50 +00:00
|
|
|
# hook methods have to happen after find_plugins. Find plugins needs
|
|
|
|
# the controllers hence the hooks have moved from setupUI() to here
|
2009-08-09 17:58:37 +00:00
|
|
|
# Find and insert settings tabs
|
|
|
|
log.info(u'hook settings')
|
|
|
|
self.plugin_manager.hook_settings_tabs(self.settingsForm)
|
|
|
|
# Find and insert media manager items
|
|
|
|
log.info(u'hook media')
|
2009-10-07 05:09:35 +00:00
|
|
|
self.plugin_manager.hook_media_manager(self.mediaDockManager)
|
2009-08-09 17:58:37 +00:00
|
|
|
# Call the hook method to pull in import menus.
|
|
|
|
log.info(u'hook menus')
|
|
|
|
self.plugin_manager.hook_import_menu(self.FileImportMenu)
|
|
|
|
# Call the hook method to pull in export menus.
|
|
|
|
self.plugin_manager.hook_export_menu(self.FileExportMenu)
|
2009-09-17 18:24:13 +00:00
|
|
|
# Call the hook method to pull in tools menus.
|
|
|
|
self.plugin_manager.hook_tools_menu(self.ToolsMenu)
|
2009-08-09 17:58:37 +00:00
|
|
|
# Call the initialise method to setup plugins.
|
|
|
|
log.info(u'initialise plugins')
|
|
|
|
self.plugin_manager.initialise_plugins()
|
|
|
|
# Once all components are initialised load the Themes
|
|
|
|
log.info(u'Load Themes')
|
|
|
|
self.ThemeManagerContents.loadThemes()
|
2009-08-29 07:17:56 +00:00
|
|
|
log.info(u'Load data from Settings')
|
|
|
|
self.settingsForm.postSetUp()
|
2009-10-11 05:47:38 +00:00
|
|
|
|
2010-04-16 22:06:28 +00:00
|
|
|
def setAutoLanguage(self, value):
|
2010-05-11 19:00:21 +00:00
|
|
|
self.LanguageGroup.setDisabled(value)
|
2010-04-19 19:12:34 +00:00
|
|
|
LanguageManager.AutoLanguage = value
|
|
|
|
LanguageManager.set_language(self.LanguageGroup.checkedAction())
|
2010-04-16 22:06:28 +00:00
|
|
|
|
2010-02-25 21:09:27 +00:00
|
|
|
def versionCheck(self, version):
|
2009-11-09 05:58:45 +00:00
|
|
|
"""
|
|
|
|
Checks the version of the Application called from openlp.pyw
|
2010-04-12 08:13:27 +00:00
|
|
|
Triggered by delay thread.
|
2009-11-09 05:58:45 +00:00
|
|
|
"""
|
2009-11-29 14:07:25 +00:00
|
|
|
app_version = self.applicationVersion[u'full']
|
2010-06-18 23:48:16 +00:00
|
|
|
version_text = unicode(translate('MainWindow', 'Version %s of OpenLP '
|
|
|
|
'is now available for download (you are currently running version '
|
|
|
|
' %s). \n\nYou can download the latest version from '
|
|
|
|
'http://openlp.org'))
|
2010-02-25 21:09:27 +00:00
|
|
|
QtGui.QMessageBox.question(self,
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'OpenLP Version Updated'),
|
2010-03-27 12:37:21 +00:00
|
|
|
version_text % (version, app_version),
|
2010-02-25 21:09:27 +00:00
|
|
|
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok),
|
|
|
|
QtGui.QMessageBox.Ok)
|
2009-10-03 18:39:44 +00:00
|
|
|
|
2009-08-09 17:58:37 +00:00
|
|
|
def show(self):
|
|
|
|
"""
|
|
|
|
Show the main form, as well as the display form
|
|
|
|
"""
|
2010-04-23 21:31:54 +00:00
|
|
|
QtGui.QWidget.show(self)
|
2010-04-02 18:12:54 +00:00
|
|
|
#screen_number = self.getMonitorNumber()
|
2010-04-17 07:53:06 +00:00
|
|
|
self.displayManager.setup()
|
2010-04-13 15:53:00 +00:00
|
|
|
if self.displayManager.mainDisplay.isVisible():
|
|
|
|
self.displayManager.mainDisplay.setFocus()
|
2009-11-04 20:06:46 +00:00
|
|
|
self.activateWindow()
|
2010-04-30 01:31:41 +00:00
|
|
|
if QtCore.QSettings().value(
|
2010-04-30 22:38:15 +00:00
|
|
|
self.generalSettingsSection + u'/auto open',
|
2010-04-28 14:17:42 +00:00
|
|
|
QtCore.QVariant(False)).toBool():
|
2009-10-18 14:53:04 +00:00
|
|
|
self.ServiceManagerContents.onLoadService(True)
|
2010-04-10 10:28:57 +00:00
|
|
|
|
2010-03-21 14:24:41 +00:00
|
|
|
def blankCheck(self):
|
2010-04-12 08:13:27 +00:00
|
|
|
"""
|
|
|
|
Check and display message if screen blank on setup.
|
|
|
|
Triggered by delay thread.
|
|
|
|
"""
|
2010-04-28 14:17:42 +00:00
|
|
|
settings = QtCore.QSettings()
|
2010-04-30 22:38:15 +00:00
|
|
|
settings.beginGroup(self.generalSettingsSection)
|
2010-06-13 19:34:25 +00:00
|
|
|
if settings.value(u'screen blank', QtCore.QVariant(False)).toBool():
|
2010-06-13 19:41:11 +00:00
|
|
|
self.LiveController.mainDisplaySetBackground()
|
2010-06-17 21:07:01 +00:00
|
|
|
if settings.value(u'blank warning',
|
|
|
|
QtCore.QVariant(False)).toBool():
|
2010-06-13 19:34:25 +00:00
|
|
|
QtGui.QMessageBox.question(self,
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'OpenLP Main Display Blanked'),
|
|
|
|
translate('MainWindow',
|
|
|
|
'The Main Display has been blanked out'))
|
2010-04-28 14:17:42 +00:00
|
|
|
settings.endGroup()
|
2009-08-09 17:58:37 +00:00
|
|
|
|
2010-02-02 20:05:21 +00:00
|
|
|
def versionThread(self):
|
2010-04-12 08:13:27 +00:00
|
|
|
"""
|
|
|
|
Start an initial setup thread to delay notifications
|
|
|
|
"""
|
2010-04-27 16:27:57 +00:00
|
|
|
vT = VersionThread(self, self.applicationVersion)
|
2010-02-02 20:05:21 +00:00
|
|
|
vT.start()
|
|
|
|
|
2010-04-29 12:35:40 +00:00
|
|
|
def onHelpWebSiteClicked(self):
|
|
|
|
"""
|
|
|
|
Load the OpenLP website
|
|
|
|
"""
|
|
|
|
import webbrowser
|
|
|
|
webbrowser.open_new(u'http://openlp.org/')
|
|
|
|
|
2009-08-09 17:58:37 +00:00
|
|
|
def onHelpAboutItemClicked(self):
|
|
|
|
"""
|
|
|
|
Show the About form
|
|
|
|
"""
|
2009-11-01 09:07:10 +00:00
|
|
|
self.aboutForm.applicationVersion = self.applicationVersion
|
2009-08-09 17:58:37 +00:00
|
|
|
self.aboutForm.exec_()
|
|
|
|
|
2009-08-13 20:02:38 +00:00
|
|
|
def onPluginItemClicked(self):
|
|
|
|
"""
|
|
|
|
Show the Plugin form
|
|
|
|
"""
|
|
|
|
self.pluginForm.load()
|
|
|
|
self.pluginForm.exec_()
|
|
|
|
|
2009-08-09 17:58:37 +00:00
|
|
|
def onOptionsSettingsItemClicked(self):
|
|
|
|
"""
|
|
|
|
Show the Settings dialog
|
|
|
|
"""
|
|
|
|
self.settingsForm.exec_()
|
2010-04-02 18:12:54 +00:00
|
|
|
|
2010-07-06 20:05:48 +00:00
|
|
|
def onModeDefaultItemClicked(self):
|
|
|
|
"""
|
|
|
|
Put OpenLP into "Default" view mode.
|
|
|
|
"""
|
|
|
|
self.MediaManagerDock.setVisible(True)
|
|
|
|
self.ServiceManagerDock.setVisible(True)
|
|
|
|
self.ThemeManagerDock.setVisible(True)
|
2010-07-06 21:23:09 +00:00
|
|
|
self.setPreviewPanelVisibility(True)
|
|
|
|
self.setLivePanelVisibility(True)
|
2010-07-06 20:05:48 +00:00
|
|
|
|
|
|
|
def onModeSetupItemClicked(self):
|
|
|
|
"""
|
|
|
|
Put OpenLP into "Setup" view mode.
|
|
|
|
"""
|
|
|
|
self.MediaManagerDock.setVisible(True)
|
|
|
|
self.ServiceManagerDock.setVisible(True)
|
|
|
|
self.ThemeManagerDock.setVisible(False)
|
2010-07-06 21:23:09 +00:00
|
|
|
self.setPreviewPanelVisibility(True)
|
|
|
|
self.setLivePanelVisibility(False)
|
2010-07-06 20:05:48 +00:00
|
|
|
|
|
|
|
def onModeLiveItemClicked(self):
|
|
|
|
"""
|
|
|
|
Put OpenLP into "Live" view mode.
|
|
|
|
"""
|
|
|
|
self.MediaManagerDock.setVisible(False)
|
|
|
|
self.ServiceManagerDock.setVisible(True)
|
|
|
|
self.ThemeManagerDock.setVisible(False)
|
2010-07-06 21:23:09 +00:00
|
|
|
self.setPreviewPanelVisibility(False)
|
|
|
|
self.setLivePanelVisibility(True)
|
2010-07-06 20:05:48 +00:00
|
|
|
|
2010-04-02 18:12:54 +00:00
|
|
|
def screenChanged(self):
|
2010-04-12 08:13:27 +00:00
|
|
|
"""
|
|
|
|
The screen has changed to so tell the displays to update_display
|
|
|
|
their locations
|
|
|
|
"""
|
2010-04-02 18:12:54 +00:00
|
|
|
self.RenderManager.update_display()
|
2010-04-17 07:53:06 +00:00
|
|
|
self.displayManager.setup()
|
2010-04-12 08:13:27 +00:00
|
|
|
self.setFocus()
|
2009-11-04 20:06:46 +00:00
|
|
|
self.activateWindow()
|
2009-08-09 17:58:37 +00:00
|
|
|
|
2009-10-16 21:29:38 +00:00
|
|
|
def closeEvent(self, event):
|
2009-08-09 17:58:37 +00:00
|
|
|
"""
|
|
|
|
Hook to close the main window and display windows on exit
|
|
|
|
"""
|
2009-11-03 15:13:52 +00:00
|
|
|
if self.serviceNotSaved:
|
2010-01-24 13:58:39 +00:00
|
|
|
ret = QtGui.QMessageBox.question(self,
|
2010-06-18 23:48:16 +00:00
|
|
|
translate('MainWindow', 'Save Changes to Service?'),
|
|
|
|
translate('MainWindow', 'Your service has changed. '
|
|
|
|
'Do you want to save those changes?'),
|
2009-09-06 15:26:02 +00:00
|
|
|
QtGui.QMessageBox.StandardButtons(
|
2009-09-10 20:18:15 +00:00
|
|
|
QtGui.QMessageBox.Cancel |
|
|
|
|
QtGui.QMessageBox.Discard |
|
2009-09-06 15:26:02 +00:00
|
|
|
QtGui.QMessageBox.Save),
|
2009-08-09 17:58:37 +00:00
|
|
|
QtGui.QMessageBox.Save)
|
|
|
|
if ret == QtGui.QMessageBox.Save:
|
|
|
|
self.ServiceManagerContents.onSaveService()
|
|
|
|
self.cleanUp()
|
|
|
|
event.accept()
|
|
|
|
elif ret == QtGui.QMessageBox.Discard:
|
|
|
|
self.cleanUp()
|
|
|
|
event.accept()
|
|
|
|
else:
|
|
|
|
event.ignore()
|
|
|
|
else:
|
|
|
|
self.cleanUp()
|
|
|
|
event.accept()
|
|
|
|
|
|
|
|
def cleanUp(self):
|
2009-09-19 23:05:30 +00:00
|
|
|
"""
|
|
|
|
Runs all the cleanup code before OpenLP shuts down
|
|
|
|
"""
|
|
|
|
# Clean temporary files used by services
|
|
|
|
self.ServiceManagerContents.cleanUp()
|
2009-08-09 17:58:37 +00:00
|
|
|
# Call the cleanup method to shutdown plugins.
|
|
|
|
log.info(u'cleanup plugins')
|
2009-08-10 20:10:20 +00:00
|
|
|
self.plugin_manager.finalise_plugins()
|
2010-04-23 18:30:53 +00:00
|
|
|
# Save settings
|
|
|
|
self.saveSettings()
|
2010-04-12 08:13:27 +00:00
|
|
|
#Close down the displays
|
2010-04-17 07:53:06 +00:00
|
|
|
self.displayManager.close()
|
2009-08-09 17:58:37 +00:00
|
|
|
|
2009-09-19 21:45:50 +00:00
|
|
|
def serviceChanged(self, reset=False, serviceName=None):
|
2009-08-09 17:58:37 +00:00
|
|
|
"""
|
2010-04-19 18:43:20 +00:00
|
|
|
Hook to change the main window title when the service changes
|
2009-09-19 21:45:50 +00:00
|
|
|
|
|
|
|
``reset``
|
|
|
|
Shows if the service has been cleared or saved
|
|
|
|
|
|
|
|
``serviceName``
|
|
|
|
The name of the service (if it has one)
|
2009-08-09 17:58:37 +00:00
|
|
|
"""
|
2009-09-19 21:45:50 +00:00
|
|
|
if not serviceName:
|
2009-08-09 17:58:37 +00:00
|
|
|
service_name = u'(unsaved service)'
|
|
|
|
else:
|
2009-09-19 21:45:50 +00:00
|
|
|
service_name = serviceName
|
2009-11-03 15:13:52 +00:00
|
|
|
if reset:
|
2009-09-19 21:45:50 +00:00
|
|
|
self.serviceNotSaved = False
|
2009-08-09 17:58:37 +00:00
|
|
|
title = u'%s - %s' % (self.mainTitle, service_name)
|
|
|
|
else:
|
2009-09-19 21:45:50 +00:00
|
|
|
self.serviceNotSaved = True
|
2009-08-09 17:58:37 +00:00
|
|
|
title = u'%s - %s*' % (self.mainTitle, service_name)
|
|
|
|
self.setWindowTitle(title)
|
|
|
|
|
2010-04-17 07:31:15 +00:00
|
|
|
def showStatusMessage(self, message):
|
|
|
|
self.StatusBar.showMessage(message)
|
|
|
|
|
2009-08-25 20:04:58 +00:00
|
|
|
def defaultThemeChanged(self, theme):
|
2009-11-12 00:49:55 +00:00
|
|
|
self.DefaultThemeLabel.setText(
|
2010-06-19 10:41:13 +00:00
|
|
|
unicode(translate('MainWindow', 'Default Theme: %s')) % theme)
|
2009-09-07 16:46:20 +00:00
|
|
|
|
2009-09-19 11:25:01 +00:00
|
|
|
def toggleMediaManager(self, visible):
|
|
|
|
if self.MediaManagerDock.isVisible() != visible:
|
|
|
|
self.MediaManagerDock.setVisible(visible)
|
2009-09-07 16:46:20 +00:00
|
|
|
|
2009-09-19 11:25:01 +00:00
|
|
|
def toggleServiceManager(self, visible):
|
|
|
|
if self.ServiceManagerDock.isVisible() != visible:
|
|
|
|
self.ServiceManagerDock.setVisible(visible)
|
2009-09-07 16:46:20 +00:00
|
|
|
|
2009-09-19 11:25:01 +00:00
|
|
|
def toggleThemeManager(self, visible):
|
|
|
|
if self.ThemeManagerDock.isVisible() != visible:
|
|
|
|
self.ThemeManagerDock.setVisible(visible)
|
2009-09-07 16:46:20 +00:00
|
|
|
|
2010-07-06 21:23:09 +00:00
|
|
|
def setPreviewPanelVisibility(self, visible):
|
2010-07-06 21:18:55 +00:00
|
|
|
"""
|
|
|
|
Sets the visibility of the preview panel including saving the setting
|
|
|
|
and updating the menu.
|
|
|
|
|
|
|
|
``visible``
|
|
|
|
A bool giving the state to set the panel to
|
|
|
|
True - Visible
|
|
|
|
False - Hidden
|
|
|
|
"""
|
2010-07-06 20:05:48 +00:00
|
|
|
self.PreviewController.Panel.setVisible(visible)
|
|
|
|
self.settingsmanager.set_preview_visibility(visible)
|
|
|
|
self.ViewPreviewPanel.setChecked(visible)
|
|
|
|
|
2010-07-06 21:23:09 +00:00
|
|
|
def setLivePanelVisibility(self, visible):
|
2010-07-06 21:18:55 +00:00
|
|
|
"""
|
|
|
|
Sets the visibility of the live panel including saving the setting and
|
|
|
|
updating the menu.
|
|
|
|
|
|
|
|
``visible``
|
|
|
|
A bool giving the state to set the panel to
|
|
|
|
True - Visible
|
|
|
|
False - Hidden
|
|
|
|
"""
|
2010-07-06 20:05:48 +00:00
|
|
|
self.LiveController.Panel.setVisible(visible)
|
|
|
|
self.settingsmanager.set_live_visibility(visible)
|
|
|
|
self.ViewLivePanel.setChecked(visible)
|
2010-04-23 18:30:53 +00:00
|
|
|
|
|
|
|
def loadSettings(self):
|
2010-07-09 21:32:32 +00:00
|
|
|
"""
|
|
|
|
Load the main window settings.
|
|
|
|
"""
|
2010-04-23 18:30:53 +00:00
|
|
|
log.debug(u'Loading QSettings')
|
|
|
|
settings = QtCore.QSettings()
|
2010-04-30 22:38:15 +00:00
|
|
|
settings.beginGroup(self.generalSettingsSection)
|
2010-04-30 01:31:41 +00:00
|
|
|
self.recentFiles = settings.value(u'recent files').toStringList()
|
|
|
|
settings.endGroup()
|
2010-04-30 22:38:15 +00:00
|
|
|
settings.beginGroup(self.uiSettingsSection)
|
2010-04-28 14:17:42 +00:00
|
|
|
self.move(settings.value(u'main window position',
|
2010-04-23 21:31:54 +00:00
|
|
|
QtCore.QVariant(QtCore.QPoint(0, 0))).toPoint())
|
2010-04-28 14:17:42 +00:00
|
|
|
self.restoreGeometry(
|
|
|
|
settings.value(u'main window geometry').toByteArray())
|
|
|
|
self.restoreState(settings.value(u'main window state').toByteArray())
|
|
|
|
settings.endGroup()
|
2010-04-23 18:30:53 +00:00
|
|
|
|
|
|
|
def saveSettings(self):
|
2010-07-09 21:32:32 +00:00
|
|
|
"""
|
|
|
|
Save the main window settings.
|
|
|
|
"""
|
2010-04-23 18:30:53 +00:00
|
|
|
log.debug(u'Saving QSettings')
|
|
|
|
settings = QtCore.QSettings()
|
2010-04-30 22:38:15 +00:00
|
|
|
settings.beginGroup(self.generalSettingsSection)
|
2010-04-23 18:30:53 +00:00
|
|
|
recentFiles = QtCore.QVariant(self.recentFiles) \
|
|
|
|
if self.recentFiles else QtCore.QVariant()
|
2010-04-30 01:31:41 +00:00
|
|
|
settings.setValue(u'recent files', recentFiles)
|
|
|
|
settings.endGroup()
|
2010-04-30 22:38:15 +00:00
|
|
|
settings.beginGroup(self.uiSettingsSection)
|
2010-04-28 14:17:42 +00:00
|
|
|
settings.setValue(u'main window position',
|
2010-04-26 16:41:31 +00:00
|
|
|
QtCore.QVariant(self.pos()))
|
2010-04-28 14:17:42 +00:00
|
|
|
settings.setValue(u'main window state',
|
2010-04-26 16:41:31 +00:00
|
|
|
QtCore.QVariant(self.saveState()))
|
2010-04-28 14:17:42 +00:00
|
|
|
settings.setValue(u'main window geometry',
|
2010-04-26 16:41:31 +00:00
|
|
|
QtCore.QVariant(self.saveGeometry()))
|
2010-04-28 14:17:42 +00:00
|
|
|
settings.endGroup()
|
2010-04-23 18:30:53 +00:00
|
|
|
|
|
|
|
def updateFileMenu(self):
|
2010-07-09 21:32:32 +00:00
|
|
|
"""
|
|
|
|
Updates the file menu with the latest list of service files accessed.
|
|
|
|
"""
|
|
|
|
recentFileCount = QtCore.QSettings().value(
|
|
|
|
u'advanced/recent file count', QtCore.QVariant(4)).toInt()[0]
|
2010-04-23 18:30:53 +00:00
|
|
|
self.FileMenu.clear()
|
|
|
|
add_actions(self.FileMenu, self.FileMenuActions[:-1])
|
2010-07-09 21:32:32 +00:00
|
|
|
existingRecentFiles = [file for file in self.recentFiles
|
|
|
|
if QtCore.QFile.exists(file)]
|
|
|
|
recentFilesToDisplay = existingRecentFiles[0:recentFileCount]
|
|
|
|
if recentFilesToDisplay:
|
2010-04-23 18:30:53 +00:00
|
|
|
self.FileMenu.addSeparator()
|
2010-07-09 21:32:32 +00:00
|
|
|
for fileId, filename in enumerate(recentFilesToDisplay):
|
2010-04-23 18:30:53 +00:00
|
|
|
action = QtGui.QAction(u'&%d %s' % (fileId +1,
|
|
|
|
QtCore.QFileInfo(filename).fileName()), self)
|
|
|
|
action.setData(QtCore.QVariant(filename))
|
|
|
|
self.connect(action, QtCore.SIGNAL(u'triggered()'),
|
|
|
|
self.ServiceManagerContents.loadService)
|
|
|
|
self.FileMenu.addAction(action)
|
|
|
|
self.FileMenu.addSeparator()
|
|
|
|
self.FileMenu.addAction(self.FileMenuActions[-1])
|
|
|
|
|
|
|
|
def addRecentFile(self, filename):
|
2010-07-09 21:32:32 +00:00
|
|
|
"""
|
|
|
|
Adds a service to the list of recently used files.
|
|
|
|
|
|
|
|
``filename``
|
|
|
|
The service filename to add
|
|
|
|
"""
|
|
|
|
# The maxRecentFiles value does not have an interface and so never gets
|
|
|
|
# actually stored in the settings therefore the default value of 20
|
|
|
|
# will always be used.
|
|
|
|
maxRecentFiles = QtCore.QSettings().value(u'advanced/max recent files',
|
|
|
|
QtCore.QVariant(20)).toInt()[0]
|
2010-06-30 11:59:09 +00:00
|
|
|
if filename:
|
|
|
|
position = self.recentFiles.indexOf(filename)
|
|
|
|
if position != -1:
|
|
|
|
self.recentFiles.removeAt(position)
|
2010-05-28 00:18:26 +00:00
|
|
|
self.recentFiles.insert(0, QtCore.QString(filename))
|
2010-07-10 10:44:23 +00:00
|
|
|
while self.recentFiles.count() > maxRecentFiles:
|
2010-07-10 01:01:14 +00:00
|
|
|
# Don't care what API says takeLast works, removeLast doesn't!
|
|
|
|
self.recentFiles.takeLast()
|