← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~trb143/openlp/working into lp:openlp

 

Tim Bentley has proposed merging lp:~trb143/openlp/working into lp:openlp.

    Requested reviews:
    OpenLP Core (openlp-core)


Updates in this merge 
Fixes for Service saving and loading so it now works
Add dynamic filters for loading presentataions
Add hook for checking a presentation player can play the presentations (needs code)
Reset the logfile for each presentation.
Commented out print statements to help with Impress problem.  
-- 
https://code.launchpad.net/~trb143/openlp/working/+merge/18463
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp.pyw'
--- openlp.pyw	2010-01-28 17:36:13 +0000
+++ openlp.pyw	2010-02-02 18:21:14 +0000
@@ -159,7 +159,7 @@
                       help="Set the Qt4 style (passed directly to Qt4).")
     # Set up logging
     filename = u'openlp.log'
-    logfile = FileHandler(filename)
+    logfile = FileHandler(filename, u'w')
     logfile.setFormatter(logging.Formatter(
         u'%(asctime)s %(name)-15s %(levelname)-8s %(message)s'))
     log.addHandler(logfile)

=== modified file 'openlp/core/lib/eventreceiver.py'
--- openlp/core/lib/eventreceiver.py	2009-12-31 12:52:01 +0000
+++ openlp/core/lib/eventreceiver.py	2010-02-02 18:21:14 +0000
@@ -104,6 +104,9 @@
     ``remote_edit_clear``
         Informs all components that remote edit has been aborted.
 
+    ``presentation types``
+        Informs all components of the presentation types supported.
+
     """
     global log
     log = logging.getLogger(u'EventReceiver')
@@ -161,4 +164,4 @@
         """
         Get the global ``eventreceiver`` instance.
         """
-        return Receiver.eventreceiver
\ No newline at end of file
+        return Receiver.eventreceiver

=== modified file 'openlp/core/ui/servicemanager.py'
--- openlp/core/ui/servicemanager.py	2010-01-24 13:58:39 +0000
+++ openlp/core/ui/servicemanager.py	2010-02-02 18:21:14 +0000
@@ -225,12 +225,17 @@
             QtCore.SIGNAL(u'update_themes'), self.updateThemeList)
         QtCore.QObject.connect(Receiver.get_receiver(),
             QtCore.SIGNAL(u'remote_edit_clear'), self.onRemoteEditClear)
+        QtCore.QObject.connect(Receiver.get_receiver(),
+            QtCore.SIGNAL(u'presentation types'), self.onPresentationTypes)
         # Last little bits of setting up
         self.config = PluginConfig(u'ServiceManager')
         self.servicePath = self.config.get_data_path()
         self.service_theme = unicode(
             self.config.get_config(u'service theme', u''))
 
+    def onPresentationTypes(self, presentation_types):
+        self.presentation_types = presentation_types
+
     def onMoveSelectionUp(self):
         """
         Moves the selection up the window
@@ -433,10 +438,10 @@
                 for item in self.serviceItems:
                     service.append({u'serviceitem':item[u'service_item'].get_service_repr()})
                     if item[u'service_item'].uses_file():
-                        for frame in item[u'service_item'].get_frames:
+                        for frame in item[u'service_item'].get_frames():
                             path_from = unicode(os.path.join(
                                 item[u'service_item'].service_item_path,
-                                frame.get_frame_title()))
+                                frame[u'title']))
                             zip.write(path_from)
                 file = open(servicefile, u'wb')
                 cPickle.dump(service, file)
@@ -499,7 +504,8 @@
                     serviceitem = ServiceItem()
                     serviceitem.RenderManager = self.parent.RenderManager
                     serviceitem.set_from_service(item, self.servicePath)
-                    self.addServiceItem(serviceitem)
+                    if self.validateItem(serviceitem):
+                        self.addServiceItem(serviceitem)
                 try:
                     if os.path.isfile(p_file):
                         os.remove(p_file)
@@ -516,6 +522,14 @@
         self.serviceName = name[len(name) - 1]
         self.parent.serviceChanged(True, self.serviceName)
 
+    def validateItem(self, serviceItem):
+#        print "---"
+#        print serviceItem.name
+#        print serviceItem.title
+#        print serviceItem.service_item_path
+#        print serviceItem.service_item_type
+        return True
+
     def cleanUp(self):
         """
         Empties the servicePath of temporary files
@@ -617,7 +631,7 @@
             else:
                 pos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0]
                 count = item.data(0, QtCore.Qt.UserRole).toInt()[0]
-        #adjuest for zero based arrays
+        #adjust for zero based arrays
         pos = pos - 1
         return pos, count
 

=== modified file 'openlp/plugins/presentations/lib/impresscontroller.py'
--- openlp/plugins/presentations/lib/impresscontroller.py	2010-01-28 17:36:13 +0000
+++ openlp/plugins/presentations/lib/impresscontroller.py	2010-02-02 18:21:14 +0000
@@ -62,10 +62,12 @@
         """
         log.debug(u'Initialising')
         PresentationController.__init__(self, plugin, u'Impress')
