From 85b647e3c36ea616c8b17b8aefbba2aa5004829a Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Wed, 23 Sep 2009 21:40:19 +0100 Subject: [PATCH 1/3] Fix to pick up 2007 viewer correctly. Assembly now built as "release" with Visual C++ Express 2008 and with any luck will now work on other Window PC's --- .../lib/pptviewlib/pptviewlib.cpp | 8 +- .../lib/pptviewlib/pptviewlib.dll | Bin 81408 -> 46080 bytes .../presentations/lib/pptviewlib/pptviewlib.h | 2 +- .../lib/pptviewlib/pptviewlib.vcproj | 405 +++++++++--------- 4 files changed, 208 insertions(+), 207 deletions(-) diff --git a/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.cpp b/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.cpp index 336241fd0..8e4cc7e82 100644 --- a/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.cpp +++ b/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.cpp @@ -27,6 +27,7 @@ #include #include "pptviewlib.h" + // Because of the callbacks used by SetWindowsHookEx, the memory used needs to be // sharable across processes (the callbacks are done from a different process) // Therefore use data_seg with RWS memory. @@ -310,9 +311,10 @@ BOOL GetPPTViewerPath(char *pptviewerpath, int strsize) LRESULT lresult; DEBUG("GetPPTViewerPath: start\n"); - if(RegOpenKeyEx(HKEY_CLASSES_ROOT, "Applications\\PPTVIEW.EXE\\shell\\open\\command", 0, KEY_READ, &hkey)!=ERROR_SUCCESS) - if(RegOpenKeyEx(HKEY_CLASSES_ROOT, "Applications\\PPTVIEW.EXE\\shell\\Show\\command", 0, KEY_READ, &hkey)!=ERROR_SUCCESS) - return FALSE; + if(RegOpenKeyEx(HKEY_CLASSES_ROOT, "PowerPointViewer.Show.12\\shell\\Show\\command", 0, KEY_READ, &hkey)!=ERROR_SUCCESS) + if(RegOpenKeyEx(HKEY_CLASSES_ROOT, "Applications\\PPTVIEW.EXE\\shell\\open\\command", 0, KEY_READ, &hkey)!=ERROR_SUCCESS) + if(RegOpenKeyEx(HKEY_CLASSES_ROOT, "Applications\\PPTVIEW.EXE\\shell\\Show\\command", 0, KEY_READ, &hkey)!=ERROR_SUCCESS) + return FALSE; dwtype = REG_SZ; dwsize = (DWORD)strsize; lresult = RegQueryValueEx(hkey, NULL, NULL, &dwtype, (LPBYTE)pptviewerpath, &dwsize ); diff --git a/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.dll b/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.dll index 13ea7d1828e7bc2f361ea48b5d98a95396ebf1ad..52a6504eefeac8e4c6866ea8d733197b5942eb42 100644 GIT binary patch literal 46080 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 literal 81408 zcmeHw4PcYix&NDzYQaLQwu*`pkth?WY15B<_JcMEj!60mbJY@>l%%#vmk%gjt6<31 z_!7lUy}0Rw!8YghZfqB|I?y5=Esi-vw&BLzWgGV{*y@;8t*$fw-*etK$(!;qbZ&Qd z|F>|?d){-NbIx;q=Xsvum^yXJY_aJ4*%z&; zwcI&7;g(+dhuQUbUwUbL_APj>4xK-HIZN-EJ&nbW&HfyFzBSv%o-y(HCVSSoTU}Jv zM9ys%j$5M0;(mM0b&C^e$GD8EFHlV8xDLb|5@I)9sNlF2(dpExG(TI>;XH+t-}kq z4s^5d?1Gd0RdQTqfk4IusI5CdM?8L6LWE!?P$_T=gilUI1Tf;J;rSq(GvGZ5TXo{;5_rc{@V-_FZ;XgvT>|e> z!tXjt@KM5Rl+a5FU!l-Am9mvWCh}gSdbd;PU8?s0rQXO;BX<8tuS)U;m%>|c9lTZa zIz}M+^Wk|Y?|)F-z~%5RrMx#&-h5*Gi&U?kNdAW~t)~PJ5no5RlvBdpBrl67u8h1z zM53k8A*%9wpM%#|2Jbf%IzXY%QtI0j;wf�I!T7d5T`&gaV%Er?_`+g!gqS@7qK? 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 diff --git a/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.h b/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.h index 5b33576af..3e365215b 100644 --- a/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.h +++ b/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.h @@ -51,4 +51,4 @@ struct PPTVIEWOBJ char filename[MAX_PATH]; char previewpath[MAX_PATH]; PPTVIEWSTATE state; -}; \ No newline at end of file +}; diff --git a/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.vcproj b/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.vcproj index 040898672..f20db6c8f 100644 --- a/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.vcproj +++ b/openlp/plugins/presentations/lib/pptviewlib/pptviewlib.vcproj @@ -1,203 +1,202 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4ca4fa8f23ec394ad1fdf42cfba9b8a857ad60ed Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Wed, 23 Sep 2009 23:39:37 +0100 Subject: [PATCH 2/3] Update PptviewController as per ImpressController --- openlp/plugins/presentations/lib/__init__.py | 1 + .../presentations/lib/pptviewcontroller.py | 227 +++++++++--------- .../presentations/presentationplugin.py | 7 +- 3 files changed, 122 insertions(+), 113 deletions(-) diff --git a/openlp/plugins/presentations/lib/__init__.py b/openlp/plugins/presentations/lib/__init__.py index 2ee88aaba..de2b19ce1 100644 --- a/openlp/plugins/presentations/lib/__init__.py +++ b/openlp/plugins/presentations/lib/__init__.py @@ -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 diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index 324119fc0..d466e28f3 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -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_()) diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index d76e9a493..86aa87632 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -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 From 6421f1d49337801bbf3c44107dd52efedf4e3875 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 24 Sep 2009 08:35:30 +0100 Subject: [PATCH 3/3] Minor adjustments --- .../presentations/lib/pptviewcontroller.py | 10 ++-- .../presentations/presentationplugin.py | 48 ++++++++++--------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index d466e28f3..a772c62cd 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -23,14 +23,12 @@ ############################################################################### import logging -import os , subprocess +import os, subprocess import time import sys - -if os.name == u'nt': - import win32api - from ctypes import * - from ctypes.wintypes import RECT +import win32api +from ctypes import * +from ctypes.wintypes import RECT from PyQt4 import QtCore diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 86aa87632..ec1578b82 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -31,11 +31,12 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import Plugin, MediaManagerItem from openlp.plugins.presentations.lib import PresentationMediaItem, \ PresentationTab, ImpressController -try: - from openlp.plugins.presentations.lib import PowerpointController -except: - pass -from openlp.plugins.presentations.lib import PptviewController +if os.name == u'nt': + try: + from openlp.plugins.presentations.lib import PowerpointController + except: + pass + from openlp.plugins.presentations.lib import PptviewController class PresentationPlugin(Plugin): @@ -92,24 +93,25 @@ class PresentationPlugin(Plugin): self.registerControllers(u'Impress', openoffice) except: log.exception(u'Failed to set up plugin for Impress') - #Lets see if Powerpoint is required (Default is Not wanted) - if int(self.config.get_config( - u'Powerpoint', 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', powerpoint) - except: - log.exception(u'Failed to set up plugin for Powerpoint') - #Lets see if Powerpoint Viewer is required (Default is Not wanted) - if int(self.config.get_config( - u'Powerpoint Viewer', QtCore.Qt.Unchecked)) == QtCore.Qt.Checked: - try: - pptview = PptviewController() - self.registerControllers(u'Powerpoint Viewer', pptview) - except: - log.exception(u'Failed to set up plugin for Powerpoint Viewer') + if os.name == u'nt': + #Lets see if Powerpoint is required (Default is Not wanted) + if int(self.config.get_config( + u'Powerpoint', 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', powerpoint) + except: + log.exception(u'Failed to set up plugin for Powerpoint') + #Lets see if Powerpoint Viewer is required (Default is Not wanted) + if int(self.config.get_config( + u'Powerpoint Viewer', QtCore.Qt.Unchecked)) == QtCore.Qt.Checked: + try: + 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 if len(self.controllers) > 0: return True