forked from openlp/openlp
Add drag and drop eventing to Bibles and Images
Revamp Pluging drag and drop code to handle class clashing Add Drag and drop code to SlideController Start to hook up servicemanger with slide controller.
This commit is contained in:
parent
b2d2de6ad8
commit
bc1c714693
|
@ -37,10 +37,12 @@ class EventType(object):
|
||||||
AfterSaveService = 4
|
AfterSaveService = 4
|
||||||
LoadServiceItem = 5
|
LoadServiceItem = 5
|
||||||
# Preview events
|
# Preview events
|
||||||
PreviewBeforeLoad = 11
|
PreviewShow = 10
|
||||||
PreviewAfterLoad = 12
|
LiveShow = 11
|
||||||
PreviewBeforeShow = 13
|
#PreviewBeforeLoad = 11
|
||||||
PreviewAfterShow = 14
|
#PreviewAfterLoad = 12
|
||||||
|
#PreviewBeforeShow = 13
|
||||||
|
#PreviewAfterShow = 14
|
||||||
|
|
||||||
ThemeListChanged = 15
|
ThemeListChanged = 15
|
||||||
|
|
||||||
|
|
|
@ -88,13 +88,20 @@ class MainWindow(object):
|
||||||
self.plugin_manager.initialise_plugins()
|
self.plugin_manager.initialise_plugins()
|
||||||
|
|
||||||
# Once all components are initialised load the Themes
|
# Once all components are initialised load the Themes
|
||||||
log.info(u'Load Themes')
|
log.info(u'Load Themes and Managers')
|
||||||
|
self.PreviewController.eventManager = self.EventManager
|
||||||
|
self.PreviewController.serviceManager = self.ServiceManagerContents
|
||||||
|
self.LiveController.eventManager = self.EventManager
|
||||||
|
self.LiveController.serviceManager = self.ServiceManagerContents
|
||||||
self.ThemeManagerContents.eventManager = self.EventManager
|
self.ThemeManagerContents.eventManager = self.EventManager
|
||||||
self.ThemeManagerContents.renderManager = self.RenderManager
|
self.ThemeManagerContents.renderManager = self.RenderManager
|
||||||
self.ServiceManagerContents.renderManager = self.RenderManager
|
self.ServiceManagerContents.renderManager = self.RenderManager
|
||||||
self.ServiceManagerContents.eventManager = self.EventManager
|
self.ServiceManagerContents.eventManager = self.EventManager
|
||||||
|
self.ServiceManagerContents.liveController = self.LiveController
|
||||||
self.ThemeManagerContents.serviceManager = self.ServiceManagerContents
|
self.ThemeManagerContents.serviceManager = self.ServiceManagerContents
|
||||||
self.ThemeManagerContents.loadThemes()
|
self.ThemeManagerContents.loadThemes()
|
||||||
|
self.PreviewController.postInit()
|
||||||
|
self.LiveController.postInit()
|
||||||
|
|
||||||
# Initialise SlideControllers
|
# Initialise SlideControllers
|
||||||
log.info(u'Set Up SlideControllers')
|
log.info(u'Set Up SlideControllers')
|
||||||
|
|
|
@ -20,9 +20,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from time import sleep
|
|
||||||
from copy import deepcopy
|
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import OpenLPToolbar
|
from openlp.core.lib import OpenLPToolbar
|
||||||
|
@ -31,83 +28,6 @@ from openlp.core.lib import RenderManager
|
||||||
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 ServiceData(QtCore.QAbstractItemModel):
|
|
||||||
# """
|
|
||||||
# Tree of items for an order of service.
|
|
||||||
# Includes methods for reading and writing the contents to an OOS file
|
|
||||||
# Root contains a list of ServiceItems
|
|
||||||
# """
|
|
||||||
# global log
|
|
||||||
# log=logging.getLogger(u'ServiceData')
|
|
||||||
# def __init__(self):
|
|
||||||
# QtCore.QAbstractItemModel.__init__(self)
|
|
||||||
# self.items=[]
|
|
||||||
# log.info("Starting")
|
|
||||||
#
|
|
||||||
# def clearItems(self):
|
|
||||||
# self.items = []
|
|
||||||
#
|
|
||||||
# def columnCount(self, parent=None):
|
|
||||||
# return 1; # always only a single column (for now)
|
|
||||||
#
|
|
||||||
# def rowCount(self, parent=None):
|
|
||||||
# return len(self.items)
|
|
||||||
#
|
|
||||||
# def insertRow(self, row, service_item):
|
|
||||||
# self.beginInsertRows(QtCore.QModelIndex(),row,row)
|
|
||||||
# log.info("insert row %s:%s" % (row,service_item))
|
|
||||||
# self.items.insert(row, service_item)
|
|
||||||
# log.info("Items: %s" % self.items)
|
|
||||||
# self.endInsertRows()
|
|
||||||
#
|
|
||||||
# def removeRow(self, row):
|
|
||||||
# self.beginRemoveRows(QtCore.QModelIndex(), row,row)
|
|
||||||
# self.items.pop(row)
|
|
||||||
# self.endRemoveRows()
|
|
||||||
#
|
|
||||||
# def addRow(self, service_item):
|
|
||||||
# self.insertRow(len(self.items), service_item)
|
|
||||||
#
|
|
||||||
# def index(self, row, col, parent = QtCore.QModelIndex()):
|
|
||||||
# return self.createIndex(row,col)
|
|
||||||
#
|
|
||||||
# def parent(self, index=QtCore.QModelIndex()):
|
|
||||||
# return QtCore.QModelIndex() # no children as yet
|
|
||||||
#
|
|
||||||
# def data(self, index, role):
|
|
||||||
# """
|
|
||||||
# Called by the service manager to draw us in the service window
|
|
||||||
# """
|
|
||||||
# log.debug(u'data %s %d', index, role)
|
|
||||||
# row = index.row()
|
|
||||||
# if row > len(self.items): # if the last row is selected and deleted, we then get called with an empty row!
|
|
||||||
# return QtCore.QVariant()
|
|
||||||
# item = self.items[row]
|
|
||||||
# if role == QtCore.Qt.DisplayRole:
|
|
||||||
# retval= item.title + u':' + item.shortname
|
|
||||||
# elif role == QtCore.Qt.DecorationRole:
|
|
||||||
# retval = item.iconic_representation
|
|
||||||
# elif role == QtCore.Qt.ToolTipRole:
|
|
||||||
# retval = None
|
|
||||||
# else:
|
|
||||||
# retval = None
|
|
||||||
# if retval == None:
|
|
||||||
# retval = QtCore.QVariant()
|
|
||||||
## log.info("Returning"+ str(retval))
|
|
||||||
# if type(retval) is not type(QtCore.QVariant):
|
|
||||||
# return QtCore.QVariant(retval)
|
|
||||||
# else:
|
|
||||||
# return retval
|
|
||||||
#
|
|
||||||
# def __iter__(self):
|
|
||||||
# for i in self.items:
|
|
||||||
# yield i
|
|
||||||
#
|
|
||||||
# def item(self, row):
|
|
||||||
# log.info("Get Item:%d -> %s" %(row, str(self.items)))
|
|
||||||
# return self.items[row]
|
|
||||||
|
|
||||||
|
|
||||||
class ServiceManager(QtGui.QWidget):
|
class ServiceManager(QtGui.QWidget):
|
||||||
|
|
||||||
"""Manages the orders of service. Currently this involves taking
|
"""Manages the orders of service. Currently this involves taking
|
||||||
|
@ -153,16 +73,18 @@ class ServiceManager(QtGui.QWidget):
|
||||||
self.Toolbar.addAction(self.ThemeWidget)
|
self.Toolbar.addAction(self.ThemeWidget)
|
||||||
self.Layout.addWidget(self.Toolbar)
|
self.Layout.addWidget(self.Toolbar)
|
||||||
|
|
||||||
self.serviceManagerList = QtGui.QTreeWidget(self)
|
self.ServiceManagerList = QtGui.QTreeWidget(self)
|
||||||
self.serviceManagerList.setEditTriggers(QtGui.QAbstractItemView.CurrentChanged|QtGui.QAbstractItemView.DoubleClicked|QtGui.QAbstractItemView.EditKeyPressed)
|
self.ServiceManagerList.setEditTriggers(QtGui.QAbstractItemView.CurrentChanged|QtGui.QAbstractItemView.DoubleClicked|QtGui.QAbstractItemView.EditKeyPressed)
|
||||||
self.serviceManagerList.setDragDropMode(QtGui.QAbstractItemView.DragDrop)
|
self.ServiceManagerList.setDragDropMode(QtGui.QAbstractItemView.DragDrop)
|
||||||
self.serviceManagerList.setAlternatingRowColors(True)
|
self.ServiceManagerList.setAlternatingRowColors(True)
|
||||||
self.serviceManagerList.setObjectName("serviceManagerList")
|
self.ServiceManagerList.setObjectName("ServiceManagerList")
|
||||||
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
|
||||||
|
self.ServiceManagerList.setDragEnabled(True)
|
||||||
|
self.ServiceManagerList .__class__.mouseMoveEvent =self.onMouseMoveEvent
|
||||||
|
|
||||||
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)
|
||||||
|
@ -195,7 +117,7 @@ class ServiceManager(QtGui.QWidget):
|
||||||
self.renderManager.default_theme = self.ThemeComboBox.currentText()
|
self.renderManager.default_theme = self.ThemeComboBox.currentText()
|
||||||
|
|
||||||
def addServiceItem(self, item):
|
def addServiceItem(self, item):
|
||||||
treewidgetitem = QtGui.QTreeWidgetItem(self.serviceManagerList)
|
treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList)
|
||||||
treewidgetitem.setText(0,item.title + u':' + item.shortname)
|
treewidgetitem.setText(0,item.title + u':' + item.shortname)
|
||||||
treewidgetitem.setIcon(0,item.iconic_representation)
|
treewidgetitem.setIcon(0,item.iconic_representation)
|
||||||
treewidgetitem.setExpanded(True)
|
treewidgetitem.setExpanded(True)
|
||||||
|
@ -203,9 +125,43 @@ class ServiceManager(QtGui.QWidget):
|
||||||
for frame in item.frames:
|
for frame in item.frames:
|
||||||
treewidgetitem1 = QtGui.QTreeWidgetItem(treewidgetitem)
|
treewidgetitem1 = QtGui.QTreeWidgetItem(treewidgetitem)
|
||||||
text = frame[u'formatted'][0]
|
text = frame[u'formatted'][0]
|
||||||
treewidgetitem1.setText(0,text[:10])
|
treewidgetitem1.setText(0,text[:30])
|
||||||
#treewidgetitem1.setIcon(0,frame[u'image'])
|
#treewidgetitem1.setIcon(0,frame[u'image'])
|
||||||
|
|
||||||
|
def makeLive(self):
|
||||||
|
print "make live"
|
||||||
|
self.liveController.addServiceManagerItem(None, 1)
|
||||||
|
# items = self.serviceManagerList.selectedItems()
|
||||||
|
# if items == []:
|
||||||
|
# return
|
||||||
|
#
|
||||||
|
# for item in items:
|
||||||
|
# childCount = item.childCount()
|
||||||
|
# print childCount, item.text(0)
|
||||||
|
# if childCount >= 1: # is parent
|
||||||
|
# who = item.text(0)
|
||||||
|
# listwidgetitem = QListWidgetItem()
|
||||||
|
# listwidgetitem.setText(who)
|
||||||
|
# self.slideControllerList.insertItem(0, listwidgetitem)
|
||||||
|
# self.slideControllerList.setCurrentRow(0)
|
||||||
|
#
|
||||||
|
# listwidgetitem1 = QListWidgetItem()
|
||||||
|
# listwidgetitem1.setText(u'Children inserted here')
|
||||||
|
# self.slideControllerList.insertItem(1, listwidgetitem1)
|
||||||
|
#
|
||||||
|
# else:
|
||||||
|
# parentitem = item.parent()
|
||||||
|
# print parentitem
|
||||||
|
# who = parentitem.text(0)
|
||||||
|
# listwidgetitem = QListWidgetItem()
|
||||||
|
# listwidgetitem.setText(who)
|
||||||
|
# self.slideControllerList.insertItem(0, listwidgetitem)
|
||||||
|
#
|
||||||
|
# listwidgetitem1 = QListWidgetItem()
|
||||||
|
# listwidgetitem1.setText(u'Children inserted here')
|
||||||
|
# self.slideControllerList.insertItem(1, listwidgetitem1)
|
||||||
|
# self.slideControllerList.setCurrentRow(1)
|
||||||
|
|
||||||
def dragEnterEvent(self, event):
|
def dragEnterEvent(self, event):
|
||||||
"""
|
"""
|
||||||
Accept Drag events
|
Accept Drag events
|
||||||
|
@ -220,8 +176,35 @@ 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")
|
||||||
|
|
|
@ -24,6 +24,65 @@ from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import OpenLPToolbar
|
from openlp.core.lib import OpenLPToolbar
|
||||||
from openlp.core import translate
|
from openlp.core import translate
|
||||||
|
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)
|
||||||
|
|
||||||
|
def dragEnterEvent(self, event):
|
||||||
|
"""
|
||||||
|
Accept Drag events
|
||||||
|
"""
|
||||||
|
event.accept()
|
||||||
|
self.dropEvent(event)
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
def dragEnterEvent(self, event):
|
||||||
|
"""
|
||||||
|
Accept Drag events
|
||||||
|
"""
|
||||||
|
event.accept()
|
||||||
|
self.dropEvent(event)
|
||||||
|
|
||||||
|
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':
|
||||||
|
#Service Manager to Preview is not a sane
|
||||||
|
self.serviceManager.makeLive()
|
||||||
|
else:
|
||||||
|
print "live fired plugin ", plugin
|
||||||
|
self.eventManager.post_event(Event(EventType.LiveShow, plugin))
|
||||||
|
|
||||||
|
|
||||||
class SlideData(QtCore.QAbstractListModel):
|
class SlideData(QtCore.QAbstractListModel):
|
||||||
"""
|
"""
|
||||||
|
@ -54,7 +113,7 @@ class SlideData(QtCore.QAbstractListModel):
|
||||||
self.beginInsertRows(QtCore.QModelIndex(),row,row)
|
self.beginInsertRows(QtCore.QModelIndex(),row,row)
|
||||||
log.info(u'insert row %d' % row)
|
log.info(u'insert row %d' % row)
|
||||||
# create a preview image
|
# create a preview image
|
||||||
frame1 = frame.scaled(QtCore.QSize(350,260), QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
|
frame1 = frame.scaled(QtCore.QSize(300,225), QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
|
||||||
self.items.insert(row,(frame1, framenumber))
|
self.items.insert(row,(frame1, framenumber))
|
||||||
log.info(u'Items: %s' % self.items)
|
log.info(u'Items: %s' % self.items)
|
||||||
self.endInsertRows()
|
self.endInsertRows()
|
||||||
|
@ -71,13 +130,10 @@ class SlideData(QtCore.QAbstractListModel):
|
||||||
row=index.row()
|
row=index.row()
|
||||||
if row > len(self.items): # if the last row is selected and deleted, we then get called with an empty row!
|
if row > len(self.items): # if the last row is selected and deleted, we then get called with an empty row!
|
||||||
return QtCore.QVariant()
|
return QtCore.QVariant()
|
||||||
# if role==Qt.DisplayRole:
|
|
||||||
# retval= self.items[row][1]
|
|
||||||
if role == QtCore.Qt.DecorationRole:
|
if role == QtCore.Qt.DecorationRole:
|
||||||
retval= self.items[row][0]
|
retval= self.items[row][0]
|
||||||
else:
|
else:
|
||||||
retval= QtCore.QVariant()
|
retval= QtCore.QVariant()
|
||||||
# log.info("Returning"+ str(retval))
|
|
||||||
if type(retval) is not type(QtCore.QVariant):
|
if type(retval) is not type(QtCore.QVariant):
|
||||||
return QtCore.QVariant(retval)
|
return QtCore.QVariant(retval)
|
||||||
else:
|
else:
|
||||||
|
@ -117,17 +173,34 @@ class SlideController(QtGui.QWidget):
|
||||||
self.PanelLayout.setMargin(0)
|
self.PanelLayout.setMargin(0)
|
||||||
|
|
||||||
self.Controller = QtGui.QScrollArea(self.Splitter)
|
self.Controller = QtGui.QScrollArea(self.Splitter)
|
||||||
|
self.Controller.setGeometry(QtCore.QRect(0, 0, 700, 536))
|
||||||
self.Controller.setWidgetResizable(True)
|
self.Controller.setWidgetResizable(True)
|
||||||
|
self.Controller.setObjectName("scrollArea")
|
||||||
|
|
||||||
|
self.scrollAreaWidgetContents = QtGui.QWidget(self.Controller)
|
||||||
|
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 700, 536))
|
||||||
|
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
|
||||||
|
self.gridLayout = QtGui.QGridLayout(self.scrollAreaWidgetContents)
|
||||||
|
self.gridLayout.setObjectName("gridLayout")
|
||||||
|
|
||||||
|
#load the correct class for drag and drop
|
||||||
|
if self.isLive:
|
||||||
|
self.PreviewListView = LiveList(self.scrollAreaWidgetContents)
|
||||||
|
else:
|
||||||
|
self.PreviewListView = PreviewList(self.scrollAreaWidgetContents)
|
||||||
|
|
||||||
|
self.PreviewListView.setDragEnabled(False)
|
||||||
|
self.PreviewListView.setDragDropMode(QtGui.QAbstractItemView.DropOnly)
|
||||||
|
|
||||||
self.PreviewListView = QtGui.QListView(self.Splitter)
|
|
||||||
self.PreviewListView.setEditTriggers(QtGui.QAbstractItemView.CurrentChanged)
|
|
||||||
self.PreviewListView.setAlternatingRowColors(True)
|
|
||||||
self.PreviewListData = SlideData()
|
self.PreviewListData = SlideData()
|
||||||
|
self.PreviewListView.isLive = self.isLive
|
||||||
self.PreviewListView.setModel(self.PreviewListData)
|
self.PreviewListView.setModel(self.PreviewListData)
|
||||||
self.PreviewListView.setSelectionRectVisible(True)
|
self.PreviewListView.setSelectionRectVisible(True)
|
||||||
|
self.PreviewListView.setSpacing(5)
|
||||||
|
self.PreviewListView.setObjectName("PreviewListView")
|
||||||
|
|
||||||
self.Controller.setGeometry(QtCore.QRect(0, 0, 828, 536))
|
self.gridLayout.addWidget(self.PreviewListView, 0, 0, 1, 1)
|
||||||
self.Controller.setWidget(self.PreviewListView)
|
self.Controller.setWidget(self.scrollAreaWidgetContents)
|
||||||
|
|
||||||
self.Toolbar = OpenLPToolbar(self.Splitter)
|
self.Toolbar = OpenLPToolbar(self.Splitter)
|
||||||
sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
|
sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
|
||||||
|
@ -151,7 +224,17 @@ class SlideController(QtGui.QWidget):
|
||||||
|
|
||||||
self.Toolbar.setSizePolicy(sizeToolbarPolicy)
|
self.Toolbar.setSizePolicy(sizeToolbarPolicy)
|
||||||
|
|
||||||
self.SlidePreview = QtGui.QLabel(self.Splitter)
|
self.PreviewFrame = QtGui.QFrame(self.Splitter)
|
||||||
|
self.PreviewFrame.setGeometry(QtCore.QRect(50, 270, 250, 190))
|
||||||
|
self.PreviewFrame.setFrameShape(QtGui.QFrame.StyledPanel)
|
||||||
|
self.PreviewFrame.setFrameShadow(QtGui.QFrame.Sunken)
|
||||||
|
self.PreviewFrame.setObjectName(u'PreviewFrame')
|
||||||
|
|
||||||
|
self.grid = QtGui.QGridLayout(self.PreviewFrame)
|
||||||
|
self.grid.setMargin(10)
|
||||||
|
self.grid.setObjectName(u'grid')
|
||||||
|
|
||||||
|
self.SlidePreview = QtGui.QLabel(self.PreviewFrame)
|
||||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
|
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
|
@ -163,17 +246,16 @@ class SlideController(QtGui.QWidget):
|
||||||
self.SlidePreview.setLineWidth(1)
|
self.SlidePreview.setLineWidth(1)
|
||||||
self.SlidePreview.setScaledContents(True)
|
self.SlidePreview.setScaledContents(True)
|
||||||
self.SlidePreview.setObjectName(u'SlidePreview')
|
self.SlidePreview.setObjectName(u'SlidePreview')
|
||||||
|
self.grid.addWidget(self.SlidePreview, 0, 0, 1, 1)
|
||||||
|
|
||||||
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'clicked(QListViewItem)'), self.onCurrentItemChanged)
|
|
||||||
|
|
||||||
|
def postInit(self):
|
||||||
|
self.PreviewListView.eventManager = self.eventManager
|
||||||
|
self.PreviewListView.serviceManager = self.serviceManager
|
||||||
|
|
||||||
|
|
||||||
def onCurrentItemChanged(self, current, previous):
|
|
||||||
print u'Method slideControllerList currentItemChanged called', current, previous
|
|
||||||
|
|
||||||
def onSlideSelectedFirst(self):
|
def onSlideSelectedFirst(self):
|
||||||
row = self.PreviewListData.createIndex(0, 0)
|
row = self.PreviewListData.createIndex(0, 0)
|
||||||
if row.isValid():
|
if row.isValid():
|
||||||
|
@ -241,5 +323,8 @@ class SlideController(QtGui.QWidget):
|
||||||
self.PreviewListView.selectionModel().setCurrentIndex(row, QtGui.QItemSelectionModel.SelectCurrent)
|
self.PreviewListView.selectionModel().setCurrentIndex(row, QtGui.QItemSelectionModel.SelectCurrent)
|
||||||
self.onSlideSelected(row)
|
self.onSlideSelected(row)
|
||||||
|
|
||||||
|
def addServiceManagerItem(self, serviceitem, slideno):
|
||||||
|
print "addServiceManagerItem"
|
||||||
|
|
||||||
def render(self):
|
def render(self):
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -23,7 +23,6 @@ from PyQt4 import QtCore, QtGui
|
||||||
from PyQt4.QtCore import *
|
from PyQt4.QtCore import *
|
||||||
from PyQt4.QtGui import *
|
from PyQt4.QtGui import *
|
||||||
|
|
||||||
from openlp.core.resources import *
|
|
||||||
from openlp.core.lib import Plugin, Event
|
from openlp.core.lib import Plugin, Event
|
||||||
from openlp.core.lib import EventType
|
from openlp.core.lib import EventType
|
||||||
|
|
||||||
|
@ -83,7 +82,16 @@ class BiblePlugin(Plugin):
|
||||||
"""
|
"""
|
||||||
Handle the event contained in the event object.
|
Handle the event contained in the event object.
|
||||||
"""
|
"""
|
||||||
log.debug(u'Handle event called with event %s'%event.event_type)
|
log.debug(u'Handle event called with event %s with payload %s'%(event.event_type, event.payload))
|
||||||
if event.event_type == EventType.ThemeListChanged:
|
if event.event_type == EventType.ThemeListChanged:
|
||||||
log.debug(u'New Theme request received')
|
log.debug(u'New Theme request received')
|
||||||
#self.edit_custom_form.loadThemes(self.theme_manager.getThemes())
|
#self.edit_custom_form.loadThemes(self.theme_manager.getThemes())
|
||||||
|
if event.event_type == EventType.LoadServiceItem and event.payload == 'Bibles':
|
||||||
|
log.debug(u'Load Service Item received')
|
||||||
|
self.media_item.onBibleAddClick()
|
||||||
|
if event.event_type == EventType.PreviewShow and event.payload == 'Bibles':
|
||||||
|
log.debug(u'Load Service Item received')
|
||||||
|
self.media_item.onBiblePreviewClick()
|
||||||
|
if event.event_type == EventType.LiveShow and event.payload == 'Bibles':
|
||||||
|
log.debug(u'Load Service Item received')
|
||||||
|
self.media_item.onBibleLiveClick()
|
||||||
|
|
|
@ -28,6 +28,30 @@ from openlp.core.lib import ServiceItem
|
||||||
from openlp.plugins.bibles.forms import BibleImportForm
|
from openlp.plugins.bibles.forms import BibleImportForm
|
||||||
from openlp.plugins.bibles.lib import TextListData
|
from openlp.plugins.bibles.lib import TextListData
|
||||||
|
|
||||||
|
class BibleList(QtGui.QListView):
|
||||||
|
|
||||||
|
def __init__(self,parent=None,name=None):
|
||||||
|
QtGui.QListView.__init__(self,parent)
|
||||||
|
|
||||||
|
def mouseMoveEvent(self, event):
|
||||||
|
"""
|
||||||
|
Drag and drop event does not care what data is selected
|
||||||
|
as the recepient will use events to request the data move
|
||||||
|
just tell it what plugin to call
|
||||||
|
"""
|
||||||
|
if event.buttons() != QtCore.Qt.LeftButton:
|
||||||
|
return
|
||||||
|
drag = QtGui.QDrag(self)
|
||||||
|
mimeData = QtCore.QMimeData()
|
||||||
|
drag.setMimeData(mimeData)
|
||||||
|
mimeData.setText(u'Bibles')
|
||||||
|
|
||||||
|
dropAction = drag.start(QtCore.Qt.CopyAction)
|
||||||
|
|
||||||
|
if dropAction == QtCore.Qt.CopyAction:
|
||||||
|
self.close()
|
||||||
|
|
||||||
|
|
||||||
class BibleMediaItem(MediaManagerItem):
|
class BibleMediaItem(MediaManagerItem):
|
||||||
"""
|
"""
|
||||||
This is the custom media manager item for Bibles.
|
This is the custom media manager item for Bibles.
|
||||||
|
@ -179,11 +203,12 @@ class BibleMediaItem(MediaManagerItem):
|
||||||
# Add the search tab widget to the page layout
|
# Add the search tab widget to the page layout
|
||||||
self.PageLayout.addWidget(self.SearchTabWidget)
|
self.PageLayout.addWidget(self.SearchTabWidget)
|
||||||
|
|
||||||
self.BibleListView = QtGui.QListView()
|
self.BibleListView = BibleList()
|
||||||
self.BibleListView.setAlternatingRowColors(True)
|
self.BibleListView.setAlternatingRowColors(True)
|
||||||
self.BibleListData = TextListData()
|
self.BibleListData = TextListData()
|
||||||
self.BibleListView.setModel(self.BibleListData)
|
self.BibleListView.setModel(self.BibleListData)
|
||||||
self.BibleListView.setSelectionMode(2)
|
self.BibleListView.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
|
||||||
|
self.BibleListView.setDragEnabled(True)
|
||||||
|
|
||||||
self.PageLayout.addWidget(self.BibleListView)
|
self.PageLayout.addWidget(self.BibleListView)
|
||||||
|
|
||||||
|
|
|
@ -56,10 +56,16 @@ class CustomPlugin(Plugin):
|
||||||
"""
|
"""
|
||||||
Handle the event contained in the event object.
|
Handle the event contained in the event object.
|
||||||
"""
|
"""
|
||||||
log.debug(u'Handle event called with event %s'%event.event_type)
|
log.debug(u'Handle event called with event %s with payload %s'%(event.event_type, event.payload))
|
||||||
if event.event_type == EventType.ThemeListChanged:
|
if event.event_type == EventType.ThemeListChanged:
|
||||||
log.debug(u'New Theme request received')
|
log.debug(u'New Theme request received')
|
||||||
self.edit_custom_form.loadThemes(self.theme_manager.getThemes())
|
self.edit_custom_form.loadThemes(self.theme_manager.getThemes())
|
||||||
if event.event_type == EventType.LoadServiceItem and event.payload == 'Custom':
|
if event.event_type == EventType.LoadServiceItem and event.payload == 'Custom':
|
||||||
log.debug(u'Load Service Item received')
|
log.debug(u'Load Service Item received')
|
||||||
self.media_item.onCustomAddClick()
|
self.media_item.onCustomAddClick()
|
||||||
|
if event.event_type == EventType.PreviewShow and event.payload == 'Custom':
|
||||||
|
log.debug(u'Load Service Item received ')
|
||||||
|
self.media_item.onCustomPreviewClick()
|
||||||
|
if event.event_type == EventType.LiveShow and event.payload == 'Custom':
|
||||||
|
log.debug(u'Load Service Item received')
|
||||||
|
self.media_item.onCustomLiveClick()
|
||||||
|
|
|
@ -28,6 +28,29 @@ from openlp.core.lib import ServiceItem
|
||||||
|
|
||||||
from openlp.plugins.custom.lib import TextListData
|
from openlp.plugins.custom.lib import TextListData
|
||||||
|
|
||||||
|
class CustomList(QtGui.QListView):
|
||||||
|
|
||||||
|
def __init__(self,parent=None,name=None):
|
||||||
|
QtGui.QListView.__init__(self,parent)
|
||||||
|
|
||||||
|
def mouseMoveEvent(self, event):
|
||||||
|
"""
|
||||||
|
Drag and drop event does not care what data is selected
|
||||||
|
as the recepient will use events to request the data move
|
||||||
|
just tell it what plugin to call
|
||||||
|
"""
|
||||||
|
if event.buttons() != QtCore.Qt.LeftButton:
|
||||||
|
return
|
||||||
|
drag = QtGui.QDrag(self)
|
||||||
|
mimeData = QtCore.QMimeData()
|
||||||
|
drag.setMimeData(mimeData)
|
||||||
|
mimeData.setText(u'Custom')
|
||||||
|
|
||||||
|
dropAction = drag.start(QtCore.Qt.CopyAction)
|
||||||
|
|
||||||
|
if dropAction == QtCore.Qt.CopyAction:
|
||||||
|
self.close()
|
||||||
|
|
||||||
class CustomMediaItem(MediaManagerItem):
|
class CustomMediaItem(MediaManagerItem):
|
||||||
"""
|
"""
|
||||||
This is the custom media manager item for Custom Slides.
|
This is the custom media manager item for Custom Slides.
|
||||||
|
@ -105,12 +128,11 @@ class CustomMediaItem(MediaManagerItem):
|
||||||
# Add the Custom widget to the page layout
|
# Add the Custom widget to the page layout
|
||||||
self.PageLayout.addWidget(self.CustomWidget)
|
self.PageLayout.addWidget(self.CustomWidget)
|
||||||
|
|
||||||
self.CustomListView = QtGui.QListView()
|
self.CustomListView = CustomList()
|
||||||
self.CustomListView.setAlternatingRowColors(True)
|
self.CustomListView.setAlternatingRowColors(True)
|
||||||
self.CustomListData = TextListData()
|
self.CustomListData = TextListData()
|
||||||
self.CustomListView.setModel(self.CustomListData)
|
self.CustomListView.setModel(self.CustomListData)
|
||||||
self.CustomListView.setDragEnabled(True)
|
self.CustomListView.setDragEnabled(True)
|
||||||
self.CustomListView .__class__.mouseMoveEvent =self.onMouseMoveEvent
|
|
||||||
|
|
||||||
self.PageLayout.addWidget(self.CustomListView)
|
self.PageLayout.addWidget(self.CustomListView)
|
||||||
|
|
||||||
|
@ -235,27 +257,3 @@ class CustomMediaItem(MediaManagerItem):
|
||||||
service_item.title = title
|
service_item.title = title
|
||||||
service_item.raw_slides = raw_slides
|
service_item.raw_slides = raw_slides
|
||||||
service_item.raw_footer = raw_footer
|
service_item.raw_footer = raw_footer
|
||||||
|
|
||||||
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
|
|
||||||
"""
|
|
||||||
if event.buttons() != QtCore.Qt.LeftButton:
|
|
||||||
return
|
|
||||||
|
|
||||||
items = self.CustomListView.selectedIndexes()
|
|
||||||
if items == []:
|
|
||||||
return
|
|
||||||
|
|
||||||
drag = QtGui.QDrag(self)
|
|
||||||
mimeData = QtCore.QMimeData()
|
|
||||||
drag.setMimeData(mimeData)
|
|
||||||
for item in items:
|
|
||||||
mimeData.setText(u'Custom')
|
|
||||||
|
|
||||||
dropAction = drag.start(QtCore.Qt.CopyAction)
|
|
||||||
|
|
||||||
if dropAction == QtCore.Qt.CopyAction:
|
|
||||||
self.close()
|
|
||||||
|
|
|
@ -21,8 +21,8 @@ import logging
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import Plugin
|
from openlp.core.lib import Plugin, Event
|
||||||
from openlp.core.resources import *
|
from openlp.core.lib import EventType
|
||||||
|
|
||||||
from openlp.plugins.images.lib import ImageMediaItem, ImageServiceItem
|
from openlp.plugins.images.lib import ImageMediaItem, ImageServiceItem
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ class ImagePlugin(Plugin):
|
||||||
self.weight = -7
|
self.weight = -7
|
||||||
# Create the plugin icon
|
# Create the plugin icon
|
||||||
self.icon = QtGui.QIcon()
|
self.icon = QtGui.QIcon()
|
||||||
self.icon.addPixmap(QtGui.QPixmap(':/media/media_image.png'),
|
self.icon.addPixmap(QtGui.QPixmap(u':/media/media_image.png'),
|
||||||
QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||||
|
|
||||||
self.preview_service_item = ImageServiceItem(self.preview_controller)
|
self.preview_service_item = ImageServiceItem(self.preview_controller)
|
||||||
|
@ -45,11 +45,25 @@ class ImagePlugin(Plugin):
|
||||||
|
|
||||||
def get_media_manager_item(self):
|
def get_media_manager_item(self):
|
||||||
# Create the MediaManagerItem object
|
# Create the MediaManagerItem object
|
||||||
self.MediaManagerItem = ImageMediaItem(self, self.icon, u'Images')
|
self.media_item = ImageMediaItem(self, self.icon, u'Images')
|
||||||
return self.MediaManagerItem
|
return self.media_item
|
||||||
|
|
||||||
def initialise(self):
|
def initialise(self):
|
||||||
log.info(u'Plugin Initialising')
|
log.info(u'Plugin Initialising')
|
||||||
log.info(u'Done')
|
|
||||||
|
def handle_event(self, event):
|
||||||
|
"""
|
||||||
|
Handle the event contained in the event object.
|
||||||
|
"""
|
||||||
|
log.debug(u'Handle event called with event %s with payload %s'%(event.event_type, event.payload))
|
||||||
|
if event.event_type == EventType.LoadServiceItem and event.payload == 'Image':
|
||||||
|
log.debug(u'Load Service Item received')
|
||||||
|
self.media_item.onImageAddClick()
|
||||||
|
if event.event_type == EventType.PreviewShow and event.payload == 'Image':
|
||||||
|
log.debug(u'Load Service Item received')
|
||||||
|
self.media_item.onImagePreviewClick()
|
||||||
|
if event.event_type == EventType.LiveShow and event.payload == 'Image':
|
||||||
|
log.debug(u'Load Service Item received')
|
||||||
|
self.media_item.onImageLiveClick()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,29 @@ from openlp.core.resources import *
|
||||||
|
|
||||||
from openlp.plugins.images.lib import ListWithPreviews
|
from openlp.plugins.images.lib import ListWithPreviews
|
||||||
|
|
||||||
|
class ImageList(QtGui.QListView):
|
||||||
|
|
||||||
|
def __init__(self,parent=None,name=None):
|
||||||
|
QtGui.QListView.__init__(self,parent)
|
||||||
|
|
||||||
|
def mouseMoveEvent(self, event):
|
||||||
|
"""
|
||||||
|
Drag and drop event does not care what data is selected
|
||||||
|
as the recepient will use events to request the data move
|
||||||
|
just tell it what plugin to call
|
||||||
|
"""
|
||||||
|
if event.buttons() != QtCore.Qt.LeftButton:
|
||||||
|
return
|
||||||
|
drag = QtGui.QDrag(self)
|
||||||
|
mimeData = QtCore.QMimeData()
|
||||||
|
drag.setMimeData(mimeData)
|
||||||
|
mimeData.setText(u'Image')
|
||||||
|
|
||||||
|
dropAction = drag.start(QtCore.Qt.CopyAction)
|
||||||
|
|
||||||
|
if dropAction == QtCore.Qt.CopyAction:
|
||||||
|
self.close()
|
||||||
|
|
||||||
class ImageMediaItem(MediaManagerItem):
|
class ImageMediaItem(MediaManagerItem):
|
||||||
"""
|
"""
|
||||||
This is the custom media manager item for images.
|
This is the custom media manager item for images.
|
||||||
|
@ -70,14 +93,18 @@ class ImageMediaItem(MediaManagerItem):
|
||||||
translate('ImageMediaItem', u'Add Image To Service'),
|
translate('ImageMediaItem', u'Add Image To Service'),
|
||||||
translate('ImageMediaItem', u'Add the selected image(s) to the service'),
|
translate('ImageMediaItem', u'Add the selected image(s) to the service'),
|
||||||
':/system/system_add.png', self.onImageAddClick, 'ImageAddItem')
|
':/system/system_add.png', self.onImageAddClick, 'ImageAddItem')
|
||||||
## Add the songlist widget ##
|
|
||||||
self.ImageListView = QtGui.QListView()
|
#Add the Image List widget
|
||||||
|
self.ImageListView = ImageList()
|
||||||
self.ImageListView.uniformItemSizes = True
|
self.ImageListView.uniformItemSizes = True
|
||||||
self.ImageListData = ListWithPreviews()
|
self.ImageListData = ListWithPreviews()
|
||||||
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.setAlternatingRowColors(True)
|
||||||
|
self.ImageListView.setDragEnabled(True)
|
||||||
self.ImageListView.setObjectName('ImageListView')
|
self.ImageListView.setObjectName('ImageListView')
|
||||||
|
|
||||||
self.PageLayout.addWidget(self.ImageListView)
|
self.PageLayout.addWidget(self.ImageListView)
|
||||||
|
|
||||||
#define and add the context menu
|
#define and add the context menu
|
||||||
|
@ -96,11 +123,6 @@ class ImageMediaItem(MediaManagerItem):
|
||||||
translate('ImageMediaItem', u'&Add to Service'),
|
translate('ImageMediaItem', u'&Add to Service'),
|
||||||
self.onImageAddClick))
|
self.onImageAddClick))
|
||||||
|
|
||||||
self.ImageListPreview = QtGui.QWidget()
|
|
||||||
self.PageLayout.addWidget(self.ImageListPreview)
|
|
||||||
self.ImageListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
|
||||||
self.ImageListView.setSpacing(1)
|
|
||||||
self.ImageListView.setAlternatingRowColors(True)
|
|
||||||
|
|
||||||
def initialise(self):
|
def initialise(self):
|
||||||
self.loadImageList(self.parent.config.load_list(u'images'))
|
self.loadImageList(self.parent.config.load_list(u'images'))
|
||||||
|
@ -126,7 +148,7 @@ class ImageMediaItem(MediaManagerItem):
|
||||||
for index in indexes:
|
for index in indexes:
|
||||||
current_row = int(index.row())
|
current_row = int(index.row())
|
||||||
self.ImageListData.removeRow(current_row)
|
self.ImageListData.removeRow(current_row)
|
||||||
self.parent.config.set_list(u'images', self.ImageListData.getFileList())
|
self.parent.config.set_list(u'images', self.ImageListData.getFileList())
|
||||||
|
|
||||||
def onImageClick(self, where):
|
def onImageClick(self, where):
|
||||||
indexes = self.ImageListView.selectedIndexes()
|
indexes = self.ImageListView.selectedIndexes()
|
||||||
|
|
Loading…
Reference in New Issue