Merged in lp:~j-corwin/openlp/present

bzr-revno: 607
This commit is contained in:
Jonathan Corwin 2009-10-17 22:04:12 +02:00 committed by Raoul Snyman
commit c491a19be8
7 changed files with 38 additions and 19 deletions

View File

@ -167,7 +167,7 @@ class ServiceItem(object):
self.service_frames.append( self.service_frames.append(
{u'title': frame_title, u'raw_slide': raw_slide}) {u'title': frame_title, u'raw_slide': raw_slide})
def add_from_command(self, path, frame_title): def add_from_command(self, path, frame_title, image):
""" """
Add a slide from a command. Add a slide from a command.
@ -180,7 +180,7 @@ class ServiceItem(object):
self.service_item_type = ServiceType.Command self.service_item_type = ServiceType.Command
self.service_item_path = path self.service_item_path = path
self.service_frames.append( self.service_frames.append(
{u'title': frame_title, u'command': None}) {u'title': frame_title, u'command': None, u'text':None, u'image': image})
def get_service_repr(self): def get_service_repr(self):
""" """

View File

@ -256,8 +256,7 @@ class SlideController(QtGui.QWidget):
Receiver().send_message(u'%s_start' % item.name.lower(), \ Receiver().send_message(u'%s_start' % item.name.lower(), \
[item.shortname, item.service_item_path, [item.shortname, item.service_item_path,
item.service_frames[0][u'title']]) item.service_frames[0][u'title']])
else: self.displayServiceManagerItems(item, 0)
self.displayServiceManagerItems(item, 0)
def addServiceManagerItem(self, item, slideno): def addServiceManagerItem(self, item, slideno):
""" """
@ -276,8 +275,7 @@ class SlideController(QtGui.QWidget):
Receiver().send_message(u'%s_start' % item.name.lower(), \ Receiver().send_message(u'%s_start' % item.name.lower(), \
[item.shortname, item.service_item_path, [item.shortname, item.service_item_path,
item.service_frames[0][u'title'], slideno]) item.service_frames[0][u'title'], slideno])
else: self.displayServiceManagerItems(item, slideno)
self.displayServiceManagerItems(item, slideno)
def displayServiceManagerItems(self, serviceitem, slideno): def displayServiceManagerItems(self, serviceitem, slideno):
""" """

View File

@ -129,9 +129,7 @@ class ImpressController(PresentationController):
0, properties) 0, properties)
self.presentation = self.document.getPresentation() self.presentation = self.document.getPresentation()
self.presentation.Display = self.plugin.render_manager.current_display + 1 self.presentation.Display = self.plugin.render_manager.current_display + 1
self.presentation.start() self.controller = None
self.controller = \
desktop.getCurrentComponent().Presentation.getController()
except: except:
log.exception(u'Failed to load presentation') log.exception(u'Failed to load presentation')
return return
@ -219,8 +217,7 @@ class ImpressController(PresentationController):
self.document = None self.document = None
def is_loaded(self): def is_loaded(self):
if self.presentation is None or self.document is None \ if self.presentation is None or self.document is None:
or self.controller is None:
return False return False
try: try:
if self.document.getPresentation() is None: if self.document.getPresentation() is None:
@ -232,6 +229,8 @@ class ImpressController(PresentationController):
def is_active(self): def is_active(self):
if not self.is_loaded(): if not self.is_loaded():
return False return False
if self.controller is None:
return False
return self.controller.isRunning() and self.controller.isActive() return self.controller.isRunning() and self.controller.isActive()
def unblank_screen(self): def unblank_screen(self):
@ -244,7 +243,7 @@ class ImpressController(PresentationController):
self.controller.deactivate() self.controller.deactivate()
def start_presentation(self): def start_presentation(self):
if not self.controller.isRunning(): if self.controller is None or not self.controller.isRunning():
self.presentation.start() self.presentation.start()
self.controller = self.desktop.getCurrentComponent().Presentation.getController() self.controller = self.desktop.getCurrentComponent().Presentation.getController()
else: else:
@ -255,7 +254,7 @@ class ImpressController(PresentationController):
return self.controller.getCurrentSlideIndex() return self.controller.getCurrentSlideIndex()
def get_slide_count(self): def get_slide_count(self):
return self.controller.getSlideCount() return self.document.getDrawPages().getCount()
def goto_slide(self, slideno): def goto_slide(self, slideno):
self.controller.gotoSlideIndex(slideno-1) self.controller.gotoSlideIndex(slideno-1)
@ -279,5 +278,9 @@ class ImpressController(PresentationController):
``slide_no`` ``slide_no``
The slide an image is required for, starting at 1 The slide an image is required for, starting at 1
""" """
return os.path.join(self.thumbnailpath, path = os.path.join(self.thumbnailpath,
self.thumbnailprefix + unicode(slide_no) + u'.png') self.thumbnailprefix + unicode(slide_no) + u'.png')
if os.path.isfile(path):
return path
else:
return None

