Added ImageToolBar to show what I am thinking

Cleanup mainwindow from mark 1 attempt.
Fix bug in Thememanager so themes are not deleted
This commit is contained in:
Tim Bentley 2009-06-29 06:07:32 +01:00
parent 7927080838
commit 560584d8f6
10 changed files with 113 additions and 49 deletions

View File

@ -253,7 +253,7 @@ class MediaManagerItem(QtGui.QWidget):
def onDeleteClick(self): def onDeleteClick(self):
raise NotImplementedError(u'MediaManagerItem.onDeleteClick needs to be defined by the plugin') raise NotImplementedError(u'MediaManagerItem.onDeleteClick needs to be defined by the plugin')
def generateSlideData(self): def generateSlideData(self, item):
raise NotImplementedError(u'MediaManagerItem.generateSlideData needs to be defined by the plugin') raise NotImplementedError(u'MediaManagerItem.generateSlideData needs to be defined by the plugin')
def onPreviewClick(self): def onPreviewClick(self):

View File

@ -28,7 +28,7 @@ class OpenLPToolbar(QtGui.QToolBar):
Lots of toolbars around the place, so it makes sense to have a common way to manage them Lots of toolbars around the place, so it makes sense to have a common way to manage them
""" """
def __init__(self, parent): def __init__(self, parent):
QtGui.QToolBar.__init__(self, parent) QtGui.QToolBar.__init__(self, None)
# useful to be able to reuse button icons... # useful to be able to reuse button icons...
self.icons = {} self.icons = {}
self.log = logging.getLogger(u'OpenLPToolbar') self.log = logging.getLogger(u'OpenLPToolbar')

View File

@ -17,6 +17,7 @@ You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA Place, Suite 330, Boston, MA 02111-1307 USA
""" """
from slidecontroller import BaseToolbar
from slidecontrollermanager import SlideControllerManager from slidecontrollermanager import SlideControllerManager
from maindisplay import MainDisplay from maindisplay import MainDisplay
from amendthemeform import AmendThemeForm from amendthemeform import AmendThemeForm
@ -32,5 +33,5 @@ from servicemanager import ServiceManager
from thememanager import ThemeManager from thememanager import ThemeManager
from mainwindow import MainWindow from mainwindow import MainWindow
__all__ = ['SplashScreen', 'AboutForm', 'SettingsForm', __all__ = ['SplashScreen', 'AboutForm', 'SettingsForm', 'BaseToolbar'
'MainWindow', 'MainDisplay', 'SlideController', 'ServiceManager', 'ThemeManager', 'AmendThemeForm'] 'MainWindow', 'MainDisplay', 'SlideController', 'ServiceManager', 'ThemeManager', 'AmendThemeForm']

View File

@ -169,11 +169,8 @@ class MainWindow(object):
self.ControlSplitter.setObjectName(u'ControlSplitter') self.ControlSplitter.setObjectName(u'ControlSplitter')
self.MainContentLayout.addWidget(self.ControlSplitter) self.MainContentLayout.addWidget(self.ControlSplitter)
# Create slide controllers # Create slide controllers
PreviewController = SlideController(self) self.PreviewController = SlideController(self)
LiveController = SlideController(self, True) self.LiveController = SlideController(self, True)
self.slideControllerManager.add_controllers(u'base', PreviewController, LiveController)
self.PreviewController = PreviewController
self.LiveController = LiveController
# Create menu # Create menu
self.MenuBar = QtGui.QMenuBar(self.mainWindow) self.MenuBar = QtGui.QMenuBar(self.mainWindow)
self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27)) self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27))

View File

