forked from openlp/openlp
use weight to sort categories
This commit is contained in:
parent
bea272ca7d
commit
283171e296
@ -39,6 +39,7 @@ from openlp.core.ui import AboutForm, SettingsForm, ServiceManager, \
|
|||||||
ShortcutListForm, DisplayTagForm
|
ShortcutListForm, DisplayTagForm
|
||||||
from openlp.core.utils import AppLocation, add_actions, LanguageManager, \
|
from openlp.core.utils import AppLocation, add_actions, LanguageManager, \
|
||||||
get_application_version
|
get_application_version
|
||||||
|
from openlp.core.utils.actions import ActionList
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -161,6 +162,7 @@ class Ui_MainWindow(object):
|
|||||||
mainWindow.addDockWidget(QtCore.Qt.RightDockWidgetArea,
|
mainWindow.addDockWidget(QtCore.Qt.RightDockWidgetArea,
|
||||||
self.themeManagerDock)
|
self.themeManagerDock)
|
||||||
# Create the menu items
|
# Create the menu items
|
||||||
|
ActionList.add_category(UiStrings.File, 100)
|
||||||
self.FileNewItem = shortcut_action(mainWindow, u'FileNewItem',
|
self.FileNewItem = shortcut_action(mainWindow, u'FileNewItem',
|
||||||
[QtGui.QKeySequence(u'Ctrl+N')],
|
[QtGui.QKeySequence(u'Ctrl+N')],
|
||||||
self.ServiceManagerContents.onNewServiceClicked,
|
self.ServiceManagerContents.onNewServiceClicked,
|
||||||
@ -183,14 +185,17 @@ class Ui_MainWindow(object):
|
|||||||
self.FileExitItem = shortcut_action(mainWindow, u'FileExitItem',
|
self.FileExitItem = shortcut_action(mainWindow, u'FileExitItem',
|
||||||
[QtGui.QKeySequence(u'Alt+F4')], mainWindow.close,
|
[QtGui.QKeySequence(u'Alt+F4')], mainWindow.close,
|
||||||
u':/system/system_exit.png', category=UiStrings.File)
|
u':/system/system_exit.png', category=UiStrings.File)
|
||||||
|
ActionList.add_category(UiStrings.Import, 95)
|
||||||
self.ImportThemeItem = base_action(
|
self.ImportThemeItem = base_action(
|
||||||
mainWindow, u'ImportThemeItem', UiStrings.Import)
|
mainWindow, u'ImportThemeItem', UiStrings.Import)
|
||||||
self.ImportLanguageItem = base_action(
|
self.ImportLanguageItem = base_action(
|
||||||
mainWindow, u'ImportLanguageItem')#, UiStrings.Import)
|
mainWindow, u'ImportLanguageItem')#, UiStrings.Import)
|
||||||
|
ActionList.add_category(UiStrings.Export, 90)
|
||||||
self.ExportThemeItem = base_action(
|
self.ExportThemeItem = base_action(
|
||||||
mainWindow, u'ExportThemeItem', UiStrings.Export)
|
mainWindow, u'ExportThemeItem', UiStrings.Export)
|
||||||
self.ExportLanguageItem = base_action(
|
self.ExportLanguageItem = base_action(
|
||||||
mainWindow, u'ExportLanguageItem')#, UiStrings.Export)
|
mainWindow, u'ExportLanguageItem')#, UiStrings.Export)
|
||||||
|
ActionList.add_category(UiStrings.View, 85)
|
||||||
self.ViewMediaManagerItem = shortcut_action(mainWindow,
|
self.ViewMediaManagerItem = shortcut_action(mainWindow,
|
||||||
u'ViewMediaManagerItem', [QtGui.QKeySequence(u'F8')],
|
u'ViewMediaManagerItem', [QtGui.QKeySequence(u'F8')],
|
||||||
self.toggleMediaManager, u':/system/system_mediamanager.png',
|
self.toggleMediaManager, u':/system/system_mediamanager.png',
|
||||||
@ -210,6 +215,7 @@ class Ui_MainWindow(object):
|
|||||||
self.ViewLivePanel = shortcut_action(mainWindow, u'ViewLivePanel',
|
self.ViewLivePanel = shortcut_action(mainWindow, u'ViewLivePanel',
|
||||||
[QtGui.QKeySequence(u'F12')], self.setLivePanelVisibility,
|
[QtGui.QKeySequence(u'F12')], self.setLivePanelVisibility,
|
||||||
checked=liveVisible, category=UiStrings.View)
|
checked=liveVisible, category=UiStrings.View)
|
||||||
|
ActionList.add_category(UiStrings.ViewMode, 80)
|
||||||
self.ModeDefaultItem = checkable_action(
|
self.ModeDefaultItem = checkable_action(
|
||||||
mainWindow, u'ModeDefaultItem', category=UiStrings.ViewMode)
|
mainWindow, u'ModeDefaultItem', category=UiStrings.ViewMode)
|
||||||
self.ModeSetupItem = checkable_action(
|
self.ModeSetupItem = checkable_action(
|
||||||
@ -221,11 +227,13 @@ class Ui_MainWindow(object):
|
|||||||
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)
|
||||||
|
ActionList.add_category(UiStrings.Tools, 75)
|
||||||
self.ToolsAddToolItem = icon_action(mainWindow, u'ToolsAddToolItem',
|
self.ToolsAddToolItem = icon_action(mainWindow, u'ToolsAddToolItem',
|
||||||
u':/tools/tools_add.png', category=UiStrings.Tools)
|
u':/tools/tools_add.png', category=UiStrings.Tools)
|
||||||
self.ToolsOpenDataFolder = icon_action(mainWindow,
|
self.ToolsOpenDataFolder = icon_action(mainWindow,
|
||||||
u'ToolsOpenDataFolder', u':/general/general_open.png',
|
u'ToolsOpenDataFolder', u':/general/general_open.png',
|
||||||
category=UiStrings.Tools)
|
category=UiStrings.Tools)
|
||||||
|
ActionList.add_category(UiStrings.Settings, 70)
|
||||||
self.settingsPluginListItem = shortcut_action(mainWindow,
|
self.settingsPluginListItem = shortcut_action(mainWindow,
|
||||||
u'settingsPluginListItem', [QtGui.QKeySequence(u'Alt+F7')],
|
u'settingsPluginListItem', [QtGui.QKeySequence(u'Alt+F7')],
|
||||||
self.onPluginItemClicked, u':/system/settings_plugin_list.png',
|
self.onPluginItemClicked, u':/system/settings_plugin_list.png',
|
||||||
@ -253,6 +261,7 @@ class Ui_MainWindow(object):
|
|||||||
self.SettingsConfigureItem = icon_action(mainWindow,
|
self.SettingsConfigureItem = icon_action(mainWindow,
|
||||||
u'SettingsConfigureItem', u':/system/system_settings.png',
|
u'SettingsConfigureItem', u':/system/system_settings.png',
|
||||||
category=UiStrings.Settings)
|
category=UiStrings.Settings)
|
||||||
|
ActionList.add_category(UiStrings.Help, 65)
|
||||||
self.HelpDocumentationItem = icon_action(mainWindow,
|
self.HelpDocumentationItem = icon_action(mainWindow,
|
||||||
u'HelpDocumentationItem', u':/system/system_help_contents.png',
|
u'HelpDocumentationItem', u':/system/system_help_contents.png',
|
||||||
category=None)#UiStrings.Help)
|
category=None)#UiStrings.Help)
|
||||||
|
@ -167,6 +167,7 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
'Move item to the top of the service.'),
|
'Move item to the top of the service.'),
|
||||||
self.onServiceTop, shortcuts=[QtCore.Qt.Key_Home])
|
self.onServiceTop, shortcuts=[QtCore.Qt.Key_Home])
|
||||||
self.serviceManagerList.moveTop.setObjectName(u'moveTop')
|
self.serviceManagerList.moveTop.setObjectName(u'moveTop')
|
||||||
|
ActionList.add_category(UiStrings.Service, 45)
|
||||||
ActionList.add_action(
|
ActionList.add_action(
|
||||||
self.serviceManagerList.moveTop, UiStrings.Service)
|
self.serviceManagerList.moveTop, UiStrings.Service)
|
||||||
self.serviceManagerList.moveUp = self.orderToolbar.addToolbarButton(
|
self.serviceManagerList.moveUp = self.orderToolbar.addToolbarButton(
|
||||||
|
@ -367,12 +367,14 @@ class SlideController(QtGui.QWidget):
|
|||||||
def setPreviewHotkeys(self, parent=None):
|
def setPreviewHotkeys(self, parent=None):
|
||||||
self.previousItem.setObjectName(u'previousItemPreview')
|
self.previousItem.setObjectName(u'previousItemPreview')
|
||||||
self.nextItem.setObjectName(u'nextItemPreview')
|
self.nextItem.setObjectName(u'nextItemPreview')
|
||||||
|
ActionList.add_category(UiStrings.PreviewToolbar, 55)
|
||||||
ActionList.add_action(self.previousItem, UiStrings.PreviewToolbar)
|
ActionList.add_action(self.previousItem, UiStrings.PreviewToolbar)
|
||||||
ActionList.add_action(self.nextItem, UiStrings.PreviewToolbar)
|
ActionList.add_action(self.nextItem, UiStrings.PreviewToolbar)
|
||||||
|
|
||||||
def setLiveHotkeys(self, parent=None):
|
def setLiveHotkeys(self, parent=None):
|
||||||
self.previousItem.setObjectName(u'previousItemLive')
|
self.previousItem.setObjectName(u'previousItemLive')
|
||||||
self.nextItem.setObjectName(u'nextItemLive')
|
self.nextItem.setObjectName(u'nextItemLive')
|
||||||
|
ActionList.add_category(UiStrings.LiveToolbar, 60)
|
||||||
ActionList.add_action(self.previousItem, UiStrings.LiveToolbar)
|
ActionList.add_action(self.previousItem, UiStrings.LiveToolbar)
|
||||||
ActionList.add_action(self.nextItem, UiStrings.LiveToolbar)
|
ActionList.add_action(self.nextItem, UiStrings.LiveToolbar)
|
||||||
self.previousService = shortcut_action(parent, u'previousService',
|
self.previousService = shortcut_action(parent, u'previousService',
|
||||||
|
@ -154,13 +154,10 @@ class CategoryList(object):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def append(self, name, actions=None):
|
def append(self, name, actions=None):
|
||||||
weight = 0
|
|
||||||
if len(self.categories) > 0:
|
|
||||||
weight = self.categories[-1].weight + 1
|
|
||||||
if actions:
|
if actions:
|
||||||
self.add(name, weight, actions)
|
self.add(name, actions=actions)
|
||||||
else:
|
else:
|
||||||
self.add(name, weight)
|
self.add(name)
|
||||||
|
|
||||||
def add(self, name, weight=0, actions=None):
|
def add(self, name, weight=0, actions=None):
|
||||||
category = ActionCategory(name, weight)
|
category = ActionCategory(name, weight)
|
||||||
@ -171,7 +168,7 @@ class CategoryList(object):
|
|||||||
else:
|
else:
|
||||||
category.actions.append(action)
|
category.actions.append(action)
|
||||||
self.categories.append(category)
|
self.categories.append(category)
|
||||||
self.categories.sort(key=lambda cat: cat.weight)
|
self.categories.sort(key=lambda cat: cat.weight, reverse=True)
|
||||||
|
|
||||||
def remove(self, name):
|
def remove(self, name):
|
||||||
for category in self.categories:
|
for category in self.categories:
|
||||||
@ -230,6 +227,17 @@ class ActionList(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def remove_action(action, category=None):
|
def remove_action(action, category=None):
|
||||||
|
"""
|
||||||
|
This removes an action from its category. Empty categories are
|
||||||
|
automatically removed.
|
||||||
|
|
||||||
|
``action``
|
||||||
|
The QAction object to be removed.
|
||||||
|
|
||||||
|
``category``
|
||||||
|
The name (unicode string) of the category, which contains the
|
||||||
|
action. Defaults to None.
|
||||||
|
"""
|
||||||
if category is not None:
|
if category is not None:
|
||||||
category = unicode(category)
|
category = unicode(category)
|
||||||
if category not in ActionList.categories:
|
if category not in ActionList.categories:
|
||||||
@ -238,3 +246,25 @@ class ActionList(object):
|
|||||||
# Remove empty categories.
|
# Remove empty categories.
|
||||||
if len(ActionList.categories[category].actions) == 0:
|
if len(ActionList.categories[category].actions) == 0:
|
||||||
ActionList.categories.remove(category)
|
ActionList.categories.remove(category)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def add_category(name, weight):
|
||||||
|
"""
|
||||||
|
Add an empty category to the list of categories. This is ony convenient
|
||||||
|
for categories with a given weight.
|
||||||
|
|
||||||
|
``name``
|
||||||
|
The category's name.
|
||||||
|
|
||||||
|
``weight``
|
||||||
|
The category's weight (int).
|
||||||
|
"""
|
||||||
|
if name in ActionList.categories:
|
||||||
|
# Only change the weight and resort the categories again.
|
||||||
|
for category in ActionList.categories:
|
||||||
|
if category.name == name:
|
||||||
|
category.weight = weight
|
||||||
|
ActionList.categories.categories.sort(
|
||||||
|
key=lambda cat: cat.weight, reverse=True)
|
||||||
|
return
|
||||||
|
ActionList.categories.add(name, weight)
|
||||||
|
Loading…
Reference in New Issue
Block a user