forked from openlp/openlp
Central Settings clean-up and tidy up
bzr-revno: 2191
This commit is contained in:
commit
7b0b14f962
@ -229,25 +229,28 @@ class MediaManagerItem(QtGui.QWidget):
|
|||||||
create_widget_action(self.listView, separator=True)
|
create_widget_action(self.listView, separator=True)
|
||||||
if self.hasDeleteIcon:
|
if self.hasDeleteIcon:
|
||||||
create_widget_action(self.listView,
|
create_widget_action(self.listView,
|
||||||
|
u'listView%s%sItem' % (self.plugin.name.title(), StringContent.Delete.title()),
|
||||||
text=self.plugin.getString(StringContent.Delete)[u'title'],
|
text=self.plugin.getString(StringContent.Delete)[u'title'],
|
||||||
icon=u':/general/general_delete.png',
|
icon=u':/general/general_delete.png',
|
||||||
shortcuts=[QtCore.Qt.Key_Delete], triggers=self.onDeleteClick)
|
can_shortcuts=True, triggers=self.onDeleteClick)
|
||||||
create_widget_action(self.listView, separator=True)
|
create_widget_action(self.listView, separator=True)
|
||||||
create_widget_action(self.listView,
|
create_widget_action(self.listView,
|
||||||
|
u'listView%s%sItem' % (self.plugin.name.title(), StringContent.Preview.title()),
|
||||||
text=self.plugin.getString(StringContent.Preview)[u'title'],
|
text=self.plugin.getString(StringContent.Preview)[u'title'],
|
||||||
icon=u':/general/general_preview.png',
|
icon=u':/general/general_preview.png',
|
||||||
shortcuts=[QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return],
|
can_shortcuts=True,
|
||||||
triggers=self.onPreviewClick)
|
triggers=self.onPreviewClick)
|
||||||
create_widget_action(self.listView,
|
create_widget_action(self.listView,
|
||||||
|
u'listView%s%sItem' % (self.plugin.name.title(), StringContent.Live.title()),
|
||||||
text=self.plugin.getString(StringContent.Live)[u'title'],
|
text=self.plugin.getString(StringContent.Live)[u'title'],
|
||||||
icon=u':/general/general_live.png',
|
icon=u':/general/general_live.png',
|
||||||
shortcuts=[QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Enter,
|
can_shortcuts=True,
|
||||||
QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Return],
|
|
||||||
triggers=self.onLiveClick)
|
triggers=self.onLiveClick)
|
||||||
create_widget_action(self.listView,
|
create_widget_action(self.listView,
|
||||||
|
u'listView%s%sItem' % (self.plugin.name.title(), StringContent.Service.title()),
|
||||||
|
can_shortcuts=True,
|
||||||
text=self.plugin.getString(StringContent.Service)[u'title'],
|
text=self.plugin.getString(StringContent.Service)[u'title'],
|
||||||
icon=u':/general/general_add.png',
|
icon=u':/general/general_add.png',
|
||||||
shortcuts=[QtCore.Qt.Key_Plus, QtCore.Qt.Key_Equal],
|
|
||||||
triggers=self.onAddClick)
|
triggers=self.onAddClick)
|
||||||
if self.addToServiceItem:
|
if self.addToServiceItem:
|
||||||
create_widget_action(self.listView, separator=True)
|
create_widget_action(self.listView, separator=True)
|
||||||
|
@ -152,42 +152,99 @@ class Settings(QtCore.QSettings):
|
|||||||
u'SettingsImport/type': u'OpenLP_settings_export',
|
u'SettingsImport/type': u'OpenLP_settings_export',
|
||||||
u'SettingsImport/version': u'',
|
u'SettingsImport/version': u'',
|
||||||
u'shortcuts/aboutItem': [QtGui.QKeySequence(u'Ctrl+F1')],
|
u'shortcuts/aboutItem': [QtGui.QKeySequence(u'Ctrl+F1')],
|
||||||
|
u'shortcuts/addToService': [],
|
||||||
u'shortcuts/audioPauseItem': [],
|
u'shortcuts/audioPauseItem': [],
|
||||||
u'shortcuts/displayTagItem': [],
|
u'shortcuts/displayTagItem': [],
|
||||||
u'shortcuts/blankScreen': [QtCore.Qt.Key_Period],
|
u'shortcuts/blankScreen': [QtGui.QKeySequence(QtCore.Qt.Key_Period)],
|
||||||
u'shortcuts/collapse': [QtCore.Qt.Key_Minus],
|
u'shortcuts/collapse': [QtGui.QKeySequence(QtCore.Qt.Key_Minus)],
|
||||||
u'shortcuts/desktopScreen': [QtGui.QKeySequence(u'D')],
|
u'shortcuts/desktopScreen': [QtGui.QKeySequence(u'D')],
|
||||||
u'shortcuts/down': [QtCore.Qt.Key_Down],
|
u'shortcuts/delete': [],
|
||||||
u'shortcuts/escapeItem': [QtCore.Qt.Key_Escape],
|
u'shortcuts/down': [QtGui.QKeySequence(QtCore.Qt.Key_Down)],
|
||||||
u'shortcuts/expand': [QtCore.Qt.Key_Plus],
|
u'shortcuts/editSong': [],
|
||||||
|
u'shortcuts/escapeItem': [QtGui.QKeySequence(QtCore.Qt.Key_Escape)],
|
||||||
|
u'shortcuts/expand': [QtGui.QKeySequence(QtCore.Qt.Key_Plus)],
|
||||||
u'shortcuts/exportThemeItem': [],
|
u'shortcuts/exportThemeItem': [],
|
||||||
u'shortcuts/fileNewItem': [QtGui.QKeySequence(u'Ctrl+N')],
|
u'shortcuts/fileNewItem': [QtGui.QKeySequence(u'Ctrl+N')],
|
||||||
u'shortcuts/fileSaveAsItem': [QtGui.QKeySequence(u'Ctrl+Shift+S')],
|
u'shortcuts/fileSaveAsItem': [QtGui.QKeySequence(u'Ctrl+Shift+S')],
|
||||||
u'shortcuts/fileExitItem': [QtGui.QKeySequence(u'Alt+F4')],
|
u'shortcuts/fileExitItem': [QtGui.QKeySequence(u'Alt+F4')],
|
||||||
u'shortcuts/fileSaveItem': [QtGui.QKeySequence(u'Ctrl+S')],
|
u'shortcuts/fileSaveItem': [QtGui.QKeySequence(u'Ctrl+S')],
|
||||||
u'shortcuts/fileOpenItem': [QtGui.QKeySequence(u'Ctrl+O')],
|
u'shortcuts/fileOpenItem': [QtGui.QKeySequence(u'Ctrl+O')],
|
||||||
|
u'shortcuts/goLive': [],
|
||||||
u'shortcuts/importThemeItem': [],
|
u'shortcuts/importThemeItem': [],
|
||||||
u'shortcuts/importBibleItem': [],
|
u'shortcuts/importBibleItem': [],
|
||||||
|
u'shortcuts/listViewBiblesDeleteItem': [QtGui.QKeySequence(QtCore.Qt.Key_Delete)],
|
||||||
|
u'shortcuts/listViewBiblesPreviewItem': [QtGui.QKeySequence(QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewBiblesLiveItem': [QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewBiblesServiceItem': [QtGui.QKeySequence(QtCore.Qt.Key_Plus),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Equal)],
|
||||||
|
u'shortcuts/listViewCustomDeleteItem': [QtGui.QKeySequence(QtCore.Qt.Key_Delete)],
|
||||||
|
u'shortcuts/listViewCustomPreviewItem': [QtGui.QKeySequence(QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewCustomLiveItem': [QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewCustomServiceItem': [QtGui.QKeySequence(QtCore.Qt.Key_Plus),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Equal)],
|
||||||
|
u'shortcuts/listViewImagesDeleteItem': [QtGui.QKeySequence(QtCore.Qt.Key_Delete)],
|
||||||
|
u'shortcuts/listViewImagesPreviewItem': [QtGui.QKeySequence(QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewImagesLiveItem': [QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewImagesServiceItem': [QtGui.QKeySequence(QtCore.Qt.Key_Plus),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Equal)],
|
||||||
|
u'shortcuts/listViewMediaDeleteItem': [QtGui.QKeySequence(QtCore.Qt.Key_Delete)],
|
||||||
|
u'shortcuts/listViewMediaPreviewItem': [QtGui.QKeySequence(QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewMediaLiveItem': [QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewMediaServiceItem': [QtGui.QKeySequence(QtCore.Qt.Key_Plus),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Equal)],
|
||||||
|
u'shortcuts/listViewPresentationsDeleteItem': [QtGui.QKeySequence(QtCore.Qt.Key_Delete)],
|
||||||
|
u'shortcuts/listViewPresentationsPreviewItem': [QtGui.QKeySequence(QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewPresentationsLiveItem': [QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewPresentationsServiceItem': [QtGui.QKeySequence(QtCore.Qt.Key_Plus),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Equal)],
|
||||||
|
u'shortcuts/listViewSongsDeleteItem': [QtGui.QKeySequence(QtCore.Qt.Key_Delete)],
|
||||||
|
u'shortcuts/listViewSongsPreviewItem': [QtGui.QKeySequence(QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewSongsLiveItem': [QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Enter),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Return)],
|
||||||
|
u'shortcuts/listViewSongsServiceItem': [QtGui.QKeySequence(QtCore.Qt.Key_Plus),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_Equal)],
|
||||||
|
u'shortcuts/lockPanel': [],
|
||||||
u'shortcuts/modeDefaultItem': [],
|
u'shortcuts/modeDefaultItem': [],
|
||||||
u'shortcuts/modeLiveItem': [],
|
u'shortcuts/modeLiveItem': [],
|
||||||
u'shortcuts/make_live': [QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return],
|
u'shortcuts/make_live': [QtGui.QKeySequence(QtCore.Qt.Key_Enter), QtGui.QKeySequence(QtCore.Qt.Key_Return)],
|
||||||
u'shortcuts/moveUp': [QtCore.Qt.Key_PageUp],
|
u'shortcuts/moveUp': [QtGui.QKeySequence(QtCore.Qt.Key_PageUp)],
|
||||||
u'shortcuts/moveTop': [QtCore.Qt.Key_Home],
|
u'shortcuts/moveTop': [QtGui.QKeySequence(QtCore.Qt.Key_Home)],
|
||||||
u'shortcuts/modeSetupItem': [],
|
u'shortcuts/modeSetupItem': [],
|
||||||
u'shortcuts/moveBottom': [QtCore.Qt.Key_End],
|
u'shortcuts/moveBottom': [QtGui.QKeySequence(QtCore.Qt.Key_End)],
|
||||||
u'shortcuts/moveDown': [QtCore.Qt.Key_PageDown],
|
u'shortcuts/moveDown': [QtGui.QKeySequence(QtCore.Qt.Key_PageDown)],
|
||||||
u'shortcuts/nextTrackItem': [],
|
u'shortcuts/nextTrackItem': [],
|
||||||
u'shortcuts/nextItem_live': [QtCore.Qt.Key_Down, QtCore.Qt.Key_PageDown],
|
u'shortcuts/nextItem_live': [QtGui.QKeySequence(QtCore.Qt.Key_Down),
|
||||||
u'shortcuts/nextService': [QtCore.Qt.Key_Right],
|
QtGui.QKeySequence(QtCore.Qt.Key_PageDown)],
|
||||||
|
u'shortcuts/nextItem_preview': [],
|
||||||
|
u'shortcuts/nextService': [QtGui.QKeySequence(QtCore.Qt.Key_Right)],
|
||||||
|
u'shortcuts/newService': [],
|
||||||
u'shortcuts/offlineHelpItem': [],
|
u'shortcuts/offlineHelpItem': [],
|
||||||
u'shortcuts/onlineHelpItem': [QtGui.QKeySequence(u'Alt+F1')],
|
u'shortcuts/onlineHelpItem': [QtGui.QKeySequence(u'Alt+F1')],
|
||||||
u'shortcuts/previousItem_live': [QtCore.Qt.Key_Up, QtCore.Qt.Key_PageUp],
|
u'shortcuts/openService': [],
|
||||||
|
u'shortcuts/saveService': [],
|
||||||
|
u'shortcuts/previousItem_live': [QtGui.QKeySequence(QtCore.Qt.Key_Up),
|
||||||
|
QtGui.QKeySequence(QtCore.Qt.Key_PageUp)],
|
||||||
|
u'shortcuts/playbackPause': [],
|
||||||
|
u'shortcuts/playbackPlay': [],
|
||||||
|
u'shortcuts/playbackStop': [],
|
||||||
u'shortcuts/playSlidesLoop': [],
|
u'shortcuts/playSlidesLoop': [],
|
||||||
u'shortcuts/playSlidesOnce': [],
|
u'shortcuts/playSlidesOnce': [],
|
||||||
u'shortcuts/previousService': [QtCore.Qt.Key_Left],
|
u'shortcuts/previousService': [QtGui.QKeySequence(QtCore.Qt.Key_Left)],
|
||||||
|
u'shortcuts/previousItem_preview': [],
|
||||||
u'shortcuts/printServiceItem': [QtGui.QKeySequence(u'Ctrl+P')],
|
u'shortcuts/printServiceItem': [QtGui.QKeySequence(u'Ctrl+P')],
|
||||||
u'shortcuts/songExportItem': [],
|
u'shortcuts/songExportItem': [],
|
||||||
u'shortcuts/songUsageStatus': [QtCore.Qt.Key_F4],
|
u'shortcuts/songUsageStatus': [QtGui.QKeySequence(QtCore.Qt.Key_F4)],
|
||||||
u'shortcuts/settingsShortcutsItem': [],
|
u'shortcuts/settingsShortcutsItem': [],
|
||||||
u'shortcuts/settingsImportItem': [],
|
u'shortcuts/settingsImportItem': [],
|
||||||
u'shortcuts/settingsPluginListItem': [QtGui.QKeySequence(u'Alt+F7')],
|
u'shortcuts/settingsPluginListItem': [QtGui.QKeySequence(u'Alt+F7')],
|
||||||
@ -200,17 +257,27 @@ class Settings(QtCore.QSettings):
|
|||||||
u'shortcuts/shortcutAction_O': [QtGui.QKeySequence(u'O')],
|
u'shortcuts/shortcutAction_O': [QtGui.QKeySequence(u'O')],
|
||||||
u'shortcuts/shortcutAction_P': [QtGui.QKeySequence(u'P')],
|
u'shortcuts/shortcutAction_P': [QtGui.QKeySequence(u'P')],
|
||||||
u'shortcuts/shortcutAction_V': [QtGui.QKeySequence(u'V')],
|
u'shortcuts/shortcutAction_V': [QtGui.QKeySequence(u'V')],
|
||||||
|
u'shortcuts/shortcutAction_0': [QtGui.QKeySequence(u'0')],
|
||||||
|
u'shortcuts/shortcutAction_1': [QtGui.QKeySequence(u'1')],
|
||||||
|
u'shortcuts/shortcutAction_2': [QtGui.QKeySequence(u'2')],
|
||||||
|
u'shortcuts/shortcutAction_3': [QtGui.QKeySequence(u'3')],
|
||||||
|
u'shortcuts/shortcutAction_4': [QtGui.QKeySequence(u'4')],
|
||||||
|
u'shortcuts/shortcutAction_5': [QtGui.QKeySequence(u'5')],
|
||||||
|
u'shortcuts/shortcutAction_6': [QtGui.QKeySequence(u'6')],
|
||||||
|
u'shortcuts/shortcutAction_7': [QtGui.QKeySequence(u'7')],
|
||||||
|
u'shortcuts/shortcutAction_8': [QtGui.QKeySequence(u'8')],
|
||||||
|
u'shortcuts/shortcutAction_9': [QtGui.QKeySequence(u'9')],
|
||||||
u'shortcuts/settingsExportItem': [],
|
u'shortcuts/settingsExportItem': [],
|
||||||
u'shortcuts/songUsageReport': [],
|
u'shortcuts/songUsageReport': [],
|
||||||
u'shortcuts/songImportItem': [],
|
u'shortcuts/songImportItem': [],
|
||||||
u'shortcuts/themeScreen': [QtGui.QKeySequence(u'T')],
|
u'shortcuts/themeScreen': [QtGui.QKeySequence(u'T')],
|
||||||
u'shortcuts/toolsReindexItem': [],
|
u'shortcuts/toolsReindexItem': [],
|
||||||
u'shortcuts/toolsAlertItem': [u'F7'],
|
u'shortcuts/toolsAlertItem': [QtGui.QKeySequence(u'F7')],
|
||||||
u'shortcuts/toolsFirstTimeWizard': [],
|
u'shortcuts/toolsFirstTimeWizard': [],
|
||||||
u'shortcuts/toolsOpenDataFolder': [],
|
u'shortcuts/toolsOpenDataFolder': [],
|
||||||
u'shortcuts/toolsAddToolItem': [],
|
u'shortcuts/toolsAddToolItem': [],
|
||||||
u'shortcuts/updateThemeImages': [],
|
u'shortcuts/updateThemeImages': [],
|
||||||
u'shortcuts/up': [QtCore.Qt.Key_Up],
|
u'shortcuts/up': [QtGui.QKeySequence(QtCore.Qt.Key_Up)],
|
||||||
u'shortcuts/viewThemeManagerItem': [QtGui.QKeySequence(u'F10')],
|
u'shortcuts/viewThemeManagerItem': [QtGui.QKeySequence(u'F10')],
|
||||||
u'shortcuts/viewMediaManagerItem': [QtGui.QKeySequence(u'F8')],
|
u'shortcuts/viewMediaManagerItem': [QtGui.QKeySequence(u'F8')],
|
||||||
u'shortcuts/viewPreviewPanel': [QtGui.QKeySequence(u'F11')],
|
u'shortcuts/viewPreviewPanel': [QtGui.QKeySequence(u'F11')],
|
||||||
@ -287,6 +354,14 @@ class Settings(QtCore.QSettings):
|
|||||||
else:
|
else:
|
||||||
QtCore.QSettings.__init__(self, *args)
|
QtCore.QSettings.__init__(self, *args)
|
||||||
|
|
||||||
|
def get_default_value(self, key):
|
||||||
|
"""
|
||||||
|
Get the default value of the given key
|
||||||
|
"""
|
||||||
|
if self.group():
|
||||||
|
key = self.group() + u'/' + key
|
||||||
|
return Settings.__default_settings__[key]
|
||||||
|
|
||||||
def remove_obsolete_settings(self):
|
def remove_obsolete_settings(self):
|
||||||
"""
|
"""
|
||||||
This method is only called to clean up the config. It removes old settings and it renames settings. See
|
This method is only called to clean up the config. It removes old settings and it renames settings. See
|
||||||
|
@ -69,9 +69,8 @@ def add_welcome_page(parent, image):
|
|||||||
|
|
||||||
def create_button_box(dialog, name, standard_buttons, custom_buttons=None):
|
def create_button_box(dialog, name, standard_buttons, custom_buttons=None):
|
||||||
"""
|
"""
|
||||||
Creates a QDialogButtonBox with the given buttons. The ``accepted()`` and
|
Creates a QDialogButtonBox with the given buttons. The ``accepted()`` and ``rejected()`` signals of the button box
|
||||||
``rejected()`` signals of the button box are connected with the dialogs
|
are connected with the dialogs ``accept()`` and ``reject()`` slots.
|
||||||
``accept()`` and ``reject()`` slots.
|
|
||||||
|
|
||||||
``dialog``
|
``dialog``
|
||||||
The parent object. This has to be a ``QDialog`` descendant.
|
The parent object. This has to be a ``QDialog`` descendant.
|
||||||
@ -80,13 +79,12 @@ def create_button_box(dialog, name, standard_buttons, custom_buttons=None):
|
|||||||
A string which is set as object name.
|
A string which is set as object name.
|
||||||
|
|
||||||
``standard_buttons``
|
``standard_buttons``
|
||||||
A list of strings for the used buttons. It might contain: ``ok``,
|
A list of strings for the used buttons. It might contain: ``ok``, ``save``, ``cancel``, ``close``, and
|
||||||
``save``, ``cancel``, ``close``, and ``defaults``.
|
``defaults``.
|
||||||
|
|
||||||
``custom_buttons``
|
``custom_buttons``
|
||||||
A list of additional buttons. If a item is a instance of
|
A list of additional buttons. If a item is a instance of QtGui.QAbstractButton it is added with
|
||||||
QtGui.QAbstractButton it is added with QDialogButtonBox.ActionRole.
|
QDialogButtonBox.ActionRole. Otherwhise the item has to be a tuple of a button and a ButtonRole.
|
||||||
Otherwhise the item has to be a tuple of a button and a ButtonRole.
|
|
||||||
"""
|
"""
|
||||||
if custom_buttons is None:
|
if custom_buttons is None:
|
||||||
custom_buttons = []
|
custom_buttons = []
|
||||||
@ -116,8 +114,7 @@ def create_button_box(dialog, name, standard_buttons, custom_buttons=None):
|
|||||||
|
|
||||||
def critical_error_message_box(title=None, message=None, parent=None, question=False):
|
def critical_error_message_box(title=None, message=None, parent=None, question=False):
|
||||||
"""
|
"""
|
||||||
Provides a standard critical message box for errors that OpenLP displays
|
Provides a standard critical message box for errors that OpenLP displays to users.
|
||||||
to users.
|
|
||||||
|
|
||||||
``title``
|
``title``
|
||||||
The title for the message box.
|
The title for the message box.
|
||||||
@ -134,7 +131,6 @@ def critical_error_message_box(title=None, message=None, parent=None, question=F
|
|||||||
if question:
|
if question:
|
||||||
return QtGui.QMessageBox.critical(parent, UiStrings().Error, message,
|
return QtGui.QMessageBox.critical(parent, UiStrings().Error, message,
|
||||||
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No))
|
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No))
|
||||||
data = {u'message': message}
|
|
||||||
return Registry().get(u'main_window').error_message(title if title else UiStrings().Error, message)
|
return Registry().get(u'main_window').error_message(title if title else UiStrings().Error, message)
|
||||||
|
|
||||||
|
|
||||||
@ -166,16 +162,14 @@ def create_button(parent, name, **kwargs):
|
|||||||
A string which is set as object name (required).
|
A string which is set as object name (required).
|
||||||
|
|
||||||
``role``
|
``role``
|
||||||
A string which can have one value out of ``delete``, ``up``, and
|
A string which can have one value out of ``delete``, ``up``, and ``down``. This decides about default values
|
||||||
``down``. This decides about default values for properties like text,
|
for properties like text, icon, or tooltip.
|
||||||
icon, or tooltip.
|
|
||||||
|
|
||||||
``text``
|
``text``
|
||||||
A string for the action text.
|
A string for the action text.
|
||||||
|
|
||||||
``icon``
|
``icon``
|
||||||
Either a QIcon, a resource string, or a file location string for the
|
Either a QIcon, a resource string, or a file location string for the action icon.
|
||||||
action icon.
|
|
||||||
|
|
||||||
``tooltip``
|
``tooltip``
|
||||||
A string for the action tool tip.
|
A string for the action tool tip.
|
||||||
@ -195,8 +189,7 @@ def create_button(parent, name, **kwargs):
|
|||||||
kwargs.setdefault(u'icon', u':/services/service_down.png')
|
kwargs.setdefault(u'icon', u':/services/service_down.png')
|
||||||
kwargs.setdefault(u'tooltip', translate('OpenLP.Ui', 'Move selection down one position.'))
|
kwargs.setdefault(u'tooltip', translate('OpenLP.Ui', 'Move selection down one position.'))
|
||||||
else:
|
else:
|
||||||
log.warn(u'The role "%s" is not defined in create_push_button().',
|
log.warn(u'The role "%s" is not defined in create_push_button().', role)
|
||||||
role)
|
|
||||||
if kwargs.pop(u'class', u'') == u'toolbutton':
|
if kwargs.pop(u'class', u'') == u'toolbutton':
|
||||||
button = QtGui.QToolButton(parent)
|
button = QtGui.QToolButton(parent)
|
||||||
else:
|
else:
|
||||||
@ -256,8 +249,10 @@ def create_action(parent, name, **kwargs):
|
|||||||
``data``
|
``data``
|
||||||
The action's data.
|
The action's data.
|
||||||
|
|
||||||
``shortcuts``
|
``can_shortcuts``
|
||||||
A QList<QKeySequence> (or a list of strings) which are set as shortcuts.
|
Capability stating if this action can have shortcuts. If ``True`` the action is added to shortcut dialog
|
||||||
|
otherwise it it not. Define your shortcut in the :class:`~openlp.core.lib.Settings` class. *Note*: When *not*
|
||||||
|
``True`` you *must not* set a shortcuts at all.
|
||||||
|
|
||||||
``context``
|
``context``
|
||||||
A context for the shortcut execution.
|
A context for the shortcut execution.
|
||||||
@ -289,26 +284,24 @@ def create_action(parent, name, **kwargs):
|
|||||||
action.setSeparator(True)
|
action.setSeparator(True)
|
||||||
if u'data' in kwargs:
|
if u'data' in kwargs:
|
||||||
action.setData(kwargs.pop(u'data'))
|
action.setData(kwargs.pop(u'data'))
|
||||||
if kwargs.get(u'shortcuts'):
|
if kwargs.pop(u'can_shortcuts', False):
|
||||||
action.setShortcuts(kwargs.pop(u'shortcuts'))
|
action_list = ActionList.get_instance()
|
||||||
|
action_list.add_action(action, kwargs.pop(u'category', None))
|
||||||
if u'context' in kwargs:
|
if u'context' in kwargs:
|
||||||
action.setShortcutContext(kwargs.pop(u'context'))
|
action.setShortcutContext(kwargs.pop(u'context'))
|
||||||
if kwargs.get(u'category'):
|
|
||||||
action_list = ActionList.get_instance()
|
|
||||||
action_list.add_action(action, unicode(kwargs.pop(u'category')))
|
|
||||||
if kwargs.get(u'triggers'):
|
if kwargs.get(u'triggers'):
|
||||||
action.triggered.connect(kwargs.pop(u'triggers'))
|
action.triggered.connect(kwargs.pop(u'triggers'))
|
||||||
for key in kwargs.keys():
|
for key in kwargs.keys():
|
||||||
if key not in [u'text', u'icon', u'tooltip', u'statustip', u'checked', u'shortcuts', u'category', u'triggers']:
|
if key not in [u'text', u'icon', u'tooltip', u'statustip', u'checked', u'can_shortcuts',
|
||||||
|
u'category', u'triggers']:
|
||||||
log.warn(u'Parameter %s was not consumed in create_action().', key)
|
log.warn(u'Parameter %s was not consumed in create_action().', key)
|
||||||
return action
|
return action
|
||||||
|
|
||||||
|
|
||||||
def create_widget_action(parent, name=u'', **kwargs):
|
def create_widget_action(parent, name=u'', **kwargs):
|
||||||
"""
|
"""
|
||||||
Return a new QAction by calling ``create_action(parent, name, **kwargs)``.
|
Return a new QAction by calling ``create_action(parent, name, **kwargs)``. The shortcut context defaults to
|
||||||
The shortcut context defaults to ``QtCore.Qt.WidgetShortcut`` and the action
|
``QtCore.Qt.WidgetShortcut`` and the action is added to the parents action list.
|
||||||
is added to the parents action list.
|
|
||||||
"""
|
"""
|
||||||
kwargs.setdefault(u'context', QtCore.Qt.WidgetShortcut)
|
kwargs.setdefault(u'context', QtCore.Qt.WidgetShortcut)
|
||||||
action = create_action(parent, name, **kwargs)
|
action = create_action(parent, name, **kwargs)
|
||||||
@ -333,8 +326,7 @@ def set_case_insensitive_completer(cache, widget):
|
|||||||
|
|
||||||
def create_valign_selection_widgets(parent):
|
def create_valign_selection_widgets(parent):
|
||||||
"""
|
"""
|
||||||
Creates a standard label and combo box for asking users to select a
|
Creates a standard label and combo box for asking users to select a vertical alignment.
|
||||||
vertical alignment.
|
|
||||||
|
|
||||||
``parent``
|
``parent``
|
||||||
The parent object. This should be a ``QWidget`` descendant.
|
The parent object. This should be a ``QWidget`` descendant.
|
||||||
|
@ -174,99 +174,101 @@ class Ui_MainWindow(object):
|
|||||||
main_window.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.themeManagerDock)
|
main_window.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.themeManagerDock)
|
||||||
# Create the menu items
|
# Create the menu items
|
||||||
action_list = ActionList.get_instance()
|
action_list = ActionList.get_instance()
|
||||||
action_list.add_category(UiStrings().File, CategoryOrder.standardMenu)
|
action_list.add_category(UiStrings().File, CategoryOrder.standard_menu)
|
||||||
self.fileNewItem = create_action(main_window, u'fileNewItem',
|
self.fileNewItem = create_action(main_window, u'fileNewItem',
|
||||||
icon=u':/general/general_new.png',
|
icon=u':/general/general_new.png',
|
||||||
shortcuts=[QtGui.QKeySequence(u'Ctrl+N')],
|
can_shortcuts=True,
|
||||||
category=UiStrings().File,
|
category=UiStrings().File,
|
||||||
triggers=self.serviceManagerContents.on_new_service_clicked)
|
triggers=self.serviceManagerContents.on_new_service_clicked)
|
||||||
self.fileOpenItem = create_action(main_window, u'fileOpenItem',
|
self.fileOpenItem = create_action(main_window, u'fileOpenItem',
|
||||||
icon=u':/general/general_open.png',
|
icon=u':/general/general_open.png',
|
||||||
shortcuts=[QtGui.QKeySequence(u'Ctrl+O')],
|
can_shortcuts=True,
|
||||||
category=UiStrings().File,
|
category=UiStrings().File,
|
||||||
triggers=self.serviceManagerContents.on_load_service_clicked)
|
triggers=self.serviceManagerContents.on_load_service_clicked)
|
||||||
self.fileSaveItem = create_action(main_window, u'fileSaveItem',
|
self.fileSaveItem = create_action(main_window, u'fileSaveItem',
|
||||||
icon=u':/general/general_save.png',
|
icon=u':/general/general_save.png',
|
||||||
shortcuts=[QtGui.QKeySequence(u'Ctrl+S')],
|
can_shortcuts=True,
|
||||||
category=UiStrings().File,
|
category=UiStrings().File,
|
||||||
triggers=self.serviceManagerContents.save_file)
|
triggers=self.serviceManagerContents.save_file)
|
||||||
self.fileSaveAsItem = create_action(main_window, u'fileSaveAsItem',
|
self.fileSaveAsItem = create_action(main_window, u'fileSaveAsItem',
|
||||||
shortcuts=[QtGui.QKeySequence(u'Ctrl+Shift+S')],
|
can_shortcuts=True,
|
||||||
category=UiStrings().File,
|
category=UiStrings().File,
|
||||||
triggers=self.serviceManagerContents.save_file_as)
|
triggers=self.serviceManagerContents.save_file_as)
|
||||||
self.printServiceOrderItem = create_action(main_window,
|
self.printServiceOrderItem = create_action(main_window,
|
||||||
u'printServiceItem', shortcuts=[QtGui.QKeySequence(u'Ctrl+P')],
|
u'printServiceItem', can_shortcuts=True,
|
||||||
category=UiStrings().File,
|
category=UiStrings().File,
|
||||||
triggers=self.serviceManagerContents.print_service_order)
|
triggers=self.serviceManagerContents.print_service_order)
|
||||||
self.fileExitItem = create_action(main_window, u'fileExitItem',
|
self.fileExitItem = create_action(main_window, u'fileExitItem',
|
||||||
icon=u':/system/system_exit.png',
|
icon=u':/system/system_exit.png',
|
||||||
shortcuts=[QtGui.QKeySequence(u'Alt+F4')],
|
can_shortcuts=True,
|
||||||
category=UiStrings().File, triggers=main_window.close)
|
category=UiStrings().File, triggers=main_window.close)
|
||||||
# Give QT Extra Hint that this is the Exit Menu Item
|
# Give QT Extra Hint that this is the Exit Menu Item
|
||||||
self.fileExitItem.setMenuRole(QtGui.QAction.QuitRole)
|
self.fileExitItem.setMenuRole(QtGui.QAction.QuitRole)
|
||||||
action_list.add_category(UiStrings().Import, CategoryOrder.standardMenu)
|
action_list.add_category(UiStrings().Import, CategoryOrder.standard_menu)
|
||||||
self.importThemeItem = create_action(main_window, u'importThemeItem', category=UiStrings().Import)
|
self.importThemeItem = create_action(
|
||||||
|
main_window, u'importThemeItem', category=UiStrings().Import, can_shortcuts=True)
|
||||||
self.importLanguageItem = create_action(main_window, u'importLanguageItem')
|
self.importLanguageItem = create_action(main_window, u'importLanguageItem')
|
||||||
action_list.add_category(UiStrings().Export, CategoryOrder.standardMenu)
|
action_list.add_category(UiStrings().Export, CategoryOrder.standard_menu)
|
||||||
self.exportThemeItem = create_action(main_window, u'exportThemeItem', category=UiStrings().Export)
|
self.exportThemeItem = create_action(
|
||||||
|
main_window, u'exportThemeItem', category=UiStrings().Export, can_shortcuts=True)
|
||||||
self.exportLanguageItem = create_action(main_window, u'exportLanguageItem')
|
self.exportLanguageItem = create_action(main_window, u'exportLanguageItem')
|
||||||
action_list.add_category(UiStrings().View, CategoryOrder.standardMenu)
|
action_list.add_category(UiStrings().View, CategoryOrder.standard_menu)
|
||||||
self.viewMediaManagerItem = create_action(main_window,
|
self.viewMediaManagerItem = create_action(main_window,
|
||||||
u'viewMediaManagerItem', shortcuts=[QtGui.QKeySequence(u'F8')],
|
u'viewMediaManagerItem',
|
||||||
icon=u':/system/system_mediamanager.png',
|
icon=u':/system/system_mediamanager.png',
|
||||||
checked=self.mediaManagerDock.isVisible(),
|
checked=self.mediaManagerDock.isVisible(),
|
||||||
|
can_shortcuts=True,
|
||||||
category=UiStrings().View, triggers=self.toggleMediaManager)
|
category=UiStrings().View, triggers=self.toggleMediaManager)
|
||||||
self.viewThemeManagerItem = create_action(main_window,
|
self.viewThemeManagerItem = create_action(main_window,
|
||||||
u'viewThemeManagerItem', shortcuts=[QtGui.QKeySequence(u'F10')],
|
u'viewThemeManagerItem', can_shortcuts=True,
|
||||||
icon=u':/system/system_thememanager.png',
|
icon=u':/system/system_thememanager.png',
|
||||||
checked=self.themeManagerDock.isVisible(),
|
checked=self.themeManagerDock.isVisible(),
|
||||||
category=UiStrings().View, triggers=self.toggleThemeManager)
|
category=UiStrings().View, triggers=self.toggleThemeManager)
|
||||||
self.viewServiceManagerItem = create_action(main_window,
|
self.viewServiceManagerItem = create_action(main_window,
|
||||||
u'viewServiceManagerItem', shortcuts=[QtGui.QKeySequence(u'F9')],
|
u'viewServiceManagerItem', can_shortcuts=True,
|
||||||
icon=u':/system/system_servicemanager.png',
|
icon=u':/system/system_servicemanager.png',
|
||||||
checked=self.serviceManagerDock.isVisible(),
|
checked=self.serviceManagerDock.isVisible(),
|
||||||
category=UiStrings().View, triggers=self.toggleServiceManager)
|
category=UiStrings().View, triggers=self.toggleServiceManager)
|
||||||
self.viewPreviewPanel = create_action(main_window, u'viewPreviewPanel',
|
self.viewPreviewPanel = create_action(main_window, u'viewPreviewPanel',
|
||||||
shortcuts=[QtGui.QKeySequence(u'F11')], checked=previewVisible,
|
can_shortcuts=True, checked=previewVisible,
|
||||||
category=UiStrings().View, triggers=self.setPreviewPanelVisibility)
|
category=UiStrings().View, triggers=self.setPreviewPanelVisibility)
|
||||||
self.viewLivePanel = create_action(main_window, u'viewLivePanel',
|
self.viewLivePanel = create_action(main_window, u'viewLivePanel',
|
||||||
shortcuts=[QtGui.QKeySequence(u'F12')], checked=liveVisible,
|
can_shortcuts=True, checked=liveVisible,
|
||||||
category=UiStrings().View, triggers=self.setLivePanelVisibility)
|
category=UiStrings().View, triggers=self.setLivePanelVisibility)
|
||||||
self.lockPanel = create_action(main_window, u'lockPanel',
|
self.lockPanel = create_action(main_window, u'lockPanel',
|
||||||
checked=panelLocked, triggers=self.setLockPanel)
|
can_shortcuts=True, checked=panelLocked,
|
||||||
action_list.add_category(UiStrings().ViewMode,
|
category=UiStrings().View,
|
||||||
CategoryOrder.standardMenu)
|
triggers=self.setLockPanel)
|
||||||
self.modeDefaultItem = create_action(main_window, u'modeDefaultItem', checked=False,
|
action_list.add_category(UiStrings().ViewMode, CategoryOrder.standard_menu)
|
||||||
category=UiStrings().ViewMode)
|
self.modeDefaultItem = create_action(
|
||||||
self.modeSetupItem = create_action(main_window, u'modeSetupItem', checked=False, category=UiStrings().ViewMode)
|
main_window, u'modeDefaultItem', checked=False, category=UiStrings().ViewMode, can_shortcuts=True)
|
||||||
self.modeLiveItem = create_action(main_window, u'modeLiveItem', checked=True, category=UiStrings().ViewMode)
|
self.modeSetupItem = create_action(
|
||||||
|
main_window, u'modeSetupItem', checked=False, category=UiStrings().ViewMode, can_shortcuts=True)
|
||||||
|
self.modeLiveItem = create_action(
|
||||||
|
main_window, u'modeLiveItem', checked=True, category=UiStrings().ViewMode, can_shortcuts=True)
|
||||||
self.modeGroup = QtGui.QActionGroup(main_window)
|
self.modeGroup = QtGui.QActionGroup(main_window)
|
||||||
self.modeGroup.addAction(self.modeDefaultItem)
|
self.modeGroup.addAction(self.modeDefaultItem)
|
||||||
self.modeGroup.addAction(self.modeSetupItem)
|
self.modeGroup.addAction(self.modeSetupItem)
|
||||||
self.modeGroup.addAction(self.modeLiveItem)
|
self.modeGroup.addAction(self.modeLiveItem)
|
||||||
self.modeDefaultItem.setChecked(True)
|
self.modeDefaultItem.setChecked(True)
|
||||||
action_list.add_category(UiStrings().Tools, CategoryOrder.standardMenu)
|
action_list.add_category(UiStrings().Tools, CategoryOrder.standard_menu)
|
||||||
self.toolsAddToolItem = create_action(main_window,
|
self.toolsAddToolItem = create_action(main_window,
|
||||||
u'toolsAddToolItem', icon=u':/tools/tools_add.png',
|
u'toolsAddToolItem', icon=u':/tools/tools_add.png', category=UiStrings().Tools, can_shortcuts=True)
|
||||||
category=UiStrings().Tools)
|
|
||||||
self.toolsOpenDataFolder = create_action(main_window,
|
self.toolsOpenDataFolder = create_action(main_window,
|
||||||
u'toolsOpenDataFolder', icon=u':/general/general_open.png',
|
u'toolsOpenDataFolder', icon=u':/general/general_open.png', category=UiStrings().Tools, can_shortcuts=True)
|
||||||
category=UiStrings().Tools)
|
|
||||||
self.toolsFirstTimeWizard = create_action(main_window,
|
self.toolsFirstTimeWizard = create_action(main_window,
|
||||||
u'toolsFirstTimeWizard', icon=u':/general/general_revert.png',
|
u'toolsFirstTimeWizard', icon=u':/general/general_revert.png',
|
||||||
category=UiStrings().Tools)
|
category=UiStrings().Tools, can_shortcuts=True)
|
||||||
self.updateThemeImages = create_action(main_window,
|
self.updateThemeImages = create_action(main_window,
|
||||||
u'updateThemeImages', category=UiStrings().Tools)
|
u'updateThemeImages', category=UiStrings().Tools, can_shortcuts=True)
|
||||||
action_list.add_category(UiStrings().Settings,
|
action_list.add_category(UiStrings().Settings, CategoryOrder.standard_menu)
|
||||||
CategoryOrder.standardMenu)
|
|
||||||
self.settingsPluginListItem = create_action(main_window,
|
self.settingsPluginListItem = create_action(main_window,
|
||||||
u'settingsPluginListItem',
|
u'settingsPluginListItem',
|
||||||
icon=u':/system/settings_plugin_list.png',
|
icon=u':/system/settings_plugin_list.png',
|
||||||
shortcuts=[QtGui.QKeySequence(u'Alt+F7')],
|
can_shortcuts=True,
|
||||||
category=UiStrings().Settings, triggers=self.onPluginItemClicked)
|
category=UiStrings().Settings, triggers=self.onPluginItemClicked)
|
||||||
# i18n Language Items
|
# i18n Language Items
|
||||||
self.autoLanguageItem = create_action(main_window, u'autoLanguageItem',
|
self.autoLanguageItem = create_action(main_window, u'autoLanguageItem', checked=LanguageManager.auto_language)
|
||||||
checked=LanguageManager.auto_language)
|
|
||||||
self.languageGroup = QtGui.QActionGroup(main_window)
|
self.languageGroup = QtGui.QActionGroup(main_window)
|
||||||
self.languageGroup.setExclusive(True)
|
self.languageGroup.setExclusive(True)
|
||||||
self.languageGroup.setObjectName(u'languageGroup')
|
self.languageGroup.setObjectName(u'languageGroup')
|
||||||
@ -277,20 +279,21 @@ class Ui_MainWindow(object):
|
|||||||
languageItem = create_action(main_window, key, checked=qmList[key] == savedLanguage)
|
languageItem = create_action(main_window, key, checked=qmList[key] == savedLanguage)
|
||||||
add_actions(self.languageGroup, [languageItem])
|
add_actions(self.languageGroup, [languageItem])
|
||||||
self.settingsShortcutsItem = create_action(main_window, u'settingsShortcutsItem',
|
self.settingsShortcutsItem = create_action(main_window, u'settingsShortcutsItem',
|
||||||
icon=u':/system/system_configure_shortcuts.png', category=UiStrings().Settings)
|
icon=u':/system/system_configure_shortcuts.png', category=UiStrings().Settings, can_shortcuts=True)
|
||||||
# Formatting Tags were also known as display tags.
|
# Formatting Tags were also known as display tags.
|
||||||
self.formattingTagItem = create_action(main_window, u'displayTagItem',
|
self.formattingTagItem = create_action(main_window, u'displayTagItem',
|
||||||
icon=u':/system/tag_editor.png', category=UiStrings().Settings)
|
icon=u':/system/tag_editor.png', category=UiStrings().Settings, can_shortcuts=True)
|
||||||
self.settingsConfigureItem = create_action(main_window, u'settingsConfigureItem',
|
self.settingsConfigureItem = create_action(main_window, u'settingsConfigureItem',
|
||||||
icon=u':/system/system_settings.png', category=UiStrings().Settings)
|
icon=u':/system/system_settings.png', can_shortcuts=True, category=UiStrings().Settings)
|
||||||
# Give QT Extra Hint that this is the Preferences Menu Item
|
# Give QT Extra Hint that this is the Preferences Menu Item
|
||||||
self.settingsConfigureItem.setMenuRole(QtGui.QAction.PreferencesRole)
|
self.settingsConfigureItem.setMenuRole(QtGui.QAction.PreferencesRole)
|
||||||
self.settingsImportItem = create_action(main_window, u'settingsImportItem', category=UiStrings().Settings)
|
self.settingsImportItem = create_action(
|
||||||
self.settingsExportItem = create_action(main_window, u'settingsExportItem', category=UiStrings().Settings)
|
main_window, u'settingsImportItem', category=UiStrings().Import, can_shortcuts=True)
|
||||||
action_list.add_category(UiStrings().Help, CategoryOrder.standardMenu)
|
self.settingsExportItem = create_action(
|
||||||
|
main_window, u'settingsExportItem', category=UiStrings().Export, can_shortcuts=True)
|
||||||
|
action_list.add_category(UiStrings().Help, CategoryOrder.standard_menu)
|
||||||
self.aboutItem = create_action(main_window, u'aboutItem', icon=u':/system/system_about.png',
|
self.aboutItem = create_action(main_window, u'aboutItem', icon=u':/system/system_about.png',
|
||||||
shortcuts=[QtGui.QKeySequence(u'Ctrl+F1')],
|
can_shortcuts=True, category=UiStrings().Help, triggers=self.onAboutItemClicked)
|
||||||
category=UiStrings().Help, triggers=self.onAboutItemClicked)
|
|
||||||
# Give QT Extra Hint that this is an About Menu Item
|
# Give QT Extra Hint that this is an About Menu Item
|
||||||
self.aboutItem.setMenuRole(QtGui.QAction.AboutRole)
|
self.aboutItem.setMenuRole(QtGui.QAction.AboutRole)
|
||||||
if os.name == u'nt':
|
if os.name == u'nt':
|
||||||
@ -298,13 +301,13 @@ class Ui_MainWindow(object):
|
|||||||
AppLocation.get_directory(AppLocation.AppDir), 'OpenLP.chm')
|
AppLocation.get_directory(AppLocation.AppDir), 'OpenLP.chm')
|
||||||
self.offlineHelpItem = create_action(main_window, u'offlineHelpItem',
|
self.offlineHelpItem = create_action(main_window, u'offlineHelpItem',
|
||||||
icon=u':/system/system_help_contents.png',
|
icon=u':/system/system_help_contents.png',
|
||||||
shortcuts=[QtGui.QKeySequence(u'F1')],
|
can_shortcuts=True,
|
||||||
category=UiStrings().Help, triggers=self.onOfflineHelpClicked)
|
category=UiStrings().Help, triggers=self.onOfflineHelpClicked)
|
||||||
self.onlineHelpItem = create_action(main_window, u'onlineHelpItem',
|
self.onlineHelpItem = create_action(main_window, u'onlineHelpItem',
|
||||||
icon=u':/system/system_online_help.png',
|
icon=u':/system/system_online_help.png',
|
||||||
shortcuts=[QtGui.QKeySequence(u'Alt+F1')],
|
can_shortcuts=True,
|
||||||
category=UiStrings().Help, triggers=self.onOnlineHelpClicked)
|
category=UiStrings().Help, triggers=self.onOnlineHelpClicked)
|
||||||
self.webSiteItem = create_action(main_window, u'webSiteItem', category=UiStrings().Help)
|
self.webSiteItem = create_action(main_window, u'webSiteItem', can_shortcuts=True, category=UiStrings().Help)
|
||||||
add_actions(self.fileImportMenu, (self.settingsImportItem, None, self.importThemeItem, self.importLanguageItem))
|
add_actions(self.fileImportMenu, (self.settingsImportItem, None, self.importThemeItem, self.importLanguageItem))
|
||||||
add_actions(self.fileExportMenu, (self.settingsExportItem, None, self.exportThemeItem, self.exportLanguageItem))
|
add_actions(self.fileExportMenu, (self.settingsExportItem, None, self.exportThemeItem, self.exportLanguageItem))
|
||||||
add_actions(self.fileMenu, (self.fileNewItem, self.fileOpenItem,
|
add_actions(self.fileMenu, (self.fileNewItem, self.fileOpenItem,
|
||||||
@ -1349,7 +1352,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
self.version_text)
|
self.version_text)
|
||||||
else:
|
else:
|
||||||
# the thread has not confirmed it is running or it has not yet sent any data so lets keep waiting
|
# the thread has not confirmed it is running or it has not yet sent any data so lets keep waiting
|
||||||
if not hasattr(self,u'version_update_running') or self.version_update_running:
|
if not hasattr(self, u'version_update_running') or self.version_update_running:
|
||||||
self.timer_version_id = self.startTimer(1000)
|
self.timer_version_id = self.startTimer(1000)
|
||||||
self.application.process_events()
|
self.application.process_events()
|
||||||
|
|
||||||
|
@ -152,52 +152,52 @@ class ServiceManagerDialog(object):
|
|||||||
# Add the bottom toolbar
|
# Add the bottom toolbar
|
||||||
self.order_toolbar = OpenLPToolbar(self)
|
self.order_toolbar = OpenLPToolbar(self)
|
||||||
action_list = ActionList.get_instance()
|
action_list = ActionList.get_instance()
|
||||||
action_list.add_category(UiStrings().Service, CategoryOrder.standardToolbar)
|
action_list.add_category(UiStrings().Service, CategoryOrder.standard_toolbar)
|
||||||
self.service_manager_list.moveTop = self.order_toolbar.addToolbarAction(u'moveTop',
|
self.service_manager_list.moveTop = self.order_toolbar.addToolbarAction(u'moveTop',
|
||||||
text=translate('OpenLP.ServiceManager', 'Move to &top'), icon=u':/services/service_top.png',
|
text=translate('OpenLP.ServiceManager', 'Move to &top'), icon=u':/services/service_top.png',
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Move item to the top of the service.'),
|
tooltip=translate('OpenLP.ServiceManager', 'Move item to the top of the service.'),
|
||||||
shortcuts=[QtCore.Qt.Key_Home], category=UiStrings().Service, triggers=self.onServiceTop)
|
can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceTop)
|
||||||
self.service_manager_list.moveUp = self.order_toolbar.addToolbarAction(u'moveUp',
|
self.service_manager_list.moveUp = self.order_toolbar.addToolbarAction(u'moveUp',
|
||||||
text=translate('OpenLP.ServiceManager', 'Move &up'), icon=u':/services/service_up.png',
|
text=translate('OpenLP.ServiceManager', 'Move &up'), icon=u':/services/service_up.png',
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Move item up one position in the service.'),
|
tooltip=translate('OpenLP.ServiceManager', 'Move item up one position in the service.'),
|
||||||
shortcuts=[QtCore.Qt.Key_PageUp], category=UiStrings().Service, triggers=self.onServiceUp)
|
can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceUp)
|
||||||
self.service_manager_list.moveDown = self.order_toolbar.addToolbarAction(u'moveDown',
|
self.service_manager_list.moveDown = self.order_toolbar.addToolbarAction(u'moveDown',
|
||||||
text=translate('OpenLP.ServiceManager', 'Move &down'), icon=u':/services/service_down.png',
|
text=translate('OpenLP.ServiceManager', 'Move &down'), icon=u':/services/service_down.png',
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Move item down one position in the service.'),
|
tooltip=translate('OpenLP.ServiceManager', 'Move item down one position in the service.'),
|
||||||
shortcuts=[QtCore.Qt.Key_PageDown], category=UiStrings().Service, triggers=self.onServiceDown)
|
can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceDown)
|
||||||
self.service_manager_list.moveBottom = self.order_toolbar.addToolbarAction(u'moveBottom',
|
self.service_manager_list.moveBottom = self.order_toolbar.addToolbarAction(u'moveBottom',
|
||||||
text=translate('OpenLP.ServiceManager', 'Move to &bottom'), icon=u':/services/service_bottom.png',
|
text=translate('OpenLP.ServiceManager', 'Move to &bottom'), icon=u':/services/service_bottom.png',
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Move item to the end of the service.'),
|
tooltip=translate('OpenLP.ServiceManager', 'Move item to the end of the service.'),
|
||||||
shortcuts=[QtCore.Qt.Key_End], category=UiStrings().Service, triggers=self.onServiceEnd)
|
can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceEnd)
|
||||||
self.service_manager_list.down = self.order_toolbar.addToolbarAction(u'down',
|
self.service_manager_list.down = self.order_toolbar.addToolbarAction(u'down',
|
||||||
text=translate('OpenLP.ServiceManager', 'Move &down'),
|
text=translate('OpenLP.ServiceManager', 'Move &down'), can_shortcuts=True,
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Moves the selection down the window.'), visible=False,
|
tooltip=translate('OpenLP.ServiceManager', 'Moves the selection down the window.'), visible=False,
|
||||||
shortcuts=[QtCore.Qt.Key_Down], triggers=self.on_move_selection_down)
|
triggers=self.on_move_selection_down)
|
||||||
action_list.add_action(self.service_manager_list.down)
|
action_list.add_action(self.service_manager_list.down)
|
||||||
self.service_manager_list.up = self.order_toolbar.addToolbarAction(u'up',
|
self.service_manager_list.up = self.order_toolbar.addToolbarAction(u'up',
|
||||||
text=translate('OpenLP.ServiceManager', 'Move up'), tooltip=translate('OpenLP.ServiceManager',
|
text=translate('OpenLP.ServiceManager', 'Move up'), can_shortcuts=True,
|
||||||
'Moves the selection up the window.'), visible=False, shortcuts=[QtCore.Qt.Key_Up],
|
tooltip=translate('OpenLP.ServiceManager', 'Moves the selection up the window.'), visible=False,
|
||||||
triggers=self.on_move_selection_up)
|
triggers=self.on_move_selection_up)
|
||||||
action_list.add_action(self.service_manager_list.up)
|
action_list.add_action(self.service_manager_list.up)
|
||||||
self.order_toolbar.addSeparator()
|
self.order_toolbar.addSeparator()
|
||||||
self.service_manager_list.delete = self.order_toolbar.addToolbarAction(u'delete',
|
self.service_manager_list.delete = self.order_toolbar.addToolbarAction(u'delete', can_shortcuts=True,
|
||||||
text=translate('OpenLP.ServiceManager', '&Delete From Service'), icon=u':/general/general_delete.png',
|
text=translate('OpenLP.ServiceManager', '&Delete From Service'), icon=u':/general/general_delete.png',
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Delete the selected item from the service.'),
|
tooltip=translate('OpenLP.ServiceManager', 'Delete the selected item from the service.'),
|
||||||
shortcuts=[QtCore.Qt.Key_Delete], triggers=self.onDeleteFromService)
|
triggers=self.onDeleteFromService)
|
||||||
self.order_toolbar.addSeparator()
|
self.order_toolbar.addSeparator()
|
||||||
self.service_manager_list.expand = self.order_toolbar.addToolbarAction(u'expand',
|
self.service_manager_list.expand = self.order_toolbar.addToolbarAction(u'expand', can_shortcuts=True,
|
||||||
text=translate('OpenLP.ServiceManager', '&Expand all'), icon=u':/services/service_expand_all.png',
|
text=translate('OpenLP.ServiceManager', '&Expand all'), icon=u':/services/service_expand_all.png',
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Expand all the service items.'),
|
tooltip=translate('OpenLP.ServiceManager', 'Expand all the service items.'),
|
||||||
shortcuts=[QtCore.Qt.Key_Plus], category=UiStrings().Service, triggers=self.onExpandAll)
|
category=UiStrings().Service, triggers=self.onExpandAll)
|
||||||
self.service_manager_list.collapse = self.order_toolbar.addToolbarAction(u'collapse',
|
self.service_manager_list.collapse = self.order_toolbar.addToolbarAction(u'collapse', can_shortcuts=True,
|
||||||
text=translate('OpenLP.ServiceManager', '&Collapse all'), icon=u':/services/service_collapse_all.png',
|
text=translate('OpenLP.ServiceManager', '&Collapse all'), icon=u':/services/service_collapse_all.png',
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Collapse all the service items.'),
|
tooltip=translate('OpenLP.ServiceManager', 'Collapse all the service items.'),
|
||||||
shortcuts=[QtCore.Qt.Key_Minus], category=UiStrings().Service, triggers=self.onCollapseAll)
|
category=UiStrings().Service, triggers=self.onCollapseAll)
|
||||||
self.order_toolbar.addSeparator()
|
self.order_toolbar.addSeparator()
|
||||||
self.service_manager_list.make_live = self.order_toolbar.addToolbarAction(u'make_live',
|
self.service_manager_list.make_live = self.order_toolbar.addToolbarAction(u'make_live', can_shortcuts=True,
|
||||||
text=translate('OpenLP.ServiceManager', 'Go Live'), icon=u':/general/general_live.png',
|
text=translate('OpenLP.ServiceManager', 'Go Live'), icon=u':/general/general_live.png',
|
||||||
tooltip=translate('OpenLP.ServiceManager', 'Send the selected item to Live.'),
|
tooltip=translate('OpenLP.ServiceManager', 'Send the selected item to Live.'),
|
||||||
shortcuts=[QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return], category=UiStrings().Service,
|
category=UiStrings().Service,
|
||||||
triggers=self.make_live)
|
triggers=self.make_live)
|
||||||
self.layout.addWidget(self.order_toolbar)
|
self.layout.addWidget(self.order_toolbar)
|
||||||
# Connect up our signals and slots
|
# Connect up our signals and slots
|
||||||
|
@ -56,8 +56,8 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
self.changedActions = {}
|
self.changedActions = {}
|
||||||
self.action_list = ActionList.get_instance()
|
self.action_list = ActionList.get_instance()
|
||||||
QtCore.QObject.connect(self.primaryPushButton, QtCore.SIGNAL(u'toggled(bool)'),
|
self.dialog_was_shown = False
|
||||||
self.onPrimaryPushButtonClicked)
|
QtCore.QObject.connect(self.primaryPushButton, QtCore.SIGNAL(u'toggled(bool)'), self.onPrimaryPushButtonClicked)
|
||||||
QtCore.QObject.connect(self.alternatePushButton, QtCore.SIGNAL(u'toggled(bool)'),
|
QtCore.QObject.connect(self.alternatePushButton, QtCore.SIGNAL(u'toggled(bool)'),
|
||||||
self.onAlternatePushButtonClicked)
|
self.onAlternatePushButtonClicked)
|
||||||
QtCore.QObject.connect(self.treeWidget,
|
QtCore.QObject.connect(self.treeWidget,
|
||||||
@ -72,8 +72,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
self.onRestoreDefaultsClicked)
|
self.onRestoreDefaultsClicked)
|
||||||
QtCore.QObject.connect(self.defaultRadioButton, QtCore.SIGNAL(u'clicked(bool)'),
|
QtCore.QObject.connect(self.defaultRadioButton, QtCore.SIGNAL(u'clicked(bool)'),
|
||||||
self.onDefaultRadioButtonClicked)
|
self.onDefaultRadioButtonClicked)
|
||||||
QtCore.QObject.connect(self.customRadioButton, QtCore.SIGNAL(u'clicked(bool)'),
|
QtCore.QObject.connect(self.customRadioButton, QtCore.SIGNAL(u'clicked(bool)'), self.onCustomRadioButtonClicked)
|
||||||
self.onCustomRadioButtonClicked)
|
|
||||||
|
|
||||||
def keyPressEvent(self, event):
|
def keyPressEvent(self, event):
|
||||||
"""
|
"""
|
||||||
@ -93,9 +92,12 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
"""
|
"""
|
||||||
if not self.primaryPushButton.isChecked() and not self.alternatePushButton.isChecked():
|
if not self.primaryPushButton.isChecked() and not self.alternatePushButton.isChecked():
|
||||||
return
|
return
|
||||||
|
# Do not continue, as the event is for the dialog (close it).
|
||||||
|
if self.dialog_was_shown and event.key() in (QtCore.Qt.Key_Escape, QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return):
|
||||||
|
self.dialog_was_shown = False
|
||||||
|
return
|
||||||
key = event.key()
|
key = event.key()
|
||||||
if key == QtCore.Qt.Key_Shift or key == QtCore.Qt.Key_Control or \
|
if key in (QtCore.Qt.Key_Shift, QtCore.Qt.Key_Control, QtCore.Qt.Key_Meta, QtCore.Qt.Key_Alt):
|
||||||
key == QtCore.Qt.Key_Meta or key == QtCore.Qt.Key_Alt:
|
|
||||||
return
|
return
|
||||||
key_string = QtGui.QKeySequence(key).toString()
|
key_string = QtGui.QKeySequence(key).toString()
|
||||||
if event.modifiers() & QtCore.Qt.ControlModifier == QtCore.Qt.ControlModifier:
|
if event.modifiers() & QtCore.Qt.ControlModifier == QtCore.Qt.ControlModifier:
|
||||||
@ -109,11 +111,9 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
key_sequence = QtGui.QKeySequence(key_string)
|
key_sequence = QtGui.QKeySequence(key_string)
|
||||||
if self._validiate_shortcut(self._currentItemAction(), key_sequence):
|
if self._validiate_shortcut(self._currentItemAction(), key_sequence):
|
||||||
if self.primaryPushButton.isChecked():
|
if self.primaryPushButton.isChecked():
|
||||||
self._adjustButton(self.primaryPushButton,
|
self._adjustButton(self.primaryPushButton, False, text=key_sequence.toString())
|
||||||
False, text=key_sequence.toString())
|
|
||||||
elif self.alternatePushButton.isChecked():
|
elif self.alternatePushButton.isChecked():
|
||||||
self._adjustButton(self.alternatePushButton,
|
self._adjustButton(self.alternatePushButton, False, text=key_sequence.toString())
|
||||||
False, text=key_sequence.toString())
|
|
||||||
|
|
||||||
def exec_(self):
|
def exec_(self):
|
||||||
"""
|
"""
|
||||||
@ -147,8 +147,8 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
|
|
||||||
def refreshShortcutList(self):
|
def refreshShortcutList(self):
|
||||||
"""
|
"""
|
||||||
This refreshes the item's shortcuts shown in the list. Note, this
|
This refreshes the item's shortcuts shown in the list. Note, this neither adds new actions nor removes old
|
||||||
neither adds new actions nor removes old actions.
|
actions.
|
||||||
"""
|
"""
|
||||||
iterator = QtGui.QTreeWidgetItemIterator(self.treeWidget)
|
iterator = QtGui.QTreeWidgetItemIterator(self.treeWidget)
|
||||||
while iterator.value():
|
while iterator.value():
|
||||||
@ -204,21 +204,19 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
new_shortcuts = []
|
new_shortcuts = []
|
||||||
if shortcuts:
|
if shortcuts:
|
||||||
new_shortcuts.append(shortcuts[0])
|
new_shortcuts.append(shortcuts[0])
|
||||||
new_shortcuts.append(
|
new_shortcuts.append(QtGui.QKeySequence(self.alternatePushButton.text()))
|
||||||
QtGui.QKeySequence(self.alternatePushButton.text()))
|
|
||||||
self.changedActions[action] = new_shortcuts
|
self.changedActions[action] = new_shortcuts
|
||||||
if not self.primaryPushButton.text():
|
if not self.primaryPushButton.text():
|
||||||
# When we do not have a primary shortcut, the just entered alternate
|
# When we do not have a primary shortcut, the just entered alternate shortcut will automatically become the
|
||||||
# shortcut will automatically become the primary shortcut. That is
|
# primary shortcut. That is why we have to adjust the primary button's text.
|
||||||
# why we have to adjust the primary button's text.
|
|
||||||
self.primaryPushButton.setText(self.alternatePushButton.text())
|
self.primaryPushButton.setText(self.alternatePushButton.text())
|
||||||
self.alternatePushButton.setText(u'')
|
self.alternatePushButton.setText(u'')
|
||||||
self.refreshShortcutList()
|
self.refreshShortcutList()
|
||||||
|
|
||||||
def onItemDoubleClicked(self, item, column):
|
def onItemDoubleClicked(self, item, column):
|
||||||
"""
|
"""
|
||||||
A item has been double clicked. The ``primaryPushButton`` will be
|
A item has been double clicked. The ``primaryPushButton`` will be checked and the item's shortcut will be
|
||||||
checked and the item's shortcut will be displayed.
|
displayed.
|
||||||
"""
|
"""
|
||||||
action = self._currentItemAction(item)
|
action = self._currentItemAction(item)
|
||||||
if action is None:
|
if action is None:
|
||||||
@ -234,8 +232,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
|
|
||||||
def onCurrentItemChanged(self, item=None, previousItem=None):
|
def onCurrentItemChanged(self, item=None, previousItem=None):
|
||||||
"""
|
"""
|
||||||
A item has been pressed. We adjust the button's text to the action's
|
A item has been pressed. We adjust the button's text to the action's shortcut which is encapsulate in the item.
|
||||||
shortcut which is encapsulate in the item.
|
|
||||||
"""
|
"""
|
||||||
action = self._currentItemAction(item)
|
action = self._currentItemAction(item)
|
||||||
self.primaryPushButton.setEnabled(action is not None)
|
self.primaryPushButton.setEnabled(action is not None)
|
||||||
@ -253,9 +250,8 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
if len(action.defaultShortcuts) == 2:
|
if len(action.defaultShortcuts) == 2:
|
||||||
alternate_label_text = action.defaultShortcuts[1].toString()
|
alternate_label_text = action.defaultShortcuts[1].toString()
|
||||||
shortcuts = self._actionShortcuts(action)
|
shortcuts = self._actionShortcuts(action)
|
||||||
# We do not want to loose pending changes, that is why we have to
|
# We do not want to loose pending changes, that is why we have to keep the text when, this function has not
|
||||||
# keep the text when, this function has not been triggered by a
|
# been triggered by a signal.
|
||||||
# signal.
|
|
||||||
if item is None:
|
if item is None:
|
||||||
primary_text = self.primaryPushButton.text()
|
primary_text = self.primaryPushButton.text()
|
||||||
alternate_text = self.alternatePushButton.text()
|
alternate_text = self.alternatePushButton.text()
|
||||||
@ -264,8 +260,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
elif len(shortcuts) == 2:
|
elif len(shortcuts) == 2:
|
||||||
primary_text = shortcuts[0].toString()
|
primary_text = shortcuts[0].toString()
|
||||||
alternate_text = shortcuts[1].toString()
|
alternate_text = shortcuts[1].toString()
|
||||||
# When we are capturing a new shortcut, we do not want, the buttons to
|
# When we are capturing a new shortcut, we do not want, the buttons to display the current shortcut.
|
||||||
# display the current shortcut.
|
|
||||||
if self.primaryPushButton.isChecked():
|
if self.primaryPushButton.isChecked():
|
||||||
primary_text = u''
|
primary_text = u''
|
||||||
if self.alternatePushButton.isChecked():
|
if self.alternatePushButton.isChecked():
|
||||||
@ -274,8 +269,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
self.alternatePushButton.setText(alternate_text)
|
self.alternatePushButton.setText(alternate_text)
|
||||||
self.primaryLabel.setText(primary_label_text)
|
self.primaryLabel.setText(primary_label_text)
|
||||||
self.alternateLabel.setText(alternate_label_text)
|
self.alternateLabel.setText(alternate_label_text)
|
||||||
# We do not want to toggle and radio button, as the function has not
|
# We do not want to toggle and radio button, as the function has not been triggered by a signal.
|
||||||
# been triggered by a signal.
|
|
||||||
if item is None:
|
if item is None:
|
||||||
return
|
return
|
||||||
if primary_label_text == primary_text and alternate_label_text == alternate_text:
|
if primary_label_text == primary_text and alternate_label_text == alternate_text:
|
||||||
@ -303,8 +297,8 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
|
|
||||||
def onDefaultRadioButtonClicked(self, toggled):
|
def onDefaultRadioButtonClicked(self, toggled):
|
||||||
"""
|
"""
|
||||||
The default radio button has been clicked, which means we have to make
|
The default radio button has been clicked, which means we have to make sure, that we use the default shortcuts
|
||||||
sure, that we use the default shortcuts for the action.
|
for the action.
|
||||||
"""
|
"""
|
||||||
if not toggled:
|
if not toggled:
|
||||||
return
|
return
|
||||||
@ -325,9 +319,8 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
|
|
||||||
def onCustomRadioButtonClicked(self, toggled):
|
def onCustomRadioButtonClicked(self, toggled):
|
||||||
"""
|
"""
|
||||||
The custom shortcut radio button was clicked, thus we have to restore
|
The custom shortcut radio button was clicked, thus we have to restore the custom shortcuts by calling those
|
||||||
the custom shortcuts by calling those functions triggered by button
|
functions triggered by button clicks.
|
||||||
clicks.
|
|
||||||
"""
|
"""
|
||||||
if not toggled:
|
if not toggled:
|
||||||
return
|
return
|
||||||
@ -337,8 +330,8 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
"""
|
"""
|
||||||
Save the shortcuts. **Note**, that we do not have to load the shortcuts,
|
Save the shortcuts. **Note**, that we do not have to load the shortcuts, as they are loaded in
|
||||||
as they are loaded in :class:`~openlp.core.utils.ActionList`.
|
:class:`~openlp.core.utils.ActionList`.
|
||||||
"""
|
"""
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
settings.beginGroup(u'shortcuts')
|
settings.beginGroup(u'shortcuts')
|
||||||
@ -348,8 +341,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
continue
|
continue
|
||||||
for action in category.actions:
|
for action in category.actions:
|
||||||
if action in self.changedActions:
|
if action in self.changedActions:
|
||||||
old_shortcuts = map(unicode,
|
old_shortcuts = map(QtGui.QKeySequence.toString, action.shortcuts())
|
||||||
map(QtGui.QKeySequence.toString, action.shortcuts()))
|
|
||||||
action.setShortcuts(self.changedActions[action])
|
action.setShortcuts(self.changedActions[action])
|
||||||
self.action_list.update_shortcut_map(action, old_shortcuts)
|
self.action_list.update_shortcut_map(action, old_shortcuts)
|
||||||
settings.setValue(action.objectName(), action.shortcuts())
|
settings.setValue(action.objectName(), action.shortcuts())
|
||||||
@ -367,13 +359,10 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
new_shortcuts = []
|
new_shortcuts = []
|
||||||
if action.defaultShortcuts:
|
if action.defaultShortcuts:
|
||||||
new_shortcuts.append(action.defaultShortcuts[0])
|
new_shortcuts.append(action.defaultShortcuts[0])
|
||||||
# We have to check if the primary default shortcut is available. But
|
# We have to check if the primary default shortcut is available. But we only have to check, if the action
|
||||||
# we only have to check, if the action has a default primary
|
# has a default primary shortcut (an "empty" shortcut is always valid and if the action does not have a
|
||||||
# shortcut (an "empty" shortcut is always valid and if the action
|
# default primary shortcut, then the alternative shortcut (not the default one) will become primary
|
||||||
# does not have a default primary shortcut, then the alternative
|
# shortcut, thus the check will assume that an action were going to have the same shortcut twice.
|
||||||
# shortcut (not the default one) will become primary shortcut, thus
|
|
||||||
# the check will assume that an action were going to have the same
|
|
||||||
# shortcut twice.
|
|
||||||
if not self._validiate_shortcut(action, new_shortcuts[0]) and new_shortcuts[0] != shortcuts[0]:
|
if not self._validiate_shortcut(action, new_shortcuts[0]) and new_shortcuts[0] != shortcuts[0]:
|
||||||
return
|
return
|
||||||
if len(shortcuts) == 2:
|
if len(shortcuts) == 2:
|
||||||
@ -405,9 +394,8 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
|
|
||||||
def _validiate_shortcut(self, changing_action, key_sequence):
|
def _validiate_shortcut(self, changing_action, key_sequence):
|
||||||
"""
|
"""
|
||||||
Checks if the given ``changing_action `` can use the given
|
Checks if the given ``changing_action `` can use the given ``key_sequence``. Returns ``True`` if the
|
||||||
``key_sequence``. Returns ``True`` if the ``key_sequence`` can be used
|
``key_sequence`` can be used by the action, otherwise displays a dialog and returns ``False``.
|
||||||
by the action, otherwise displays a dialog and returns ``False``.
|
|
||||||
|
|
||||||
``changing_action``
|
``changing_action``
|
||||||
The action which wants to use the ``key_sequence``.
|
The action which wants to use the ``key_sequence``.
|
||||||
@ -429,27 +417,25 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
# Have the same parent, thus they cannot have the same shortcut.
|
# Have the same parent, thus they cannot have the same shortcut.
|
||||||
if action.parent() is changing_action.parent():
|
if action.parent() is changing_action.parent():
|
||||||
is_valid = False
|
is_valid = False
|
||||||
# The new shortcut is already assigned, but if both shortcuts
|
# The new shortcut is already assigned, but if both shortcuts are only valid in a different widget the
|
||||||
# are only valid in a different widget the new shortcut is
|
# new shortcut is vaild, because they will not interfere.
|
||||||
# vaild, because they will not interfere.
|
if action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]:
|
||||||
if action.shortcutContext() in [QtCore.Qt.WindowShortcut,
|
|
||||||
QtCore.Qt.ApplicationShortcut]:
|
|
||||||
is_valid = False
|
is_valid = False
|
||||||
if changing_action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]:
|
if changing_action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]:
|
||||||
is_valid = False
|
is_valid = False
|
||||||
if not is_valid:
|
if not is_valid:
|
||||||
self.main_window.warning_message( translate('OpenLP.ShortcutListDialog', 'Duplicate Shortcut'),
|
self.main_window.warning_message(translate('OpenLP.ShortcutListDialog', 'Duplicate Shortcut'),
|
||||||
translate('OpenLP.ShortcutListDialog',
|
translate('OpenLP.ShortcutListDialog',
|
||||||
'The shortcut "%s" is already assigned to another action, please use a different shortcut.') %
|
'The shortcut "%s" is already assigned to another action, please use a different shortcut.') %
|
||||||
key_sequence.toString()
|
key_sequence.toString()
|
||||||
)
|
)
|
||||||
|
self.dialog_was_shown = True
|
||||||
return is_valid
|
return is_valid
|
||||||
|
|
||||||
def _actionShortcuts(self, action):
|
def _actionShortcuts(self, action):
|
||||||
"""
|
"""
|
||||||
This returns the shortcuts for the given ``action``, which also includes
|
This returns the shortcuts for the given ``action``, which also includes those shortcuts which are not saved
|
||||||
those shortcuts which are not saved yet but already assigned (as changes
|
yet but already assigned (as changes yre applied when closing the dialog).
|
||||||
are applied when closing the dialog).
|
|
||||||
"""
|
"""
|
||||||
if action in self.changedActions:
|
if action in self.changedActions:
|
||||||
return self.changedActions[action]
|
return self.changedActions[action]
|
||||||
@ -457,8 +443,8 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
|
|
||||||
def _currentItemAction(self, item=None):
|
def _currentItemAction(self, item=None):
|
||||||
"""
|
"""
|
||||||
Returns the action of the given ``item``. If no item is given, we return
|
Returns the action of the given ``item``. If no item is given, we return the action of the current item of
|
||||||
the action of the current item of the ``treeWidget``.
|
the ``treeWidget``.
|
||||||
"""
|
"""
|
||||||
if item is None:
|
if item is None:
|
||||||
item = self.treeWidget.currentItem()
|
item = self.treeWidget.currentItem()
|
||||||
@ -486,4 +472,5 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
self._main_window = Registry().get(u'main_window')
|
self._main_window = Registry().get(u'main_window')
|
||||||
return self._main_window
|
return self._main_window
|
||||||
|
|
||||||
main_window = property(_get_main_window)
|
main_window = property(_get_main_window)
|
||||||
|
|
||||||
|
@ -44,6 +44,14 @@ from openlp.core.utils.actions import ActionList, CategoryOrder
|
|||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
AUDIO_TIME_LABEL_STYLESHEET = u'background-color: palette(background); ' \
|
||||||
|
u'border-top-color: palette(shadow); ' \
|
||||||
|
u'border-left-color: palette(shadow); ' \
|
||||||
|
u'border-bottom-color: palette(light); ' \
|
||||||
|
u'border-right-color: palette(light); ' \
|
||||||
|
u'border-radius: 3px; border-style: inset; ' \
|
||||||
|
u'border-width: 1; font-family: monospace; margin: 2px;'
|
||||||
|
|
||||||
|
|
||||||
class DisplayController(QtGui.QWidget):
|
class DisplayController(QtGui.QWidget):
|
||||||
"""
|
"""
|
||||||
@ -123,7 +131,7 @@ class SlideController(DisplayController):
|
|||||||
self.keypress_queue = deque()
|
self.keypress_queue = deque()
|
||||||
self.keypress_loop = False
|
self.keypress_loop = False
|
||||||
self.category = UiStrings().LiveToolbar
|
self.category = UiStrings().LiveToolbar
|
||||||
ActionList.get_instance().add_category(unicode(self.category), CategoryOrder.standardToolbar)
|
ActionList.get_instance().add_category(unicode(self.category), CategoryOrder.standard_toolbar)
|
||||||
else:
|
else:
|
||||||
Registry().register(u'preview_controller', self)
|
Registry().register(u'preview_controller', self)
|
||||||
self.typeLabel.setText(UiStrings().Preview)
|
self.typeLabel.setText(UiStrings().Preview)
|
||||||
@ -167,13 +175,13 @@ class SlideController(DisplayController):
|
|||||||
self.previousItem = create_action(self, u'previousItem_' + self.typePrefix,
|
self.previousItem = create_action(self, u'previousItem_' + self.typePrefix,
|
||||||
text=translate('OpenLP.SlideController', 'Previous Slide'), icon=u':/slides/slide_previous.png',
|
text=translate('OpenLP.SlideController', 'Previous Slide'), icon=u':/slides/slide_previous.png',
|
||||||
tooltip=translate('OpenLP.SlideController', 'Move to previous.'),
|
tooltip=translate('OpenLP.SlideController', 'Move to previous.'),
|
||||||
shortcuts=[QtCore.Qt.Key_Up, QtCore.Qt.Key_PageUp], context=QtCore.Qt.WidgetWithChildrenShortcut,
|
can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut,
|
||||||
category=self.category, triggers=self.on_slide_selected_previous)
|
category=self.category, triggers=self.on_slide_selected_previous)
|
||||||
self.toolbar.addAction(self.previousItem)
|
self.toolbar.addAction(self.previousItem)
|
||||||
self.nextItem = create_action(self, u'nextItem_' + self.typePrefix,
|
self.nextItem = create_action(self, u'nextItem_' + self.typePrefix,
|
||||||
text=translate('OpenLP.SlideController', 'Next Slide'), icon=u':/slides/slide_next.png',
|
text=translate('OpenLP.SlideController', 'Next Slide'), icon=u':/slides/slide_next.png',
|
||||||
tooltip=translate('OpenLP.SlideController', 'Move to next.'),
|
tooltip=translate('OpenLP.SlideController', 'Move to next.'),
|
||||||
shortcuts=[QtCore.Qt.Key_Down, QtCore.Qt.Key_PageDown], context=QtCore.Qt.WidgetWithChildrenShortcut,
|
can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut,
|
||||||
category=self.category, triggers=self.on_slide_selected_next_action)
|
category=self.category, triggers=self.on_slide_selected_next_action)
|
||||||
self.toolbar.addAction(self.nextItem)
|
self.toolbar.addAction(self.nextItem)
|
||||||
self.toolbar.addSeparator()
|
self.toolbar.addSeparator()
|
||||||
@ -189,14 +197,14 @@ class SlideController(DisplayController):
|
|||||||
self.toolbar.addToolbarWidget(self.hideMenu)
|
self.toolbar.addToolbarWidget(self.hideMenu)
|
||||||
self.blankScreen = create_action(self, u'blankScreen',
|
self.blankScreen = create_action(self, u'blankScreen',
|
||||||
text=translate('OpenLP.SlideController', 'Blank Screen'), icon=u':/slides/slide_blank.png',
|
text=translate('OpenLP.SlideController', 'Blank Screen'), icon=u':/slides/slide_blank.png',
|
||||||
checked=False, shortcuts=[QtCore.Qt.Key_Period], category=self.category, triggers=self.onBlankDisplay)
|
checked=False, can_shortcuts=True, category=self.category, triggers=self.onBlankDisplay)
|
||||||
self.themeScreen = create_action(self, u'themeScreen',
|
self.themeScreen = create_action(self, u'themeScreen',
|
||||||
text=translate('OpenLP.SlideController', 'Blank to Theme'), icon=u':/slides/slide_theme.png',
|
text=translate('OpenLP.SlideController', 'Blank to Theme'), icon=u':/slides/slide_theme.png',
|
||||||
checked=False, shortcuts=[QtGui.QKeySequence(u'T')], category=self.category,
|
checked=False, can_shortcuts=True, category=self.category,
|
||||||
triggers=self.onThemeDisplay)
|
triggers=self.onThemeDisplay)
|
||||||
self.desktopScreen = create_action(self, u'desktopScreen',
|
self.desktopScreen = create_action(self, u'desktopScreen',
|
||||||
text=translate('OpenLP.SlideController', 'Show Desktop'), icon=u':/slides/slide_desktop.png',
|
text=translate('OpenLP.SlideController', 'Show Desktop'), icon=u':/slides/slide_desktop.png',
|
||||||
checked=False, shortcuts=[QtGui.QKeySequence(u'D')], category=self.category,
|
checked=False, can_shortcuts=True, category=self.category,
|
||||||
triggers=self.onHideDisplay)
|
triggers=self.onHideDisplay)
|
||||||
self.hideMenu.setDefaultAction(self.blankScreen)
|
self.hideMenu.setDefaultAction(self.blankScreen)
|
||||||
self.hideMenu.menu().addAction(self.blankScreen)
|
self.hideMenu.menu().addAction(self.blankScreen)
|
||||||
@ -224,10 +232,10 @@ class SlideController(DisplayController):
|
|||||||
self.playSlidesMenu.setMenu(QtGui.QMenu(translate('OpenLP.SlideController', 'Play Slides'), self.toolbar))
|
self.playSlidesMenu.setMenu(QtGui.QMenu(translate('OpenLP.SlideController', 'Play Slides'), self.toolbar))
|
||||||
self.toolbar.addToolbarWidget(self.playSlidesMenu)
|
self.toolbar.addToolbarWidget(self.playSlidesMenu)
|
||||||
self.playSlidesLoop = create_action(self, u'playSlidesLoop', text=UiStrings().PlaySlidesInLoop,
|
self.playSlidesLoop = create_action(self, u'playSlidesLoop', text=UiStrings().PlaySlidesInLoop,
|
||||||
icon=u':/media/media_time.png', checked=False, shortcuts=[],
|
icon=u':/media/media_time.png', checked=False, can_shortcuts=True,
|
||||||
category=self.category, triggers=self.onPlaySlidesLoop)
|
category=self.category, triggers=self.onPlaySlidesLoop)
|
||||||
self.playSlidesOnce = create_action(self, u'playSlidesOnce', text=UiStrings().PlaySlidesToEnd,
|
self.playSlidesOnce = create_action(self, u'playSlidesOnce', text=UiStrings().PlaySlidesToEnd,
|
||||||
icon=u':/media/media_time.png', checked=False, shortcuts=[],
|
icon=u':/media/media_time.png', checked=False, can_shortcuts=True,
|
||||||
category=self.category, triggers=self.onPlaySlidesOnce)
|
category=self.category, triggers=self.onPlaySlidesOnce)
|
||||||
if Settings().value(self.main_window.advancedSettingsSection + u'/slide limits') == SlideLimits.Wrap:
|
if Settings().value(self.main_window.advancedSettingsSection + u'/slide limits') == SlideLimits.Wrap:
|
||||||
self.playSlidesMenu.setDefaultAction(self.playSlidesLoop)
|
self.playSlidesMenu.setDefaultAction(self.playSlidesLoop)
|
||||||
@ -266,7 +274,7 @@ class SlideController(DisplayController):
|
|||||||
icon=u':/slides/media_playback_pause.png', text=translate('OpenLP.SlideController', 'Pause Audio'),
|
icon=u':/slides/media_playback_pause.png', text=translate('OpenLP.SlideController', 'Pause Audio'),
|
||||||
tooltip=translate('OpenLP.SlideController', 'Pause audio.'),
|
tooltip=translate('OpenLP.SlideController', 'Pause audio.'),
|
||||||
checked=False, visible=False, category=self.category, context=QtCore.Qt.WindowShortcut,
|
checked=False, visible=False, category=self.category, context=QtCore.Qt.WindowShortcut,
|
||||||
shortcuts=[], triggers=self.onAudioPauseClicked)
|
can_shortcuts=True, triggers=self.onAudioPauseClicked)
|
||||||
self.audioMenu = QtGui.QMenu(translate('OpenLP.SlideController', 'Background Audio'), self.toolbar)
|
self.audioMenu = QtGui.QMenu(translate('OpenLP.SlideController', 'Background Audio'), self.toolbar)
|
||||||
self.audioPauseItem.setMenu(self.audioMenu)
|
self.audioPauseItem.setMenu(self.audioMenu)
|
||||||
self.audioPauseItem.setParent(self.toolbar)
|
self.audioPauseItem.setParent(self.toolbar)
|
||||||
@ -275,20 +283,12 @@ class SlideController(DisplayController):
|
|||||||
self.nextTrackItem = create_action(self, u'nextTrackItem', text=UiStrings().NextTrack,
|
self.nextTrackItem = create_action(self, u'nextTrackItem', text=UiStrings().NextTrack,
|
||||||
icon=u':/slides/media_playback_next.png',
|
icon=u':/slides/media_playback_next.png',
|
||||||
tooltip=translate('OpenLP.SlideController', 'Go to next audio track.'),
|
tooltip=translate('OpenLP.SlideController', 'Go to next audio track.'),
|
||||||
category=self.category, shortcuts=[], triggers=self.onNextTrackClicked)
|
category=self.category, can_shortcuts=True, triggers=self.onNextTrackClicked)
|
||||||
self.audioMenu.addAction(self.nextTrackItem)
|
self.audioMenu.addAction(self.nextTrackItem)
|
||||||
self.trackMenu = self.audioMenu.addMenu(translate('OpenLP.SlideController', 'Tracks'))
|
self.trackMenu = self.audioMenu.addMenu(translate('OpenLP.SlideController', 'Tracks'))
|
||||||
self.audioTimeLabel = QtGui.QLabel(u' 00:00 ', self.toolbar)
|
self.audioTimeLabel = QtGui.QLabel(u' 00:00 ', self.toolbar)
|
||||||
self.audioTimeLabel.setAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignHCenter)
|
self.audioTimeLabel.setAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignHCenter)
|
||||||
self.audioTimeLabel.setStyleSheet(
|
self.audioTimeLabel.setStyleSheet(AUDIO_TIME_LABEL_STYLESHEET)
|
||||||
u'background-color: palette(background); '
|
|
||||||
u'border-top-color: palette(shadow); '
|
|
||||||
u'border-left-color: palette(shadow); '
|
|
||||||
u'border-bottom-color: palette(light); '
|
|
||||||
u'border-right-color: palette(light); '
|
|
||||||
u'border-radius: 3px; border-style: inset; '
|
|
||||||
u'border-width: 1; font-family: monospace; margin: 2px;'
|
|
||||||
)
|
|
||||||
self.audioTimeLabel.setObjectName(u'audioTimeLabel')
|
self.audioTimeLabel.setObjectName(u'audioTimeLabel')
|
||||||
self.toolbar.addToolbarWidget(self.audioTimeLabel)
|
self.toolbar.addToolbarWidget(self.audioTimeLabel)
|
||||||
self.toolbar.setWidgetVisible(self.audioList, False)
|
self.toolbar.setWidgetVisible(self.audioList, False)
|
||||||
@ -334,25 +334,20 @@ class SlideController(DisplayController):
|
|||||||
self.shortcutTimer = QtCore.QTimer()
|
self.shortcutTimer = QtCore.QTimer()
|
||||||
self.shortcutTimer.setObjectName(u'shortcutTimer')
|
self.shortcutTimer.setObjectName(u'shortcutTimer')
|
||||||
self.shortcutTimer.setSingleShot(True)
|
self.shortcutTimer.setSingleShot(True)
|
||||||
shortcuts = [{u'key': u'V', u'configurable': True,
|
shortcuts = [
|
||||||
u'text': translate('OpenLP.SlideController', 'Go to "Verse"')},
|
{u'key': u'V', u'configurable': True, u'text': translate('OpenLP.SlideController', 'Go to "Verse"')},
|
||||||
{u'key': u'C', u'configurable': True,
|
{u'key': u'C', u'configurable': True, u'text': translate('OpenLP.SlideController', 'Go to "Chorus"')},
|
||||||
u'text': translate('OpenLP.SlideController', 'Go to "Chorus"')},
|
{u'key': u'B', u'configurable': True, u'text': translate('OpenLP.SlideController', 'Go to "Bridge"')},
|
||||||
{u'key': u'B', u'configurable': True,
|
|
||||||
u'text': translate('OpenLP.SlideController', 'Go to "Bridge"')},
|
|
||||||
{u'key': u'P', u'configurable': True,
|
{u'key': u'P', u'configurable': True,
|
||||||
u'text': translate('OpenLP.SlideController',
|
u'text': translate('OpenLP.SlideController', 'Go to "Pre-Chorus"')},
|
||||||
'Go to "Pre-Chorus"')},
|
{u'key': u'I', u'configurable': True, u'text': translate('OpenLP.SlideController', 'Go to "Intro"')},
|
||||||
{u'key': u'I', u'configurable': True,
|
{u'key': u'E', u'configurable': True, u'text': translate('OpenLP.SlideController', 'Go to "Ending"')},
|
||||||
u'text': translate('OpenLP.SlideController', 'Go to "Intro"')},
|
{u'key': u'O', u'configurable': True, u'text': translate('OpenLP.SlideController', 'Go to "Other"')}
|
||||||
{u'key': u'E', u'configurable': True,
|
]
|
||||||
u'text': translate('OpenLP.SlideController', 'Go to "Ending"')},
|
shortcuts.extend([{u'key': unicode(number)} for number in range(10)])
|
||||||
{u'key': u'O', u'configurable': True,
|
|
||||||
u'text': translate('OpenLP.SlideController', 'Go to "Other"')}]
|
|
||||||
shortcuts += [{u'key': unicode(number)} for number in range(10)]
|
|
||||||
self.previewListWidget.addActions([create_action(self,
|
self.previewListWidget.addActions([create_action(self,
|
||||||
u'shortcutAction_%s' % s[u'key'], text=s.get(u'text'),
|
u'shortcutAction_%s' % s[u'key'], text=s.get(u'text'),
|
||||||
shortcuts=[QtGui.QKeySequence(s[u'key'])],
|
can_shortcuts=True,
|
||||||
context=QtCore.Qt.WidgetWithChildrenShortcut,
|
context=QtCore.Qt.WidgetWithChildrenShortcut,
|
||||||
category=self.category if s.get(u'configurable') else None,
|
category=self.category if s.get(u'configurable') else None,
|
||||||
triggers=self._slideShortcutActivated) for s in shortcuts])
|
triggers=self._slideShortcutActivated) for s in shortcuts])
|
||||||
@ -451,15 +446,15 @@ class SlideController(DisplayController):
|
|||||||
"""
|
"""
|
||||||
self.previousService = create_action(parent, u'previousService',
|
self.previousService = create_action(parent, u'previousService',
|
||||||
text=translate('OpenLP.SlideController', 'Previous Service'),
|
text=translate('OpenLP.SlideController', 'Previous Service'),
|
||||||
shortcuts=[QtCore.Qt.Key_Left], context=QtCore.Qt.WidgetWithChildrenShortcut, category=self.category,
|
can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, category=self.category,
|
||||||
triggers=self.servicePrevious)
|
triggers=self.servicePrevious)
|
||||||
self.nextService = create_action(parent, 'nextService',
|
self.nextService = create_action(parent, 'nextService',
|
||||||
text=translate('OpenLP.SlideController', 'Next Service'),
|
text=translate('OpenLP.SlideController', 'Next Service'),
|
||||||
shortcuts=[QtCore.Qt.Key_Right], context=QtCore.Qt.WidgetWithChildrenShortcut, category=self.category,
|
can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, category=self.category,
|
||||||
triggers=self.serviceNext)
|
triggers=self.serviceNext)
|
||||||
self.escapeItem = create_action(parent, 'escapeItem',
|
self.escapeItem = create_action(parent, 'escapeItem',
|
||||||
text=translate('OpenLP.SlideController', 'Escape Item'),
|
text=translate('OpenLP.SlideController', 'Escape Item'),
|
||||||
shortcuts=[QtCore.Qt.Key_Escape], context=QtCore.Qt.WidgetWithChildrenShortcut, category=self.category,
|
can_shortcuts=True, context=QtCore.Qt.WidgetWithChildrenShortcut, category=self.category,
|
||||||
triggers=self.liveEscape)
|
triggers=self.liveEscape)
|
||||||
|
|
||||||
def liveEscape(self):
|
def liveEscape(self):
|
||||||
|
@ -37,8 +37,8 @@ from openlp.core.lib import Settings
|
|||||||
|
|
||||||
class ActionCategory(object):
|
class ActionCategory(object):
|
||||||
"""
|
"""
|
||||||
The :class:`~openlp.core.utils.ActionCategory` class encapsulates a
|
The :class:`~openlp.core.utils.ActionCategory` class encapsulates a category for the
|
||||||
category for the :class:`~openlp.core.utils.CategoryList` class.
|
:class:`~openlp.core.utils.CategoryList` class.
|
||||||
"""
|
"""
|
||||||
def __init__(self, name, weight=0):
|
def __init__(self, name, weight=0):
|
||||||
"""
|
"""
|
||||||
@ -51,8 +51,7 @@ class ActionCategory(object):
|
|||||||
|
|
||||||
class CategoryActionList(object):
|
class CategoryActionList(object):
|
||||||
"""
|
"""
|
||||||
The :class:`~openlp.core.utils.CategoryActionList` class provides a sorted
|
The :class:`~openlp.core.utils.CategoryActionList` class provides a sorted list of actions within a category.
|
||||||
list of actions within a category.
|
|
||||||
"""
|
"""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
"""
|
"""
|
||||||
@ -142,9 +141,9 @@ class CategoryActionList(object):
|
|||||||
|
|
||||||
class CategoryList(object):
|
class CategoryList(object):
|
||||||
"""
|
"""
|
||||||
The :class:`~openlp.core.utils.CategoryList` class encapsulates a category
|
The :class:`~openlp.core.utils.CategoryList` class encapsulates a category list for the
|
||||||
list for the :class:`~openlp.core.utils.ActionList` class and provides an
|
:class:`~openlp.core.utils.ActionList` class and provides an iterator interface for walking through the list of
|
||||||
iterator interface for walking through the list of actions in this category.
|
actions in this category.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -244,10 +243,9 @@ class CategoryList(object):
|
|||||||
|
|
||||||
class ActionList(object):
|
class ActionList(object):
|
||||||
"""
|
"""
|
||||||
The :class:`~openlp.core.utils.ActionList` class contains a list of menu
|
The :class:`~openlp.core.utils.ActionList` class contains a list of menu actions and categories associated with
|
||||||
actions and categories associated with those actions. Each category also
|
those actions. Each category also has a weight by which it is sorted when iterating through the list of actions or
|
||||||
has a weight by which it is sorted when iterating through the list of
|
categories.
|
||||||
actions or categories.
|
|
||||||
"""
|
"""
|
||||||
instance = None
|
instance = None
|
||||||
shortcut_map = {}
|
shortcut_map = {}
|
||||||
@ -271,48 +269,44 @@ class ActionList(object):
|
|||||||
"""
|
"""
|
||||||
Add an action to the list of actions.
|
Add an action to the list of actions.
|
||||||
|
|
||||||
|
**Note**: The action's objectName must be set when you want to add it!
|
||||||
|
|
||||||
``action``
|
``action``
|
||||||
The action to add (QAction). **Note**, the action must not have an
|
The action to add (QAction). **Note**, the action must not have an empty ``objectName``.
|
||||||
empty ``objectName``.
|
|
||||||
|
|
||||||
``category``
|
``category``
|
||||||
The category this action belongs to. The category has to be a python
|
The category this action belongs to. The category has to be a python string. . **Note**, if the category
|
||||||
string. . **Note**, if the category is ``None``, the category and
|
is ``None``, the category and its actions are being hidden in the shortcut dialog. However, if they are
|
||||||
its actions are being hidden in the shortcut dialog. However, if
|
added, it is possible to avoid assigning shortcuts twice, which is important.
|
||||||
they are added, it is possible to avoid assigning shortcuts twice,
|
|
||||||
which is important.
|
|
||||||
|
|
||||||
``weight``
|
``weight``
|
||||||
The weight specifies how important a category is. However, this only
|
The weight specifies how important a category is. However, this only has an impact on the order the
|
||||||
has an impact on the order the categories are displayed.
|
categories are displayed.
|
||||||
"""
|
"""
|
||||||
if category not in self.categories:
|
if category not in self.categories:
|
||||||
self.categories.append(category)
|
self.categories.append(category)
|
||||||
action.defaultShortcuts = action.shortcuts()
|
settings = Settings()
|
||||||
|
settings.beginGroup(u'shortcuts')
|
||||||
|
# Get the default shortcut from the config.
|
||||||
|
action.defaultShortcuts = settings.get_default_value(action.objectName())
|
||||||
if weight is None:
|
if weight is None:
|
||||||
self.categories[category].actions.append(action)
|
self.categories[category].actions.append(action)
|
||||||
else:
|
else:
|
||||||
self.categories[category].actions.add(action, weight)
|
self.categories[category].actions.add(action, weight)
|
||||||
# Load the shortcut from the config.
|
# Load the shortcut from the config.
|
||||||
settings = Settings()
|
|
||||||
settings.beginGroup(u'shortcuts')
|
|
||||||
shortcuts = settings.value(action.objectName())
|
shortcuts = settings.value(action.objectName())
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
if not shortcuts:
|
if not shortcuts:
|
||||||
action.setShortcuts([])
|
action.setShortcuts([])
|
||||||
return
|
return
|
||||||
# We have to do this to ensure that the loaded shortcut list e. g.
|
# We have to do this to ensure that the loaded shortcut list e. g. STRG+O (German) is converted to CTRL+O,
|
||||||
# STRG+O (German) is converted to CTRL+O, which is only done when we
|
# which is only done when we convert the strings in this way (QKeySequencet -> uncode).
|
||||||
# convert the strings in this way (QKeySequence -> QString -> unicode).
|
shortcuts = map(QtGui.QKeySequence.toString, map(QtGui.QKeySequence, shortcuts))
|
||||||
shortcuts = map(QtGui.QKeySequence, shortcuts)
|
# Check the alternate shortcut first, to avoid problems when the alternate shortcut becomes the primary shortcut
|
||||||
shortcuts = map(unicode, map(QtGui.QKeySequence.toString, shortcuts))
|
# after removing the (initial) primary shortcut due to conflicts.
|
||||||
# Check the alternate shortcut first, to avoid problems when the
|
|
||||||
# alternate shortcut becomes the primary shortcut after removing the
|
|
||||||
# (initial) primary shortcut due to conflicts.
|
|
||||||
if len(shortcuts) == 2:
|
if len(shortcuts) == 2:
|
||||||
existing_actions = ActionList.shortcut_map.get(shortcuts[1], [])
|
existing_actions = ActionList.shortcut_map.get(shortcuts[1], [])
|
||||||
# Check for conflicts with other actions considering the shortcut
|
# Check for conflicts with other actions considering the shortcut context.
|
||||||
# context.
|
|
||||||
if self._is_shortcut_available(existing_actions, action):
|
if self._is_shortcut_available(existing_actions, action):
|
||||||
actions = ActionList.shortcut_map.get(shortcuts[1], [])
|
actions = ActionList.shortcut_map.get(shortcuts[1], [])
|
||||||
actions.append(action)
|
actions.append(action)
|
||||||
@ -321,28 +315,24 @@ class ActionList(object):
|
|||||||
shortcuts.remove(shortcuts[1])
|
shortcuts.remove(shortcuts[1])
|
||||||
# Check the primary shortcut.
|
# Check the primary shortcut.
|
||||||
existing_actions = ActionList.shortcut_map.get(shortcuts[0], [])
|
existing_actions = ActionList.shortcut_map.get(shortcuts[0], [])
|
||||||
# Check for conflicts with other actions considering the shortcut
|
# Check for conflicts with other actions considering the shortcut context.
|
||||||
# context.
|
|
||||||
if self._is_shortcut_available(existing_actions, action):
|
if self._is_shortcut_available(existing_actions, action):
|
||||||
actions = ActionList.shortcut_map.get(shortcuts[0], [])
|
actions = ActionList.shortcut_map.get(shortcuts[0], [])
|
||||||
actions.append(action)
|
actions.append(action)
|
||||||
ActionList.shortcut_map[shortcuts[0]] = actions
|
ActionList.shortcut_map[shortcuts[0]] = actions
|
||||||
else:
|
else:
|
||||||
shortcuts.remove(shortcuts[0])
|
shortcuts.remove(shortcuts[0])
|
||||||
action.setShortcuts(
|
action.setShortcuts([QtGui.QKeySequence(shortcut) for shortcut in shortcuts])
|
||||||
[QtGui.QKeySequence(shortcut) for shortcut in shortcuts])
|
|
||||||
|
|
||||||
def remove_action(self, action, category=None):
|
def remove_action(self, action, category=None):
|
||||||
"""
|
"""
|
||||||
This removes an action from its category. Empty categories are
|
This removes an action from its category. Empty categories are automatically removed.
|
||||||
automatically removed.
|
|
||||||
|
|
||||||
``action``
|
``action``
|
||||||
The ``QAction`` object to be removed.
|
The ``QAction`` object to be removed.
|
||||||
|
|
||||||
``category``
|
``category``
|
||||||
The name (unicode string) of the category, which contains the
|
The name (unicode string) of the category, which contains the action. Defaults to None.
|
||||||
action. Defaults to None.
|
|
||||||
"""
|
"""
|
||||||
if category not in self.categories:
|
if category not in self.categories:
|
||||||
return
|
return
|
||||||
@ -350,10 +340,9 @@ class ActionList(object):
|
|||||||
# Remove empty categories.
|
# Remove empty categories.
|
||||||
if not self.categories[category].actions:
|
if not self.categories[category].actions:
|
||||||
self.categories.remove(category)
|
self.categories.remove(category)
|
||||||
shortcuts = map(unicode, map(QtGui.QKeySequence.toString, action.shortcuts()))
|
shortcuts = map(QtGui.QKeySequence.toString, action.shortcuts())
|
||||||
for shortcut in shortcuts:
|
for shortcut in shortcuts:
|
||||||
# Remove action from the list of actions which are using this
|
# Remove action from the list of actions which are using this shortcut.
|
||||||
# shortcut.
|
|
||||||
ActionList.shortcut_map[shortcut].remove(action)
|
ActionList.shortcut_map[shortcut].remove(action)
|
||||||
# Remove empty entries.
|
# Remove empty entries.
|
||||||
if not ActionList.shortcut_map[shortcut]:
|
if not ActionList.shortcut_map[shortcut]:
|
||||||
@ -361,8 +350,7 @@ class ActionList(object):
|
|||||||
|
|
||||||
def add_category(self, name, weight):
|
def add_category(self, name, weight):
|
||||||
"""
|
"""
|
||||||
Add an empty category to the list of categories. This is ony convenient
|
Add an empty category to the list of categories. This is only convenient for categories with a given weight.
|
||||||
for categories with a given weight.
|
|
||||||
|
|
||||||
``name``
|
``name``
|
||||||
The category's name.
|
The category's name.
|
||||||
@ -381,27 +369,24 @@ class ActionList(object):
|
|||||||
|
|
||||||
def update_shortcut_map(self, action, old_shortcuts):
|
def update_shortcut_map(self, action, old_shortcuts):
|
||||||
"""
|
"""
|
||||||
Remove the action for the given ``old_shortcuts`` from the
|
Remove the action for the given ``old_shortcuts`` from the ``shortcut_map`` to ensure its up-to-dateness.
|
||||||
``shortcut_map`` to ensure its up-to-dateness.
|
|
||||||
|
|
||||||
**Note**: The new action's shortcuts **must** be assigned to the given
|
**Note**: The new action's shortcuts **must** be assigned to the given ``action`` **before** calling this
|
||||||
``action`` **before** calling this method.
|
method.
|
||||||
|
|
||||||
``action``
|
``action``
|
||||||
The action whose shortcuts are supposed to be updated in the
|
The action whose shortcuts are supposed to be updated in the ``shortcut_map``.
|
||||||
``shortcut_map``.
|
|
||||||
|
|
||||||
``old_shortcuts``
|
``old_shortcuts``
|
||||||
A list of unicode keysequences.
|
A list of unicode keysequences.
|
||||||
"""
|
"""
|
||||||
for old_shortcut in old_shortcuts:
|
for old_shortcut in old_shortcuts:
|
||||||
# Remove action from the list of actions which are using this
|
# Remove action from the list of actions which are using this shortcut.
|
||||||
# shortcut.
|
|
||||||
ActionList.shortcut_map[old_shortcut].remove(action)
|
ActionList.shortcut_map[old_shortcut].remove(action)
|
||||||
# Remove empty entries.
|
# Remove empty entries.
|
||||||
if not ActionList.shortcut_map[old_shortcut]:
|
if not ActionList.shortcut_map[old_shortcut]:
|
||||||
del ActionList.shortcut_map[old_shortcut]
|
del ActionList.shortcut_map[old_shortcut]
|
||||||
new_shortcuts = map(unicode, map(QtGui.QKeySequence.toString, action.shortcuts()))
|
new_shortcuts = map(QtGui.QKeySequence.toString, action.shortcuts())
|
||||||
# Add the new shortcuts to the map.
|
# Add the new shortcuts to the map.
|
||||||
for new_shortcut in new_shortcuts:
|
for new_shortcut in new_shortcuts:
|
||||||
existing_actions = ActionList.shortcut_map.get(new_shortcut, [])
|
existing_actions = ActionList.shortcut_map.get(new_shortcut, [])
|
||||||
@ -410,8 +395,7 @@ class ActionList(object):
|
|||||||
|
|
||||||
def _is_shortcut_available(self, existing_actions, action):
|
def _is_shortcut_available(self, existing_actions, action):
|
||||||
"""
|
"""
|
||||||
Checks if the given ``action`` may use its assigned shortcut(s) or not.
|
Checks if the given ``action`` may use its assigned shortcut(s) or not. Returns ``True`` or ``False.
|
||||||
Returns ``True`` or ``False.
|
|
||||||
|
|
||||||
``existing_actions``
|
``existing_actions``
|
||||||
A list of actions which already use a particular shortcut.
|
A list of actions which already use a particular shortcut.
|
||||||
@ -419,28 +403,29 @@ class ActionList(object):
|
|||||||
``action``
|
``action``
|
||||||
The action which wants to use a particular shortcut.
|
The action which wants to use a particular shortcut.
|
||||||
"""
|
"""
|
||||||
local = action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]
|
global_context = action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]
|
||||||
affected_actions = filter(lambda a: isinstance(a, QtGui.QAction),
|
affected_actions = []
|
||||||
self.getAllChildObjects(action.parent())) if local else []
|
if global_context:
|
||||||
|
affected_actions = filter(
|
||||||
|
lambda a: isinstance(a, QtGui.QAction), self.get_all_child_objects(action.parent()))
|
||||||
for existing_action in existing_actions:
|
for existing_action in existing_actions:
|
||||||
if action is existing_action:
|
if action is existing_action:
|
||||||
continue
|
continue
|
||||||
if not local or existing_action in affected_actions:
|
if not global_context or existing_action in affected_actions:
|
||||||
return False
|
return False
|
||||||
if existing_action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]:
|
if existing_action.shortcutContext() in [QtCore.Qt.WindowShortcut, QtCore.Qt.ApplicationShortcut]:
|
||||||
return False
|
return False
|
||||||
elif action in self.getAllChildObjects(existing_action.parent()):
|
elif action in self.get_all_child_objects(existing_action.parent()):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def getAllChildObjects(self, qobject):
|
def get_all_child_objects(self, qobject):
|
||||||
"""
|
"""
|
||||||
Goes recursively through the children of ``qobject`` and returns a list
|
Goes recursively through the children of ``qobject`` and returns a list of all child objects.
|
||||||
of all child objects.
|
|
||||||
"""
|
"""
|
||||||
children = [child for child in qobject.children()]
|
children = qobject.children()
|
||||||
for child in qobject.children():
|
# Append the children's children.
|
||||||
children.append(self.getAllChildObjects(child))
|
children.extend(map(self.get_all_child_objects, children))
|
||||||
return children
|
return children
|
||||||
|
|
||||||
|
|
||||||
@ -448,5 +433,5 @@ class CategoryOrder(object):
|
|||||||
"""
|
"""
|
||||||
An enumeration class for category weights.
|
An enumeration class for category weights.
|
||||||
"""
|
"""
|
||||||
standardMenu = -20
|
standard_menu = -20
|
||||||
standardToolbar = -10
|
standard_toolbar = -10
|
||||||
|
@ -150,7 +150,7 @@ class AlertsPlugin(Plugin):
|
|||||||
self.toolsAlertItem = create_action(tools_menu, u'toolsAlertItem',
|
self.toolsAlertItem = create_action(tools_menu, u'toolsAlertItem',
|
||||||
text=translate('AlertsPlugin', '&Alert'), icon=u':/plugins/plugin_alerts.png',
|
text=translate('AlertsPlugin', '&Alert'), icon=u':/plugins/plugin_alerts.png',
|
||||||
statustip=translate('AlertsPlugin', 'Show an alert message.'),
|
statustip=translate('AlertsPlugin', 'Show an alert message.'),
|
||||||
visible=False, shortcuts=[u'F7'], triggers=self.onAlertsTrigger)
|
visible=False, can_shortcuts=True, triggers=self.onAlertsTrigger)
|
||||||
self.main_window.toolsMenu.addAction(self.toolsAlertItem)
|
self.main_window.toolsMenu.addAction(self.toolsAlertItem)
|
||||||
|
|
||||||
def initialise(self):
|
def initialise(self):
|
||||||
|
@ -32,9 +32,8 @@ import os
|
|||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import MediaManagerItem, ItemCapabilities, Registry, SettingsManager, ServiceItemContext, \
|
from openlp.core.lib import MediaManagerItem, ItemCapabilities, Registry, ServiceItemContext, Settings, UiStrings, \
|
||||||
Settings, UiStrings, build_icon, check_item_selected, check_directory_exists, create_thumb, translate, \
|
build_icon, check_item_selected, check_directory_exists, create_thumb, translate, validate_thumb
|
||||||
validate_thumb
|
|
||||||
from openlp.core.lib.ui import critical_error_message_box
|
from openlp.core.lib.ui import critical_error_message_box
|
||||||
from openlp.core.utils import AppLocation, delete_file, locale_compare, get_images_filter
|
from openlp.core.utils import AppLocation, delete_file, locale_compare, get_images_filter
|
||||||
|
|
||||||
@ -107,7 +106,7 @@ class ImageMediaItem(MediaManagerItem):
|
|||||||
delete_file(os.path.join(self.servicePath, text.text()))
|
delete_file(os.path.join(self.servicePath, text.text()))
|
||||||
self.listView.takeItem(row)
|
self.listView.takeItem(row)
|
||||||
self.main_window.incrementProgressBar()
|
self.main_window.incrementProgressBar()
|
||||||
SettingsManager.setValue(self.settingsSection + u'/images files', self.getFileList())
|
Settings.setValue(self.settingsSection + u'/images files', self.getFileList())
|
||||||
self.main_window.finishedProgressBar()
|
self.main_window.finishedProgressBar()
|
||||||
self.application.set_normal_cursor()
|
self.application.set_normal_cursor()
|
||||||
self.listView.blockSignals(False)
|
self.listView.blockSignals(False)
|
||||||
|
@ -99,7 +99,7 @@ class SongUsagePlugin(Plugin):
|
|||||||
self.song_usage_status = create_action(tools_menu, u'songUsageStatus',
|
self.song_usage_status = create_action(tools_menu, u'songUsageStatus',
|
||||||
text=translate('SongUsagePlugin', 'Toggle Tracking'),
|
text=translate('SongUsagePlugin', 'Toggle Tracking'),
|
||||||
statustip=translate('SongUsagePlugin', 'Toggle the tracking of song usage.'), checked=False,
|
statustip=translate('SongUsagePlugin', 'Toggle the tracking of song usage.'), checked=False,
|
||||||
shortcuts=[QtCore.Qt.Key_F4], triggers=self.toggle_song_usage_state)
|
can_shortcuts=True, triggers=self.toggle_song_usage_state)
|
||||||
# Add Menus together
|
# Add Menus together
|
||||||
self.toolsMenu.addAction(self.song_usage_menu.menuAction())
|
self.toolsMenu.addAction(self.song_usage_menu.menuAction())
|
||||||
self.song_usage_menu.addAction(self.song_usage_status)
|
self.song_usage_menu.addAction(self.song_usage_status)
|
||||||
|
124
tests/functional/openlp_core_utils/test_actions.py
Normal file
124
tests/functional/openlp_core_utils/test_actions.py
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
"""
|
||||||
|
Package to test the openlp.core.utils.actions package.
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
from tempfile import mkstemp
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
|
from PyQt4 import QtGui, QtCore
|
||||||
|
|
||||||
|
from openlp.core.lib import Settings
|
||||||
|
from openlp.core.utils import ActionList
|
||||||
|
|
||||||
|
|
||||||
|
class TestActionList(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
"""
|
||||||
|
Prepare the tests
|
||||||
|
"""
|
||||||
|
self.action_list = ActionList.get_instance()
|
||||||
|
self.settings = Settings()
|
||||||
|
fd, self.ini_file = mkstemp(u'.ini')
|
||||||
|
self.settings.set_filename(self.ini_file)
|
||||||
|
self.settings.beginGroup(u'shortcuts')
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
"""
|
||||||
|
Clean up
|
||||||
|
"""
|
||||||
|
self.settings.endGroup()
|
||||||
|
os.unlink(self.ini_file)
|
||||||
|
|
||||||
|
def test_add_action_same_parent(self):
|
||||||
|
"""
|
||||||
|
ActionList test - Tests the add_action method. The actions have the same parent, the same shortcuts and both
|
||||||
|
have the QtCore.Qt.WindowShortcut shortcut context set.
|
||||||
|
"""
|
||||||
|
# GIVEN: Two actions with the same shortcuts.
|
||||||
|
parent = QtCore.QObject()
|
||||||
|
action1 = QtGui.QAction(parent)
|
||||||
|
action1.setObjectName(u'action1')
|
||||||
|
action_with_same_shortcuts1 = QtGui.QAction(parent)
|
||||||
|
action_with_same_shortcuts1.setObjectName(u'action_with_same_shortcuts1')
|
||||||
|
# Add default shortcuts to Settings class.
|
||||||
|
default_shortcuts = {
|
||||||
|
u'shortcuts/action1': [QtGui.QKeySequence(u'a'), QtGui.QKeySequence(u'b')],
|
||||||
|
u'shortcuts/action_with_same_shortcuts1': [QtGui.QKeySequence(u'b'), QtGui.QKeySequence(u'a')]
|
||||||
|
}
|
||||||
|
Settings.extend_default_settings(default_shortcuts)
|
||||||
|
|
||||||
|
# WHEN: Add the two actions to the action list.
|
||||||
|
self.action_list.add_action(action1, u'example_category')
|
||||||
|
self.action_list.add_action(action_with_same_shortcuts1, u'example_category')
|
||||||
|
# Remove the actions again.
|
||||||
|
self.action_list.remove_action(action1, u'example_category')
|
||||||
|
self.action_list.remove_action(action_with_same_shortcuts1, u'example_category')
|
||||||
|
|
||||||
|
# THEN: As both actions have the same shortcuts, they should be removed from one action.
|
||||||
|
assert len(action1.shortcuts()) == 2, u'The action should have two shortcut assigned.'
|
||||||
|
assert len(action_with_same_shortcuts1.shortcuts()) == 0, u'The action should not have a shortcut assigned.'
|
||||||
|
|
||||||
|
def test_add_action_different_parent(self):
|
||||||
|
"""
|
||||||
|
ActionList test - Tests the add_action method. The actions have the different parent, the same shortcuts and
|
||||||
|
both have the QtCore.Qt.WindowShortcut shortcut context set.
|
||||||
|
"""
|
||||||
|
# GIVEN: Two actions with the same shortcuts.
|
||||||
|
parent = QtCore.QObject()
|
||||||
|
action2 = QtGui.QAction(parent)
|
||||||
|
action2.setObjectName(u'action2')
|
||||||
|
second_parent = QtCore.QObject()
|
||||||
|
action_with_same_shortcuts2 = QtGui.QAction(second_parent)
|
||||||
|
action_with_same_shortcuts2.setObjectName(u'action_with_same_shortcuts2')
|
||||||
|
# Add default shortcuts to Settings class.
|
||||||
|
default_shortcuts = {
|
||||||
|
u'shortcuts/action2': [QtGui.QKeySequence(u'c'), QtGui.QKeySequence(u'd')],
|
||||||
|
u'shortcuts/action_with_same_shortcuts2': [QtGui.QKeySequence(u'd'), QtGui.QKeySequence(u'c')]
|
||||||
|
}
|
||||||
|
Settings.extend_default_settings(default_shortcuts)
|
||||||
|
|
||||||
|
# WHEN: Add the two actions to the action list.
|
||||||
|
self.action_list.add_action(action2, u'example_category')
|
||||||
|
self.action_list.add_action(action_with_same_shortcuts2, u'example_category')
|
||||||
|
# Remove the actions again.
|
||||||
|
self.action_list.remove_action(action2, u'example_category')
|
||||||
|
self.action_list.remove_action(action_with_same_shortcuts2, u'example_category')
|
||||||
|
|
||||||
|
# THEN: As both actions have the same shortcuts, they should be removed from one action.
|
||||||
|
assert len(action2.shortcuts()) == 2, u'The action should have two shortcut assigned.'
|
||||||
|
assert len(action_with_same_shortcuts2.shortcuts()) == 0, u'The action should not have a shortcut assigned.'
|
||||||
|
|
||||||
|
def test_add_action_different_context(self):
|
||||||
|
"""
|
||||||
|
ActionList test - Tests the add_action method. The actions have the different parent, the same shortcuts and
|
||||||
|
both have the QtCore.Qt.WidgetShortcut shortcut context set.
|
||||||
|
"""
|
||||||
|
# GIVEN: Two actions with the same shortcuts.
|
||||||
|
parent = QtCore.QObject()
|
||||||
|
action3 = QtGui.QAction(parent)
|
||||||
|
action3.setObjectName(u'action3')
|
||||||
|
action3.setShortcutContext(QtCore.Qt.WidgetShortcut)
|
||||||
|
second_parent = QtCore.QObject()
|
||||||
|
action_with_same_shortcuts3 = QtGui.QAction(second_parent)
|
||||||
|
action_with_same_shortcuts3.setObjectName(u'action_with_same_shortcuts3')
|
||||||
|
action_with_same_shortcuts3.setShortcutContext(QtCore.Qt.WidgetShortcut)
|
||||||
|
# Add default shortcuts to Settings class.
|
||||||
|
default_shortcuts = {
|
||||||
|
u'shortcuts/action3': [QtGui.QKeySequence(u'e'), QtGui.QKeySequence(u'f')],
|
||||||
|
u'shortcuts/action_with_same_shortcuts3': [QtGui.QKeySequence(u'e'), QtGui.QKeySequence(u'f')]
|
||||||
|
}
|
||||||
|
Settings.extend_default_settings(default_shortcuts)
|
||||||
|
|
||||||
|
# WHEN: Add the two actions to the action list.
|
||||||
|
self.action_list.add_action(action3, u'example_category2')
|
||||||
|
self.action_list.add_action(action_with_same_shortcuts3, u'example_category2')
|
||||||
|
# Remove the actions again.
|
||||||
|
self.action_list.remove_action(action3, u'example_category2')
|
||||||
|
self.action_list.remove_action(action_with_same_shortcuts3, u'example_category2')
|
||||||
|
|
||||||
|
# THEN: Both action should keep their shortcuts.
|
||||||
|
assert len(action3.shortcuts()) == 2, u'The action should have two shortcut assigned.'
|
||||||
|
assert len(action_with_same_shortcuts3.shortcuts()) == 2, u'The action should have two shortcuts assigned.'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user