@ -166,7 +166,17 @@ class SlideController(QtGui.QWidget):
self.PreviewListView.setSpacing(0) self.PreviewListView.setSpacing(0)
self.PreviewListView.setObjectName(u'PreviewListView') self.PreviewListView.setObjectName(u'PreviewListView')
self.ControllerLayout.addWidget(self.PreviewListView) self.ControllerLayout.addWidget(self.PreviewListView)
self.defineToolbar() # Plugin the Base Toolbar class
self.BaseToolbar = BaseToolbar(self.isLive)
self.Toolbar = self.BaseToolbar.getToolbar()
self.ControllerLayout.addWidget(self.Toolbar)
sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed)
sizeToolbarPolicy.setHorizontalStretch(0)
sizeToolbarPolicy.setVerticalStretch(0)
sizeToolbarPolicy.setHeightForWidth(
self.Toolbar.sizePolicy().hasHeightForWidth())
self.Toolbar.setSizePolicy(sizeToolbarPolicy)
# Screen preview area # Screen preview area
self.PreviewFrame = QtGui.QFrame(self.Splitter) self.PreviewFrame = QtGui.QFrame(self.Splitter)
self.PreviewFrame.setGeometry(QtCore.QRect(0, 0, 250, 190)) self.PreviewFrame.setGeometry(QtCore.QRect(0, 0, 250, 190))
@ -194,21 +204,46 @@ class SlideController(QtGui.QWidget):
self.SlidePreview.setScaledContents(True) self.SlidePreview.setScaledContents(True)
self.SlidePreview.setObjectName(u'SlidePreview') self.SlidePreview.setObjectName(u'SlidePreview')
self.grid.addWidget(self.SlidePreview, 0, 0, 1, 1) self.grid.addWidget(self.SlidePreview, 0, 0, 1, 1)
# Some events
QtCore.QObject.connect(self.PreviewListView, QtCore.QObject.connect(self.PreviewListView,
QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected) QtCore.SIGNAL(u'clicked(QModelIndex)'), self.BaseToolbar.onSlideSelected)
QtCore.QObject.connect(self.PreviewListView, QtCore.QObject.connect(self.PreviewListView,
QtCore.SIGNAL(u'activated(QModelIndex)'), self.onSlideSelected) QtCore.SIGNAL(u'activated(QModelIndex)'), self.BaseToolbar.onSlideSelected)
# Add Late Arrivals
self.BaseToolbar.PreviewListView = self.PreviewListView
self.BaseToolbar.PreviewListData = self.PreviewListData
self.BaseToolbar.SlidePreview = self.SlidePreview
self.BaseToolbar.mainDisplay = self.parent.mainDisplay
def addServiceItem(self, item):
self.BaseToolbar.addServiceItem(item)
def addServiceManagerItem(self, item, slideno):
self.BaseToolbar.addServiceManagerItem(item, slideno)
class BaseToolbar(object):
def __init__(self, isLive):
self.Toolbar = None
self.PreviewListView = QtGui.QListWidget()
self.PreviewListData = None
self.isLive = isLive
self.defineToolbar()
def getToolbar(self):
return self.Toolbar
def defineToolbar(self): def defineToolbar(self):
# Controller toolbar # Controller toolbar
self.Toolbar = OpenLPToolbar(self.Controller) #self.Toolbar = OpenLPToolbar(self.Controller)
self.Toolbar = OpenLPToolbar(self)
sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed) QtGui.QSizePolicy.Fixed)
sizeToolbarPolicy.setHorizontalStretch(0) sizeToolbarPolicy.setHorizontalStretch(0)
sizeToolbarPolicy.setVerticalStretch(0) sizeToolbarPolicy.setVerticalStretch(0)
sizeToolbarPolicy.setHeightForWidth( sizeToolbarPolicy.setHeightForWidth(
self.Toolbar.sizePolicy().hasHeightForWidth()) self.Toolbar.sizePolicy().hasHeightForWidth())
self.Toolbar.setSizePolicy(sizeToolbarPolicy)
if self.isLive: if self.isLive:
self.Toolbar.addToolbarButton(u'First Slide', self.Toolbar.addToolbarButton(u'First Slide',
u':/slides/slide_first.png', u':/slides/slide_first.png',
@ -232,8 +267,6 @@ class SlideController(QtGui.QWidget):
u':/slides/slide_close.png', u':/slides/slide_close.png',
translate(u'SlideController', u'Close Screen'), translate(u'SlideController', u'Close Screen'),
self.onBlankScreen) self.onBlankScreen)
self.Toolbar.setSizePolicy(sizeToolbarPolicy)
self.ControllerLayout.addWidget(self.Toolbar)
def onSlideSelectedFirst(self): def onSlideSelectedFirst(self):
""" """
@ -311,7 +344,7 @@ class SlideController(QtGui.QWidget):
if self.isLive: if self.isLive:
no = frame[1] no = frame[1]
LiveFrame = self.serviceitem.frames[no][u'image'] LiveFrame = self.serviceitem.frames[no][u'image']
self.parent.mainDisplay.frameView(LiveFrame) self.mainDisplay.frameView(LiveFrame)
def addServiceItem(self, serviceitem): def addServiceItem(self, serviceitem):
""" """

