forked from openlp/openlp
Add ability to clone songs
Amend framework for plugins to add non toolbar context items Fixes: https://launchpad.net/bugs/763583
This commit is contained in:
parent
98775fb7f4
commit
bddf91ddcb
@ -288,6 +288,7 @@ class MediaManagerItem(QtGui.QWidget):
|
|||||||
self.listView, u':/general/general_add.png',
|
self.listView, u':/general/general_add.png',
|
||||||
translate('OpenLP.MediaManagerItem',
|
translate('OpenLP.MediaManagerItem',
|
||||||
'&Add to selected Service Item'), self.onAddEditClick)
|
'&Add to selected Service Item'), self.onAddEditClick)
|
||||||
|
self.addCutomContextActions()
|
||||||
# Create the context menu and add all actions from the listView.
|
# Create the context menu and add all actions from the listView.
|
||||||
self.menu = QtGui.QMenu()
|
self.menu = QtGui.QMenu()
|
||||||
self.menu.addActions(self.listView.actions())
|
self.menu.addActions(self.listView.actions())
|
||||||
@ -301,6 +302,13 @@ class MediaManagerItem(QtGui.QWidget):
|
|||||||
QtCore.SIGNAL('customContextMenuRequested(QPoint)'),
|
QtCore.SIGNAL('customContextMenuRequested(QPoint)'),
|
||||||
self.contextMenu)
|
self.contextMenu)
|
||||||
|
|
||||||
|
def addCutomContextActions(self):
|
||||||
|
"""
|
||||||
|
Implement this method in your descendent media manager item to
|
||||||
|
add any context menu items. This method is called automatically.
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
def initialise(self):
|
def initialise(self):
|
||||||
"""
|
"""
|
||||||
Implement this method in your descendent media manager item to
|
Implement this method in your descendent media manager item to
|
||||||
|
@ -35,7 +35,8 @@ from sqlalchemy.sql import or_
|
|||||||
from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \
|
from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \
|
||||||
translate, check_item_selected, PluginStatus
|
translate, check_item_selected, PluginStatus
|
||||||
from openlp.core.lib.searchedit import SearchEdit
|
from openlp.core.lib.searchedit import SearchEdit
|
||||||
from openlp.core.lib.ui import UiStrings
|
from openlp.core.lib.ui import UiStrings, context_menu_action, \
|
||||||
|
context_menu_separator
|
||||||
from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \
|
from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \
|
||||||
SongImportForm, SongExportForm
|
SongImportForm, SongExportForm
|
||||||
from openlp.plugins.songs.lib import OpenLyrics, SongXML, VerseType, \
|
from openlp.plugins.songs.lib import OpenLyrics, SongXML, VerseType, \
|
||||||
@ -128,6 +129,13 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
QtCore.SIGNAL(u'searchTypeChanged(int)'),
|
QtCore.SIGNAL(u'searchTypeChanged(int)'),
|
||||||
self.onSearchTextButtonClick)
|
self.onSearchTextButtonClick)
|
||||||
|
|
||||||
|
def addCutomContextActions(self):
|
||||||
|
context_menu_separator(self.listView)
|
||||||
|
context_menu_action(
|
||||||
|
self.listView, u':/general/general_add.png',
|
||||||
|
translate('OpenLP.MediaManagerItem',
|
||||||
|
'&Clone.'), self.onCloneClick)
|
||||||
|
|
||||||
def onFocus(self):
|
def onFocus(self):
|
||||||
self.searchTextEdit.setFocus()
|
self.searchTextEdit.setFocus()
|
||||||
|
|
||||||
@ -366,6 +374,23 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
self.plugin.manager.delete_object(Song, item_id)
|
self.plugin.manager.delete_object(Song, item_id)
|
||||||
self.onSearchTextButtonClick()
|
self.onSearchTextButtonClick()
|
||||||
|
|
||||||
|
def onCloneClick(self):
|
||||||
|
"""
|
||||||
|
Clone a Song
|
||||||
|
"""
|
||||||
|
log.debug(u'onCloneClick')
|
||||||
|
if check_item_selected(self.listView, UiStrings().SelectEdit):
|
||||||
|
self.editItem = self.listView.currentItem()
|
||||||
|
item_id = (self.editItem.data(QtCore.Qt.UserRole)).toInt()[0]
|
||||||
|
old_song = self.plugin.manager.get_object(Song, item_id)
|
||||||
|
song_xml = self.openLyrics.song_to_xml(old_song)
|
||||||
|
new_song_id = self.openLyrics.xml_to_song(song_xml)
|
||||||
|
new_song = self.plugin.manager.get_object(Song, new_song_id)
|
||||||
|
new_song.title = u'%s <%s>' % (new_song.title,
|
||||||
|
translate('SongsPlugin.MediaItem', 'copy'))
|
||||||
|
self.plugin.manager.save_object(new_song)
|
||||||
|
self.onSongListLoad()
|
||||||
|
|
||||||
def generateSlideData(self, service_item, item=None, xmlVersion=False):
|
def generateSlideData(self, service_item, item=None, xmlVersion=False):
|
||||||
log.debug(u'generateSlideData (%s:%s)' % (service_item, item))
|
log.debug(u'generateSlideData (%s:%s)' % (service_item, item))
|
||||||
item_id = self._getIdOfItemToGenerate(item, self.remoteSong)
|
item_id = self._getIdOfItemToGenerate(item, self.remoteSong)
|
||||||
|
Loading…
Reference in New Issue
Block a user