From e5ba8b73a6487137807b40f946df04a0f0ce2bae Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 3 May 2009 08:20:15 +0100 Subject: [PATCH] More servicing changes (Preview and Live) behave and can be selected. Setup Slidecontroller so it has an identity Setup SlideController so it knows anout the display Fix maindisplay view bugs --- openlp/core/ui/maindisplay.py | 6 ++-- openlp/core/ui/mainwindow.py | 6 ++++ openlp/core/ui/slidecontroller.py | 60 +++++++++++++++---------------- 3 files changed, 39 insertions(+), 33 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index d322e90af..628dcff1e 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -45,14 +45,14 @@ class MainDisplay(QtGui.QWidget): screen = scrn break self.setGeometry(screen['size']) + self.display.setGeometry(screen['size']) if not screen['primary']: self.showFullScreen() else: - self.hide() + self.showMinimized() def frameView(self, frame): - self.display.setGeometry(0, 0, imagesize.width(), imagesize.height()) - self.display.setPixmap(QtGui.QPixmap(frame)) + self.display.setPixmap(frame) def kill(self): pass diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index e87a23838..386976772 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -95,6 +95,12 @@ class MainWindow(object): self.ThemeManagerContents.serviceManager = self.ServiceManagerContents self.ThemeManagerContents.loadThemes() + # Initialise SlideControllers + log.info(u'Set Up SlideControllers') + self.PreviewController.isLive = False + self.LiveController.isLive = True + self.LiveController.mainDisplay = self.main_display + def setupUi(self): self.main_window.setObjectName(u'main_window') self.main_window.resize(1087, 847) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 57cbbb15a..2ffbf9c01 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -43,14 +43,18 @@ class SlideData(QAbstractListModel): def clearItems(self): self.items=[] + def columnCount(self, parent): + return 1 + def rowCount(self, parent): return len(self.items) - def insertRow(self, row, frame, text): + def insertRow(self, row, frame): self.beginInsertRows(QModelIndex(),row,row) log.info(u'insert row %d' % row) # create a preview image - self.items.insert(row,(frame, text)) + frame1 = frame.scaled(QtCore.QSize(350,260)) + self.items.insert(row,(frame1)) log.info(u'Items: %s' % self.items) self.endInsertRows() @@ -59,17 +63,17 @@ class SlideData(QAbstractListModel): self.items.pop(row) self.endRemoveRows() - def addRow(self, frame, text): - self.insertRow(len(self.items), frame, text) + def addRow(self, frame): + self.insertRow(len(self.items), frame) def data(self, index, role): row=index.row() if row > len(self.items): # if the last row is selected and deleted, we then get called with an empty row! return QVariant() - if role==Qt.DisplayRole: - retval= self.items[row][1] - elif role == Qt.DecorationRole: - retval= self.items[row][0] +# if role==Qt.DisplayRole: +# retval= self.items[row][1] + if role == Qt.DecorationRole: + retval= self.items[row]#[0] else: retval= QVariant() # log.info("Returning"+ str(retval)) @@ -110,25 +114,16 @@ class SlideController(QtGui.QWidget): self.PaneLayout.setSpacing(50) self.PaneLayout.setMargin(0) - #self.VerseListView = QtGui.QListWidget(customEditDialog) - #self.VerseListView.setObjectName("VerseListView") - #self.horizontalLayout_4.addWidget(self.VerseListView) - self.Controller = QtGui.QScrollArea(self.Splitter) self.Controller.setWidgetResizable(True) - #self.ControllerContents = QtGui.QWidget(self.Controller) - #self.ControllerContents.setGeometry(QtCore.QRect(0, 0, 228, 536)) - - self.CustomListView = QtGui.QListView(self.Splitter) - self.CustomListView.setAlternatingRowColors(True) - self.CustomListData = SlideData() - self.CustomListView.setModel(self.CustomListData) + self.PreviewListView = QtGui.QListView(self.Splitter) + self.PreviewListView.setAlternatingRowColors(True) + self.PreviewListData = SlideData() + self.PreviewListView.setModel(self.PreviewListData) self.Controller.setGeometry(QtCore.QRect(0, 0, 828, 536)) - #self.Controller.setWidget(self.ControllerContents) - - self.Controller.setWidget(self.CustomListView) + self.Controller.setWidget(self.PreviewListView) self.SlidePreview = QtGui.QLabel(self.Splitter) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) @@ -143,20 +138,25 @@ class SlideController(QtGui.QWidget): self.SlidePreview.setScaledContents(True) self.SlidePreview.setObjectName("SlidePreview") - def previewFrame(self, frame): - #self.SlidePreview.setPixmap(frame) + QtCore.QObject.connect(self.PreviewListView, + QtCore.SIGNAL("clicked(QModelIndex)"), self.onSlideSelected) - # imageLabel = QtGui.QLabel() - #imageLabel.setPixmap(frame) - # self.Controller.setWidget(imageLabel) - pass + + def onSlideSelected(self, index): + frame = self.PreviewListData.getValue(index) + self.previewFrame(frame) + + def previewFrame(self, frame): + self.SlidePreview.setPixmap(frame) + if self.isLive: + self.mainDisplay.frameView(frame) def addServiceItem(self, serviceitem): self.serviceitem = serviceitem self.serviceitem.render() - self.CustomListData.clearItems() + self.PreviewListData.clearItems() for frame in self.serviceitem.frames: - self.CustomListData.addRow(frame, u'some text') + self.PreviewListData.addRow(frame) def render(self): pass