+        self.supports= [u'.odp', u'.ppt', u'.pps', u'.pptx', u'.ppsx']
         self.process = None
         self.document = None
         self.presentation = None
         self.controller = None
+        self.desktop = None
 
     def check_available(self):
         """
@@ -85,7 +87,7 @@
         It is not displayed to the user but is available to the UNO interface
         when required.
         """
-        log.debug(u'start Openoffice')
+        log.debug(u'start process Openoffice')
         if os.name == u'nt':
             self.manager = self.get_com_servicemanager()
             self.manager._FlagAsMethod(u'Bridge_GetStruct')
@@ -101,7 +103,7 @@
         """
         Called at system exit to clean up any running presentations
         """
-        log.debug(u'Kill')
+        log.debug(u'Kill OpenOffice')
         self.close_presentation()
         if os.name != u'nt':
             desktop = self.get_uno_desktop()
@@ -121,8 +123,9 @@
         ``presentation``
         The file name of the presentatios to the run.
         """
-        log.debug(u'LoadPresentation')
+        log.debug(u'Load Presentation OpenOffice')
         self.store_filename(presentation)
+        #print "s.dsk1 ", self.desktop
         if os.name == u'nt':
             desktop = self.get_com_desktop()
             if desktop is None:
@@ -135,6 +138,7 @@
         if desktop is None:
             return
         self.desktop = desktop
+        #print "s.dsk2 ", self.desktop
         properties = []
         properties.append(self.create_property(u'Minimized', True))
         properties = tuple(properties)
@@ -153,9 +157,9 @@
         """
         Create thumbnail images for presentation
         """
+        log.debug(u'create thumbnails OpenOffice')
         if self.check_thumbnails():
             return
-
         if os.name == u'nt':
             thumbdir = u'file:///' + self.thumbnailpath.replace(
                 u'\\', u'/').replace(u':', u'|').replace(u' ', u'%20')
@@ -170,13 +174,14 @@
             page = pages.getByIndex(idx)
             doc.getCurrentController().setCurrentPage(page)
             path = u'%s/%s%s.png'% (thumbdir, self.thumbnailprefix,
-                    unicode(idx+1))
+                    unicode(idx + 1))
             try:
                 doc.storeToURL(path , props)
             except:
                 log.exception(u'%s\nUnable to store preview' % path)
 
     def create_property(self, name, value):
+        log.debug(u'create property OpenOffice')
         if os.name == u'nt':
             prop = self.manager.Bridge_GetStruct(u'com.sun.star.beans.PropertyValue')
         else:
@@ -186,7 +191,7 @@
         return prop
 
     def get_uno_desktop(self):
-        log.debug(u'getUNODesktop')
+        log.debug(u'get UNO Desktop Openoffice')
         ctx = None
         loop = 0
         context = uno.getComponentContext()
@@ -196,6 +201,7 @@
             try:
                 ctx = resolver.resolve(u'uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext')
             except:
+                log.exception(u'Unable to fine running instance ')
                 self.start_process()
                 loop += 1
         try:
@@ -208,7 +214,7 @@
             return None
 
     def get_com_desktop(self):
-        log.debug(u'getCOMDesktop')
+        log.debug(u'get COM Desktop OpenOffice')
         try:
             desktop = self.manager.createInstance(u'com.sun.star.frame.Desktop')
             return desktop
@@ -217,7 +223,7 @@
         return None
 
     def get_com_servicemanager(self):
-        log.debug(u'get_com_servicemanager')
+        log.debug(u'get_com_servicemanager openoffice')
         try:
             return Dispatch(u'com.sun.star.ServiceManager')
         except:
@@ -230,6 +236,7 @@
         Triggerent by new object being added to SlideController orOpenLP
         being shut down
         """
+        log.debug(u'close Presentation OpenOffice')
         if self.document:
             if self.presentation:
                 try:
@@ -242,32 +249,44 @@
             self.document = None
 
     def is_loaded(self):
+        log.debug(u'is loaded OpenOffice')
+        #print "is_loaded "
         if self.presentation is None or self.document is None:
+            #print "no present or document"
             return False
         try:
             if self.document.getPresentation() is None:
+                #print "no getPresentation"
                 return False
         except:
             return False
         return True
 
     def is_active(self):
+        log.debug(u'is active OpenOffice')
+        #print "is_active "
         if not self.is_loaded():
+            #print "False "
             return False
+        #print "self.con ", self.controller
         if self.controller is None:
             return False
         return True
 
     def unblank_screen(self):
+        log.debug(u'unblank screen OpenOffice')
         return self.controller.resume()
 
     def blank_screen(self):
+        log.debug(u'blank screen OpenOffice')
         self.controller.blankScreen(0)
 
     def stop_presentation(self):
+        log.debug(u'stop presentation OpenOffice')
         self.controller.deactivate()
 
     def start_presentation(self):
