forked from openlp/openlp
added ability to remove actions
This commit is contained in:
parent
9b939bb962
commit
fe92842c6b
@ -41,7 +41,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
"""
|
"""
|
||||||
The shortcut list dialog
|
The shortcut list dialog
|
||||||
"""
|
"""
|
||||||
#TODO: do not close on ESC, ability to remove actions (e. g. reindex tool)
|
#TODO: do not close on ESC
|
||||||
#TODO: save/load shortcuts, docs
|
#TODO: save/load shortcuts, docs
|
||||||
#TODO: Fix Preview/Live controller (have the same shortcut), make sure
|
#TODO: Fix Preview/Live controller (have the same shortcut), make sure
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
|
|||||||
self.treeWidget.clear()
|
self.treeWidget.clear()
|
||||||
for category in actionList.categories:
|
for category in actionList.categories:
|
||||||
item = QtGui.QTreeWidgetItem([category.name])
|
item = QtGui.QTreeWidgetItem([category.name])
|
||||||
for action, default in category.actions:
|
for action in category.actions:
|
||||||
self.assingedShortcuts.extend(action.shortcuts())
|
self.assingedShortcuts.extend(action.shortcuts())
|
||||||
actionText = REMOVE_AMPERSAND.sub('', unicode(action.text()))
|
actionText = REMOVE_AMPERSAND.sub('', unicode(action.text()))
|
||||||
if len(action.shortcuts()) == 2:
|
if len(action.shortcuts()) == 2:
|
||||||
|
@ -71,7 +71,7 @@ class CategoryActionList(object):
|
|||||||
raise StopIteration
|
raise StopIteration
|
||||||
else:
|
else:
|
||||||
self.index += 1
|
self.index += 1
|
||||||
return self.actions[self.index - 1][1:]
|
return self.actions[self.index - 1][1]
|
||||||
|
|
||||||
def next(self):
|
def next(self):
|
||||||
"""
|
"""
|
||||||
@ -92,9 +92,15 @@ class CategoryActionList(object):
|
|||||||
self.add(name, weight)
|
self.add(name, weight)
|
||||||
|
|
||||||
def add(self, action, weight=0):
|
def add(self, action, weight=0):
|
||||||
self.actions.append((weight, action, action.shortcuts()))
|
self.actions.append((weight, action))
|
||||||
self.actions.sort(key=lambda act: act[0])
|
self.actions.sort(key=lambda act: act[0])
|
||||||
|
|
||||||
|
def remove(self, remove_action):
|
||||||
|
for action in self.actions:
|
||||||
|
if action[1] == remove_action:
|
||||||
|
self.actions.remove(action)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
class CategoryList(object):
|
class CategoryList(object):
|
||||||
"""
|
"""
|
||||||
@ -176,7 +182,7 @@ class ActionList(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.categories = CategoryList()
|
self.categories = CategoryList()
|
||||||
|
|
||||||
def add_action(self, action, category=u'Default', weight=None):
|
def add_action(self, action, category, weight=None):
|
||||||
if category not in self.categories:
|
if category not in self.categories:
|
||||||
self.categories.append(category)
|
self.categories.append(category)
|
||||||
if weight is None:
|
if weight is None:
|
||||||
@ -184,4 +190,9 @@ class ActionList(object):
|
|||||||
else:
|
else:
|
||||||
self.categories[category].actions.add(action, weight)
|
self.categories[category].actions.add(action, weight)
|
||||||
|
|
||||||
|
def remove_action(self, action, category):
|
||||||
|
if category not in self.categories:
|
||||||
|
return
|
||||||
|
self.categories[category].actions.remove(action)
|
||||||
|
|
||||||
actionList = ActionList()
|
actionList = ActionList()
|
||||||
|
@ -86,7 +86,7 @@ class AlertsPlugin(Plugin):
|
|||||||
self.manager.finalise()
|
self.manager.finalise()
|
||||||
Plugin.finalise(self)
|
Plugin.finalise(self)
|
||||||
self.toolsAlertItem.setVisible(False)
|
self.toolsAlertItem.setVisible(False)
|
||||||
#TODO: remove the action from the actionList
|
actionList.remove_action(self.toolsAlertItem, u'Tools')
|
||||||
|
|
||||||
def toggleAlertsState(self):
|
def toggleAlertsState(self):
|
||||||
self.alertsActive = not self.alertsActive
|
self.alertsActive = not self.alertsActive
|
||||||
|
@ -34,6 +34,7 @@ from openlp.core.lib import Plugin, StringContent, build_icon, translate, \
|
|||||||
Receiver
|
Receiver
|
||||||
from openlp.core.lib.db import Manager
|
from openlp.core.lib.db import Manager
|
||||||
from openlp.core.lib.ui import UiStrings, base_action, icon_action
|
from openlp.core.lib.ui import UiStrings, base_action, icon_action
|
||||||
|
from openlp.core.utils.actions import actionList
|
||||||
from openlp.plugins.songs.lib import clean_song, SongMediaItem, SongsTab
|
from openlp.plugins.songs.lib import clean_song, SongMediaItem, SongsTab
|
||||||
from openlp.plugins.songs.lib.db import init_schema, Song
|
from openlp.plugins.songs.lib.db import init_schema, Song
|
||||||
from openlp.plugins.songs.lib.importer import SongFormat
|
from openlp.plugins.songs.lib.importer import SongFormat
|
||||||
@ -65,6 +66,9 @@ class SongsPlugin(Plugin):
|
|||||||
log.info(u'Songs Initialising')
|
log.info(u'Songs Initialising')
|
||||||
Plugin.initialise(self)
|
Plugin.initialise(self)
|
||||||
self.toolsReindexItem.setVisible(True)
|
self.toolsReindexItem.setVisible(True)
|
||||||
|
actionList.add_action(self.SongImportItem, u'Import')
|
||||||
|
actionList.add_action(self.SongExportItem, u'Export')
|
||||||
|
actionList.add_action(self.toolsReindexItem, u'Tools')
|
||||||
self.mediaItem.displayResultsSong(
|
self.mediaItem.displayResultsSong(
|
||||||
self.manager.get_all_objects(Song, order_by_ref=Song.search_title))
|
self.manager.get_all_objects(Song, order_by_ref=Song.search_title))
|
||||||
|
|
||||||
@ -78,8 +82,7 @@ class SongsPlugin(Plugin):
|
|||||||
use it as their parent.
|
use it as their parent.
|
||||||
"""
|
"""
|
||||||
# Main song import menu item - will eventually be the only one
|
# Main song import menu item - will eventually be the only one
|
||||||
self.SongImportItem = base_action(
|
self.SongImportItem = base_action(import_menu, u'SongImportItem')
|
||||||
import_menu, u'SongImportItem', u'Import')
|
|
||||||
self.SongImportItem.setText(translate(
|
self.SongImportItem.setText(translate(
|
||||||
'SongsPlugin', '&Song'))
|
'SongsPlugin', '&Song'))
|
||||||
self.SongImportItem.setToolTip(translate('SongsPlugin',
|
self.SongImportItem.setToolTip(translate('SongsPlugin',
|
||||||
@ -99,7 +102,7 @@ class SongsPlugin(Plugin):
|
|||||||
use it as their parent.
|
use it as their parent.
|
||||||
"""
|
"""
|
||||||
# Main song import menu item - will eventually be the only one
|
# Main song import menu item - will eventually be the only one
|
||||||
self.SongExportItem = base_action(export_menu, u'SongExportItem', u'Export')
|
self.SongExportItem = base_action(export_menu, u'SongExportItem')
|
||||||
self.SongExportItem.setText(translate(
|
self.SongExportItem.setText(translate(
|
||||||
'SongsPlugin', '&Song'))
|
'SongsPlugin', '&Song'))
|
||||||
self.SongExportItem.setToolTip(translate('SongsPlugin',
|
self.SongExportItem.setToolTip(translate('SongsPlugin',
|
||||||
@ -120,7 +123,7 @@ class SongsPlugin(Plugin):
|
|||||||
"""
|
"""
|
||||||
log.info(u'add tools menu')
|
log.info(u'add tools menu')
|
||||||
self.toolsReindexItem = icon_action(tools_menu, u'toolsReindexItem',
|
self.toolsReindexItem = icon_action(tools_menu, u'toolsReindexItem',
|
||||||
u':/plugins/plugin_songs.png', category=u'Tools')
|
u':/plugins/plugin_songs.png')
|
||||||
self.toolsReindexItem.setText(
|
self.toolsReindexItem.setText(
|
||||||
translate('SongsPlugin', '&Re-index Songs'))
|
translate('SongsPlugin', '&Re-index Songs'))
|
||||||
self.toolsReindexItem.setStatusTip(
|
self.toolsReindexItem.setStatusTip(
|
||||||
@ -257,4 +260,7 @@ class SongsPlugin(Plugin):
|
|||||||
log.info(u'Songs Finalising')
|
log.info(u'Songs Finalising')
|
||||||
self.manager.finalise()
|
self.manager.finalise()
|
||||||
self.toolsReindexItem.setVisible(False)
|
self.toolsReindexItem.setVisible(False)
|
||||||
|
actionList.remove_action(self.SongImportItem, u'Import')
|
||||||
|
actionList.remove_action(self.SongExportItem, u'Export')
|
||||||
|
actionList.remove_action(self.toolsReindexItem, u'Tools')
|
||||||
Plugin.finalise(self)
|
Plugin.finalise(self)
|
||||||
|
Loading…
Reference in New Issue
Block a user