View File

@ -132,9 +132,18 @@ class PresentationMediaItem(MediaManagerItem):
return False return False
service_item.title = unicode(self.DisplayTypeComboBox.currentText()) service_item.title = unicode(self.DisplayTypeComboBox.currentText())
service_item.shortname = unicode(self.DisplayTypeComboBox.currentText()) service_item.shortname = unicode(self.DisplayTypeComboBox.currentText())
cont = self.controllers[service_item.shortname]
for item in items: for item in items:
bitem = self.ListView.item(item.row()) bitem = self.ListView.item(item.row())
filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString())
(path, name) = os.path.split(filename) (path, name) = os.path.split(filename)
service_item.add_from_command(path, name) cont.store_filename(filename)
if cont.get_slide_preview_file(1) is None:
cont.load_presentation(filename)
i = 1
img = cont.get_slide_preview_file(i)
while img is not None:
service_item.add_from_command(path, name, img)
i = i + 1
img = cont.get_slide_preview_file(i)
return True return True

View File

@ -66,6 +66,7 @@ class MessageListener(object):
if self.controller.is_loaded(): if self.controller.is_loaded():
self.shutdown(None) self.shutdown(None)
self.controller.load_presentation(file) self.controller.load_presentation(file)
self.controller.start_presentation()
self.controller.slidenumber = 0 self.controller.slidenumber = 0
def activate(self): def activate(self):
@ -81,7 +82,7 @@ class MessageListener(object):
def slide(self, message): def slide(self, message):
self.activate() self.activate()
if message is not None: if message is not None:
self.controller.goto_slide(message[0]) self.controller.goto_slide(message[0]+1)
self.controller.slidenumber = self.controller.get_slide_number() self.controller.slidenumber = self.controller.get_slide_number()
def first(self, message): def first(self, message):

View File

@ -127,7 +127,6 @@ class PowerpointController(PresentationController):
return return
self.presentation = self.process.Presentations(self.process.Presentations.Count) self.presentation = self.process.Presentations(self.process.Presentations.Count)
self.create_thumbnails() self.create_thumbnails()
self.start_presentation()
def create_thumbnails(self): def create_thumbnails(self):
""" """
@ -250,5 +249,9 @@ class PowerpointController(PresentationController):
``slide_no`` ``slide_no``
The slide an image is required for, starting at 1 The slide an image is required for, starting at 1
""" """
return os.path.join(self.thumbnailpath, path = os.path.join(self.thumbnailpath,
self.thumbnailprefix + unicode(slide_no) + u'.png') self.thumbnailprefix + unicode(slide_no) + u'.png')
if os.path.isfile(path):
return path
else:
return None

View File

@ -112,6 +112,7 @@ class PptviewController(PresentationController):
try: try:
self.pptid = self.process.OpenPPT(filepath, None, rect, self.pptid = self.process.OpenPPT(filepath, None, rect,
str(os.path.join(self.thumbnailpath, self.thumbnailprefix))) str(os.path.join(self.thumbnailpath, self.thumbnailprefix)))
self.stop_presentation()
except: except:
log.exception(u'Failed to load presentation') log.exception(u'Failed to load presentation')
@ -201,6 +202,10 @@ class PptviewController(PresentationController):
``slide_no`` ``slide_no``
The slide an image is required for, starting at 1 The slide an image is required for, starting at 1
""" """
return os.path.join(self.thumbnailpath, path = os.path.join(self.thumbnailpath,
self.thumbnailprefix + unicode(slide_no) + u'.bmp') self.thumbnailprefix + unicode(slide_no) + u'.bmp')
if os.path.isfile(path):
return path
else:
return None