+        log.debug(u'start presentation OpenOffice')
         if self.controller is None or not self.controller.isRunning():
             self.presentation.start()
             # start() returns before the getCurrentComponent is ready. Try for 5 seconds

=== modified file 'openlp/plugins/presentations/lib/mediaitem.py'
--- openlp/plugins/presentations/lib/mediaitem.py	2009-12-31 12:52:01 +0000
+++ openlp/plugins/presentations/lib/mediaitem.py	2010-02-02 18:21:14 +0000
@@ -63,7 +63,13 @@
 
     def retranslateUi(self):
         self.OnNewPrompt = self.trUtf8('Select Presentation(s)')
-        self.OnNewFileMasks = self.trUtf8('Presentations (*.ppt *.pps *.odp)')
+        fileType = u''
+        for controller in self.controllers:
+            if self.controllers[controller].enabled:
+                for type in self.controllers[controller].supports:
+                    if fileType.find(type) == -1:
+                        fileType += type + u' '
+        self.OnNewFileMasks = self.trUtf8('Presentations (%s)' % fileType)
 
     def requiredIcons(self):
         MediaManagerItem.requiredIcons(self)
@@ -151,4 +157,4 @@
                 service_item.add_from_command(path, name, img)
                 i = i + 1
                 img = controller.get_slide_preview_file(i)
-        return True
\ No newline at end of file
+        return True

=== modified file 'openlp/plugins/presentations/lib/powerpointcontroller.py'
--- openlp/plugins/presentations/lib/powerpointcontroller.py	2009-12-31 12:52:01 +0000
+++ openlp/plugins/presentations/lib/powerpointcontroller.py	2010-02-02 18:21:14 +0000
@@ -52,6 +52,7 @@
         """
         log.debug(u'Initialising')
         PresentationController.__init__(self, plugin, u'Powerpoint')
+        self.supports= [u'.ppt', u'.pps']
         self.process = None
         self.presentation = None
 
@@ -255,4 +256,4 @@
             if os.path.isfile(path):
                 return path
             else:
-                return None
\ No newline at end of file
+                return None

=== modified file 'openlp/plugins/presentations/lib/pptviewcontroller.py'
--- openlp/plugins/presentations/lib/pptviewcontroller.py	2009-12-31 12:52:01 +0000
+++ openlp/plugins/presentations/lib/pptviewcontroller.py	2010-02-02 18:21:14 +0000
@@ -49,6 +49,7 @@
         log.debug(u'Initialising')
         self.process = None
         PresentationController.__init__(self, plugin, u'Powerpoint Viewer')
+        self.supports= [u'.ppt', u'.pps']
         self.pptid = None
 
     def check_available(self):

=== modified file 'openlp/plugins/presentations/lib/presentationcontroller.py'
--- openlp/plugins/presentations/lib/presentationcontroller.py	2009-12-31 12:52:01 +0000
+++ openlp/plugins/presentations/lib/presentationcontroller.py	2010-02-02 18:21:14 +0000
@@ -118,7 +118,7 @@
     """
     global log
     log = logging.getLogger(u'PresentationController')
-    log.info(u'loaded')
+    log.info(u'PresentationController loaded')
 
     def __init__(self, plugin=None, name=u'PresentationController'):
         """
@@ -136,6 +136,7 @@
         ``name``
             Name of the application, to appear in the application
         """
+        self.supports = []
         self.plugin = plugin
         self.name = name
         self.available = self.check_available()
@@ -313,4 +314,4 @@
         else:
             prefix = u'preview'
         Receiver.send_message(u'%s_slidecontroller_change' % prefix,
-            self.slidenumber - 1)
\ No newline at end of file
+            self.slidenumber - 1)

=== modified file 'openlp/plugins/presentations/presentationplugin.py'
--- openlp/plugins/presentations/presentationplugin.py	2009-12-31 12:52:01 +0000
+++ openlp/plugins/presentations/presentationplugin.py	2010-02-02 18:21:14 +0000
@@ -26,7 +26,7 @@
 import os
 import logging
 
-from openlp.core.lib import Plugin, build_icon
+from openlp.core.lib import Plugin, build_icon, Receiver
 from openlp.plugins.presentations.lib import *
 
 class PresentationPlugin(Plugin):
@@ -51,6 +51,12 @@
         log.info(u'Presentations Initialising')
         Plugin.initialise(self)
         self.insert_toolbox_item()
+        presentation_types = []
+        for controller in self.controllers:
+            if self.controllers[controller].enabled:
+                presentation_types.append({u'%s' % controller : self.controllers[controller].supports})
+        Receiver.send_message(
+                    u'presentation types', presentation_types)
 
     def finalise(self):
         log.info(u'Plugin Finalise')
@@ -106,4 +112,4 @@
             'the ability to show presentations using a number of different '
             'programs.  The choice of available presentation programs is '
             'available to the user in a drop down box.')
-        return about_text
\ No newline at end of file
+        return about_text


Follow ups