View File

@ -175,30 +175,33 @@ class ThemeManager(QtGui.QWidget):
def onEditTheme(self): def onEditTheme(self):
items = self.ThemeListView.selectedIndexes() items = self.ThemeListView.selectedIndexes()
for item in items: if len(items) > 0:
data = self.themeData.getValue(item) for item in items:
self.amendThemeForm.loadTheme(data[3]) print item
self.amendThemeForm.exec_() data = self.themeData.getValue(item)
self.amendThemeForm.loadTheme(data[3])
self.amendThemeForm.exec_()
def onDeleteTheme(self): def onDeleteTheme(self):
items = self.ThemeListView.selectedIndexes() items = self.ThemeListView.selectedIndexes()
theme = u'' if len(items) > 0:
for item in items: theme = u''
data = self.themeData.getValue(item) for item in items:
theme = data[3] data = self.themeData.getValue(item)
th = theme + u'.png' theme = data[3]
try: th = theme + u'.png'
os.remove(os.path.join(self.path, th)) try:
except: os.remove(os.path.join(self.path, th))
#if not present do not worry except:
pass #if not present do not worry
try: pass
shutil.rmtree(os.path.join(self.path, theme)) try:
except: shutil.rmtree(os.path.join(self.path, theme))
#if not present do not worry except:
pass #if not present do not worry
self.themeData.clearItems() pass
self.loadThemes() self.themeData.clearItems()
self.loadThemes()
def onExportTheme(self): def onExportTheme(self):
pass pass

View File

