diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index 80d677386..0224c9e15 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -52,6 +52,7 @@ from advancedtab import AdvancedTab from aboutform import AboutForm from pluginform import PluginForm from settingsform import SettingsForm +from shortcutlistform import ShortcutListForm from mediadockmanager import MediaDockManager from servicemanager import ServiceManager from thememanager import ThemeManager diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 81487e4f8..70618a3ce 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -29,7 +29,8 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.ui import AboutForm, SettingsForm, ServiceManager, \ - ThemeManager, SlideController, PluginForm, MediaDockManager + ThemeManager, SlideController, PluginForm, MediaDockManager, \ + ShortcutListForm from openlp.core.lib import RenderManager, build_icon, OpenLPDockWidget, \ SettingsManager, PluginManager, Receiver, translate from openlp.core.utils import AppLocation, add_actions, LanguageManager @@ -98,6 +99,12 @@ class Ui_MainWindow(object): self.screens) self.LiveController = SlideController(self, self.settingsmanager, self.screens, True) + previewVisible = QtCore.QSettings().value( + u'user interface/preview panel', QtCore.QVariant(True)).toBool() + self.PreviewController.Panel.setVisible(previewVisible) + liveVisible = QtCore.QSettings().value(u'user interface/live panel', + QtCore.QVariant(True)).toBool() + self.LiveController.Panel.setVisible(liveVisible) # Create menu self.MenuBar = QtGui.QMenuBar(MainWindow) self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27)) @@ -196,10 +203,6 @@ class Ui_MainWindow(object): self.ExportThemeItem.setObjectName(u'ExportThemeItem') self.ExportLanguageItem = QtGui.QAction(MainWindow) self.ExportLanguageItem.setObjectName(u'ExportLanguageItem') - self.SettingsConfigureItem = QtGui.QAction(MainWindow) - self.SettingsConfigureItem.setIcon( - build_icon(u':/system/system_settings.png')) - self.SettingsConfigureItem.setObjectName(u'SettingsConfigureItem') self.ViewMediaManagerItem = QtGui.QAction(MainWindow) self.ViewMediaManagerItem.setCheckable(True) self.ViewMediaManagerItem.setChecked(self.MediaManagerDock.isVisible()) @@ -219,24 +222,35 @@ class Ui_MainWindow(object): self.ViewServiceManagerItem.setIcon( build_icon(u':/system/system_servicemanager.png')) self.ViewServiceManagerItem.setObjectName(u'ViewServiceManagerItem') + self.ViewPreviewPanel = QtGui.QAction(MainWindow) + self.ViewPreviewPanel.setCheckable(True) + self.ViewPreviewPanel.setChecked(previewVisible) + self.ViewPreviewPanel.setObjectName(u'ViewPreviewPanel') + self.ViewLivePanel = QtGui.QAction(MainWindow) + self.ViewLivePanel.setCheckable(True) + self.ViewLivePanel.setChecked(liveVisible) + self.ViewLivePanel.setObjectName(u'ViewLivePanel') + 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') + self.ModeLiveItem = QtGui.QAction(MainWindow) + self.ModeLiveItem.setCheckable(True) + self.ModeLiveItem.setObjectName(u'ModeLiveItem') + self.ModeGroup = QtGui.QActionGroup(MainWindow) + self.ModeGroup.addAction(self.ModeDefaultItem) + self.ModeGroup.addAction(self.ModeSetupItem) + self.ModeGroup.addAction(self.ModeLiveItem) + self.ModeDefaultItem.setChecked(True) + self.ToolsAddToolItem = QtGui.QAction(MainWindow) + self.ToolsAddToolItem.setIcon(build_icon(u':/tools/tools_add.png')) + self.ToolsAddToolItem.setObjectName(u'ToolsAddToolItem') self.SettingsPluginListItem = QtGui.QAction(MainWindow) self.SettingsPluginListItem.setIcon( build_icon(u':/system/settings_plugin_list.png')) self.SettingsPluginListItem.setObjectName(u'SettingsPluginListItem') - self.HelpDocumentationItem = QtGui.QAction(MainWindow) - self.HelpDocumentationItem.setIcon( - build_icon(u':/system/system_help_contents.png')) - self.HelpDocumentationItem.setObjectName(u'HelpDocumentationItem') - self.HelpDocumentationItem.setEnabled(False) - self.HelpAboutItem = QtGui.QAction(MainWindow) - self.HelpAboutItem.setIcon( - build_icon(u':/system/system_about.png')) - self.HelpAboutItem.setObjectName(u'HelpAboutItem') - self.HelpOnlineHelpItem = QtGui.QAction(MainWindow) - self.HelpOnlineHelpItem.setObjectName(u'HelpOnlineHelpItem') - self.HelpOnlineHelpItem.setEnabled(False) - self.HelpWebSiteItem = QtGui.QAction(MainWindow) - self.HelpWebSiteItem.setObjectName(u'HelpWebSiteItem') #i18n Language Items self.AutoLanguageItem = QtGui.QAction(MainWindow) self.AutoLanguageItem.setObjectName(u'AutoLanguageItem') @@ -253,37 +267,28 @@ class Ui_MainWindow(object): languageItem.setChecked(True) add_actions(self.LanguageGroup, [languageItem]) self.LanguageGroup.setDisabled(LanguageManager.auto_language) - self.ToolsAddToolItem = QtGui.QAction(MainWindow) - self.ToolsAddToolItem.setIcon(build_icon(u':/tools/tools_add.png')) - self.ToolsAddToolItem.setObjectName(u'ToolsAddToolItem') - self.ViewPreviewPanel = QtGui.QAction(MainWindow) - self.ViewPreviewPanel.setCheckable(True) - previewVisible = QtCore.QSettings().value( - u'user interface/preview panel', QtCore.QVariant(True)).toBool() - self.ViewPreviewPanel.setChecked(previewVisible) - self.ViewPreviewPanel.setObjectName(u'ViewPreviewPanel') - self.PreviewController.Panel.setVisible(previewVisible) - self.ViewLivePanel = QtGui.QAction(MainWindow) - self.ViewLivePanel.setCheckable(True) - liveVisible = QtCore.QSettings().value(u'user interface/live panel', - QtCore.QVariant(True)).toBool() - self.ViewLivePanel.setChecked(liveVisible) - self.ViewLivePanel.setObjectName(u'ViewLivePanel') - self.LiveController.Panel.setVisible(liveVisible) - 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') - self.ModeLiveItem = QtGui.QAction(MainWindow) - self.ModeLiveItem.setCheckable(True) - self.ModeLiveItem.setObjectName(u'ModeLiveItem') - self.ModeGroup = QtGui.QActionGroup(MainWindow) - self.ModeGroup.addAction(self.ModeDefaultItem) - self.ModeGroup.addAction(self.ModeSetupItem) - self.ModeGroup.addAction(self.ModeLiveItem) - self.ModeDefaultItem.setChecked(True) + self.SettingsShortcutsItem = QtGui.QAction(MainWindow) + self.SettingsShortcutsItem.setIcon( + build_icon(u':/system/system_configure_shortcuts.png')) + self.SettingsShortcutsItem.setObjectName(u'SettingsShortcutsItem') + self.SettingsConfigureItem = QtGui.QAction(MainWindow) + self.SettingsConfigureItem.setIcon( + build_icon(u':/system/system_settings.png')) + self.SettingsConfigureItem.setObjectName(u'SettingsConfigureItem') + self.HelpDocumentationItem = QtGui.QAction(MainWindow) + self.HelpDocumentationItem.setIcon( + build_icon(u':/system/system_help_contents.png')) + self.HelpDocumentationItem.setObjectName(u'HelpDocumentationItem') + self.HelpDocumentationItem.setEnabled(False) + self.HelpAboutItem = QtGui.QAction(MainWindow) + self.HelpAboutItem.setIcon( + build_icon(u':/system/system_about.png')) + self.HelpAboutItem.setObjectName(u'HelpAboutItem') + self.HelpOnlineHelpItem = QtGui.QAction(MainWindow) + self.HelpOnlineHelpItem.setObjectName(u'HelpOnlineHelpItem') + self.HelpOnlineHelpItem.setEnabled(False) + self.HelpWebSiteItem = QtGui.QAction(MainWindow) + self.HelpWebSiteItem.setObjectName(u'HelpWebSiteItem') add_actions(self.FileImportMenu, (self.ImportThemeItem, self.ImportLanguageItem)) add_actions(self.FileExportMenu, @@ -303,7 +308,7 @@ class Ui_MainWindow(object): add_actions(self.SettingsLanguageMenu, self.LanguageGroup.actions()) add_actions(self.SettingsMenu, (self.SettingsPluginListItem, self.SettingsLanguageMenu.menuAction(), None, - self.SettingsConfigureItem)) + self.SettingsShortcutsItem, self.SettingsConfigureItem)) add_actions(self.ToolsMenu, (self.ToolsAddToolItem, None)) add_actions(self.HelpMenu, @@ -394,6 +399,8 @@ class Ui_MainWindow(object): translate('OpenLP.MainWindow', '&Theme')) self.ExportLanguageItem.setText( translate('OpenLP.MainWindow', '&Language')) + self.SettingsShortcutsItem.setText( + translate('OpenLP.MainWindow', 'Configure &Shortcuts...')) self.SettingsConfigureItem.setText( translate('OpenLP.MainWindow', '&Configure OpenLP...')) self.ViewMediaManagerItem.setText( @@ -506,6 +513,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.settingsmanager = SettingsManager(screens) self.aboutForm = AboutForm(self, applicationVersion) self.settingsForm = SettingsForm(self.screens, self, self) + self.shortcutForm = ShortcutListForm(self) self.recentFiles = QtCore.QStringList() # Set up the path with plugins pluginpath = AppLocation.get_directory(AppLocation.PluginsDir) @@ -551,7 +559,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtCore.QObject.connect(self.SettingsPluginListItem, QtCore.SIGNAL(u'triggered()'), self.onPluginItemClicked) QtCore.QObject.connect(self.SettingsConfigureItem, - QtCore.SIGNAL(u'triggered()'), self.onOptionsSettingsItemClicked) + QtCore.SIGNAL(u'triggered()'), self.onSettingsConfigureItemClicked) + QtCore.QObject.connect(self.SettingsShortcutsItem, + QtCore.SIGNAL(u'triggered()'), self.onSettingsShortcutsItemClicked) QtCore.QObject.connect(self.FileNewItem, QtCore.SIGNAL(u'triggered()'), self.ServiceManagerContents.onNewService) QtCore.QObject.connect(self.FileOpenItem, @@ -712,12 +722,18 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.pluginForm.load() self.pluginForm.exec_() - def onOptionsSettingsItemClicked(self): + def onSettingsConfigureItemClicked(self): """ Show the Settings dialog """ self.settingsForm.exec_() + def onSettingsShortcutsItemClicked(self): + """ + Show the shortcuts dialog + """ + self.shortcutForm.exec_() + def onModeDefaultItemClicked(self): """ Put OpenLP into "Default" view mode. diff --git a/openlp/core/ui/shortcutlistdialog.py b/openlp/core/ui/shortcutlistdialog.py new file mode 100644 index 000000000..972d0cf9c --- /dev/null +++ b/openlp/core/ui/shortcutlistdialog.py @@ -0,0 +1,116 @@ +# -*- 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, Meinert Jordan, Andreas Preikschat, Christian # +# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # +# Carsten Tinggaard, Frode Woldsund # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +from PyQt4 import QtCore, QtGui + +from openlp.core.lib import translate, build_icon + +class Ui_ShortcutListDialog(object): + def setupUi(self, shortcutListDialog): + shortcutListDialog.setObjectName(u'shortcutListDialog') + shortcutListDialog.resize(500, 438) + self.shortcutListLayout = QtGui.QVBoxLayout(shortcutListDialog) + self.shortcutListLayout.setSpacing(8) + self.shortcutListLayout.setMargin(8) + self.shortcutListLayout.setObjectName(u'shortcutListLayout') + self.shortcutListTableWidget = QtGui.QTableWidget(shortcutListDialog) + self.shortcutListTableWidget.setAlternatingRowColors(True) + self.shortcutListTableWidget.setObjectName(u'shortcutListTableWidget') + self.shortcutListTableWidget.setColumnCount(2) + self.shortcutListTableWidget.setRowCount(0) + self.shortcutListTableWidget.setHorizontalHeaderItem(0, + QtGui.QTableWidgetItem()) + self.shortcutListTableWidget.setHorizontalHeaderItem(1, + QtGui.QTableWidgetItem()) + self.shortcutListTableWidget.verticalHeader().setVisible(False) + self.shortcutListLayout.addWidget(self.shortcutListTableWidget) + self.shortcutLayout = QtGui.QVBoxLayout() + self.shortcutLayout.setSpacing(8) + self.shortcutLayout.setContentsMargins(0, -1, -1, -1) + self.shortcutLayout.setObjectName(u'shortcutLayout') + self.defaultRadioButton = QtGui.QRadioButton(shortcutListDialog) + self.defaultRadioButton.setChecked(True) + self.defaultRadioButton.setObjectName(u'defaultRadioButton') + self.shortcutLayout.addWidget(self.defaultRadioButton) + self.customShortcutLayout = QtGui.QHBoxLayout() + self.customShortcutLayout.setSpacing(8) + self.customShortcutLayout.setObjectName(u'customShortcutLayout') + self.customRadioButton = QtGui.QRadioButton(shortcutListDialog) + self.customRadioButton.setObjectName(u'customRadioButton') + self.customShortcutLayout.addWidget(self.customRadioButton) + self.shortcutPushButton = QtGui.QPushButton(shortcutListDialog) + self.shortcutPushButton.setMinimumSize(QtCore.QSize(84, 0)) + self.shortcutPushButton.setIcon( + build_icon(u':/system/system_settings.png')) + self.shortcutPushButton.setCheckable(True) + self.shortcutPushButton.setChecked(False) + self.shortcutPushButton.setObjectName(u'shortcutPushButton') + self.customShortcutLayout.addWidget(self.shortcutPushButton) + self.clearShortcutToolButton = QtGui.QToolButton(shortcutListDialog) + self.clearShortcutToolButton.setMinimumSize(QtCore.QSize(0, 16)) + self.clearShortcutToolButton.setText(u'') + self.clearShortcutToolButton.setIcon( + build_icon(u':/system/clear_shortcut.png')) + self.clearShortcutToolButton.setObjectName(u'clearShortcutToolButton') + self.customShortcutLayout.addWidget(self.clearShortcutToolButton) + self.customShortcutSpacer = QtGui.QSpacerItem(40, 20, + QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.customShortcutLayout.addItem(self.customShortcutSpacer) + self.shortcutLayout.addLayout(self.customShortcutLayout) + self.shortcutListLayout.addLayout(self.shortcutLayout) + self.shortcutListButtonBox = QtGui.QDialogButtonBox(shortcutListDialog) + self.shortcutListButtonBox.setOrientation(QtCore.Qt.Horizontal) + self.shortcutListButtonBox.setStandardButtons( + QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Ok | + QtGui.QDialogButtonBox.Reset) + self.shortcutListButtonBox.setObjectName(u'shortcutListButtonBox') + self.shortcutListLayout.addWidget(self.shortcutListButtonBox) + + self.retranslateUi(shortcutListDialog) + QtCore.QObject.connect( + self.shortcutListButtonBox, + QtCore.SIGNAL(u'accepted()'), + shortcutListDialog.accept + ) + QtCore.QObject.connect( + self.shortcutListButtonBox, + QtCore.SIGNAL(u'rejected()'), + shortcutListDialog.reject + ) + QtCore.QMetaObject.connectSlotsByName(shortcutListDialog) + + def retranslateUi(self, shortcutListDialog): + shortcutListDialog.setWindowTitle( + translate('OpenLP.ShortcutListDialog', 'Customize Shortcuts')) + self.shortcutListTableWidget.horizontalHeaderItem(0).setText( + translate(u'OpenLP.ShortcutListDialog', 'Action')) + self.shortcutListTableWidget.horizontalHeaderItem(1).setText( + translate(u'OpenLP.ShortcutListDialog', 'Shortcut')) + self.defaultRadioButton.setText( + translate('OpenLP.ShortcutListDialog', 'Default: %s')) + self.customRadioButton.setText( + translate('OpenLP.ShortcutListDialog', 'Custom:')) + self.shortcutPushButton.setText('') diff --git a/openlp/core/ui/shortcutlistform.py b/openlp/core/ui/shortcutlistform.py new file mode 100644 index 000000000..b3a98a380 --- /dev/null +++ b/openlp/core/ui/shortcutlistform.py @@ -0,0 +1,43 @@ +# -*- 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, Meinert Jordan, Andreas Preikschat, Christian # +# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # +# Carsten Tinggaard, Frode Woldsund # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +from PyQt4 import QtCore, QtGui + +from shortcutlistdialog import Ui_ShortcutListDialog + +class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog): + """ + The shortcut list dialog + """ + + def __init__(self, parent): + """ + Do some initialisation stuff + """ + QtGui.QDialog.__init__(self, parent) + self.setupUi(self) + #QtCore.QObject.connect(self.contributeButton, + # QtCore.SIGNAL(u'clicked()'), self.onContributeButtonClicked) diff --git a/resources/forms/shortcutlistdialog.ui b/resources/forms/shortcutlistdialog.ui new file mode 100644 index 000000000..519925560 --- /dev/null +++ b/resources/forms/shortcutlistdialog.ui @@ -0,0 +1,179 @@ + + + ShortcutListDialog + + + + 0 + 0 + 500 + 438 + + + + Dialog + + + + 8 + + + 8 + + + + + true + + + false + + + + Action + + + + + Shortcut + + + + + + + + 8 + + + 0 + + + + + Default: None + + + true + + + + + + + 8 + + + + + Custom: + + + + + + + + 84 + 0 + + + + None + + + + :/system/system_settings.png:/system/system_settings.png + + + true + + + false + + + + + + + + 0 + 16 + + + + + + + + :/system/clear_shortcut.png:/system/clear_shortcut.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset + + + + + + + + + + + shortcutListButtonBox + accepted() + ShortcutListDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + shortcutListButtonBox + rejected() + ShortcutListDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/resources/images/clear_shortcut.png b/resources/images/clear_shortcut.png new file mode 100644 index 000000000..6c4b83b7a Binary files /dev/null and b/resources/images/clear_shortcut.png differ diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index 78d74cf7e..7e8645441 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -92,6 +92,7 @@ system_close.png + clear_shortcut.png system_about.png system_help_contents.png system_mediamanager.png @@ -101,6 +102,7 @@ system_exit.png settings_plugin_list.png system_settings.png + system_configure_shortcuts.png media_time.png diff --git a/resources/images/system_configure_shortcuts.png b/resources/images/system_configure_shortcuts.png new file mode 100644 index 000000000..6d9ef70af Binary files /dev/null and b/resources/images/system_configure_shortcuts.png differ