318
319
hide_mode = message[2]
319
320
file = item.get_frame_path()
320
321
self.handler = item.processor
321
# When starting presentation from the servicemanager/slidecontroller we convert
322
# When starting presentation from the servicemanager we convert
322
323
# PDF/XPS-serviceitems into image-serviceitems. When started from the mediamanager
323
# the conversion has already been done.
324
# the conversion has already been done at this point.
324
325
if file.endswith('.pdf') or file.endswith('.xps'):
325
326
log.debug('Converting from pdf/xps to images for serviceitem with file %s', file)
326
# Create a new image-serviceitem which will overwrite the old one
327
new_item = ServiceItem()
328
new_item.name = 'images'
327
# Create a copy of the original item, and then clear the original item so it can be filled with images
328
item_cpy = copy.copy(item)
330
self.media_item.generate_slide_data(new_item, item, False, False, ServiceItemContext.Live, file)
331
self.media_item.generate_slide_data(item, item_cpy, False, False, ServiceItemContext.Live, file)
332
self.media_item.generate_slide_data(new_item, item, False, False, ServiceItemContext.Preview, file)
333
# We need to overwrite the current serviceitem to make the slidecontroller
334
# present the images, so we do some copying
335
service_repr = {'serviceitem': new_item.get_service_repr(True) }
336
item.set_from_service(service_repr)
337
item._raw_frames = new_item._raw_frames
338
# When presenting PDF or XPS, we are using the image presentation code,
333
self.media_item.generate_slide_data(item, item_cpy, False, False, ServiceItemContext.Preview, file)
334
# Some of the original serviceitem attributes is needed in the new serviceitem
335
item.footer = item_cpy.footer
336
item.from_service = item_cpy.from_service
337
item.iconic_representation = item_cpy.iconic_representation
338
item.image_border = item_cpy.image_border
339
item.main = item_cpy.main
340
item.theme_data = item_cpy.theme_data
341
# When presenting PDF or XPS, we are using the image presentation code,
339
342
# so handler & processor is set to None, and we skip adding the handler.
340
343
self.handler = None
341
344
if self.handler == self.media_item.automatic:
346
349
controller = self.live_handler
348
351
controller = self.preview_handler
349
# When presenting PDF or XPS, we are using the image presentation code,
352
# When presenting PDF or XPS, we are using the image presentation code,
350
353
# so handler & processor is set to None, and we skip adding the handler.
351
if self.handler == None:
354
if self.handler is None:
352
355
self.controller = controller
354
357
controller.add_handler(self.controllers[self.handler], file, hide_mode, message[3])