Head 1107
@ -51,6 +51,7 @@ from advancedtab import AdvancedTab
|
|||||||
from aboutform import AboutForm
|
from aboutform import AboutForm
|
||||||
from pluginform import PluginForm
|
from pluginform import PluginForm
|
||||||
from settingsform import SettingsForm
|
from settingsform import SettingsForm
|
||||||
|
from shortcutlistform import ShortcutListForm
|
||||||
from mediadockmanager import MediaDockManager
|
from mediadockmanager import MediaDockManager
|
||||||
from servicemanager import ServiceManager
|
from servicemanager import ServiceManager
|
||||||
from thememanager import ThemeManager
|
from thememanager import ThemeManager
|
||||||
|
@ -29,10 +29,12 @@ import logging
|
|||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.ui import AboutForm, SettingsForm, ServiceManager, \
|
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, \
|
from openlp.core.lib import RenderManager, build_icon, OpenLPDockWidget, \
|
||||||
SettingsManager, PluginManager, Receiver, translate
|
SettingsManager, PluginManager, Receiver, translate
|
||||||
from openlp.core.utils import AppLocation, add_actions, LanguageManager
|
from openlp.core.utils import AppLocation, add_actions, LanguageManager, \
|
||||||
|
ActionList
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -73,6 +75,7 @@ class Ui_MainWindow(object):
|
|||||||
MainWindow.setSizePolicy(sizePolicy)
|
MainWindow.setSizePolicy(sizePolicy)
|
||||||
MainIcon = build_icon(u':/icon/openlp-logo-16x16.png')
|
MainIcon = build_icon(u':/icon/openlp-logo-16x16.png')
|
||||||
MainWindow.setWindowIcon(MainIcon)
|
MainWindow.setWindowIcon(MainIcon)
|
||||||
|
self.setDockNestingEnabled(True)
|
||||||
# Set up the main container, which contains all the other form widgets
|
# Set up the main container, which contains all the other form widgets
|
||||||
self.MainContent = QtGui.QWidget(MainWindow)
|
self.MainContent = QtGui.QWidget(MainWindow)
|
||||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
|
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
|
||||||
@ -98,6 +101,12 @@ class Ui_MainWindow(object):
|
|||||||
self.screens)
|
self.screens)
|
||||||
self.LiveController = SlideController(self, self.settingsmanager,
|
self.LiveController = SlideController(self, self.settingsmanager,
|
||||||
self.screens, True)
|
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
|
# Create menu
|
||||||
self.MenuBar = QtGui.QMenuBar(MainWindow)
|
self.MenuBar = QtGui.QMenuBar(MainWindow)
|
||||||
self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27))
|
self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27))
|
||||||
@ -177,29 +186,34 @@ class Ui_MainWindow(object):
|
|||||||
self.FileNewItem = QtGui.QAction(MainWindow)
|
self.FileNewItem = QtGui.QAction(MainWindow)
|
||||||
self.FileNewItem.setIcon(build_icon(u':/general/general_new.png'))
|
self.FileNewItem.setIcon(build_icon(u':/general/general_new.png'))
|
||||||
self.FileNewItem.setObjectName(u'FileNewItem')
|
self.FileNewItem.setObjectName(u'FileNewItem')
|
||||||
|
MainWindow.actionList.add_action(self.FileNewItem, u'File')
|
||||||
self.FileOpenItem = QtGui.QAction(MainWindow)
|
self.FileOpenItem = QtGui.QAction(MainWindow)
|
||||||
self.FileOpenItem.setIcon(build_icon(u':/general/general_open.png'))
|
self.FileOpenItem.setIcon(build_icon(u':/general/general_open.png'))
|
||||||
self.FileOpenItem.setObjectName(u'FileOpenItem')
|
self.FileOpenItem.setObjectName(u'FileOpenItem')
|
||||||
|
MainWindow.actionList.add_action(self.FileOpenItem, u'File')
|
||||||
self.FileSaveItem = QtGui.QAction(MainWindow)
|
self.FileSaveItem = QtGui.QAction(MainWindow)
|
||||||
self.FileSaveItem.setIcon(build_icon(u':/general/general_save.png'))
|
self.FileSaveItem.setIcon(build_icon(u':/general/general_save.png'))
|
||||||
self.FileSaveItem.setObjectName(u'FileSaveItem')
|
self.FileSaveItem.setObjectName(u'FileSaveItem')
|
||||||
|
MainWindow.actionList.add_action(self.FileSaveItem, u'File')
|
||||||
self.FileSaveAsItem = QtGui.QAction(MainWindow)
|
self.FileSaveAsItem = QtGui.QAction(MainWindow)
|
||||||
self.FileSaveAsItem.setObjectName(u'FileSaveAsItem')
|
self.FileSaveAsItem.setObjectName(u'FileSaveAsItem')
|
||||||
|
MainWindow.actionList.add_action(self.FileSaveAsItem, u'File')
|
||||||
self.FileExitItem = QtGui.QAction(MainWindow)
|
self.FileExitItem = QtGui.QAction(MainWindow)
|
||||||
self.FileExitItem.setIcon(build_icon(u':/system/system_exit.png'))
|
self.FileExitItem.setIcon(build_icon(u':/system/system_exit.png'))
|
||||||
self.FileExitItem.setObjectName(u'FileExitItem')
|
self.FileExitItem.setObjectName(u'FileExitItem')
|
||||||
|
MainWindow.actionList.add_action(self.FileExitItem, u'File')
|
||||||
self.ImportThemeItem = QtGui.QAction(MainWindow)
|
self.ImportThemeItem = QtGui.QAction(MainWindow)
|
||||||
self.ImportThemeItem.setObjectName(u'ImportThemeItem')
|
self.ImportThemeItem.setObjectName(u'ImportThemeItem')
|
||||||
|
MainWindow.actionList.add_action(self.ImportThemeItem, u'Import')
|
||||||
self.ImportLanguageItem = QtGui.QAction(MainWindow)
|
self.ImportLanguageItem = QtGui.QAction(MainWindow)
|
||||||
self.ImportLanguageItem.setObjectName(u'ImportLanguageItem')
|
self.ImportLanguageItem.setObjectName(u'ImportLanguageItem')
|
||||||
|
MainWindow.actionList.add_action(self.ImportLanguageItem, u'Import')
|
||||||
self.ExportThemeItem = QtGui.QAction(MainWindow)
|
self.ExportThemeItem = QtGui.QAction(MainWindow)
|
||||||
self.ExportThemeItem.setObjectName(u'ExportThemeItem')
|
self.ExportThemeItem.setObjectName(u'ExportThemeItem')
|
||||||
|
MainWindow.actionList.add_action(self.ExportThemeItem, u'Export')
|
||||||
self.ExportLanguageItem = QtGui.QAction(MainWindow)
|
self.ExportLanguageItem = QtGui.QAction(MainWindow)
|
||||||
self.ExportLanguageItem.setObjectName(u'ExportLanguageItem')
|
self.ExportLanguageItem.setObjectName(u'ExportLanguageItem')
|
||||||
self.SettingsConfigureItem = QtGui.QAction(MainWindow)
|
MainWindow.actionList.add_action(self.ExportLanguageItem, u'Export')
|
||||||
self.SettingsConfigureItem.setIcon(
|
|
||||||
build_icon(u':/system/system_settings.png'))
|
|
||||||
self.SettingsConfigureItem.setObjectName(u'SettingsConfigureItem')
|
|
||||||
self.ViewMediaManagerItem = QtGui.QAction(MainWindow)
|
self.ViewMediaManagerItem = QtGui.QAction(MainWindow)
|
||||||
self.ViewMediaManagerItem.setCheckable(True)
|
self.ViewMediaManagerItem.setCheckable(True)
|
||||||
self.ViewMediaManagerItem.setChecked(self.MediaManagerDock.isVisible())
|
self.ViewMediaManagerItem.setChecked(self.MediaManagerDock.isVisible())
|
||||||
@ -212,6 +226,7 @@ class Ui_MainWindow(object):
|
|||||||
self.ViewThemeManagerItem.setIcon(
|
self.ViewThemeManagerItem.setIcon(
|
||||||
build_icon(u':/system/system_thememanager.png'))
|
build_icon(u':/system/system_thememanager.png'))
|
||||||
self.ViewThemeManagerItem.setObjectName(u'ViewThemeManagerItem')
|
self.ViewThemeManagerItem.setObjectName(u'ViewThemeManagerItem')
|
||||||
|
MainWindow.actionList.add_action(self.ViewMediaManagerItem, u'View')
|
||||||
self.ViewServiceManagerItem = QtGui.QAction(MainWindow)
|
self.ViewServiceManagerItem = QtGui.QAction(MainWindow)
|
||||||
self.ViewServiceManagerItem.setCheckable(True)
|
self.ViewServiceManagerItem.setCheckable(True)
|
||||||
self.ViewServiceManagerItem.setChecked(
|
self.ViewServiceManagerItem.setChecked(
|
||||||
@ -219,28 +234,48 @@ class Ui_MainWindow(object):
|
|||||||
self.ViewServiceManagerItem.setIcon(
|
self.ViewServiceManagerItem.setIcon(
|
||||||
build_icon(u':/system/system_servicemanager.png'))
|
build_icon(u':/system/system_servicemanager.png'))
|
||||||
self.ViewServiceManagerItem.setObjectName(u'ViewServiceManagerItem')
|
self.ViewServiceManagerItem.setObjectName(u'ViewServiceManagerItem')
|
||||||
|
MainWindow.actionList.add_action(self.ViewServiceManagerItem, u'View')
|
||||||
|
self.ViewPreviewPanel = QtGui.QAction(MainWindow)
|
||||||
|
self.ViewPreviewPanel.setCheckable(True)
|
||||||
|
self.ViewPreviewPanel.setChecked(previewVisible)
|
||||||
|
self.ViewPreviewPanel.setObjectName(u'ViewPreviewPanel')
|
||||||
|
MainWindow.actionList.add_action(self.ViewPreviewPanel, u'View')
|
||||||
|
self.ViewLivePanel = QtGui.QAction(MainWindow)
|
||||||
|
self.ViewLivePanel.setCheckable(True)
|
||||||
|
self.ViewLivePanel.setChecked(liveVisible)
|
||||||
|
self.ViewLivePanel.setObjectName(u'ViewLivePanel')
|
||||||
|
MainWindow.actionList.add_action(self.ViewLivePanel, u'View')
|
||||||
|
self.ModeDefaultItem = QtGui.QAction(MainWindow)
|
||||||
|
self.ModeDefaultItem.setCheckable(True)
|
||||||
|
self.ModeDefaultItem.setObjectName(u'ModeDefaultItem')
|
||||||
|
MainWindow.actionList.add_action(self.ModeDefaultItem, u'View Mode')
|
||||||
|
self.ModeSetupItem = QtGui.QAction(MainWindow)
|
||||||
|
self.ModeSetupItem.setCheckable(True)
|
||||||
|
self.ModeSetupItem.setObjectName(u'ModeLiveItem')
|
||||||
|
MainWindow.actionList.add_action(self.ModeSetupItem, u'View Mode')
|
||||||
|
self.ModeLiveItem = QtGui.QAction(MainWindow)
|
||||||
|
self.ModeLiveItem.setCheckable(True)
|
||||||
|
self.ModeLiveItem.setObjectName(u'ModeLiveItem')
|
||||||
|
MainWindow.actionList.add_action(self.ModeLiveItem, u'View Mode')
|
||||||
|
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')
|
||||||
|
MainWindow.actionList.add_action(self.ToolsAddToolItem, u'Tools')
|
||||||
self.SettingsPluginListItem = QtGui.QAction(MainWindow)
|
self.SettingsPluginListItem = QtGui.QAction(MainWindow)
|
||||||
self.SettingsPluginListItem.setIcon(
|
self.SettingsPluginListItem.setIcon(
|
||||||
build_icon(u':/system/settings_plugin_list.png'))
|
build_icon(u':/system/settings_plugin_list.png'))
|
||||||
self.SettingsPluginListItem.setObjectName(u'SettingsPluginListItem')
|
self.SettingsPluginListItem.setObjectName(u'SettingsPluginListItem')
|
||||||
self.HelpDocumentationItem = QtGui.QAction(MainWindow)
|
MainWindow.actionList.add_action(self.SettingsPluginListItem, u'Settings')
|
||||||
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
|
#i18n Language Items
|
||||||
self.AutoLanguageItem = QtGui.QAction(MainWindow)
|
self.AutoLanguageItem = QtGui.QAction(MainWindow)
|
||||||
self.AutoLanguageItem.setObjectName(u'AutoLanguageItem')
|
self.AutoLanguageItem.setObjectName(u'AutoLanguageItem')
|
||||||
self.AutoLanguageItem.setCheckable(True)
|
self.AutoLanguageItem.setCheckable(True)
|
||||||
|
MainWindow.actionList.add_action(self.AutoLanguageItem, u'Settings')
|
||||||
self.LanguageGroup = QtGui.QActionGroup(MainWindow)
|
self.LanguageGroup = QtGui.QActionGroup(MainWindow)
|
||||||
qmList = LanguageManager.get_qm_list()
|
qmList = LanguageManager.get_qm_list()
|
||||||
savedLanguage = LanguageManager.get_language()
|
savedLanguage = LanguageManager.get_language()
|
||||||
@ -253,37 +288,33 @@ class Ui_MainWindow(object):
|
|||||||
languageItem.setChecked(True)
|
languageItem.setChecked(True)
|
||||||
add_actions(self.LanguageGroup, [languageItem])
|
add_actions(self.LanguageGroup, [languageItem])
|
||||||
self.LanguageGroup.setDisabled(LanguageManager.auto_language)
|
self.LanguageGroup.setDisabled(LanguageManager.auto_language)
|
||||||
self.ToolsAddToolItem = QtGui.QAction(MainWindow)
|
self.SettingsShortcutsItem = QtGui.QAction(MainWindow)
|
||||||
self.ToolsAddToolItem.setIcon(build_icon(u':/tools/tools_add.png'))
|
self.SettingsShortcutsItem.setIcon(
|
||||||
self.ToolsAddToolItem.setObjectName(u'ToolsAddToolItem')
|
build_icon(u':/system/system_configure_shortcuts.png'))
|
||||||
self.ViewPreviewPanel = QtGui.QAction(MainWindow)
|
self.SettingsShortcutsItem.setObjectName(u'SettingsShortcutsItem')
|
||||||
self.ViewPreviewPanel.setCheckable(True)
|
self.SettingsConfigureItem = QtGui.QAction(MainWindow)
|
||||||
previewVisible = QtCore.QSettings().value(
|
self.SettingsConfigureItem.setIcon(
|
||||||
u'user interface/preview panel', QtCore.QVariant(True)).toBool()
|
build_icon(u':/system/system_settings.png'))
|
||||||
self.ViewPreviewPanel.setChecked(previewVisible)
|
self.SettingsConfigureItem.setObjectName(u'SettingsConfigureItem')
|
||||||
self.ViewPreviewPanel.setObjectName(u'ViewPreviewPanel')
|
MainWindow.actionList.add_action(self.SettingsShortcutsItem, u'Settings')
|
||||||
self.PreviewController.Panel.setVisible(previewVisible)
|
self.HelpDocumentationItem = QtGui.QAction(MainWindow)
|
||||||
self.ViewLivePanel = QtGui.QAction(MainWindow)
|
self.HelpDocumentationItem.setIcon(
|
||||||
self.ViewLivePanel.setCheckable(True)
|
build_icon(u':/system/system_help_contents.png'))
|
||||||
liveVisible = QtCore.QSettings().value(u'user interface/live panel',
|
self.HelpDocumentationItem.setObjectName(u'HelpDocumentationItem')
|
||||||
QtCore.QVariant(True)).toBool()
|
self.HelpDocumentationItem.setEnabled(False)
|
||||||
self.ViewLivePanel.setChecked(liveVisible)
|
MainWindow.actionList.add_action(self.HelpDocumentationItem, u'Help')
|
||||||
self.ViewLivePanel.setObjectName(u'ViewLivePanel')
|
self.HelpAboutItem = QtGui.QAction(MainWindow)
|
||||||
self.LiveController.Panel.setVisible(liveVisible)
|
self.HelpAboutItem.setIcon(
|
||||||
self.ModeDefaultItem = QtGui.QAction(MainWindow)
|
build_icon(u':/system/system_about.png'))
|
||||||
self.ModeDefaultItem.setCheckable(True)
|
self.HelpAboutItem.setObjectName(u'HelpAboutItem')
|
||||||
self.ModeDefaultItem.setObjectName(u'ModeDefaultItem')
|
MainWindow.actionList.add_action(self.HelpAboutItem, u'Help')
|
||||||
self.ModeSetupItem = QtGui.QAction(MainWindow)
|
self.HelpOnlineHelpItem = QtGui.QAction(MainWindow)
|
||||||
self.ModeSetupItem.setCheckable(True)
|
self.HelpOnlineHelpItem.setObjectName(u'HelpOnlineHelpItem')
|
||||||
self.ModeSetupItem.setObjectName(u'ModeLiveItem')
|
self.HelpOnlineHelpItem.setEnabled(False)
|
||||||
self.ModeLiveItem = QtGui.QAction(MainWindow)
|
MainWindow.actionList.add_action(self.HelpOnlineHelpItem, u'Help')
|
||||||
self.ModeLiveItem.setCheckable(True)
|
self.HelpWebSiteItem = QtGui.QAction(MainWindow)
|
||||||
self.ModeLiveItem.setObjectName(u'ModeLiveItem')
|
self.HelpWebSiteItem.setObjectName(u'HelpWebSiteItem')
|
||||||
self.ModeGroup = QtGui.QActionGroup(MainWindow)
|
MainWindow.actionList.add_action(self.HelpWebSiteItem, u'Help')
|
||||||
self.ModeGroup.addAction(self.ModeDefaultItem)
|
|
||||||
self.ModeGroup.addAction(self.ModeSetupItem)
|
|
||||||
self.ModeGroup.addAction(self.ModeLiveItem)
|
|
||||||
self.ModeDefaultItem.setChecked(True)
|
|
||||||
add_actions(self.FileImportMenu,
|
add_actions(self.FileImportMenu,
|
||||||
(self.ImportThemeItem, self.ImportLanguageItem))
|
(self.ImportThemeItem, self.ImportLanguageItem))
|
||||||
add_actions(self.FileExportMenu,
|
add_actions(self.FileExportMenu,
|
||||||
@ -303,7 +334,7 @@ class Ui_MainWindow(object):
|
|||||||
add_actions(self.SettingsLanguageMenu, self.LanguageGroup.actions())
|
add_actions(self.SettingsLanguageMenu, self.LanguageGroup.actions())
|
||||||
add_actions(self.SettingsMenu, (self.SettingsPluginListItem,
|
add_actions(self.SettingsMenu, (self.SettingsPluginListItem,
|
||||||
self.SettingsLanguageMenu.menuAction(), None,
|
self.SettingsLanguageMenu.menuAction(), None,
|
||||||
self.SettingsConfigureItem))
|
self.SettingsShortcutsItem, self.SettingsConfigureItem))
|
||||||
add_actions(self.ToolsMenu,
|
add_actions(self.ToolsMenu,
|
||||||
(self.ToolsAddToolItem, None))
|
(self.ToolsAddToolItem, None))
|
||||||
add_actions(self.HelpMenu,
|
add_actions(self.HelpMenu,
|
||||||
@ -394,6 +425,8 @@ class Ui_MainWindow(object):
|
|||||||
translate('OpenLP.MainWindow', '&Theme'))
|
translate('OpenLP.MainWindow', '&Theme'))
|
||||||
self.ExportLanguageItem.setText(
|
self.ExportLanguageItem.setText(
|
||||||
translate('OpenLP.MainWindow', '&Language'))
|
translate('OpenLP.MainWindow', '&Language'))
|
||||||
|
self.SettingsShortcutsItem.setText(
|
||||||
|
translate('OpenLP.MainWindow', 'Configure &Shortcuts...'))
|
||||||
self.SettingsConfigureItem.setText(
|
self.SettingsConfigureItem.setText(
|
||||||
translate('OpenLP.MainWindow', '&Configure OpenLP...'))
|
translate('OpenLP.MainWindow', '&Configure OpenLP...'))
|
||||||
self.ViewMediaManagerItem.setText(
|
self.ViewMediaManagerItem.setText(
|
||||||
@ -488,6 +521,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
"""
|
"""
|
||||||
log.info(u'MainWindow loaded')
|
log.info(u'MainWindow loaded')
|
||||||
|
|
||||||
|
actionList = ActionList()
|
||||||
|
|
||||||
def __init__(self, screens, applicationVersion):
|
def __init__(self, screens, applicationVersion):
|
||||||
"""
|
"""
|
||||||
This constructor sets up the interface, the various managers, and the
|
This constructor sets up the interface, the various managers, and the
|
||||||
@ -495,6 +530,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
"""
|
"""
|
||||||
QtGui.QMainWindow.__init__(self)
|
QtGui.QMainWindow.__init__(self)
|
||||||
self.screens = screens
|
self.screens = screens
|
||||||
|
self.actionList = ActionList()
|
||||||
self.applicationVersion = applicationVersion
|
self.applicationVersion = applicationVersion
|
||||||
# Set up settings sections for the main application
|
# Set up settings sections for the main application
|
||||||
# (not for use by plugins)
|
# (not for use by plugins)
|
||||||
@ -506,6 +542,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
self.settingsmanager = SettingsManager(screens)
|
self.settingsmanager = SettingsManager(screens)
|
||||||
self.aboutForm = AboutForm(self, applicationVersion)
|
self.aboutForm = AboutForm(self, applicationVersion)
|
||||||
self.settingsForm = SettingsForm(self.screens, self, self)
|
self.settingsForm = SettingsForm(self.screens, self, self)
|
||||||
|
self.shortcutForm = ShortcutListForm(self)
|
||||||
self.recentFiles = QtCore.QStringList()
|
self.recentFiles = QtCore.QStringList()
|
||||||
# Set up the path with plugins
|
# Set up the path with plugins
|
||||||
pluginpath = AppLocation.get_directory(AppLocation.PluginsDir)
|
pluginpath = AppLocation.get_directory(AppLocation.PluginsDir)
|
||||||
@ -551,7 +588,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
QtCore.QObject.connect(self.SettingsPluginListItem,
|
QtCore.QObject.connect(self.SettingsPluginListItem,
|
||||||
QtCore.SIGNAL(u'triggered()'), self.onPluginItemClicked)
|
QtCore.SIGNAL(u'triggered()'), self.onPluginItemClicked)
|
||||||
QtCore.QObject.connect(self.SettingsConfigureItem,
|
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()'),
|
QtCore.QObject.connect(self.FileNewItem, QtCore.SIGNAL(u'triggered()'),
|
||||||
self.ServiceManagerContents.onNewService)
|
self.ServiceManagerContents.onNewService)
|
||||||
QtCore.QObject.connect(self.FileOpenItem,
|
QtCore.QObject.connect(self.FileOpenItem,
|
||||||
@ -712,12 +751,18 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
self.pluginForm.load()
|
self.pluginForm.load()
|
||||||
self.pluginForm.exec_()
|
self.pluginForm.exec_()
|
||||||
|
|
||||||
def onOptionsSettingsItemClicked(self):
|
def onSettingsConfigureItemClicked(self):
|
||||||
"""
|
"""
|
||||||
Show the Settings dialog
|
Show the Settings dialog
|
||||||
"""
|
"""
|
||||||
self.settingsForm.exec_()
|
self.settingsForm.exec_()
|
||||||
|
|
||||||
|
def onSettingsShortcutsItemClicked(self):
|
||||||
|
"""
|
||||||
|
Show the shortcuts dialog
|
||||||
|
"""
|
||||||
|
self.shortcutForm.exec_(self.actionList)
|
||||||
|
|
||||||
def onModeDefaultItemClicked(self):
|
def onModeDefaultItemClicked(self):
|
||||||
"""
|
"""
|
||||||
Put OpenLP into "Default" view mode.
|
Put OpenLP into "Default" view mode.
|
||||||
|
114
openlp/core/ui/shortcutlistdialog.py
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
# -*- 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.shortcutListTreeWidget = QtGui.QTreeWidget(shortcutListDialog)
|
||||||
|
self.shortcutListTreeWidget.setAlternatingRowColors(True)
|
||||||
|
self.shortcutListTreeWidget.setObjectName(u'shortcutListTreeWidget')
|
||||||
|
self.shortcutListTreeWidget.setColumnCount(2)
|
||||||
|
self.shortcutListTreeWidget.setSelectionBehavior(
|
||||||
|
QtGui.QAbstractItemView.SelectRows)
|
||||||
|
self.shortcutListLayout.addWidget(self.shortcutListTreeWidget)
|
||||||
|
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_configure_shortcuts.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.shortcutListTreeWidget.setHeaderLabels([
|
||||||
|
translate('OpenLP.ShortcutListDialog', 'Action'),
|
||||||
|
translate('OpenLP.ShortcutListDialog', 'Shortcut')
|
||||||
|
])
|
||||||
|
self.defaultRadioButton.setText(
|
||||||
|
translate('OpenLP.ShortcutListDialog', 'Default: %s'))
|
||||||
|
self.customRadioButton.setText(
|
||||||
|
translate('OpenLP.ShortcutListDialog', 'Custom:'))
|
||||||
|
self.shortcutPushButton.setText(
|
||||||
|
translate('OpenLP.ShortcutListDialog', 'None'))
|
||||||
|
|
110
openlp/core/ui/shortcutlistform.py
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
# -*- 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 #
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import re
|
||||||
|
|
||||||
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
|
from openlp.core.utils import translate
|
||||||
|
from shortcutlistdialog import Ui_ShortcutListDialog
|
||||||
|
|
||||||
|
REMOVE_AMPERSAND = re.compile(r'&{1}')
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
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)
|
||||||
|
self.actionList = None
|
||||||
|
self.captureShortcut = False
|
||||||
|
QtCore.QObject.connect(
|
||||||
|
self.shortcutPushButton,
|
||||||
|
QtCore.SIGNAL(u'toggled(bool)'),
|
||||||
|
self.onShortcutPushButtonClicked
|
||||||
|
)
|
||||||
|
|
||||||
|
def keyReleaseEvent(self, event):
|
||||||
|
Qt = QtCore.Qt
|
||||||
|
if not self.captureShortcut:
|
||||||
|
return
|
||||||
|
key = event.key()
|
||||||
|
if key == Qt.Key_Shift or key == Qt.Key_Control or \
|
||||||
|
key == Qt.Key_Meta or key == Qt.Key_Alt:
|
||||||
|
return
|
||||||
|
key_string = QtGui.QKeySequence(key).toString()
|
||||||
|
if event.modifiers() & Qt.ControlModifier == Qt.ControlModifier:
|
||||||
|
key_string = u'Ctrl+' + key_string
|
||||||
|
if event.modifiers() & Qt.AltModifier == Qt.AltModifier:
|
||||||
|
key_string = u'Alt+' + key_string
|
||||||
|
if event.modifiers() & Qt.ShiftModifier == Qt.ShiftModifier:
|
||||||
|
key_string = u'Shift+' + key_string;
|
||||||
|
key_sequence = QtGui.QKeySequence(key_string)
|
||||||
|
existing_key = QtGui.QKeySequence("Ctrl+Shift+F8")
|
||||||
|
if key_sequence == existing_key:
|
||||||
|
QtGui.QMessageBox.warning(
|
||||||
|
self,
|
||||||
|
translate('OpenLP.ShortcutListDialog', 'Duplicate Shortcut'),
|
||||||
|
unicode(translate('OpenLP.ShortcutListDialog', 'The shortcut '
|
||||||
|
'"%s" is already assigned to another action, please '
|
||||||
|
'use a different shortcut.')) % key_sequence.toString(),
|
||||||
|
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok),
|
||||||
|
QtGui.QMessageBox.Ok
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.shortcutPushButton.setText(key_sequence.toString())
|
||||||
|
self.shortcutPushButton.setChecked(False)
|
||||||
|
self.captureShortcut = False
|
||||||
|
|
||||||
|
def exec_(self, actionList):
|
||||||
|
self.actionList = actionList
|
||||||
|
self.refreshActions()
|
||||||
|
return QtGui.QDialog.exec_(self)
|
||||||
|
|
||||||
|
def refreshActions(self):
|
||||||
|
self.shortcutListTreeWidget.clear()
|
||||||
|
for category in self.actionList.categories:
|
||||||
|
item = QtGui.QTreeWidgetItem([category.name])
|
||||||
|
for action in category.actions:
|
||||||
|
actionText = REMOVE_AMPERSAND.sub('', unicode(action.text()))
|
||||||
|
shortcutText = action.shortcut().toString()
|
||||||
|
actionItem = QtGui.QTreeWidgetItem([actionText, shortcutText])
|
||||||
|
actionItem.setIcon(0, action.icon())
|
||||||
|
item.addChild(actionItem)
|
||||||
|
item.setExpanded(True)
|
||||||
|
self.shortcutListTreeWidget.addTopLevelItem(item)
|
||||||
|
|
||||||
|
def onShortcutPushButtonClicked(self, toggled):
|
||||||
|
self.captureShortcut = toggled
|
||||||
|
|
@ -434,8 +434,12 @@ class SlideController(QtGui.QWidget):
|
|||||||
request = unicode(self.sender().text())
|
request = unicode(self.sender().text())
|
||||||
slideno = self.slideList[request]
|
slideno = self.slideList[request]
|
||||||
if slideno > self.PreviewListWidget.rowCount():
|
if slideno > self.PreviewListWidget.rowCount():
|
||||||
self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount())
|
self.PreviewListWidget.selectRow(
|
||||||
|
self.PreviewListWidget.rowCount() - 1)
|
||||||
else:
|
else:
|
||||||
|
if slideno + 1 < self.PreviewListWidget.rowCount():
|
||||||
|
self.PreviewListWidget.scrollToItem(
|
||||||
|
self.PreviewListWidget.item(slideno + 1, 0))
|
||||||
self.PreviewListWidget.selectRow(slideno)
|
self.PreviewListWidget.selectRow(slideno)
|
||||||
self.onSlideSelected()
|
self.onSlideSelected()
|
||||||
|
|
||||||
@ -527,6 +531,9 @@ class SlideController(QtGui.QWidget):
|
|||||||
log.debug(u'addServiceManagerItem live = %s' % self.isLive)
|
log.debug(u'addServiceManagerItem live = %s' % self.isLive)
|
||||||
# If service item is the same as the current on only change slide
|
# If service item is the same as the current on only change slide
|
||||||
if item.__eq__(self.serviceItem):
|
if item.__eq__(self.serviceItem):
|
||||||
|
if slideno + 1 < self.PreviewListWidget.rowCount():
|
||||||
|
self.PreviewListWidget.scrollToItem(
|
||||||
|
self.PreviewListWidget.item(slideno + 1, 0))
|
||||||
self.PreviewListWidget.selectRow(slideno)
|
self.PreviewListWidget.selectRow(slideno)
|
||||||
self.onSlideSelected()
|
self.onSlideSelected()
|
||||||
return
|
return
|
||||||
@ -608,8 +615,12 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.PreviewListWidget.setColumnWidth(0,
|
self.PreviewListWidget.setColumnWidth(0,
|
||||||
self.PreviewListWidget.viewport().size().width())
|
self.PreviewListWidget.viewport().size().width())
|
||||||
if slideno > self.PreviewListWidget.rowCount():
|
if slideno > self.PreviewListWidget.rowCount():
|
||||||
self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount())
|
self.PreviewListWidget.selectRow(
|
||||||
|
self.PreviewListWidget.rowCount() - 1)
|
||||||
else:
|
else:
|
||||||
|
if slideno + 1 < self.PreviewListWidget.rowCount():
|
||||||
|
self.PreviewListWidget.scrollToItem(
|
||||||
|
self.PreviewListWidget.item(slideno + 1, 0))
|
||||||
self.PreviewListWidget.selectRow(slideno)
|
self.PreviewListWidget.selectRow(slideno)
|
||||||
self.enableToolBar(serviceItem)
|
self.enableToolBar(serviceItem)
|
||||||
# Pass to display for viewing
|
# Pass to display for viewing
|
||||||
@ -668,6 +679,9 @@ class SlideController(QtGui.QWidget):
|
|||||||
[self.serviceItem, self.isLive, index])
|
[self.serviceItem, self.isLive, index])
|
||||||
self.updatePreview()
|
self.updatePreview()
|
||||||
else:
|
else:
|
||||||
|
if index + 1 < self.PreviewListWidget.rowCount():
|
||||||
|
self.PreviewListWidget.scrollToItem(
|
||||||
|
self.PreviewListWidget.item(index + 1, 0))
|
||||||
self.PreviewListWidget.selectRow(index)
|
self.PreviewListWidget.selectRow(index)
|
||||||
self.onSlideSelected()
|
self.onSlideSelected()
|
||||||
|
|
||||||
@ -799,6 +813,9 @@ class SlideController(QtGui.QWidget):
|
|||||||
"""
|
"""
|
||||||
The slide has been changed. Update the slidecontroller accordingly
|
The slide has been changed. Update the slidecontroller accordingly
|
||||||
"""
|
"""
|
||||||
|
if row + 1 < self.PreviewListWidget.rowCount():
|
||||||
|
self.PreviewListWidget.scrollToItem(
|
||||||
|
self.PreviewListWidget.item(row + 1, 0))
|
||||||
self.PreviewListWidget.selectRow(row)
|
self.PreviewListWidget.selectRow(row)
|
||||||
self.updatePreview()
|
self.updatePreview()
|
||||||
Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix,
|
Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix,
|
||||||
@ -844,6 +861,9 @@ class SlideController(QtGui.QWidget):
|
|||||||
else:
|
else:
|
||||||
Receiver.send_message('servicemanager_next_item')
|
Receiver.send_message('servicemanager_next_item')
|
||||||
return
|
return
|
||||||
|
if row + 1 < self.PreviewListWidget.rowCount():
|
||||||
|
self.PreviewListWidget.scrollToItem(
|
||||||
|
self.PreviewListWidget.item(row + 1, 0))
|
||||||
self.PreviewListWidget.selectRow(row)
|
self.PreviewListWidget.selectRow(row)
|
||||||
self.onSlideSelected()
|
self.onSlideSelected()
|
||||||
|
|
||||||
@ -867,6 +887,9 @@ class SlideController(QtGui.QWidget):
|
|||||||
row = self.PreviewListWidget.rowCount() - 1
|
row = self.PreviewListWidget.rowCount() - 1
|
||||||
else:
|
else:
|
||||||
row = 0
|
row = 0
|
||||||
|
if row + 1 < self.PreviewListWidget.rowCount():
|
||||||
|
self.PreviewListWidget.scrollToItem(
|
||||||
|
self.PreviewListWidget.item(row + 1, 0))
|
||||||
self.PreviewListWidget.selectRow(row)
|
self.PreviewListWidget.selectRow(row)
|
||||||
self.onSlideSelected()
|
self.onSlideSelected()
|
||||||
|
|
||||||
|
@ -276,6 +276,7 @@ def get_images_filter():
|
|||||||
return images_filter
|
return images_filter
|
||||||
|
|
||||||
from languagemanager import LanguageManager
|
from languagemanager import LanguageManager
|
||||||
|
from actions import ActionList
|
||||||
|
|
||||||
__all__ = [u'AppLocation', u'check_latest_version', u'add_actions',
|
__all__ = [u'AppLocation', u'check_latest_version', u'add_actions',
|
||||||
u'get_filesystem_encoding', u'LanguageManager']
|
u'get_filesystem_encoding', u'LanguageManager', u'ActionList']
|
||||||
|
184
openlp/core/utils/actions.py
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
# -*- 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 #
|
||||||
|
###############################################################################
|
||||||
|
"""
|
||||||
|
The :mod:`~openlp.core.utils.actions` module provides action list classes used
|
||||||
|
by the shortcuts system.
|
||||||
|
"""
|
||||||
|
|
||||||
|
class ActionCategory(object):
|
||||||
|
"""
|
||||||
|
The :class:`~openlp.core.utils.ActionCategory` class encapsulates a
|
||||||
|
category for the :class:`~openlp.core.utils.CategoryList` class.
|
||||||
|
"""
|
||||||
|
def __init__(self, name, weight=0):
|
||||||
|
self.name = name
|
||||||
|
self.weight = weight
|
||||||
|
self.actions = CategoryActionList()
|
||||||
|
|
||||||
|
|
||||||
|
class CategoryActionList(object):
|
||||||
|
"""
|
||||||
|
The :class:`~openlp.core.utils.CategoryActionList` class provides a sorted
|
||||||
|
list of actions within a category.
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
self.index = 0
|
||||||
|
self.actions = []
|
||||||
|
|
||||||
|
def __getitem__(self, key):
|
||||||
|
for weight, action in self.actions:
|
||||||
|
if action.text() == key:
|
||||||
|
return action
|
||||||
|
raise KeyError(u'Action "%s" does not exist.' % key)
|
||||||
|
|
||||||
|
def __contains__(self, item):
|
||||||
|
return self.has_key(item)
|
||||||
|
|
||||||
|
def __len__(self):
|
||||||
|
return len(self.actions)
|
||||||
|
|
||||||
|
def __iter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __next__(self):
|
||||||
|
"""
|
||||||
|
Python 3 "next" method.
|
||||||
|
"""
|
||||||
|
if self.index >= len(self.actions):
|
||||||
|
raise StopIteration
|
||||||
|
else:
|
||||||
|
self.index += 1
|
||||||
|
return self.actions[self.index - 1][1]
|
||||||
|
|
||||||
|
def next(self):
|
||||||
|
"""
|
||||||
|
Python 2 "next" method.
|
||||||
|
"""
|
||||||
|
return self.__next__()
|
||||||
|
|
||||||
|
def has_key(key):
|
||||||
|
for weight, action in self.actions:
|
||||||
|
if action.text() == key:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def append(self, name):
|
||||||
|
weight = 0
|
||||||
|
if len(self.actions) > 0:
|
||||||
|
weight = self.actions[-1][0] + 1
|
||||||
|
self.add(name, weight)
|
||||||
|
|
||||||
|
def add(self, action, weight=0):
|
||||||
|
self.actions.append((weight, action))
|
||||||
|
self.actions.sort(key=lambda act: act[0])
|
||||||
|
|
||||||
|
|
||||||
|
class CategoryList(object):
|
||||||
|
"""
|
||||||
|
The :class:`~openlp.core.utils.CategoryList` class encapsulates a category
|
||||||
|
list for the :class:`~openlp.core.utils.ActionList` class and provides an
|
||||||
|
iterator interface for walking through the list of actions in this category.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.index = 0
|
||||||
|
self.categories = []
|
||||||
|
|
||||||
|
def __getitem__(self, key):
|
||||||
|
for category in self.categories:
|
||||||
|
if category.name == key:
|
||||||
|
return category
|
||||||
|
raise KeyError(u'Category "%s" does not exist.' % key)
|
||||||
|
|
||||||
|
def __contains__(self, item):
|
||||||
|
return self.has_key(item)
|
||||||
|
|
||||||
|
def __len__(self):
|
||||||
|
return len(self.categories)
|
||||||
|
|
||||||
|
def __iter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __next__(self):
|
||||||
|
"""
|
||||||
|
Python 3 "next" method for iterator.
|
||||||
|
"""
|
||||||
|
if self.index >= len(self.categories):
|
||||||
|
raise StopIteration
|
||||||
|
else:
|
||||||
|
self.index += 1
|
||||||
|
return self.categories[self.index - 1]
|
||||||
|
|
||||||
|
def next(self):
|
||||||
|
"""
|
||||||
|
Python 2 "next" method for iterator.
|
||||||
|
"""
|
||||||
|
return self.__next__()
|
||||||
|
|
||||||
|
def has_key(self, key):
|
||||||
|
for category in self.categories:
|
||||||
|
if category.name == key:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def append(self, name, actions=[]):
|
||||||
|
weight = 0
|
||||||
|
if len(self.categories) > 0:
|
||||||
|
weight = self.categories[-1].weight + 1
|
||||||
|
if actions:
|
||||||
|
self.add(name, weight, actions)
|
||||||
|
else:
|
||||||
|
self.add(name, weight)
|
||||||
|
|
||||||
|
def add(self, name, weight=0, actions=[]):
|
||||||
|
category = ActionCategory(name, weight)
|
||||||
|
if actions:
|
||||||
|
for action in actions:
|
||||||
|
if isinstance(action, tuple):
|
||||||
|
category.actions.add(action[0], action[1])
|
||||||
|
else:
|
||||||
|
category.actions.append(action)
|
||||||
|
self.categories.append(category)
|
||||||
|
self.categories.sort(key=lambda cat: cat.weight)
|
||||||
|
|
||||||
|
|
||||||
|
class ActionList(object):
|
||||||
|
"""
|
||||||
|
The :class:`~openlp.core.utils.ActionList` class contains a list of menu
|
||||||
|
actions and categories associated with those actions. Each category also
|
||||||
|
has a weight by which it is sorted when iterating through the list of
|
||||||
|
actions or categories.
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
self.categories = CategoryList()
|
||||||
|
|
||||||
|
def add_action(self, action, category=u'Default', weight=None):
|
||||||
|
if category not in self.categories:
|
||||||
|
self.categories.append(category)
|
||||||
|
if weight is None:
|
||||||
|
self.categories[category].actions.append(action)
|
||||||
|
else:
|
||||||
|
self.categories[category].actions.add(action, weight)
|
@ -162,12 +162,10 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog):
|
|||||||
sxml.add_verse_to_lyrics(u'custom', unicode(count),
|
sxml.add_verse_to_lyrics(u'custom', unicode(count),
|
||||||
unicode(self.slideListView.item(i).text()))
|
unicode(self.slideListView.item(i).text()))
|
||||||
count += 1
|
count += 1
|
||||||
self.customSlide.title = unicode(self.titleEdit.displayText(), u'utf-8')
|
self.customSlide.title = unicode(self.titleEdit.text())
|
||||||
self.customSlide.text = unicode(sxml.extract_xml(), u'utf-8')
|
self.customSlide.text = unicode(sxml.extract_xml(), u'utf-8')
|
||||||
self.customSlide.credits = unicode(self.creditEdit.displayText(),
|
self.customSlide.credits = unicode(self.creditEdit.text())
|
||||||
u'utf-8')
|
self.customSlide.theme_name = unicode(self.themeComboBox.currentText())
|
||||||
self.customSlide.theme_name = unicode(self.themeComboBox.currentText(),
|
|
||||||
u'utf-8')
|
|
||||||
return self.manager.save_object(self.customSlide)
|
return self.manager.save_object(self.customSlide)
|
||||||
|
|
||||||
def onUpButtonPressed(self):
|
def onUpButtonPressed(self):
|
||||||
|
@ -1,73 +0,0 @@
|
|||||||
[bibles]
|
|
||||||
display new chapter = False
|
|
||||||
display brackets = 0
|
|
||||||
dual bibles = False
|
|
||||||
db type = sqlite
|
|
||||||
bible theme =
|
|
||||||
verse layout style = 1
|
|
||||||
status = 1
|
|
||||||
data path = bibles
|
|
||||||
|
|
||||||
[media]
|
|
||||||
status = 1
|
|
||||||
|
|
||||||
[alerts]
|
|
||||||
font color = #ffffff
|
|
||||||
background color = #660000
|
|
||||||
font face = Sans Serif
|
|
||||||
timeout = 5
|
|
||||||
|
|
||||||
[remotes]
|
|
||||||
remote port = 4316
|
|
||||||
|
|
||||||
[presentations]
|
|
||||||
status = 1
|
|
||||||
impress = 0
|
|
||||||
data path = presentations
|
|
||||||
powerpoint = 0
|
|
||||||
powerpoint viewer = 0
|
|
||||||
|
|
||||||
[custom]
|
|
||||||
status = 1
|
|
||||||
display footer = True
|
|
||||||
data path = custom
|
|
||||||
db type = sqlite
|
|
||||||
|
|
||||||
[themes]
|
|
||||||
global theme =
|
|
||||||
data path = themes
|
|
||||||
theme level = 1
|
|
||||||
|
|
||||||
[images]
|
|
||||||
status = 1
|
|
||||||
data path = images
|
|
||||||
loop delay = 5
|
|
||||||
|
|
||||||
[user interface]
|
|
||||||
theme manager = True
|
|
||||||
media manager = True
|
|
||||||
preview panel = True
|
|
||||||
service manager = True
|
|
||||||
|
|
||||||
[servicemanager]
|
|
||||||
data path = servicemanager
|
|
||||||
|
|
||||||
[general]
|
|
||||||
monitor = 0
|
|
||||||
run environment = dev
|
|
||||||
ccli number =
|
|
||||||
blank warning = False
|
|
||||||
show splash = True
|
|
||||||
last version test = 2010-02-05
|
|
||||||
songselect username =
|
|
||||||
save prompt = False
|
|
||||||
songselect password =
|
|
||||||
auto open = False
|
|
||||||
|
|
||||||
[songs]
|
|
||||||
status = 1
|
|
||||||
search as type = False
|
|
||||||
display songbar = True
|
|
||||||
data path = songs
|
|
||||||
db type = sqlite
|
|
||||||
|
|
Before Width: | Height: | Size: 343 KiB |
@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" ?>
|
|
||||||
<theme version="1.0"><name>Bible Readings</name><background mode="opaque" type="image"><filename>open6_2.jpg</filename></background><font type="main"><name>Arial</name><color>#ffffff</color><proportion>40</proportion><proportion>40</proportion><location override="False"/></font><font type="footer"><name>Arial</name><color>#ffffff</color><proportion>12</proportion><proportion>12</proportion><location override="False"/></font><display><shadow color="#000000">False</shadow><outline color="#000000">False</outline><horizontalAlign>2</horizontalAlign><verticalAlign>1</verticalAlign><wrapStyle>0</wrapStyle></display></theme>
|
|
Before Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 42 KiB |
@ -1,64 +0,0 @@
|
|||||||
<?xml version="1.0" ?>
|
|
||||||
<theme version="1.0">
|
|
||||||
<name>
|
|
||||||
Blue
|
|
||||||
</name>
|
|
||||||
<background mode="opaque" type="solid">
|
|
||||||
<color>
|
|
||||||
#0000ff
|
|
||||||
</color>
|
|
||||||
</background>
|
|
||||||
<font type="main">
|
|
||||||
<name>
|
|
||||||
DejaVu Sans Mono
|
|
||||||
</name>
|
|
||||||
<color>
|
|
||||||
#ffff00
|
|
||||||
</color>
|
|
||||||
<proportion>
|
|
||||||
45
|
|
||||||
</proportion>
|
|
||||||
<weight>
|
|
||||||
Normal
|
|
||||||
</weight>
|
|
||||||
<italics>
|
|
||||||
False
|
|
||||||
</italics>
|
|
||||||
<location override="False"/>
|
|
||||||
</font>
|
|
||||||
<font type="footer">
|
|
||||||
<name>
|
|
||||||
DejaVu Sans Mono
|
|
||||||
</name>
|
|
||||||
<color>
|
|
||||||
#ffff00
|
|
||||||
</color>
|
|
||||||
<proportion>
|
|
||||||
12
|
|
||||||
</proportion>
|
|
||||||
<weight>
|
|
||||||
Normal
|
|
||||||
</weight>
|
|
||||||
<italics>
|
|
||||||
False
|
|
||||||
</italics>
|
|
||||||
<location override="False"/>
|
|
||||||
</font>
|
|
||||||
<display>
|
|
||||||
<shadow color="#000000">
|
|
||||||
False
|
|
||||||
</shadow>
|
|
||||||
<outline color="#000000">
|
|
||||||
False
|
|
||||||
</outline>
|
|
||||||
<horizontalAlign>
|
|
||||||
0
|
|
||||||
</horizontalAlign>
|
|
||||||
<verticalAlign>
|
|
||||||
1
|
|
||||||
</verticalAlign>
|
|
||||||
<wrapStyle>
|
|
||||||
0
|
|
||||||
</wrapStyle>
|
|
||||||
</display>
|
|
||||||
</theme>
|
|
Before Width: | Height: | Size: 45 KiB |
@ -1,64 +0,0 @@
|
|||||||
<?xml version="1.0" ?>
|
|
||||||
<theme version="1.0">
|
|
||||||
<name>
|
|
||||||
theme1
|
|
||||||
</name>
|
|
||||||
<background mode="opaque" type="solid">
|
|
||||||
<color>
|
|
||||||
#400080
|
|
||||||
</color>
|
|
||||||
</background>
|
|
||||||
<font type="main">
|
|
||||||
<name>
|
|
||||||
Tahoma
|
|
||||||
</name>
|
|
||||||
<color>
|
|
||||||
#0080ff
|
|
||||||
</color>
|
|
||||||
<proportion>
|
|
||||||
45
|
|
||||||
</proportion>
|
|
||||||
<weight>
|
|
||||||
Normal
|
|
||||||
</weight>
|
|
||||||
<italics>
|
|
||||||
False
|
|
||||||
</italics>
|
|
||||||
<location override="False"/>
|
|
||||||
</font>
|
|
||||||
<font type="footer">
|
|
||||||
<name>
|
|
||||||
Tahoma
|
|
||||||
</name>
|
|
||||||
<color>
|
|
||||||
#0080ff
|
|
||||||
</color>
|
|
||||||
<proportion>
|
|
||||||
12
|
|
||||||
</proportion>
|
|
||||||
<weight>
|
|
||||||
Normal
|
|
||||||
</weight>
|
|
||||||
<italics>
|
|
||||||
False
|
|
||||||
</italics>
|
|
||||||
<location override="False"/>
|
|
||||||
</font>
|
|
||||||
<display>
|
|
||||||
<shadow color="#000000">
|
|
||||||
False
|
|
||||||
</shadow>
|
|
||||||
<outline color="#000000">
|
|
||||||
False
|
|
||||||
</outline>
|
|
||||||
<horizontalAlign>
|
|
||||||
0
|
|
||||||
</horizontalAlign>
|
|
||||||
<verticalAlign>
|
|
||||||
0
|
|
||||||
</verticalAlign>
|
|
||||||
<wrapStyle>
|
|
||||||
0
|
|
||||||
</wrapStyle>
|
|
||||||
</display>
|
|
||||||
</theme>
|
|
Before Width: | Height: | Size: 108 KiB |
@ -1,70 +0,0 @@
|
|||||||
<?xml version="1.0" ?>
|
|
||||||
<theme version="1.0">
|
|
||||||
<name>
|
|
||||||
theme2
|
|
||||||
</name>
|
|
||||||
<background mode="opaque" type="gradient">
|
|
||||||
<startColor>
|
|
||||||
#ff8000
|
|
||||||
</startColor>
|
|
||||||
<endColor>
|
|
||||||
#0000ff
|
|
||||||
</endColor>
|
|
||||||
<direction>
|
|
||||||
vertical
|
|
||||||
</direction>
|
|
||||||
</background>
|
|
||||||
<font type="main">
|
|
||||||
<name>
|
|
||||||
Tahoma
|
|
||||||
</name>
|
|
||||||
<color>
|
|
||||||
#ffffff
|
|
||||||
</color>
|
|
||||||
<proportion>
|
|
||||||
45
|
|
||||||
</proportion>
|
|
||||||
<weight>
|
|
||||||
Normal
|
|
||||||
</weight>
|
|
||||||
<italics>
|
|
||||||
False
|
|
||||||
</italics>
|
|
||||||
<location override="False"/>
|
|
||||||
</font>
|
|
||||||
<font type="footer">
|
|
||||||
<name>
|
|
||||||
Tahoma
|
|
||||||
</name>
|
|
||||||
<color>
|
|
||||||
#ffffff
|
|
||||||
</color>
|
|
||||||
<proportion>
|
|
||||||
12
|
|
||||||
</proportion>
|
|
||||||
<weight>
|
|
||||||
Normal
|
|
||||||
</weight>
|
|
||||||
<italics>
|
|
||||||
False
|
|
||||||
</italics>
|
|
||||||
<location override="False"/>
|
|
||||||
</font>
|
|
||||||
<display>
|
|
||||||
<shadow color="#000000">
|
|
||||||
True
|
|
||||||
</shadow>
|
|
||||||
<outline color="#000000">
|
|
||||||
True
|
|
||||||
</outline>
|
|
||||||
<horizontalAlign>
|
|
||||||
0
|
|
||||||
</horizontalAlign>
|
|
||||||
<verticalAlign>
|
|
||||||
0
|
|
||||||
</verticalAlign>
|
|
||||||
<wrapStyle>
|
|
||||||
0
|
|
||||||
</wrapStyle>
|
|
||||||
</display>
|
|
||||||
</theme>
|
|
Before Width: | Height: | Size: 462 KiB |
Before Width: | Height: | Size: 47 KiB |
@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" ?>
|
|
||||||
<theme version="1.0"><name>theme3</name><background mode="opaque" type="image"><filename>sunset2.jpg</filename></background><font type="main"><name>DejaVu Sans Mono</name><color>#ffff00</color><proportion>32</proportion><weight>Normal</weight><italics>False</italics><location override="False"/></font><font type="footer"><name>DejaVu Sans Mono</name><color>#ffff00</color><proportion>12</proportion><weight>Normal</weight><italics>False</italics><location override="False"/></font><display><shadow color="#000000">False</shadow><outline color="#000000">False</outline><horizontalAlign>1</horizontalAlign><verticalAlign>2</verticalAlign><wrapStyle>0</wrapStyle></display></theme>
|
|
@ -1,23 +0,0 @@
|
|||||||
[custom]
|
|
||||||
db type = sqlite
|
|
||||||
|
|
||||||
[bibles]
|
|
||||||
db type = sqlite
|
|
||||||
|
|
||||||
[main]
|
|
||||||
themes path = themes
|
|
||||||
data path = /home/raoul/.openlp/data
|
|
||||||
|
|
||||||
[songs]
|
|
||||||
db type = sqlite
|
|
||||||
file name = songs.sqlite
|
|
||||||
data path = songs
|
|
||||||
|
|
||||||
[presentations]
|
|
||||||
suffix name = ppt,pps,odi
|
|
||||||
|
|
||||||
[images]
|
|
||||||
suffix name = jpg,gif,png,bmp
|
|
||||||
|
|
||||||
[videos]
|
|
||||||
suffix name = avi,mpeg
|
|
@ -1,24 +0,0 @@
|
|||||||
[custom]
|
|
||||||
db type = sqlite
|
|
||||||
|
|
||||||
[bibles]
|
|
||||||
db type = sqlite
|
|
||||||
|
|
||||||
[main]
|
|
||||||
themes path = themes
|
|
||||||
data path = /home/<username>/.openlp/data
|
|
||||||
|
|
||||||
[songs]
|
|
||||||
file name = songs.sqlite
|
|
||||||
data path = songs
|
|
||||||
db type = sqlite
|
|
||||||
|
|
||||||
[presentations]
|
|
||||||
suffix name = ppt,pps,odi
|
|
||||||
|
|
||||||
|
|
||||||
[images]
|
|
||||||
suffix name = jpg,gif,png,bmp
|
|
||||||
|
|
||||||
[videos]
|
|
||||||
suffix name = avi,mpeg
|
|
@ -1,23 +0,0 @@
|
|||||||
[custom]
|
|
||||||
db type = sqlite
|
|
||||||
|
|
||||||
[bibles]
|
|
||||||
db type = sqlite
|
|
||||||
|
|
||||||
[main]
|
|
||||||
themes path = themes
|
|
||||||
data path = c:\\Documents and Settings\\<username>\\Application Data\\.openlp\\data
|
|
||||||
|
|
||||||
[songs]
|
|
||||||
file name = songs.sqlite
|
|
||||||
data path = songs
|
|
||||||
db type = sqlite
|
|
||||||
|
|
||||||
[presentations]
|
|
||||||
suffix name = ppt,pps,odi
|
|
||||||
|
|
||||||
[images]
|
|
||||||
suffix name = jpg,gif,png,bmp
|
|
||||||
|
|
||||||
[videos]
|
|
||||||
suffix name = avi,mpeg
|
|
@ -1,66 +0,0 @@
|
|||||||
Gen,Genesis,Gen
|
|
||||||
Exod,Exodus,Exod
|
|
||||||
Lev,Leviticus,Lev
|
|
||||||
Num,Numbers,Num
|
|
||||||
Deut,Deuteronomy,Deut
|
|
||||||
Josh,Joshua,Josh
|
|
||||||
Judg,Judges,Judg
|
|
||||||
Ruth,Ruth,Ruth
|
|
||||||
1Sam,1 Samuel,1Sam
|
|
||||||
2Sam,2 Samuel,2Sam
|
|
||||||
1Kgs,1 Kings,1Kgs
|
|
||||||
2Kgs,2 Kings,2Kgs
|
|
||||||
1Chr,1 Chronicles,1Chr
|
|
||||||
2Chr,2 Chronicles,2Chr
|
|
||||||
Ezra,Ezra,Ezra
|
|
||||||
Neh,Nehemiah,Neh
|
|
||||||
Esth,Esther,Esth
|
|
||||||
Job,Job,Job
|
|
||||||
Ps,Psalms,Ps
|
|
||||||
Prov,Proverbs,Prov
|
|
||||||
Eccl,Ecclesiastes,Eccl
|
|
||||||
Song,Song of Songs,Song
|
|
||||||
Isa,Isaiah,Isa
|
|
||||||
Jer,Jeremiah,Jer
|
|
||||||
Lam,Lamentations,Lam
|
|
||||||
Ezek,Ezekiel,Ezek
|
|
||||||
Dan,Daniel,Dan
|
|
||||||
Hos,Hosea,Hos
|
|
||||||
Joel,Joel,Joel
|
|
||||||
Amos,Amos,Amos
|
|
||||||
Obad,Obad,Obad
|
|
||||||
Jonah,Jonah,Jonah
|
|
||||||
Mic,Micah,Mic
|
|
||||||
Nah,Naham,Nah
|
|
||||||
Hab,Habakkuk,Hab
|
|
||||||
Zeph,Zephaniah,Zeph
|
|
||||||
Hag,Haggai,Hag
|
|
||||||
Zech,Zechariah,Zech
|
|
||||||
Mal,Malachi,Mal
|
|
||||||
Matt,Matthew,Matt
|
|
||||||
Mark,Mark,Mark
|
|
||||||
Luke,Luke,Luke
|
|
||||||
John,John,John
|
|
||||||
Acts,Acts,Acts
|
|
||||||
Rom,Romans,Rom
|
|
||||||
1Cor,1 Corinthans,1Cor
|
|
||||||
2Cor,2 Corinthans,2Cor
|
|
||||||
Gal,Galatians,Gal
|
|
||||||
Eph,Ephesians,Eph
|
|
||||||
Phil,Philippians,Phil
|
|
||||||
Col,Colossians,Col
|
|
||||||
1Thess,1 Thessalonians,1Thess
|
|
||||||
2Thess,2 Thessalonians,2Thess
|
|
||||||
1Tim,1 Timothy,1Tim
|
|
||||||
2Tim,2 Timothy,2Tim
|
|
||||||
Titus,Titus,Titus
|
|
||||||
Phlm,Philemon,Phlm
|
|
||||||
Heb,Hebrews,Heb
|
|
||||||
Jas,James,Jas
|
|
||||||
1Pet,1 Peter,1Pet
|
|
||||||
2Pet,2 Peter,2Pet
|
|
||||||
1John,1 John,1John
|
|
||||||
2John,2 John,2John
|
|
||||||
3John,3 John,3John
|
|
||||||
Jude,Jude,Jude
|
|
||||||
Rev,Revelation,Rev
|
|
179
resources/forms/shortcutlistdialog.ui
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>ShortcutListDialog</class>
|
||||||
|
<widget class="QDialog" name="ShortcutListDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>500</width>
|
||||||
|
<height>438</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="shortcutListLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QTableWidget" name="shortcutListTableWidget">
|
||||||
|
<property name="alternatingRowColors">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="verticalHeaderVisible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Action</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Shortcut</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="shortcutLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="defaultRadioButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Default: None</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="customShortcutLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="customRadioButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Custom:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="shortcutPushButton">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>84</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>None</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../images/openlp-2.qrc">
|
||||||
|
<normaloff>:/system/system_settings.png</normaloff>:/system/system_settings.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="clearShortcutToolButton">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../images/openlp-2.qrc">
|
||||||
|
<normaloff>:/system/clear_shortcut.png</normaloff>:/system/clear_shortcut.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="customShortcutSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="shortcutListButtonBox">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources>
|
||||||
|
<include location="../images/openlp-2.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>shortcutListButtonBox</sender>
|
||||||
|
<signal>accepted()</signal>
|
||||||
|
<receiver>ShortcutListDialog</receiver>
|
||||||
|
<slot>accept()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>248</x>
|
||||||
|
<y>254</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>157</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>shortcutListButtonBox</sender>
|
||||||
|
<signal>rejected()</signal>
|
||||||
|
<receiver>ShortcutListDialog</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>316</x>
|
||||||
|
<y>260</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>286</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
BIN
resources/images/clear_shortcut.png
Normal file
After Width: | Height: | Size: 644 B |
@ -92,6 +92,7 @@
|
|||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="system">
|
<qresource prefix="system">
|
||||||
<file>system_close.png</file>
|
<file>system_close.png</file>
|
||||||
|
<file>clear_shortcut.png</file>
|
||||||
<file>system_about.png</file>
|
<file>system_about.png</file>
|
||||||
<file>system_help_contents.png</file>
|
<file>system_help_contents.png</file>
|
||||||
<file>system_mediamanager.png</file>
|
<file>system_mediamanager.png</file>
|
||||||
@ -101,6 +102,7 @@
|
|||||||
<file>system_exit.png</file>
|
<file>system_exit.png</file>
|
||||||
<file>settings_plugin_list.png</file>
|
<file>settings_plugin_list.png</file>
|
||||||
<file>system_settings.png</file>
|
<file>system_settings.png</file>
|
||||||
|
<file>system_configure_shortcuts.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="media">
|
<qresource prefix="media">
|
||||||
<file>media_time.png</file>
|
<file>media_time.png</file>
|
||||||
|
BIN
resources/images/system_configure_shortcuts.png
Normal file
After Width: | Height: | Size: 847 B |