Fix stuttering powerpoint start

This commit is contained in:
Jonathan Corwin 2011-04-07 23:57:12 +01:00
parent 9b04385f34
commit 78a9c89025
3 changed files with 17 additions and 14 deletions

View File

@ -646,7 +646,7 @@ class SlideController(QtGui.QWidget):
self.display.buildHtml(self.serviceItem) self.display.buildHtml(self.serviceItem)
if serviceItem.is_media(): if serviceItem.is_media():
self.onMediaStart(serviceItem) self.onMediaStart(serviceItem)
self.onSlideSelected() self.onSlideSelected(True)
self.previewListWidget.setFocus() self.previewListWidget.setFocus()
Receiver.send_message(u'slidecontroller_%s_started' % self.typePrefix, Receiver.send_message(u'slidecontroller_%s_started' % self.typePrefix,
[serviceItem]) [serviceItem])
@ -833,7 +833,7 @@ class SlideController(QtGui.QWidget):
% self.serviceItem.name.lower(), % self.serviceItem.name.lower(),
[self.serviceItem, self.isLive]) [self.serviceItem, self.isLive])
def onSlideSelected(self): def onSlideSelected(self, start=False):
""" """
Generate the preview when you click on a slide. Generate the preview when you click on a slide.
if this is the Live Controller also display on the screen if this is the Live Controller also display on the screen
@ -842,7 +842,7 @@ class SlideController(QtGui.QWidget):
self.selectedRow = 0 self.selectedRow = 0
if row > -1 and row < self.previewListWidget.rowCount(): if row > -1 and row < self.previewListWidget.rowCount():
if self.serviceItem.is_command(): if self.serviceItem.is_command():
if self.isLive: if self.isLive and not start:
Receiver.send_message( Receiver.send_message(
u'%s_slide' % self.serviceItem.name.lower(), u'%s_slide' % self.serviceItem.name.lower(),
[self.serviceItem, self.isLive, row]) [self.serviceItem, self.isLive, row])

View File

@ -49,7 +49,7 @@ class Controller(object):
self.doc = None self.doc = None
log.info(u'%s controller loaded' % live) log.info(u'%s controller loaded' % live)
def add_handler(self, controller, file, hide_mode): def add_handler(self, controller, file, hide_mode, slide_no):
""" """
Add a handler, which is an instance of a presentation and Add a handler, which is an instance of a presentation and
slidecontroller combination. If the slidecontroller has a display slidecontroller combination. If the slidecontroller has a display
@ -64,8 +64,8 @@ class Controller(object):
# Display error message to user # Display error message to user
# Inform slidecontroller that the action failed? # Inform slidecontroller that the action failed?
return return
self.doc.slidenumber = slide_no
if self.is_live: if self.is_live:
self.doc.start_presentation()
if hide_mode == HideMode.Screen: if hide_mode == HideMode.Screen:
Receiver.send_message(u'maindisplay_hide', HideMode.Screen) Receiver.send_message(u'maindisplay_hide', HideMode.Screen)
self.stop() self.stop()
@ -73,11 +73,14 @@ class Controller(object):
Receiver.send_message(u'maindisplay_hide', HideMode.Theme) Receiver.send_message(u'maindisplay_hide', HideMode.Theme)
self.blank() self.blank()
elif hide_mode == HideMode.Blank: elif hide_mode == HideMode.Blank:
Receiver.send_message(u'maindisplay_hide', HideMode.Screen) Receiver.send_message(u'maindisplay_hide', HideMode.Blank)
self.blank() self.blank()
else: else:
self.doc.start_presentation()
Receiver.send_message(u'maindisplay_hide', HideMode.Screen) Receiver.send_message(u'maindisplay_hide', HideMode.Screen)
self.doc.slidenumber = 0 self.doc.slidenumber = 0
if slide_no > 1:
self.slide(slide_no)
def activate(self): def activate(self):
""" """
@ -281,7 +284,8 @@ class MessageListener(object):
controller = self.live_handler controller = self.live_handler
else: else:
controller = self.preview_handler controller = self.preview_handler
controller.add_handler(self.controllers[self.handler], file, hide_mode) controller.add_handler(self.controllers[self.handler], file, hide_mode,
message[3])
def slide(self, message): def slide(self, message):
""" """

View File

@ -251,14 +251,13 @@ class PowerpointDocument(PresentationDocument):
win32ui.GetForegroundWindow().GetDC().GetDeviceCaps(88) win32ui.GetForegroundWindow().GetDC().GetDeviceCaps(88)
except win32ui.error: except win32ui.error:
dpi = 96 dpi = 96
self.presentation.SlideShowSettings.Run()
self.presentation.SlideShowWindow.View.GotoSlide(1)
rendermanager = self.controller.plugin.renderManager rendermanager = self.controller.plugin.renderManager
rect = rendermanager.screens.current[u'size'] rect = rendermanager.screens.current[u'size']
self.presentation.SlideShowWindow.Top = rect.y() * 72 / dpi ppt_window = self.presentation.SlideShowSettings.Run()
self.presentation.SlideShowWindow.Height = rect.height() * 72 / dpi ppt_window.Top = rect.y() * 72 / dpi
self.presentation.SlideShowWindow.Left = rect.x() * 72 / dpi ppt_window.Height = rect.height() * 72 / dpi
self.presentation.SlideShowWindow.Width = rect.width() * 72 / dpi ppt_window.Left = rect.x() * 72 / dpi
ppt_window.Width = rect.width() * 72 / dpi
def get_slide_number(self): def get_slide_number(self):
""" """