forked from openlp/openlp
Added context menus to ServiceManager
Refactored Icon Construction to single method
This commit is contained in:
parent
8c7c71e0c0
commit
0ba52fbd66
|
@ -15,7 +15,24 @@ You should have received a copy of the GNU General Public License along with
|
||||||
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||||
Place, Suite 330, Boston, MA 02111-1307 USA
|
Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
"""
|
"""
|
||||||
__all__ = ['convertStringToBoolean']
|
import types
|
||||||
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
|
__all__ = ['convertStringToBoolean','buildIcon',]
|
||||||
|
|
||||||
def convertStringToBoolean(stringvalue):
|
def convertStringToBoolean(stringvalue):
|
||||||
return stringvalue.strip().lower() in (u'true', u'yes', u'y')
|
return stringvalue.strip().lower() in (u'true', u'yes', u'y')
|
||||||
|
|
||||||
|
def buildIcon(icon):
|
||||||
|
ButtonIcon = None
|
||||||
|
if type(icon) is QtGui.QIcon:
|
||||||
|
ButtonIcon = icon
|
||||||
|
elif type(icon) is types.StringType or type(icon) is types.UnicodeType:
|
||||||
|
ButtonIcon = QtGui.QIcon()
|
||||||
|
if icon.startswith(u':/'):
|
||||||
|
ButtonIcon.addPixmap(QtGui.QPixmap(icon), QtGui.QIcon.Normal,
|
||||||
|
QtGui.QIcon.Off)
|
||||||
|
else:
|
||||||
|
ButtonIcon.addPixmap(QtGui.QPixmap.fromImage(QImage(icon)),
|
||||||
|
QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||||
|
return ButtonIcon
|
||||||
|
|
|
@ -20,7 +20,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
import types
|
import types
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
from openlp.core.resources import *
|
|
||||||
from openlp.core.lib.toolbar import *
|
from openlp.core.lib.toolbar import *
|
||||||
|
|
||||||
class MediaManagerItem(QtGui.QWidget):
|
class MediaManagerItem(QtGui.QWidget):
|
||||||
|
|
|
@ -18,12 +18,12 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||||
Place, Suite 330, Boston, MA 02111-1307 USA
|
Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
import types
|
|
||||||
import time
|
import time
|
||||||
|
from openlp import buildIcon
|
||||||
from PyQt4.QtCore import *
|
from PyQt4.QtCore import *
|
||||||
from PyQt4.QtGui import *
|
from PyQt4.QtGui import *
|
||||||
|
|
||||||
|
|
||||||
class ServiceItem():
|
class ServiceItem():
|
||||||
"""
|
"""
|
||||||
The service item is a base class for the plugins to use to interact with
|
The service item is a base class for the plugins to use to interact with
|
||||||
|
@ -50,18 +50,7 @@ class ServiceItem():
|
||||||
log.debug(u'Service item created for %s', self.shortname)
|
log.debug(u'Service item created for %s', self.shortname)
|
||||||
|
|
||||||
def addIcon(self, icon):
|
def addIcon(self, icon):
|
||||||
ButtonIcon = None
|
self.iconic_representation = buildIcon(icon)
|
||||||
if type(icon) is QIcon:
|
|
||||||
ButtonIcon = icon
|
|
||||||
elif type(icon) is types.StringType or type(icon) is types.UnicodeType:
|
|
||||||
ButtonIcon = QIcon()
|
|
||||||
if icon.startswith(u':/'):
|
|
||||||
ButtonIcon.addPixmap(QPixmap(icon), QIcon.Normal,
|
|
||||||
QIcon.Off)
|
|
||||||
else:
|
|
||||||
ButtonIcon.addPixmap(QPixmap.fromImage(QImage(icon)),
|
|
||||||
QIcon.Normal, QIcon.Off)
|
|
||||||
self.iconic_representation = ButtonIcon
|
|
||||||
|
|
||||||
def render(self):
|
def render(self):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -26,6 +26,7 @@ from openlp.core.lib import OpenLPToolbar
|
||||||
from openlp.core.lib import ServiceItem
|
from openlp.core.lib import ServiceItem
|
||||||
from openlp.core.lib import RenderManager
|
from openlp.core.lib import RenderManager
|
||||||
from openlp.core import translate
|
from openlp.core import translate
|
||||||
|
from openlp import buildIcon
|
||||||
from openlp.core.lib import Event, EventType, EventManager
|
from openlp.core.lib import Event, EventType, EventManager
|
||||||
|
|
||||||
class ServiceManager(QtGui.QWidget):
|
class ServiceManager(QtGui.QWidget):
|
||||||
|
@ -82,15 +83,39 @@ class ServiceManager(QtGui.QWidget):
|
||||||
self.ServiceManagerList .__class__.dragEnterEvent=self.dragEnterEvent
|
self.ServiceManagerList .__class__.dragEnterEvent=self.dragEnterEvent
|
||||||
self.ServiceManagerList .__class__.dragMoveEvent=self.dragEnterEvent
|
self.ServiceManagerList .__class__.dragMoveEvent=self.dragEnterEvent
|
||||||
self.ServiceManagerList .__class__.dropEvent =self.dropEvent
|
self.ServiceManagerList .__class__.dropEvent =self.dropEvent
|
||||||
#endable drag
|
|
||||||
#self.ServiceManagerList.setDragEnabled(True)
|
self.ServiceManagerList.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
||||||
#self.ServiceManagerList .__class__.mouseMoveEvent =self.onMouseMoveEvent
|
|
||||||
|
self.ServiceManagerList.addAction(self.contextMenuAction(
|
||||||
|
self.ServiceManagerList, ':/system/system_preview.png',
|
||||||
|
translate(u'ServiceManager',u'&Preview Verse'), self.makeLive))
|
||||||
|
self.ServiceManagerList.addAction(self.contextMenuAction(
|
||||||
|
self.ServiceManagerList, ':/system/system_live.png',
|
||||||
|
translate(u'ServiceManager',u'&Show Live'), self.makePreview))
|
||||||
|
self.ServiceManagerList.addAction(self.contextMenuSeparator(self.ServiceManagerList))
|
||||||
|
self.ServiceManagerList.addAction(self.contextMenuAction(
|
||||||
|
self.ServiceManagerList, ':/services/service_delete',
|
||||||
|
translate(u'ServiceManager',u'&Remove from Service'), self.onDeleteFromService))
|
||||||
|
|
||||||
self.Layout.addWidget(self.ServiceManagerList)
|
self.Layout.addWidget(self.ServiceManagerList)
|
||||||
|
|
||||||
QtCore.QObject.connect(self.ThemeComboBox,
|
QtCore.QObject.connect(self.ThemeComboBox,
|
||||||
QtCore.SIGNAL("activated(int)"), self.onThemeComboBoxSelected)
|
QtCore.SIGNAL("activated(int)"), self.onThemeComboBoxSelected)
|
||||||
|
|
||||||
|
def contextMenuAction(self, base, icon, text, slot):
|
||||||
|
"""
|
||||||
|
Utility method to help build context menus for plugins
|
||||||
|
"""
|
||||||
|
action = QtGui.QAction(text, base)
|
||||||
|
action .setIcon(buildIcon(icon))
|
||||||
|
QtCore.QObject.connect(action, QtCore.SIGNAL("triggered()"), slot)
|
||||||
|
return action
|
||||||
|
|
||||||
|
def contextMenuSeparator(self, base):
|
||||||
|
action = QtGui.QAction("", base)
|
||||||
|
action.setSeparator(True)
|
||||||
|
return action
|
||||||
|
|
||||||
def onServiceTop(self):
|
def onServiceTop(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -130,6 +155,9 @@ class ServiceManager(QtGui.QWidget):
|
||||||
treewidgetitem1.setText(0,text[:30])
|
treewidgetitem1.setText(0,text[:30])
|
||||||
#treewidgetitem1.setIcon(0,frame[u'image'])
|
#treewidgetitem1.setIcon(0,frame[u'image'])
|
||||||
|
|
||||||
|
def makePreview(self):
|
||||||
|
print "make Preview"
|
||||||
|
|
||||||
def makeLive(self):
|
def makeLive(self):
|
||||||
print "make live"
|
print "make live"
|
||||||
self.liveController.addServiceManagerItem(None, 1)
|
self.liveController.addServiceManagerItem(None, 1)
|
||||||
|
@ -178,35 +206,8 @@ class ServiceManager(QtGui.QWidget):
|
||||||
link=event.mimeData()
|
link=event.mimeData()
|
||||||
if link.hasText():
|
if link.hasText():
|
||||||
plugin = event.mimeData().text()
|
plugin = event.mimeData().text()
|
||||||
print plugin
|
|
||||||
self.eventManager.post_event(Event(EventType.LoadServiceItem, plugin))
|
self.eventManager.post_event(Event(EventType.LoadServiceItem, plugin))
|
||||||
|
|
||||||
# def onMouseMoveEvent(self, event):
|
|
||||||
# """
|
|
||||||
# Drag and drop eventDo not care what data is selected
|
|
||||||
# as the recepient will use events to request the data move
|
|
||||||
# just tell it what plugin to call
|
|
||||||
# """
|
|
||||||
# print "ServiceManager"
|
|
||||||
# if event.buttons() != QtCore.Qt.LeftButton:
|
|
||||||
# return
|
|
||||||
#
|
|
||||||
# items = self.ServiceManagerList.selectedIndexes()
|
|
||||||
# if items == []:
|
|
||||||
# return
|
|
||||||
#
|
|
||||||
# drag = QtGui.QDrag(self)
|
|
||||||
# mimeData = QtCore.QMimeData()
|
|
||||||
# drag.setMimeData(mimeData)
|
|
||||||
# for item in items:
|
|
||||||
# mimeData.setText(u'ServiceManager')
|
|
||||||
#
|
|
||||||
# dropAction = drag.start(QtCore.Qt.CopyAction)
|
|
||||||
#
|
|
||||||
# if dropAction == QtCore.Qt.CopyAction:
|
|
||||||
# self.close()
|
|
||||||
|
|
||||||
|
|
||||||
def oos_as_text(self):
|
def oos_as_text(self):
|
||||||
text=[]
|
text=[]
|
||||||
log.info( "oos as text")
|
log.info( "oos as text")
|
||||||
|
|
|
@ -26,66 +26,6 @@ from openlp.core.lib import OpenLPToolbar
|
||||||
from openlp.core import translate
|
from openlp.core import translate
|
||||||
from openlp.core.lib import Event, EventType, EventManager
|
from openlp.core.lib import Event, EventType, EventManager
|
||||||
|
|
||||||
#class PreviewList(QtGui.QListView):
|
|
||||||
#
|
|
||||||
# def __init__(self,parent=None):
|
|
||||||
# QtGui.QListView.__init__(self,parent)
|
|
||||||
# self.setAcceptDrops(True)
|
|
||||||
# self.setDropIndicatorShown(True)
|
|
||||||
# self.setDragEnabled(False)
|
|
||||||
# self.setDragDropMode(QtGui.QAbstractItemView.DropOnly)
|
|
||||||
#
|
|
||||||
# def dragEnterEvent(self, event):
|
|
||||||
# """
|
|
||||||
# Accept Drag events
|
|
||||||
# """
|
|
||||||
# event.accept()
|
|
||||||
#
|
|
||||||
# def dropEvent(self, event):
|
|
||||||
# """
|
|
||||||
# Handle the release of the event and trigger the plugin
|
|
||||||
# to add the data
|
|
||||||
# """
|
|
||||||
# print "preview drop event"
|
|
||||||
# link=event.mimeData()
|
|
||||||
# if link.hasText():
|
|
||||||
# plugin = event.mimeData().text()
|
|
||||||
# if plugin == u'ServiceManager':
|
|
||||||
# #Service Manager to Preview is not a sane
|
|
||||||
# self.serviceManager.makeLive()
|
|
||||||
# else:
|
|
||||||
# print "preview fired ", plugin
|
|
||||||
# self.eventManager.post_event(Event(EventType.PreviewShow, plugin))
|
|
||||||
#
|
|
||||||
#class LiveList(QtGui.QListView):
|
|
||||||
# def __init__(self,parent=None):
|
|
||||||
# QtGui.QListView.__init__(self,parent)
|
|
||||||
# self.setAcceptDrops(True)
|
|
||||||
# self.setDropIndicatorShown(True)
|
|
||||||
# self.setDragEnabled(False)
|
|
||||||
# self.setDragDropMode(QtGui.QAbstractItemView.DropOnly)
|
|
||||||
#
|
|
||||||
# def dragEnterEvent(self, event):
|
|
||||||
# """
|
|
||||||
# Accept Drag events
|
|
||||||
# """
|
|
||||||
# event.accept()
|
|
||||||
#
|
|
||||||
# def dropEvent(self, event):
|
|
||||||
# """
|
|
||||||
# Handle the release of the event and trigger the plugin
|
|
||||||
# to add the data
|
|
||||||
# """
|
|
||||||
# print "Live drop event"
|
|
||||||
# link=event.mimeData()
|
|
||||||
# if link.hasText():
|
|
||||||
# plugin = event.mimeData().text()
|
|
||||||
# if plugin == u'ServiceManager':
|
|
||||||
# self.serviceManager.makeLive()
|
|
||||||
# else:
|
|
||||||
# self.eventManager.post_event(Event(EventType.LiveShow, plugin))
|
|
||||||
|
|
||||||
|
|
||||||
class SlideData(QtCore.QAbstractListModel):
|
class SlideData(QtCore.QAbstractListModel):
|
||||||
"""
|
"""
|
||||||
Tree of items for an order of Theme.
|
Tree of items for an order of Theme.
|
||||||
|
@ -102,6 +42,10 @@ class SlideData(QtCore.QAbstractListModel):
|
||||||
self.maximagewidth=self.rowheight*16/9.0;
|
self.maximagewidth=self.rowheight*16/9.0;
|
||||||
log.info(u'Starting')
|
log.info(u'Starting')
|
||||||
|
|
||||||
|
def eventFilter(self, obj, event):
|
||||||
|
print obj, event
|
||||||
|
return false
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
self.items=[]
|
self.items=[]
|
||||||
|
|
||||||
|
@ -185,8 +129,6 @@ class SlideController(QtGui.QWidget):
|
||||||
self.gridLayout = QtGui.QGridLayout(self.scrollAreaWidgetContents)
|
self.gridLayout = QtGui.QGridLayout(self.scrollAreaWidgetContents)
|
||||||
self.gridLayout.setObjectName("gridLayout")
|
self.gridLayout.setObjectName("gridLayout")
|
||||||
|
|
||||||
#load the correct class for drag and drop
|
|
||||||
|
|
||||||
self.PreviewListView = QtGui.QListView(self.scrollAreaWidgetContents)
|
self.PreviewListView = QtGui.QListView(self.scrollAreaWidgetContents)
|
||||||
self.PreviewListData = SlideData()
|
self.PreviewListData = SlideData()
|
||||||
self.PreviewListView.isLive = self.isLive
|
self.PreviewListView.isLive = self.isLive
|
||||||
|
@ -246,6 +188,13 @@ class SlideController(QtGui.QWidget):
|
||||||
|
|
||||||
QtCore.QObject.connect(self.PreviewListView,
|
QtCore.QObject.connect(self.PreviewListView,
|
||||||
QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected)
|
QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected)
|
||||||
|
QtCore.QObject.connect(self.PreviewListView,
|
||||||
|
QtCore.SIGNAL(u'activated(QModelIndex)'), self.onSlideSelected)
|
||||||
|
QtCore.QObject.connect(self.PreviewListView,
|
||||||
|
QtCore.SIGNAL(u'keyPressEvent(QKeyEvent)'), self.onSlideSelecteda)
|
||||||
|
|
||||||
|
def onSlideSelecteda(self, index):
|
||||||
|
print "a", index
|
||||||
|
|
||||||
def onSlideSelectedFirst(self):
|
def onSlideSelectedFirst(self):
|
||||||
row = self.PreviewListData.createIndex(0, 0)
|
row = self.PreviewListData.createIndex(0, 0)
|
||||||
|
|
|
@ -230,6 +230,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||||
QtCore.SIGNAL("pressed()"), self.onQuickSearchButton)
|
QtCore.SIGNAL("pressed()"), self.onQuickSearchButton)
|
||||||
# Context Menus
|
# Context Menus
|
||||||
self.BibleListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
self.BibleListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
||||||
|
|
||||||
self.BibleListView.addAction(self.contextMenuAction(
|
self.BibleListView.addAction(self.contextMenuAction(
|
||||||
self.BibleListView, ':/system/system_preview.png',
|
self.BibleListView, ':/system/system_preview.png',
|
||||||
translate(u'BibleMediaItem',u'&Preview Verse'), self.onBiblePreviewClick))
|
translate(u'BibleMediaItem',u'&Preview Verse'), self.onBiblePreviewClick))
|
||||||
|
|
|
@ -101,6 +101,7 @@ class ImageMediaItem(MediaManagerItem):
|
||||||
self.ImageListView.setModel(self.ImageListData)
|
self.ImageListView.setModel(self.ImageListData)
|
||||||
self.ImageListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
self.ImageListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
||||||
self.ImageListView.setSpacing(1)
|
self.ImageListView.setSpacing(1)
|
||||||
|
self.ImageListView.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
|
||||||
self.ImageListView.setAlternatingRowColors(True)
|
self.ImageListView.setAlternatingRowColors(True)
|
||||||
self.ImageListView.setDragEnabled(True)
|
self.ImageListView.setDragEnabled(True)
|
||||||
self.ImageListView.setObjectName('ImageListView')
|
self.ImageListView.setObjectName('ImageListView')
|
||||||
|
|
Loading…
Reference in New Issue