forked from openlp/openlp
head
This commit is contained in:
commit
66ec702dec
@ -63,7 +63,7 @@ class RenderManager(object):
|
|||||||
else:
|
else:
|
||||||
self.current_display = screen_number
|
self.current_display = screen_number
|
||||||
self.renderer = Renderer()
|
self.renderer = Renderer()
|
||||||
#self.calculate_default(self.screen_list[self.current_display][u'size'])
|
self.calculate_default(self.screen_list[self.current_display][u'size'])
|
||||||
self.theme = u''
|
self.theme = u''
|
||||||
self.service_theme = u''
|
self.service_theme = u''
|
||||||
self.global_style = u''
|
self.global_style = u''
|
||||||
|
@ -254,7 +254,7 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.enableToolBar(item)
|
self.enableToolBar(item)
|
||||||
if item.service_item_type == ServiceType.Command:
|
if item.service_item_type == ServiceType.Command:
|
||||||
Receiver().send_message(u'%s_start'%item.name.lower(), \
|
Receiver().send_message(u'%s_start'%item.name.lower(), \
|
||||||
u'%s:%s:%s' % (item.shortname, item.service_item_path, item.service_frames[0][u'title']))
|
[item.shortname, item.service_item_path, item.service_frames[0][u'title']])
|
||||||
else:
|
else:
|
||||||
self.displayServiceManagerItems(item, 0)
|
self.displayServiceManagerItems(item, 0)
|
||||||
|
|
||||||
@ -272,7 +272,7 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.enableToolBar(item)
|
self.enableToolBar(item)
|
||||||
if item.service_item_type == ServiceType.Command:
|
if item.service_item_type == ServiceType.Command:
|
||||||
Receiver().send_message(u'%s_start'%item.name.lower(), \
|
Receiver().send_message(u'%s_start'%item.name.lower(), \
|
||||||
u'%s:%s:%s' % (item.shortname, item.service_item_path, item.service_frames[0][u'title']))
|
[item.shortname, item.service_item_path, item.service_frames[0][u'title']])
|
||||||
else:
|
else:
|
||||||
self.displayServiceManagerItems(item, slideno)
|
self.displayServiceManagerItems(item, slideno)
|
||||||
|
|
||||||
|
@ -29,9 +29,14 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
|||||||
import logging
|
import logging
|
||||||
import os , subprocess
|
import os , subprocess
|
||||||
import time
|
import time
|
||||||
import uno
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
if os.name == u'nt':
|
||||||
|
from win32com.client import Dispatch
|
||||||
|
else:
|
||||||
|
import uno
|
||||||
|
|
||||||
|
|
||||||
from PyQt4 import QtCore
|
from PyQt4 import QtCore
|
||||||
|
|
||||||
class ImpressController(object):
|
class ImpressController(object):
|
||||||
@ -57,11 +62,12 @@ class ImpressController(object):
|
|||||||
when required.
|
when required.
|
||||||
"""
|
"""
|
||||||
log.debug(u'start Openoffice')
|
log.debug(u'start Openoffice')
|
||||||
# -headless
|
if os.name != u'nt':
|
||||||
cmd = u'openoffice.org -nologo -norestore -minimized -invisible ' + u'"' + u'-accept=socket,host=localhost,port=2002;urp;'+ u'"'
|
# -headless
|
||||||
self.process = QtCore.QProcess()
|
cmd = u'openoffice.org -nologo -norestore -minimized -invisible ' + u'"' + u'-accept=socket,host=localhost,port=2002;urp;'+ u'"'
|
||||||
self.process.startDetached(cmd)
|
self.process = QtCore.QProcess()
|
||||||
self.process.waitForStarted()
|
self.process.startDetached(cmd)
|
||||||
|
self.process.waitForStarted()
|
||||||
|
|
||||||
def kill(self):
|
def kill(self):
|
||||||
"""
|
"""
|
||||||
@ -81,6 +87,26 @@ class ImpressController(object):
|
|||||||
The file name of the presentatios to the run.
|
The file name of the presentatios to the run.
|
||||||
"""
|
"""
|
||||||
log.debug(u'LoadPresentation')
|
log.debug(u'LoadPresentation')
|
||||||
|
if os.name == u'nt':
|
||||||
|
desktop = self.getCOMDesktop()
|
||||||
|
url = u'file:///' + presentation.replace(u'\\', u'/').replace(u':', u'|').replace(u' ', u'%20')
|
||||||
|
else:
|
||||||
|
desktop = self.getUNODesktop()
|
||||||
|
url = uno.systemPathToFileUrl(presentation)
|
||||||
|
if desktop==None:
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
properties = []
|
||||||
|
properties = tuple(properties)
|
||||||
|
self.document = desktop.loadComponentFromURL(url, "_blank", 0, properties)
|
||||||
|
self.presentation = self.document.getPresentation()
|
||||||
|
self.presentation.start()
|
||||||
|
self.xSlideShowController = desktop.getCurrentComponent().Presentation.getController()
|
||||||
|
except:
|
||||||
|
log.error(u'Failed reason %s' % sys.exc_info())
|
||||||
|
|
||||||
|
def getUNODesktop(self):
|
||||||
|
log.debug(u'getUNODesktop')
|
||||||
ctx = None
|
ctx = None
|
||||||
loop = 0
|
loop = 0
|
||||||
context = uno.getComponentContext()
|
context = uno.getComponentContext()
|
||||||
@ -94,15 +120,20 @@ class ImpressController(object):
|
|||||||
try:
|
try:
|
||||||
smgr = ctx.ServiceManager
|
smgr = ctx.ServiceManager
|
||||||
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop", ctx )
|
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop", ctx )
|
||||||
url = uno.systemPathToFileUrl(presentation)
|
return desktop
|
||||||
properties = []
|
|
||||||
properties = tuple(properties)
|
|
||||||
self.document = desktop.loadComponentFromURL(url, "_blank", 0, properties)
|
|
||||||
self.presentation = self.document.getPresentation()
|
|
||||||
self.presentation.start()
|
|
||||||
self.xSlideShowController = desktop.getCurrentComponent().Presentation.getController()
|
|
||||||
except:
|
except:
|
||||||
log.error(u'Failed reason %s' % sys.exc_info())
|
log.error(u'Failed reason %s' % sys.exc_info())
|
||||||
|
return None
|
||||||
|
|
||||||
|
def getCOMDesktop(self):
|
||||||
|
log.debug(u'getCOMDesktop')
|
||||||
|
try:
|
||||||
|
smgr = Dispatch("com.sun.star.ServiceManager")
|
||||||
|
desktop = smgr.createInstance( "com.sun.star.frame.Desktop")
|
||||||
|
return desktop
|
||||||
|
except:
|
||||||
|
log.error(u'Failed reason %s' % sys.exc_info())
|
||||||
|
return None
|
||||||
|
|
||||||
def closePresentation(self):
|
def closePresentation(self):
|
||||||
"""
|
"""
|
||||||
|
@ -83,6 +83,5 @@ class MessageListener(object):
|
|||||||
``message``
|
``message``
|
||||||
Message containing Presentaion handler name and file to be presented.
|
Message containing Presentaion handler name and file to be presented.
|
||||||
"""
|
"""
|
||||||
bits = message.split(u':')
|
file = os.path.join(message[1], message[2])
|
||||||
file = os.path.join(bits[1], bits[2])
|
return message[0], file
|
||||||
return bits[0], file
|
|
||||||
|
@ -79,8 +79,12 @@ class PresentationPlugin(Plugin):
|
|||||||
#Lets see if Impress is required (Default is Not wanted)
|
#Lets see if Impress is required (Default is Not wanted)
|
||||||
if int(self.config.get_config(u'Impress', QtCore.Qt.Unchecked)) == QtCore.Qt.Checked:
|
if int(self.config.get_config(u'Impress', QtCore.Qt.Unchecked)) == QtCore.Qt.Checked:
|
||||||
try:
|
try:
|
||||||
#Check to see if we have uno installed
|
if os.name == u'nt':
|
||||||
import uno
|
#Check to see if we are Win32
|
||||||
|
from win32com.client import Dispatch
|
||||||
|
else:
|
||||||
|
#Check to see if we have uno installed
|
||||||
|
import uno
|
||||||
openoffice = ImpressController()
|
openoffice = ImpressController()
|
||||||
self.registerControllers(u'Impress', openoffice)
|
self.registerControllers(u'Impress', openoffice)
|
||||||
except:
|
except:
|
||||||
|
Loading…
Reference in New Issue
Block a user