forked from openlp/openlp
Update PptviewController as per ImpressController
This commit is contained in:
parent
85b647e3c3
commit
4ca4fa8f23
@ -24,6 +24,7 @@
|
||||
|
||||
from impresscontroller import ImpressController
|
||||
#from powerpointcontroller import PowerpointController
|
||||
from pptviewcontroller import PptviewController
|
||||
from messagelistener import MessageListener
|
||||
from mediaitem import PresentationMediaItem
|
||||
from presentationtab import PresentationTab
|
||||
|
@ -22,128 +22,137 @@
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
import logging
|
||||
import os , subprocess
|
||||
import time
|
||||
import sys
|
||||
import win32api
|
||||
from PyQt4 import QtGui, QtCore
|
||||
from ctypes import *
|
||||
from ctypes.wintypes import RECT
|
||||
|
||||
pptdll = cdll.LoadLibrary(r'C:\Documents and Settings\jonathan\My Documents\Personal\openlp\openlp-2\trunk\openlp\libraries\pptviewlib\pptviewlib.dll')
|
||||
if os.name == u'nt':
|
||||
import win32api
|
||||
from ctypes import *
|
||||
from ctypes.wintypes import RECT
|
||||
|
||||
class BoxLayout(QtGui.QWidget):
|
||||
def __init__(self, parent=None):
|
||||
QtGui.QWidget.__init__(self, parent)
|
||||
from PyQt4 import QtCore
|
||||
|
||||
class PptviewController(object):
|
||||
"""
|
||||
Class to control interactions with PowerPOint Viewer Presentations
|
||||
It creates the runtime Environment , Loads the and Closes the Presentation
|
||||
As well as trigggering the correct activities based on the users input
|
||||
"""
|
||||
global log
|
||||
log = logging.getLogger(u'PptviewController')
|
||||
|
||||
def __init__(self):
|
||||
log.debug(u'Initialising')
|
||||
self.process = None
|
||||
self.document = None
|
||||
self.presentation = None
|
||||
self.pptid = None
|
||||
self.startPPTView()
|
||||
|
||||
def startPPTView(self):
|
||||
"""
|
||||
Loads the PPTVIEWLIB library
|
||||
"""
|
||||
log.debug(u'start PPTView')
|
||||
self.presentation = cdll.LoadLibrary(r'openlp\plugins\presentations\lib\pptviewlib\pptviewlib.dll')
|
||||
|
||||
def kill(self):
|
||||
"""
|
||||
Called at system exit to clean up any running presentations
|
||||
"""
|
||||
log.debug(u'Kill')
|
||||
self.closePresentation()
|
||||
|
||||
def loadPresentation(self, presentation):
|
||||
"""
|
||||
Called when a presentation is added to the SlideController.
|
||||
It builds the environment, starts communcations with the background
|
||||
OpenOffice task started earlier. If OpenOffice is not present is is
|
||||
started. Once the environment is available the presentation is loaded
|
||||
and started.
|
||||
|
||||
``presentation``
|
||||
The file name of the presentatios to the run.
|
||||
"""
|
||||
log.debug(u'LoadPresentation')
|
||||
if(self.pptid>=0):
|
||||
self.CloseClick()
|
||||
rect = RECT()
|
||||
rect.left = 0
|
||||
rect.top = 0
|
||||
rect.width = 0
|
||||
rect.hight = 0
|
||||
try:
|
||||
tempfolder = None #r'c:\temp\pptviewlib\' + presentation
|
||||
self.pptid = self.presentation.OpenPPT(presentation, None, rect, tempfolder)
|
||||
except:
|
||||
log.exception(u'Failed to load presentation')
|
||||
#self.slidecount = pptdll.GetSlideCount(self.pptid)
|
||||
|
||||
def closePresentation(self):
|
||||
"""
|
||||
Close presentation and clean up objects
|
||||
Triggerent by new object being added to SlideController orOpenLP
|
||||
being shut down
|
||||
"""
|
||||
if(self.pptid<0): return
|
||||
self.presentation.Close(self.pptid)
|
||||
self.pptid = -1
|
||||
self.setWindowTitle(u'box layout')
|
||||
|
||||
PPTLabel = QtGui.QLabel(u'Open PowerPoint file')
|
||||
slideLabel = QtGui.QLabel(u'Go to slide #')
|
||||
self.PPTEdit = QtGui.QLineEdit()
|
||||
self.slideEdit = QtGui.QLineEdit()
|
||||
self.total = QtGui.QLabel()
|
||||
PPTBtn = QtGui.QPushButton(u'Open')
|
||||
PPTDlgBtn = QtGui.QPushButton(u'...')
|
||||
slideBtn = QtGui.QPushButton(u'Go')
|
||||
prev = QtGui.QPushButton(u'Prev')
|
||||
next = QtGui.QPushButton(u'Next')
|
||||
blank = QtGui.QPushButton(u'Blank')
|
||||
unblank = QtGui.QPushButton(u'Unblank')
|
||||
restart = QtGui.QPushButton(u'Restart')
|
||||
close = QtGui.QPushButton(u'Close')
|
||||
resume = QtGui.QPushButton(u'Resume')
|
||||
stop = QtGui.QPushButton(u'Stop')
|
||||
pptwindow = QtGui.QWidget()
|
||||
def isActive(self):
|
||||
return self.pptid >= 0
|
||||
|
||||
grid = QtGui.QGridLayout()
|
||||
grid.addWidget(PPTLabel, 0, 0)
|
||||
grid.addWidget(self.PPTEdit, 0, 1)
|
||||
grid.addWidget(PPTDlgBtn, 0, 2)
|
||||
grid.addWidget(PPTBtn, 0, 3)
|
||||
grid.addWidget(slideLabel, 1, 0)
|
||||
grid.addWidget(self.slideEdit, 1, 1)
|
||||
grid.addWidget(slideBtn, 1, 3)
|
||||
grid.addWidget(prev, 2, 0)
|
||||
grid.addWidget(next, 2, 1)
|
||||
grid.addWidget(blank, 3, 0)
|
||||
grid.addWidget(unblank, 3, 1)
|
||||
grid.addWidget(restart, 4, 0)
|
||||
grid.addWidget(stop, 4, 1)
|
||||
grid.addWidget(resume, 4, 2)
|
||||
grid.addWidget(pptwindow, 5, 0, 10, 3)
|
||||
self.connect(PPTBtn, QtCore.SIGNAL(u'clicked()'), self.OpenClick)
|
||||
self.connect(PPTDlgBtn, QtCore.SIGNAL(u'clicked()'), self.OpenDialog)
|
||||
self.connect(slideBtn, QtCore.SIGNAL(u'clicked()'), self.GotoClick)
|
||||
self.connect(prev, QtCore.SIGNAL(u'clicked()'), self.PrevClick)
|
||||
self.connect(next, QtCore.SIGNAL(u'clicked()'), self.NextClick)
|
||||
self.connect(blank, QtCore.SIGNAL(u'clicked()'), self.BlankClick)
|
||||
self.connect(unblank, QtCore.SIGNAL(u'clicked()'), self.UnblankClick)
|
||||
self.connect(restart, QtCore.SIGNAL(u'clicked()'), self.RestartClick)
|
||||
self.connect(close, QtCore.SIGNAL(u'clicked()'), self.CloseClick)
|
||||
self.connect(stop, QtCore.SIGNAL(u'clicked()'), self.StopClick)
|
||||
self.connect(resume, QtCore.SIGNAL(u'clicked()'), self.ResumeClick)
|
||||
def resume(self):
|
||||
if(self.pptid<0): return
|
||||
self.presentation.Resume(self.pptid)
|
||||
|
||||
self.setLayout(grid)
|
||||
def pause(self):
|
||||
return
|
||||
|
||||
self.resize(300, 150)
|
||||
def blankScreen(self):
|
||||
if(self.pptid<0): return
|
||||
self.presentation.Blank(self.pptid)
|
||||
|
||||
def PrevClick(self):
|
||||
def unblankScreen(self):
|
||||
if(self.pptid<0): return
|
||||
self.presentation.Unblank(self.pptid)
|
||||
|
||||
def stop(self):
|
||||
if(self.pptid<0): return
|
||||
self.presentation.Stop(self.pptid)
|
||||
|
||||
def go(self):
|
||||
if(self.pptid<0): return
|
||||
self.presentation.RestartShow(self.pptid)
|
||||
|
||||
def getSlideNumber(self):
|
||||
if(self.pptid<0): return -1
|
||||
return self.presentation.GetCurrentSlide(self.pptid)
|
||||
|
||||
def setSlideNumber(self, slideno):
|
||||
if(self.pptid<0): return
|
||||
self.presentation.GotoSlide(self.pptid, slideno)
|
||||
|
||||
slideNumber = property(getSlideNumber, setSlideNumber)
|
||||
|
||||
def nextStep(self):
|
||||
"""
|
||||
Triggers the next effect of slide on the running presentation
|
||||
"""
|
||||
if(self.pptid<0): return
|
||||
self.presentation.NextStep(self.pptid)
|
||||
|
||||
def previousStep(self):
|
||||
"""
|
||||
Triggers the previous slide on the running presentation
|
||||
"""
|
||||
if self.pptid<0: return
|
||||
pptdll.PrevStep(self.pptid)
|
||||
self.slideEdit.setText(pptdll.GetCurrentSlide(self.pptid))
|
||||
self.presentation.PrevStep(self.pptid)
|
||||
|
||||
def NextClick(self):
|
||||
if(self.pptid<0): return
|
||||
pptdll.NextStep(self.pptid)
|
||||
self.slideEdit.setText(pptdll.GetCurrentSlide(self.pptid))
|
||||
|
||||
def BlankClick(self):
|
||||
if(self.pptid<0): return
|
||||
pptdll.Blank(self.pptid)
|
||||
|
||||
def UnblankClick(self):
|
||||
if(self.pptid<0): return
|
||||
pptdll.Unblank(self.pptid)
|
||||
|
||||
def RestartClick(self):
|
||||
if(self.pptid<0): return
|
||||
pptdll.RestartShow(self.pptid)
|
||||
self.slideEdit.setText(pptdll.GetCurrentSlide(self.pptid))
|
||||
|
||||
def StopClick(self):
|
||||
if(self.pptid<0): return
|
||||
pptdll.Stop(self.pptid)
|
||||
|
||||
def ResumeClick(self):
|
||||
if(self.pptid<0): return
|
||||
pptdll.Resume(self.pptid)
|
||||
|
||||
def CloseClick(self):
|
||||
if(self.pptid<0): return
|
||||
pptdll.Close(self.pptid)
|
||||
self.pptid = -1
|
||||
|
||||
def OpenClick(self):
|
||||
if(self.pptid>=0):
|
||||
self.CloseClick()
|
||||
rect = RECT()
|
||||
rect.left = 100
|
||||
rect.top = 100
|
||||
rect.width = 900
|
||||
rect.hight = 700
|
||||
#self.pptid = pptdll.OpenPPT(self.PPTEdit.text, None, rect, "c:\temp\slide')
|
||||
self.pptid = pptdll.OpenPPT(u'C:\\test 1.ppt', None, rect, 'c:\temp\slide')
|
||||
self.total.setText(pptdll.GetSlideCount(self.pptid))
|
||||
self.slideEdit.setText(unicode(pptdll.GetCurrentSlide(self.pptid)))
|
||||
|
||||
def GotoClick(self):
|
||||
if(self.pptid<0): return
|
||||
pptdll.GotoSlide(self.pptid, self.slideEdit.text)
|
||||
self.slideEdit.setText(pptdll.GetCurrentSlide(self.pptid))
|
||||
|
||||
def OpenDialog(self):
|
||||
self.PPTEdit.setText(QtGui.QFileDialog.getOpenFileName(self, 'Open file'))
|
||||
|
||||
app = QtGui.QApplication(sys.argv)
|
||||
qb = BoxLayout()
|
||||
qb.show()
|
||||
sys.exit(app.exec_())
|
||||
|
@ -35,6 +35,7 @@ try:
|
||||
from openlp.plugins.presentations.lib import PowerpointController
|
||||
except:
|
||||
pass
|
||||
from openlp.plugins.presentations.lib import PptviewController
|
||||
|
||||
|
||||
class PresentationPlugin(Plugin):
|
||||
@ -105,10 +106,8 @@ class PresentationPlugin(Plugin):
|
||||
if int(self.config.get_config(
|
||||
u'Powerpoint Viewer', QtCore.Qt.Unchecked)) == QtCore.Qt.Checked:
|
||||
try:
|
||||
#Check to see if we are Win32
|
||||
from win32com.client import Dispatch
|
||||
powerpoint = PowerpointController()
|
||||
self.registerControllers(u'Powerpoint Viewer', powerpoint)
|
||||
pptview = PptviewController()
|
||||
self.registerControllers(u'Powerpoint Viewer', pptview)
|
||||
except:
|
||||
log.exception(u'Failed to set up plugin for Powerpoint Viewer')
|
||||
#If we have no available controllers disable plugin
|
||||
|
Loading…
Reference in New Issue
Block a user