@ -57,8 +57,6 @@ class BibleMediaItem(MediaManagerItem):
self.TranslationContext = u'BiblePlugin' self.TranslationContext = u'BiblePlugin'
self.PluginTextShort = u'Bible' self.PluginTextShort = u'Bible'
self.ConfigSection = u'bibles' self.ConfigSection = u'bibles'
# self.OnNewPrompt = u'Select Image(s)'
# self.OnNewFileMasks = u'Images (*.jpg *jpeg *.gif *.png *.bmp)'
MediaManagerItem.__init__(self, parent, icon, title) MediaManagerItem.__init__(self, parent, icon, title)
self.search_results = {} # place to store the search results self.search_results = {} # place to store the search results
QtCore.QObject.connect(Receiver().get_receiver(), QtCore.QObject.connect(Receiver().get_receiver(),

View File

@ -18,4 +18,4 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA Place, Suite 330, Boston, MA 02111-1307 USA
""" """
from mediaitem import ImageMediaItem from mediaitem import ImageMediaItem
from imageslidecontroller import ImageSlideController from imageslidecontroller import ImageToolbar

View File

@ -22,13 +22,23 @@ import os
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import OpenLPToolbar, translate from openlp.core.lib import OpenLPToolbar, translate
from openlp.core.ui import SlideController from openlp.core.ui.slidecontroller import BaseToolbar
class ImageSlideController(SlideController): class ImageToolbar(BaseToolbar):
def __init__(self, isLive):
self.Toolbar = None
self.PreviewListView = QtGui.QListWidget()
self.PreviewListData = None
self.isLive = isLive
self.defineToolbar()
def getToolbar(self):
return self.Toolbar
def defineToolbar(self): def defineToolbar(self):
# Controller toolbar # Controller toolbar
self.Toolbar = OpenLPToolbar(self.Controller) #self.Toolbar = OpenLPToolbar(self.Controller)
sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
QtGui.QSizePolicy.Fixed) QtGui.QSizePolicy.Fixed)
sizeToolbarPolicy.setHorizontalStretch(0) sizeToolbarPolicy.setHorizontalStretch(0)
@ -62,10 +72,32 @@ class ImageSlideController(SlideController):
self.Toolbar.addToolbarButton(u'Start Loop', self.Toolbar.addToolbarButton(u'Start Loop',
u':/slides/slide_last.png', u':/slides/slide_last.png',
translate(u'SlideController', u'Start continuous loop'), translate(u'SlideController', u'Start continuous loop'),
self.onSlideSelectedLast) self.onStartLoop)
self.Toolbar.addToolbarButton(u'Stop Loop', self.Toolbar.addToolbarButton(u'Stop Loop',
u':/slides/slide_last.png', u':/slides/slide_last.png',
translate(u'SlideController', u'Start continuous loop'), translate(u'SlideController', u'Start continuous loop'),
self.onSlideSelectedLast) self.onStopLoop)
self.Toolbar.setSizePolicy(sizeToolbarPolicy) self.Toolbar.setSizePolicy(sizeToolbarPolicy)
self.ControllerLayout.addWidget(self.Toolbar) self.ControllerLayout.addWidget(self.Toolbar)
def onStartLoop(self):
"""
Go to the last slide.
"""
row = self.PreviewListData.createIndex(
self.PreviewListData.rowCount() - 1, 0)
if row.isValid():
self.PreviewListView.selectionModel().setCurrentIndex(row,
QtGui.QItemSelectionModel.SelectCurrent)
self.onSlideSelected(row)
def onStopLoop(self):
"""
Go to the last slide.
"""
row = self.PreviewListData.createIndex(
self.PreviewListData.rowCount() - 1, 0)
if row.isValid():
self.PreviewListView.selectionModel().setCurrentIndex(row,
QtGui.QItemSelectionModel.SelectCurrent)
self.onSlideSelected(row)

View File

@ -22,7 +22,7 @@ import os
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import MediaManagerItem, ServiceItem, translate, BaseListWithDnD from openlp.core.lib import MediaManagerItem, ServiceItem, translate, BaseListWithDnD
from openlp.plugins.images.lib.imageslidecontroller import ImageSlideController from openlp.plugins.images.lib.imageslidecontroller import ImageToolbar
# We have to explicitly create separate classes for each plugin # We have to explicitly create separate classes for each plugin
# in order for DnD to the Service manager to work correctly. # in order for DnD to the Service manager to work correctly.
@ -56,9 +56,9 @@ class ImageMediaItem(MediaManagerItem):
MediaManagerItem.__init__(self, parent, icon, title) MediaManagerItem.__init__(self, parent, icon, title)
#create and install our own slide controllers #create and install our own slide controllers
#a=c #a=c
live_controller = ImageSlideController(self.parent.slideManager.parent, True) # live_controller = ImageSlideController(self.parent.slideManager.parent, True)
preview_controller = ImageSlideController(self.parent.slideManager.parent) # preview_controller = ImageSlideController(self.parent.slideManager.parent)
self.parent.slideManager.add_controllers(u'image', preview_controller, live_controller) # self.parent.slideManager.add_controllers(u'image', preview_controller, live_controller)
def initialise(self): def initialise(self):
self.ListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) self.ListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)