Merge lp:~trb143/openlp/servicing2 into lp:openlp

Proposed by Tim Bentley
Status: Merged
Merged at revision: not available
Proposed branch: lp:~trb143/openlp/servicing2
Merge into: lp:openlp
Diff against target: None lines
To merge this branch: bzr merge lp:~trb143/openlp/servicing2
Reviewer Review Type Date Requested Status
Raoul Snyman Approve
Review via email: mp+8019@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Tim Bentley (trb143) wrote :

Ok here it comes.
Changes to mediamanger superclass to allow it to work better with all plugins
removal of imagelistwithpreview from Images plugin.
Fixes to thememanager so delete does not eat ALL you themes.
Start of ImageSlideController plugin toolbar thinggy.

Revision history for this message
Raoul Snyman (raoul-snyman) wrote :

If a class is a Python class, please use the Python naming convention. If your class is supposed to be a GUI class, please inherit it from QWidget.

450 +class BaseToolbar(object):
451 +
452 + def __init__(self, isLive):
453 + self.Toolbar = None
454 + self.PreviewListView = QtGui.QListWidget()
455 + self.PreviewListData = None
456 + self.isLive = isLive
457 + self.defineToolbar()

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'openlp/core/lib/__init__.py'
--- openlp/core/lib/__init__.py 2009-06-24 20:15:24 +0000
+++ openlp/core/lib/__init__.py 2009-06-29 05:13:06 +0000
@@ -39,7 +39,7 @@
39 ButtonIcon.addPixmap(QtGui.QPixmap(icon), QtGui.QIcon.Normal,39 ButtonIcon.addPixmap(QtGui.QPixmap(icon), QtGui.QIcon.Normal,
40 QtGui.QIcon.Off)40 QtGui.QIcon.Off)
41 else:41 else:
42 ButtonIcon.addPixmap(QtGui.QPixmap.fromImage(QImage(icon)),42 ButtonIcon.addPixmap(QtGui.QPixmap.fromImage(QtGui.QImage(icon)),
43 QtGui.QIcon.Normal, QtGui.QIcon.Off)43 QtGui.QIcon.Normal, QtGui.QIcon.Off)
44 return ButtonIcon44 return ButtonIcon
4545
@@ -75,7 +75,7 @@
75from renderer import Renderer75from renderer import Renderer
76from rendermanager import RenderManager76from rendermanager import RenderManager
77from mediamanageritem import MediaManagerItem77from mediamanageritem import MediaManagerItem
78from baselistwithdnd import BaseListWithDnD 78from baselistwithdnd import BaseListWithDnD
79from listwithpreviews import ListWithPreviews79from listwithpreviews import ListWithPreviews
8080
81__all__ = [ 'translate', 'file_to_xml', 'str_to_bool',81__all__ = [ 'translate', 'file_to_xml', 'str_to_bool',
8282
=== modified file 'openlp/core/lib/baselistwithdnd.py'
--- openlp/core/lib/baselistwithdnd.py 2009-06-26 16:17:55 +0000
+++ openlp/core/lib/baselistwithdnd.py 2009-06-27 15:33:03 +0000
@@ -24,13 +24,13 @@
24from openlp.core.lib.toolbar import *24from openlp.core.lib.toolbar import *
25from openlp.core.lib import translate25from openlp.core.lib import translate
2626
27class BaseListWithDnD(QtGui.QListView):27class BaseListWithDnD(QtGui.QListWidget):
28 """28 """
29 Please put a short description of what this class does in here.29 Please put a short description of what this class does in here.
30 """30 """
3131
32 def __init__(self,parent = None):32 def __init__(self,parent = None):
33 QtGui.QListView.__init__(self,parent)33 QtGui.QListWidget.__init__(self,parent)
34 # this must be set by the class which is inheriting34 # this must be set by the class which is inheriting
35 assert(self.PluginName)35 assert(self.PluginName)
3636
3737
=== modified file 'openlp/core/lib/mediamanageritem.py'
--- openlp/core/lib/mediamanageritem.py 2009-06-26 16:40:49 +0000
+++ openlp/core/lib/mediamanageritem.py 2009-06-29 05:07:32 +0000
@@ -18,6 +18,7 @@
18Place, Suite 330, Boston, MA 02111-1307 USA18Place, Suite 330, Boston, MA 02111-1307 USA
19"""19"""
20import types20import types
21import os
2122
22from PyQt4 import QtCore, QtGui23from PyQt4 import QtCore, QtGui
2324
@@ -50,7 +51,6 @@
50 if title is not None:51 if title is not None:
51 self.title = title52 self.title = title
52 self.Toolbar = None53 self.Toolbar = None
53 #self.ConfigSection = None
54 self.PageLayout = QtGui.QVBoxLayout(self)54 self.PageLayout = QtGui.QVBoxLayout(self)
55 self.PageLayout.setSpacing(0)55 self.PageLayout.setSpacing(0)
56 self.PageLayout.setMargin(0)56 self.PageLayout.setMargin(0)
@@ -118,13 +118,17 @@
118 # self.PluginTextShort # eg "Image" for the image plugin118 # self.PluginTextShort # eg "Image" for the image plugin
119 # self.ConfigSection - where the items in the media manager are stored119 # self.ConfigSection - where the items in the media manager are stored
120 # this could potentially be self.PluginTextShort.lower()120 # this could potentially be self.PluginTextShort.lower()
121 # self.IconPath=u'images/images' - allows specific icons to be used
122 # self.hasFileIcon - Is the file Icon required
123 # self.hasEditIcon - Is the edit Icon required
124 # self.hasNewIcon - Is the new Icon required
121 #125 #
122 # self.OnNewPrompt=u'Select Image(s)'126 # self.OnNewPrompt=u'Select Image(s)'
123 # self.OnNewFileMasks=u'Images (*.jpg *jpeg *.gif *.png *.bmp)'127 # self.OnNewFileMasks=u'Images (*.jpg *jpeg *.gif *.png *.bmp)'
124 # assumes that the new action is to load a file. If not, override onnew128 # assumes that the new action is to load a file. If not, override onnew
125 # self.ListViewWithDnD_class - there is a base list class with DnD assigned to it (openlp.core.lib.BaseListWithDnD())129 # self.ListViewWithDnD_class - there is a base list class with DnD assigned to it (openlp.core.lib.BaseListWithDnD())
126 # each plugin needs to inherit a class from this and pass that *class* (not an instance) to here130 # each plugin needs to inherit a class from this and pass that *class* (not an instance) to here
127 # via the ListViewWithDnD_class member131 # via the ListViewWithDnD_class member
128 # The assumption is that given that at least two plugins are of the form132 # The assumption is that given that at least two plugins are of the form
129 # "text with an icon" then all this will help133 # "text with an icon" then all this will help
130 # even for plugins of another sort, the setup of the right-click menu, common toolbar134 # even for plugins of another sort, the setup of the right-click menu, common toolbar
@@ -139,16 +143,29 @@
139 # Add a toolbar143 # Add a toolbar
140 self.addToolbar()144 self.addToolbar()
141 # Create buttons for the toolbar145 # Create buttons for the toolbar
142 ## New Song Button ##146 ## File Button ##
143 self.addToolbarButton(147 if self.hasFileIcon:
144 translate(self.TranslationContext, u'Load '+self.PluginTextShort),148 self.addToolbarButton(
145 translate(self.TranslationContext, u'Load item into openlp.org'),149 translate(self.TranslationContext, u'Load '+self.PluginTextShort),
146 u':/images/image_load.png', self.onNewClick, u'ImageNewItem')150 translate(self.TranslationContext, u'Load a new '+self.PluginTextShort),
147 ## Delete Song Button ##151 u':'+self.IconPath+ u'_load.png', self.onFileClick, self.PluginTextShort+u'FileItem')
152 ## New Button ##
153 if self.hasNewIcon:
154 self.addToolbarButton(
155 translate(self.TranslationContext, u'New '+self.PluginTextShort),
156 translate(self.TranslationContext, u'Add a new '+self.PluginTextShort),
157 u':'+self.IconPath+ u'_load.png', self.onNewClick, self.PluginTextShort+u'NewItem')
158 ## Edit Button ##
159 if self.hasEditIcon:
160 self.addToolbarButton(
161 translate(self.TranslationContext, u'Edit '+self.PluginTextShort),
162 translate(self.TranslationContext, u'Edit the selected '+self.PluginTextShort),
163 u':'+self.IconPath+ u'_load.png', self.onEditClick, self.PluginTextShort+u'EditItem')
164 ## Delete Button ##
148 self.addToolbarButton(165 self.addToolbarButton(
149 translate(self.TranslationContext, u'Delete '+self.PluginTextShort),166 translate(self.TranslationContext, u'Delete '+self.PluginTextShort),
150 translate(self.TranslationContext, u'Delete the selected item'),167 translate(self.TranslationContext, u'Delete the selected item'),
151 u':/images/image_delete.png', self.onDeleteClick, u'DeleteItem')168 u':'+self.IconPath+ u'_delete.png', self.onDeleteClick, self.PluginTextShort+u'DeleteItem')
152 ## Separator Line ##169 ## Separator Line ##
153 self.addToolbarSeparator()170 self.addToolbarSeparator()
154 ## Preview Button ##171 ## Preview Button ##
@@ -166,20 +183,27 @@
166 translate(self.TranslationContext, u'Add '+self.PluginTextShort+u' To Service'),183 translate(self.TranslationContext, u'Add '+self.PluginTextShort+u' To Service'),
167 translate(self.TranslationContext, u'Add the selected item(s) to the service'),184 translate(self.TranslationContext, u'Add the selected item(s) to the service'),
168 u':/system/system_add.png', self.onAddClick, self.PluginTextShort+u'AddItem')185 u':/system/system_add.png', self.onAddClick, self.PluginTextShort+u'AddItem')
186 #Allow the plugin to define it's own header
187 self.addHeaderBar()
169 #Add the List widget188 #Add the List widget
170 self.ListView = self.ListViewWithDnD_class()189 self.ListView = self.ListViewWithDnD_class()
171 self.ListView.uniformItemSizes = True190 self.ListView.uniformItemSizes = True
172 self.ListData = ListWithPreviews()
173 self.ListView.setModel(self.ListData)
174 self.ListView.setGeometry(QtCore.QRect(10, 100, 256, 591))191 self.ListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
175 self.ListView.setSpacing(1)192 self.ListView.setSpacing(1)
176 self.ListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)193 self.ListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
177 self.ListView.setAlternatingRowColors(True)194 self.ListView.setAlternatingRowColors(True)
178 self.ListView.setDragEnabled(True)195 self.ListView.setDragEnabled(True)
179 self.ListView.setObjectName(self.PluginTextShort+u'ListView')196 self.ListView.setObjectName(self.PluginTextShort+u'ListView')
197 #Add tp PageLayout
180 self.PageLayout.addWidget(self.ListView)198 self.PageLayout.addWidget(self.ListView)
181 #define and add the context menu199 #define and add the context menu
182 self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)200 self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
201 if self.hasEditIcon:
202 self.ListView.addAction(self.contextMenuAction(self.ListView,
203 ':' +self.IconPath+u'_new.png',
204 translate(self.TranslationContext, u'&Edit '+self.PluginTextShort),
205 self.onEditClick))
206 self.ListView.addAction(self.contextMenuSeparator(self.SongListWidget))
183 self.ListView.addAction(self.contextMenuAction(207 self.ListView.addAction(self.contextMenuAction(
184 self.ListView, ':/system/system_preview.png',208 self.ListView, ':/system/system_preview.png',
185 translate(self.TranslationContext, u'&Preview '+self.PluginTextShort),209 translate(self.TranslationContext, u'&Preview '+self.PluginTextShort),
@@ -195,52 +219,63 @@
195 QtCore.QObject.connect(self.ListView,219 QtCore.QObject.connect(self.ListView,
196 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick)220 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick)
197221
198 def initialise(self):222 def addHeaderBar(self):
199 self.loadList(self.parent.config.load_list(self.ConfigSection))223 pass
200224
201 def onNewClick(self):225 def onFileClick(self):
202 files = QtGui.QFileDialog.getOpenFileNames(None,226 files = QtGui.QFileDialog.getOpenFileNames(None,
203 translate(self.TranslationContext, self.OnNewPrompt),227 translate(self.TranslationContext, self.OnNewPrompt),
204 self.parent.config.get_last_dir(),228 self.parent.config.get_last_dir(),
205 self.OnNewFileMasks)229 self.OnNewFileMasks)
206 log.info(u'New files(s)', unicode(files))230 log.info(u'New files(s)%s', unicode(files))
207 if len(files) > 0:231 if len(files) > 0:
208 self.loadList(files)232 self.loadList(files)
209 dir, filename = os.path.split(unicode(files[0]))233 dir, filename = os.path.split(unicode(files[0]))
210 self.parent.config.set_last_dir(dir)234 self.parent.config.set_last_dir(dir)
211 self.parent.config.set_list(self.ConfigSection, self.ListData.getFileList())235 #self.parent.config.set_list(self.ConfigSection, self.ListData.getFileList())
236
237 def getFileList(self):
238 count = 0
239 while count < len(self.ListView):
240 filelist = [set.ListView.item(count).text()]
241 count += 1
242 return filelist
212243
213 def loadList(self, list):244 def loadList(self, list):
214 for file in list:245 raise NotImplementedError(u'MediaManagerItem.loadList needs to be defined by the plugin')
215 self.ListData.addRow(file)246
247 def onNewClick(self):
248 raise NotImplementedError(u'MediaManagerItem.onNewClick needs to be defined by the plugin')
249
250 def onEditClick(self):
251 raise NotImplementedError(u'MediaManagerItem.onEditClick needs to be defined by the plugin')
216252
217 def onDeleteClick(self):253 def onDeleteClick(self):
218 indexes = self.ListView.selectedIndexes()254 raise NotImplementedError(u'MediaManagerItem.onDeleteClick needs to be defined by the plugin')
219 for index in indexes:
220 current_row = int(index.row())
221 self.ListData.removeRow(current_row)
222 self.parent.config.set_list(self.ConfigSection, self.ListData.getFileList())
223255
224 def generateSlideData(self):256 def generateSlideData(self, item):
225 raise NotImplementedError(u'MediaManagerItem.generateSlideData needs to be defined by the plugin')257 raise NotImplementedError(u'MediaManagerItem.generateSlideData needs to be defined by the plugin')
226258
227 def onPreviewClick(self):259 def onPreviewClick(self):
228 log.debug(self.PluginTextShort+u'Preview Requested')260 log.debug(self.PluginTextShort+u'Preview Requested')
229 service_item = ServiceItem(self.parent)261 service_item = ServiceItem(self.parent)
230 service_item.addIcon(u':/media/media_image.png')262 service_item.addIcon(u':/media/media_'+self.PluginTextShort.lower()+u'.png')
231 self.generateSlideData(service_item)263 self.generateSlideData(service_item)
232 self.parent.preview_controller.addServiceItem(service_item)264 self.parent.preview_controller.addServiceItem(service_item)
265 self.ListView.clearSelection()
233266
234 def onLiveClick(self):267 def onLiveClick(self):
235 log.debug(self.PluginTextShort+u' Live Requested')268 log.debug(self.PluginTextShort + u' Live Requested')
236 service_item = ServiceItem(self.parent)269 service_item = ServiceItem(self.parent)
237 service_item.addIcon(u':/media/media_image.png')270 service_item.addIcon(u':/media/media_'+self.PluginTextShort.lower()+u'.png')
238 self.generateSlideData(service_item)271 self.generateSlideData(service_item)
239 self.parent.live_controller.addServiceItem(service_item)272 self.parent.live_controller.addServiceItem(service_item)
273 self.ListView.clearSelection()
240274
241 def onAddClick(self):275 def onAddClick(self):
242 log.debug(self.PluginTextShort+u' Add Requested')276 log.debug(self.PluginTextShort+u' Add Requested')
243 service_item = ServiceItem(self.parent)277 service_item = ServiceItem(self.parent)
244 service_item.addIcon(u':/media/media_image.png')278 service_item.addIcon(u':/media/media_'+self.PluginTextShort.lower()+u'.png')
245 self.generateSlideData(service_item)279 self.generateSlideData(service_item)
246 self.parent.service_manager.addServiceItem(service_item)280 self.parent.service_manager.addServiceItem(service_item)
281 self.ListView.clearSelection()
247282
=== modified file 'openlp/core/lib/plugin.py'
--- openlp/core/lib/plugin.py 2009-06-24 20:15:24 +0000
+++ openlp/core/lib/plugin.py 2009-06-28 06:54:12 +0000
@@ -101,7 +101,8 @@
101 self.event_manager = plugin_helpers[u'event']101 self.event_manager = plugin_helpers[u'event']
102 self.render_manager = plugin_helpers[u'render']102 self.render_manager = plugin_helpers[u'render']
103 self.service_manager = plugin_helpers[u'service']103 self.service_manager = plugin_helpers[u'service']
104 self.settings= plugin_helpers[u'settings']104 self.settings = plugin_helpers[u'settings']
105 self.slideManager = plugin_helpers[u'slideManager']
105 self.dnd_id=None106 self.dnd_id=None
106107
107 def check_pre_conditions(self):108 def check_pre_conditions(self):
108109
=== modified file 'openlp/core/lib/toolbar.py'
--- openlp/core/lib/toolbar.py 2009-06-16 18:21:24 +0000
+++ openlp/core/lib/toolbar.py 2009-06-29 05:07:32 +0000
@@ -28,7 +28,7 @@
28 Lots of toolbars around the place, so it makes sense to have a common way to manage them28 Lots of toolbars around the place, so it makes sense to have a common way to manage them
29 """29 """
30 def __init__(self, parent):30 def __init__(self, parent):
31 QtGui.QToolBar.__init__(self, parent)31 QtGui.QToolBar.__init__(self, None)
32 # useful to be able to reuse button icons...32 # useful to be able to reuse button icons...
33 self.icons = {}33 self.icons = {}
34 self.log = logging.getLogger(u'OpenLPToolbar')34 self.log = logging.getLogger(u'OpenLPToolbar')
3535
=== modified file 'openlp/core/ui/__init__.py'
--- openlp/core/ui/__init__.py 2009-06-26 16:39:16 +0000
+++ openlp/core/ui/__init__.py 2009-06-29 05:07:32 +0000
@@ -17,6 +17,7 @@
17this program; if not, write to the Free Software Foundation, Inc., 59 Temple17this program; if not, write to the Free Software Foundation, Inc., 59 Temple
18Place, Suite 330, Boston, MA 02111-1307 USA18Place, Suite 330, Boston, MA 02111-1307 USA
19"""19"""
20from slidecontroller import BaseToolbar
20from slidecontrollermanager import SlideControllerManager21from slidecontrollermanager import SlideControllerManager
21from maindisplay import MainDisplay22from maindisplay import MainDisplay
22from amendthemeform import AmendThemeForm23from amendthemeform import AmendThemeForm
@@ -32,5 +33,5 @@
32from thememanager import ThemeManager33from thememanager import ThemeManager
33from mainwindow import MainWindow34from mainwindow import MainWindow
3435
35__all__ = ['SplashScreen', 'AboutForm', 'SettingsForm',36__all__ = ['SplashScreen', 'AboutForm', 'SettingsForm', 'BaseToolbar'
36 'MainWindow', 'MainDisplay', 'SlideController', 'ServiceManager', 'ThemeManager', 'AmendThemeForm']37 'MainWindow', 'MainDisplay', 'SlideController', 'ServiceManager', 'ThemeManager', 'AmendThemeForm']
3738
=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py 2009-06-26 16:39:16 +0000
+++ openlp/core/ui/mainwindow.py 2009-06-29 05:07:32 +0000
@@ -50,7 +50,7 @@
50 self.alertForm = AlertForm(self)50 self.alertForm = AlertForm(self)
51 self.aboutForm = AboutForm()51 self.aboutForm = AboutForm()
52 self.settingsForm = SettingsForm(self.screenList, self)52 self.settingsForm = SettingsForm(self.screenList, self)
53 self.slideControllerManager = SlideControllerManager()53 self.slideControllerManager = SlideControllerManager(self)
54 # Set up the path with plugins54 # Set up the path with plugins
55 pluginpath = os.path.split(os.path.abspath(__file__))[0]55 pluginpath = os.path.split(os.path.abspath(__file__))[0]
56 pluginpath = os.path.abspath(56 pluginpath = os.path.abspath(
@@ -73,6 +73,7 @@
73 self.plugin_helpers[u'render'] = self.RenderManager73 self.plugin_helpers[u'render'] = self.RenderManager
74 self.plugin_helpers[u'service'] = self.ServiceManagerContents74 self.plugin_helpers[u'service'] = self.ServiceManagerContents
75 self.plugin_helpers[u'settings'] = self.settingsForm75 self.plugin_helpers[u'settings'] = self.settingsForm
76 self.plugin_helpers[u'slideManager'] = self.slideControllerManager
76 self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers,77 self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers,
77 self.EventManager)78 self.EventManager)
78 # hook methods have to happen after find_plugins. Find plugins needs the79 # hook methods have to happen after find_plugins. Find plugins needs the
@@ -168,11 +169,8 @@
168 self.ControlSplitter.setObjectName(u'ControlSplitter')169 self.ControlSplitter.setObjectName(u'ControlSplitter')
169 self.MainContentLayout.addWidget(self.ControlSplitter)170 self.MainContentLayout.addWidget(self.ControlSplitter)
170 # Create slide controllers171 # Create slide controllers
171 PreviewController = SlideController(self.ControlSplitter, self)172 self.PreviewController = SlideController(self)
172 LiveController = SlideController(self.ControlSplitter, self, True)173 self.LiveController = SlideController(self, True)
173 self.slideControllerManager.add_controllers(u'base', PreviewController, LiveController)
174 self.PreviewController = self.slideControllerManager.getPreviewController(u'base')
175 self.LiveController = self.slideControllerManager.getLiveController(u'base')
176 # Create menu174 # Create menu
177 self.MenuBar = QtGui.QMenuBar(self.mainWindow)175 self.MenuBar = QtGui.QMenuBar(self.mainWindow)
178 self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27))176 self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27))
179177
=== modified file 'openlp/core/ui/servicemanager.py'
--- openlp/core/ui/servicemanager.py 2009-06-26 16:39:16 +0000
+++ openlp/core/ui/servicemanager.py 2009-06-29 17:37:46 +0000
@@ -29,6 +29,22 @@
29 contextMenuAction, contextMenuSeparator29 contextMenuAction, contextMenuSeparator
30from openlp.core.utils import ConfigHelper30from openlp.core.utils import ConfigHelper
3131
32class ServiceManagerList(QtGui.QTreeWidget):
33
34 def __init__(self,parent=None,name=None):
35 QtGui.QListView.__init__(self,parent)
36 self.parent = parent
37
38 def keyPressEvent(self, event):
39 if type(event) == QtGui.QKeyEvent:
40 #here accept the event and do something
41 if event.key() == QtCore.Qt.Key_Enter:
42 self.parent.makeLive()
43 event.accept()
44 event.ignore()
45 else:
46 event.ignore()
47
32class ServiceManager(QtGui.QWidget):48class ServiceManager(QtGui.QWidget):
33 """49 """
34 Manages the orders of service. Currently this involves taking50 Manages the orders of service. Currently this involves taking
@@ -66,7 +82,7 @@
66 self.Toolbar.addAction(self.ThemeWidget)82 self.Toolbar.addAction(self.ThemeWidget)
67 self.Layout.addWidget(self.Toolbar)83 self.Layout.addWidget(self.Toolbar)
68 # Create the service manager list84 # Create the service manager list
69 self.ServiceManagerList = QtGui.QTreeWidget(self)85 self.ServiceManagerList = ServiceManagerList(self)
70 self.ServiceManagerList.setEditTriggers(QtGui.QAbstractItemView.CurrentChanged|QtGui.QAbstractItemView.DoubleClicked|QtGui.QAbstractItemView.EditKeyPressed)86 self.ServiceManagerList.setEditTriggers(QtGui.QAbstractItemView.CurrentChanged|QtGui.QAbstractItemView.DoubleClicked|QtGui.QAbstractItemView.EditKeyPressed)
71 self.ServiceManagerList.setDragDropMode(QtGui.QAbstractItemView.DragDrop)87 self.ServiceManagerList.setDragDropMode(QtGui.QAbstractItemView.DragDrop)
72 self.ServiceManagerList.setAlternatingRowColors(True)88 self.ServiceManagerList.setAlternatingRowColors(True)
7389
=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py 2009-06-23 16:25:40 +0000
+++ openlp/core/ui/slidecontroller.py 2009-06-29 05:07:32 +0000
@@ -122,20 +122,20 @@
122122
123class SlideController(QtGui.QWidget):123class SlideController(QtGui.QWidget):
124 """124 """
125 SlideController is THE slide controller widget. This widget is what the user125 SlideController is the slide controller widget. This widget is what the user
126 uses to control the displaying of verses/slides/etc on the screen.126 uses to control the displaying of verses/slides/etc on the screen.
127 """127 """
128 global log128 global log
129 log = logging.getLogger(u'SlideController')129 log = logging.getLogger(u'SlideController')
130130
131 def __init__(self, controlSplitter, parent, isLive=False):131 def __init__(self, parent, isLive=False):
132 """132 """
133 Set up the Slide Controller.133 Set up the Slide Controller.
134 """134 """
135 QtGui.QWidget.__init__(self, parent.mainWindow)135 QtGui.QWidget.__init__(self, parent.mainWindow)
136 self.isLive = isLive136 self.isLive = isLive
137 self.parent = parent137 self.parent = parent
138 self.Panel = QtGui.QWidget(controlSplitter)138 self.Panel = QtGui.QWidget(parent.ControlSplitter)
139 self.Splitter = QtGui.QSplitter(self.Panel)139 self.Splitter = QtGui.QSplitter(self.Panel)
140 self.Splitter.setOrientation(QtCore.Qt.Vertical)140 self.Splitter.setOrientation(QtCore.Qt.Vertical)
141 # Layout for holding panel141 # Layout for holding panel
@@ -166,39 +166,17 @@
166 self.PreviewListView.setSpacing(0)166 self.PreviewListView.setSpacing(0)
167 self.PreviewListView.setObjectName(u'PreviewListView')167 self.PreviewListView.setObjectName(u'PreviewListView')
168 self.ControllerLayout.addWidget(self.PreviewListView)168 self.ControllerLayout.addWidget(self.PreviewListView)
169 # Controller toolbar169 # Plugin the Base Toolbar class
170 self.Toolbar = OpenLPToolbar(self.Controller)170 self.BaseToolbar = BaseToolbar(self.isLive)
171 sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,171 self.Toolbar = self.BaseToolbar.getToolbar()
172 QtGui.QSizePolicy.Fixed)
173 sizeToolbarPolicy.setHorizontalStretch(0)
174 sizeToolbarPolicy.setVerticalStretch(0)
175 sizeToolbarPolicy.setHeightForWidth(
176 self.Toolbar.sizePolicy().hasHeightForWidth())
177 if self.isLive:
178 self.Toolbar.addToolbarButton(u'First Slide',
179 u':/slides/slide_first.png',
180 translate(u'SlideController', u'Move to first'),
181 self.onSlideSelectedFirst)
182 self.Toolbar.addToolbarButton(u'Last Slide',
183 u':/slides/slide_previous.png',
184 translate(u'SlideController', u'Move to previous'),
185 self.onSlideSelectedPrevious)
186 self.Toolbar.addToolbarButton(u'First Slide',
187 u':/slides/slide_next.png',
188 translate(u'SlideController', u'Move to next'),
189 self.onSlideSelectedNext)
190 if self.isLive:
191 self.Toolbar.addToolbarButton(u'Last Slide',
192 u':/slides/slide_last.png',
193 translate(u'SlideController', u'Move to last'),
194 self.onSlideSelectedLast)
195 self.Toolbar.addSeparator()
196 self.Toolbar.addToolbarButton(u'Close Screen',
197 u':/slides/slide_close.png',
198 translate(u'SlideController', u'Close Screen'),
199 self.onBlankScreen)
200 self.Toolbar.setSizePolicy(sizeToolbarPolicy)
201 self.ControllerLayout.addWidget(self.Toolbar)172 self.ControllerLayout.addWidget(self.Toolbar)
173 sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
174 QtGui.QSizePolicy.Fixed)
175 sizeToolbarPolicy.setHorizontalStretch(0)
176 sizeToolbarPolicy.setVerticalStretch(0)
177 sizeToolbarPolicy.setHeightForWidth(
178 self.Toolbar.sizePolicy().hasHeightForWidth())
179 self.Toolbar.setSizePolicy(sizeToolbarPolicy)
202 # Screen preview area180 # Screen preview area
203 self.PreviewFrame = QtGui.QFrame(self.Splitter)181 self.PreviewFrame = QtGui.QFrame(self.Splitter)
204 self.PreviewFrame.setGeometry(QtCore.QRect(0, 0, 250, 190))182 self.PreviewFrame.setGeometry(QtCore.QRect(0, 0, 250, 190))
@@ -226,11 +204,69 @@
226 self.SlidePreview.setScaledContents(True)204 self.SlidePreview.setScaledContents(True)
227 self.SlidePreview.setObjectName(u'SlidePreview')205 self.SlidePreview.setObjectName(u'SlidePreview')
228 self.grid.addWidget(self.SlidePreview, 0, 0, 1, 1)206 self.grid.addWidget(self.SlidePreview, 0, 0, 1, 1)
229 # Some events207 QtCore.QObject.connect(self.PreviewListView,
230 QtCore.QObject.connect(self.PreviewListView,208 QtCore.SIGNAL(u'clicked(QModelIndex)'), self.BaseToolbar.onSlideSelected)
231 QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected)209 QtCore.QObject.connect(self.PreviewListView,
232 QtCore.QObject.connect(self.PreviewListView,210 QtCore.SIGNAL(u'activated(QModelIndex)'), self.BaseToolbar.onSlideSelected)
233 QtCore.SIGNAL(u'activated(QModelIndex)'), self.onSlideSelected)211 # Add Late Arrivals
212 self.BaseToolbar.PreviewListView = self.PreviewListView
213 self.BaseToolbar.PreviewListData = self.PreviewListData
214 self.BaseToolbar.SlidePreview = self.SlidePreview
215 self.BaseToolbar.mainDisplay = self.parent.mainDisplay
216
217 def addServiceItem(self, item):
218 self.BaseToolbar.addServiceItem(item)
219
220 def addServiceManagerItem(self, item, slideno):
221 self.BaseToolbar.addServiceManagerItem(item, slideno)
222
223class BaseToolbar(object):
224
225 def __init__(self, isLive):
226 self.Toolbar = None
227 self.PreviewListView = QtGui.QListWidget()
228 self.PreviewListData = None
229 self.isLive = isLive
230 self.defineToolbar()
231
232 def getToolbar(self):
233 return self.Toolbar
234
235 def defineToolbar(self):
236 # Controller toolbar
237 #self.Toolbar = OpenLPToolbar(self.Controller)
238 self.Toolbar = OpenLPToolbar(self)
239 sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
240 QtGui.QSizePolicy.Fixed)
241 sizeToolbarPolicy.setHorizontalStretch(0)
242 sizeToolbarPolicy.setVerticalStretch(0)
243 sizeToolbarPolicy.setHeightForWidth(
244 self.Toolbar.sizePolicy().hasHeightForWidth())
245 self.Toolbar.setSizePolicy(sizeToolbarPolicy)
246
247 if self.isLive:
248 self.Toolbar.addToolbarButton(u'First Slide',
249 u':/slides/slide_first.png',
250 translate(u'SlideController', u'Move to first'),
251 self.onSlideSelectedFirst)
252 self.Toolbar.addToolbarButton(u'Last Slide',
253 u':/slides/slide_previous.png',
254 translate(u'SlideController', u'Move to previous'),
255 self.onSlideSelectedPrevious)
256 self.Toolbar.addToolbarButton(u'First Slide',
257 u':/slides/slide_next.png',
258 translate(u'SlideController', u'Move to next'),
259 self.onSlideSelectedNext)
260 if self.isLive:
261 self.Toolbar.addToolbarButton(u'Last Slide',
262 u':/slides/slide_last.png',
263 translate(u'SlideController', u'Move to last'),
264 self.onSlideSelectedLast)
265 self.Toolbar.addSeparator()
266 self.Toolbar.addToolbarButton(u'Close Screen',
267 u':/slides/slide_close.png',
268 translate(u'SlideController', u'Close Screen'),
269 self.onBlankScreen)
234270
235 def onSlideSelectedFirst(self):271 def onSlideSelectedFirst(self):
236 """272 """
@@ -308,7 +344,7 @@
308 if self.isLive:344 if self.isLive:
309 no = frame[1]345 no = frame[1]
310 LiveFrame = self.serviceitem.frames[no][u'image']346 LiveFrame = self.serviceitem.frames[no][u'image']
311 self.parent.mainDisplay.frameView(LiveFrame)347 self.mainDisplay.frameView(LiveFrame)
312348
313 def addServiceItem(self, serviceitem):349 def addServiceItem(self, serviceitem):
314 """350 """
315351
=== added file 'openlp/core/ui/slidecontrollermanager.py'
--- openlp/core/ui/slidecontrollermanager.py 1970-01-01 00:00:00 +0000
+++ openlp/core/ui/slidecontrollermanager.py 2009-06-28 06:54:12 +0000
@@ -0,0 +1,52 @@
1# -*- coding: utf-8 -*-
2# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
3"""
4OpenLP - Open Source Lyrics Projection
5Copyright (c) 2008 Raoul Snyman
6Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley,
7
8This program is free software; you can redistribute it and/or modify it under
9the terms of the GNU General Public License as published by the Free Software
10Foundation; version 2 of the License.
11
12This program is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License along with
17this program; if not, write to the Free Software Foundation, Inc., 59 Temple
18Place, Suite 330, Boston, MA 02111-1307 USA
19"""
20import logging
21import os
22
23class SlideControllerManager():
24 """
25 This class controls which SlideController is availabe to the
26 main window
27 """
28 global log
29 log = logging.getLogger(u'SlideControllerManager')
30
31 def __init__(self, parent):
32 """
33 Set up the Slide Controller. Manager
34 """
35 self.parent = parent
36 self.live = {}
37 self.preview = {}
38
39 def add_controllers(self, handle, preview, live):
40 self.live[handle] = live
41 self.preview[handle] = preview
42 print self.live
43
44 def getPreviewController(self, handle):
45 return self.preview[handle]
46
47 def getLiveController(self, handle):
48 print "---"
49 print self.live
50 print handle
51 print self.live[handle]
52 return self.live[handle]
053
=== modified file 'openlp/core/ui/thememanager.py'
--- openlp/core/ui/thememanager.py 2009-06-24 05:17:41 +0000
+++ openlp/core/ui/thememanager.py 2009-06-29 05:07:32 +0000
@@ -175,30 +175,33 @@
175175
176 def onEditTheme(self):176 def onEditTheme(self):
177 items = self.ThemeListView.selectedIndexes()177 items = self.ThemeListView.selectedIndexes()
178 for item in items:178 if len(items) > 0:
179 data = self.themeData.getValue(item)179 for item in items:
180 self.amendThemeForm.loadTheme(data[3])180 print item
181 self.amendThemeForm.exec_()181 data = self.themeData.getValue(item)
182 self.amendThemeForm.loadTheme(data[3])
183 self.amendThemeForm.exec_()
182184
183 def onDeleteTheme(self):185 def onDeleteTheme(self):
184 items = self.ThemeListView.selectedIndexes()186 items = self.ThemeListView.selectedIndexes()
185 theme = u''187 if len(items) > 0:
186 for item in items:188 theme = u''
187 data = self.themeData.getValue(item)189 for item in items:
188 theme = data[3]190 data = self.themeData.getValue(item)
189 th = theme + u'.png'191 theme = data[3]
190 try:192 th = theme + u'.png'
191 os.remove(os.path.join(self.path, th))193 try:
192 except:194 os.remove(os.path.join(self.path, th))
193 #if not present do not worry195 except:
194 pass196 #if not present do not worry
195 try:197 pass
196 shutil.rmtree(os.path.join(self.path, theme))198 try:
197 except:199 shutil.rmtree(os.path.join(self.path, theme))
198 #if not present do not worry200 except:
199 pass201 #if not present do not worry
200 self.themeData.clearItems()202 pass
201 self.loadThemes()203 self.themeData.clearItems()
204 self.loadThemes()
202205
203 def onExportTheme(self):206 def onExportTheme(self):
204 pass207 pass
205208
=== modified file 'openlp/plugins/bibles/lib/mediaitem.py'
--- openlp/plugins/bibles/lib/mediaitem.py 2009-06-26 17:51:43 +0000
+++ openlp/plugins/bibles/lib/mediaitem.py 2009-06-29 05:07:32 +0000
@@ -57,8 +57,6 @@
57 self.TranslationContext = u'BiblePlugin'57 self.TranslationContext = u'BiblePlugin'
58 self.PluginTextShort = u'Bible'58 self.PluginTextShort = u'Bible'
59 self.ConfigSection = u'bibles'59 self.ConfigSection = u'bibles'
60# self.OnNewPrompt = u'Select Image(s)'
61# self.OnNewFileMasks = u'Images (*.jpg *jpeg *.gif *.png *.bmp)'
62 MediaManagerItem.__init__(self, parent, icon, title)60 MediaManagerItem.__init__(self, parent, icon, title)
63 self.search_results = {} # place to store the search results61 self.search_results = {} # place to store the search results
64 QtCore.QObject.connect(Receiver().get_receiver(),62 QtCore.QObject.connect(Receiver().get_receiver(),
@@ -192,11 +190,11 @@
192 self.SearchTabWidget.addTab(self.AdvancedTab, u'Advanced')190 self.SearchTabWidget.addTab(self.AdvancedTab, u'Advanced')
193 # Add the search tab widget to the page layout191 # Add the search tab widget to the page layout
194 self.PageLayout.addWidget(self.SearchTabWidget)192 self.PageLayout.addWidget(self.SearchTabWidget)
195 self.BibleListWidget = BibleList()193 self.ListView = BibleList()
196 self.BibleListWidget.setAlternatingRowColors(True)194 self.ListView.setAlternatingRowColors(True)
197 self.BibleListWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)195 self.ListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
198 self.BibleListWidget.setDragEnabled(True)196 self.ListView.setDragEnabled(True)
199 self.PageLayout.addWidget(self.BibleListWidget)197 self.PageLayout.addWidget(self.ListView)
200 # Combo Boxes198 # Combo Boxes
201 QtCore.QObject.connect(self.AdvancedVersionComboBox,199 QtCore.QObject.connect(self.AdvancedVersionComboBox,
202 QtCore.SIGNAL(u'activated(int)'), self.onAdvancedVersionComboBox)200 QtCore.SIGNAL(u'activated(int)'), self.onAdvancedVersionComboBox)
@@ -213,18 +211,18 @@
213 QtCore.SIGNAL(u'pressed()'), self.onAdvancedSearchButton)211 QtCore.SIGNAL(u'pressed()'), self.onAdvancedSearchButton)
214 QtCore.QObject.connect(self.QuickSearchButton,212 QtCore.QObject.connect(self.QuickSearchButton,
215 QtCore.SIGNAL(u'pressed()'), self.onQuickSearchButton)213 QtCore.SIGNAL(u'pressed()'), self.onQuickSearchButton)
216 QtCore.QObject.connect(self.BibleListWidget,214 QtCore.QObject.connect(self.ListView,
217 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick)215 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick)
218 # Context Menus216 # Context Menus
219 self.BibleListWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)217 self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
220 self.BibleListWidget.addAction(self.contextMenuAction(218 self.ListView.addAction(self.contextMenuAction(
221 self.BibleListWidget, u':/system/system_preview.png',219 self.ListView, u':/system/system_preview.png',
222 translate(u'BibleMediaItem',u'&Preview Verse'), self.onPreviewClick))220 translate(u'BibleMediaItem',u'&Preview Verse'), self.onPreviewClick))
223 self.BibleListWidget.addAction(self.contextMenuAction(221 self.ListView.addAction(self.contextMenuAction(
224 self.BibleListWidget, u':/system/system_live.png',222 self.ListView, u':/system/system_live.png',
225 translate(u'BibleMediaItem',u'&Show Live'), self.onLiveClick))223 translate(u'BibleMediaItem',u'&Show Live'), self.onLiveClick))
226 self.BibleListWidget.addAction(self.contextMenuAction(224 self.ListView.addAction(self.contextMenuAction(
227 self.BibleListWidget, u':/system/system_add.png',225 self.ListView, u':/system/system_add.png',
228 translate(u'BibleMediaItem',u'&Add to Service'), self.onAddClick))226 translate(u'BibleMediaItem',u'&Add to Service'), self.onAddClick))
229227
230 def retranslateUi(self):228 def retranslateUi(self):
@@ -309,7 +307,7 @@
309 self.search_results = self.parent.biblemanager.get_verse_text(bible, book,307 self.search_results = self.parent.biblemanager.get_verse_text(bible, book,
310 chapter_from, chapter_to, verse_from, verse_to)308 chapter_from, chapter_to, verse_from, verse_to)
311 if self.ClearAdvancedSearchComboBox.currentIndex() == 0:309 if self.ClearAdvancedSearchComboBox.currentIndex() == 0:
312 self.BibleListWidget.clear()310 self.ListView.clear()
313 self.displayResults(bible)311 self.displayResults(bible)
314312
315 def onAdvancedFromChapter(self):313 def onAdvancedFromChapter(self):
@@ -327,7 +325,7 @@
327 bible = unicode(self.QuickVersionComboBox.currentText())325 bible = unicode(self.QuickVersionComboBox.currentText())
328 text = unicode(self.QuickSearchEdit.displayText())326 text = unicode(self.QuickSearchEdit.displayText())
329 if self.ClearQuickSearchComboBox.currentIndex() == 0:327 if self.ClearQuickSearchComboBox.currentIndex() == 0:
330 self.BibleListWidget.clear()328 self.ListView.clear()
331 if self.QuickSearchComboBox.currentIndex() == 1:329 if self.QuickSearchComboBox.currentIndex() == 1:
332 self.search_results = self.parent.biblemanager.get_verse_from_text(bible, text)330 self.search_results = self.parent.biblemanager.get_verse_from_text(bible, text)
333 else:331 else:
@@ -335,33 +333,15 @@
335 if self.search_results is not None:333 if self.search_results is not None:
336 self.displayResults(bible)334 self.displayResults(bible)
337335
338# def onLiveClick(self):
339# service_item = ServiceItem(self.parent)
340# service_item.addIcon( u':/media/media_verse.png')
341# self.generateSlideData(service_item)
342# self.parent.live_controller.addServiceItem(service_item)
343#
344# def onAddClick(self):
345# service_item = ServiceItem(self.parent)
346# service_item.addIcon(u':/media/media_verse.png')
347# self.generateSlideData(service_item)
348# self.parent.service_manager.addServiceItem(service_item)
349#
350# def onPreviewClick(self):
351# service_item = ServiceItem(self.parent)
352# service_item.addIcon(u':/media/media_verse.png')
353# self.generateSlideData(service_item)
354# self.parent.preview_controller.addServiceItem(service_item)
355
356 def generateSlideData(self, service_item):336 def generateSlideData(self, service_item):
357 log.debug(u'generating slide data')337 log.debug(u'generating slide data')
358 items = self.BibleListWidget.selectedIndexes()338 items = self.ListView.selectedIndexes()
359 old_chapter = u''339 old_chapter = u''
360 raw_slides=[]340 raw_slides=[]
361 raw_footer = []341 raw_footer = []
362 bible_text = u''342 bible_text = u''
363 for item in items:343 for item in items:
364 bitem = self.BibleListWidget.item(item.row())344 bitem = self.ListView.item(item.row())
365 text = unicode((bitem.data(QtCore.Qt.UserRole)).toString())345 text = unicode((bitem.data(QtCore.Qt.UserRole)).toString())
366 verse = text[:text.find(u'(')]346 verse = text[:text.find(u'(')]
367 bible = text[text.find(u'(') + 1:text.find(u')')]347 bible = text[text.find(u'(') + 1:text.find(u')')]
@@ -440,7 +420,7 @@
440 bible_text = unicode(u' %s %d:%d (%s)'%(book , chap,vse, bible))420 bible_text = unicode(u' %s %d:%d (%s)'%(book , chap,vse, bible))
441 bible_verse = QtGui.QListWidgetItem(bible_text)421 bible_verse = QtGui.QListWidgetItem(bible_text)
442 bible_verse.setData(QtCore.Qt.UserRole, QtCore.QVariant(bible_text))422 bible_verse.setData(QtCore.Qt.UserRole, QtCore.QVariant(bible_text))
443 self.BibleListWidget.addItem(bible_verse)423 self.ListView.addItem(bible_verse)
444424
445 def searchByReference(self, bible, search):425 def searchByReference(self, bible, search):
446 log.debug(u'searchByReference %s ,%s', bible, search)426 log.debug(u'searchByReference %s ,%s', bible, search)
447427
=== modified file 'openlp/plugins/custom/lib/mediaitem.py'
--- openlp/plugins/custom/lib/mediaitem.py 2009-06-26 18:54:05 +0000
+++ openlp/plugins/custom/lib/mediaitem.py 2009-06-27 19:55:55 +0000
@@ -105,38 +105,38 @@
105 self.CustomWidget.setObjectName(u'CustomWidget')105 self.CustomWidget.setObjectName(u'CustomWidget')
106 # Add the Custom widget to the page layout106 # Add the Custom widget to the page layout
107 self.PageLayout.addWidget(self.CustomWidget)107 self.PageLayout.addWidget(self.CustomWidget)
108 self.CustomListWidget = CustomList()108 self.ListView = CustomList()
109 self.CustomListWidget.setAlternatingRowColors(True)109 self.ListView.setAlternatingRowColors(True)
110 self.CustomListWidget.setDragEnabled(True)110 self.ListView.setDragEnabled(True)
111 self.PageLayout.addWidget(self.CustomListWidget)111 self.PageLayout.addWidget(self.ListView)
112 # Signals112 # Signals
113 QtCore.QObject.connect(self.CustomListWidget,113 QtCore.QObject.connect(self.ListView,
114 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onCustomPreviewClick)114 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onCustomPreviewClick)
115 #define and add the context menu115 #define and add the context menu
116 self.CustomListWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)116 self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
117 self.CustomListWidget.addAction(self.contextMenuAction(self.CustomListWidget,117 self.ListView.addAction(self.contextMenuAction(self.ListView,
118 ':/custom/custom_edit.png', translate(u'CustomMediaItem', u'&Edit Custom'),118 ':/custom/custom_edit.png', translate(u'CustomMediaItem', u'&Edit Custom'),
119 self.onCustomEditClick))119 self.onCustomEditClick))
120 self.CustomListWidget.addAction(self.contextMenuSeparator(self.CustomListWidget))120 self.ListView.addAction(self.contextMenuSeparator(self.ListView))
121 self.CustomListWidget.addAction(self.contextMenuAction(121 self.ListView.addAction(self.contextMenuAction(
122 self.CustomListWidget, ':/system/system_preview.png',122 self.ListView, ':/system/system_preview.png',
123 translate(u'CustomMediaItem',u'&Preview Custom'), self.onCustomPreviewClick))123 translate(u'CustomMediaItem',u'&Preview Custom'), self.onCustomPreviewClick))
124 self.CustomListWidget.addAction(self.contextMenuAction(124 self.ListView.addAction(self.contextMenuAction(
125 self.CustomListWidget, ':/system/system_live.png',125 self.ListView, ':/system/system_live.png',
126 translate(u'CustomMediaItem',u'&Show Live'), self.onCustomLiveClick))126 translate(u'CustomMediaItem',u'&Show Live'), self.onCustomLiveClick))
127 self.CustomListWidget.addAction(self.contextMenuAction(127 self.ListView.addAction(self.contextMenuAction(
128 self.CustomListWidget, ':/system/system_add.png',128 self.ListView, ':/system/system_add.png',
129 translate(u'CustomMediaItem',u'&Add to Service'), self.onCustomAddClick))129 translate(u'CustomMediaItem',u'&Add to Service'), self.onCustomAddClick))
130130
131 def initialise(self):131 def initialise(self):
132 self.loadCustomList(self.parent.custommanager.get_all_slides())132 self.loadCustomList(self.parent.custommanager.get_all_slides())
133133
134 def loadCustomList(self, list):134 def loadCustomList(self, list):
135 self.CustomListWidget.clear()135 self.ListView.clear()
136 for CustomSlide in list:136 for CustomSlide in list:
137 custom_name = QtGui.QListWidgetItem(CustomSlide.title)137 custom_name = QtGui.QListWidgetItem(CustomSlide.title)
138 custom_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(CustomSlide.id))138 custom_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(CustomSlide.id))
139 self.CustomListWidget.addItem(custom_name)139 self.ListView.addItem(custom_name)
140140
141 def onCustomNewClick(self):141 def onCustomNewClick(self):
142 self.parent.edit_custom_form.loadCustom(0)142 self.parent.edit_custom_form.loadCustom(0)
@@ -144,8 +144,7 @@
144 self.initialise()144 self.initialise()
145145
146 def onCustomEditClick(self):146 def onCustomEditClick(self):
147 item = self.CustomListWidget.currentItem()147 item = self.ListView.currentItem()
148 item = self.CustomListWidget.currentItem()
149 if item is not None:148 if item is not None:
150 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]149 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
151 self.parent.edit_custom_form.loadCustom(item_id)150 self.parent.edit_custom_form.loadCustom(item_id)
@@ -153,12 +152,12 @@
153 self.initialise()152 self.initialise()
154153
155 def onCustomDeleteClick(self):154 def onCustomDeleteClick(self):
156 item = self.CustomListWidget.currentItem()155 item = self.ListView.currentItem()
157 if item is not None:156 if item is not None:
158 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]157 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
159 self.parent.custommanager.delete_custom(item_id)158 self.parent.custommanager.delete_custom(item_id)
160 row = self.CustomListWidget.row(item)159 row = self.ListView.row(item)
161 self.CustomListWidget.takeItem(row)160 self.ListView.takeItem(row)
162161
163 def onCustomPreviewClick(self):162 def onCustomPreviewClick(self):
164 log.debug(u'Custom Preview Requested')163 log.debug(u'Custom Preview Requested')
@@ -186,7 +185,7 @@
186 raw_footer = []185 raw_footer = []
187 slide = None186 slide = None
188 theme = None187 theme = None
189 item = self.CustomListWidget.currentItem()188 item = self.ListView.currentItem()
190 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]189 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
191 customSlide = self.parent.custommanager.get_custom(item_id)190 customSlide = self.parent.custommanager.get_custom(item_id)
192 title = customSlide.title191 title = customSlide.title
193192
=== modified file 'openlp/plugins/images/imageplugin.py'
--- openlp/plugins/images/imageplugin.py 2009-06-26 17:51:43 +0000
+++ openlp/plugins/images/imageplugin.py 2009-06-27 15:33:03 +0000
@@ -47,4 +47,3 @@
4747
48 def initialise(self):48 def initialise(self):
49 log.info(u'Plugin Initialising')49 log.info(u'Plugin Initialising')
50
5150
=== modified file 'openlp/plugins/images/lib/__init__.py'
--- openlp/plugins/images/lib/__init__.py 2009-06-23 20:53:06 +0000
+++ openlp/plugins/images/lib/__init__.py 2009-06-29 05:07:32 +0000
@@ -17,6 +17,5 @@
17this program; if not, write to the Free Software Foundation, Inc., 59 Temple17this program; if not, write to the Free Software Foundation, Inc., 59 Temple
18Place, Suite 330, Boston, MA 02111-1307 USA18Place, Suite 330, Boston, MA 02111-1307 USA
19"""19"""
20
21from listwithpreviews import ListWithPreviews
22from mediaitem import ImageMediaItem20from mediaitem import ImageMediaItem
21from imageslidecontroller import ImageToolbar
2322
=== added file 'openlp/plugins/images/lib/imageslidecontroller.py'
--- openlp/plugins/images/lib/imageslidecontroller.py 1970-01-01 00:00:00 +0000
+++ openlp/plugins/images/lib/imageslidecontroller.py 2009-06-29 05:07:32 +0000
@@ -0,0 +1,103 @@
1# -*- coding: utf-8 -*-
2# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
3"""
4OpenLP - Open Source Lyrics Projection
5Copyright (c) 2008 Raoul Snyman
6Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley,
7
8This program is free software; you can redistribute it and/or modify it under
9the terms of the GNU General Public License as published by the Free Software
10Foundation; version 2 of the License.
11
12This program is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License along with
17this program; if not, write to the Free Software Foundation, Inc., 59 Temple
18Place, Suite 330, Boston, MA 02111-1307 USA
19"""
20import logging
21import os
22
23from PyQt4 import QtCore, QtGui
24from openlp.core.lib import OpenLPToolbar, translate
25from openlp.core.ui.slidecontroller import BaseToolbar
26
27class ImageToolbar(BaseToolbar):
28
29 def __init__(self, isLive):
30 self.Toolbar = None
31 self.PreviewListView = QtGui.QListWidget()
32 self.PreviewListData = None
33 self.isLive = isLive
34 self.defineToolbar()
35
36 def getToolbar(self):
37 return self.Toolbar
38
39 def defineToolbar(self):
40 # Controller toolbar
41 #self.Toolbar = OpenLPToolbar(self.Controller)
42 sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
43 QtGui.QSizePolicy.Fixed)
44 sizeToolbarPolicy.setHorizontalStretch(0)
45 sizeToolbarPolicy.setVerticalStretch(0)
46 sizeToolbarPolicy.setHeightForWidth(
47 self.Toolbar.sizePolicy().hasHeightForWidth())
48 if self.isLive:
49 self.Toolbar.addToolbarButton(u'First Slide',
50 u':/slides/slide_first.png',
51 translate(u'SlideController', u'Move to first'),
52 self.onSlideSelectedFirst)
53 self.Toolbar.addToolbarButton(u'Last Slide',
54 u':/slides/slide_previous.png',
55 translate(u'SlideController', u'Move to previous'),
56 self.onSlideSelectedPrevious)
57 self.Toolbar.addToolbarButton(u'First Slide',
58 u':/slides/slide_next.png',
59 translate(u'SlideController', u'Move to next'),
60 self.onSlideSelectedNext)
61 if self.isLive:
62 self.Toolbar.addToolbarButton(u'Last Slide',
63 u':/slides/slide_last.png',
64 translate(u'SlideController', u'Move to last'),
65 self.onSlideSelectedLast)
66 self.Toolbar.addSeparator()
67 self.Toolbar.addToolbarButton(u'Close Screen',
68 u':/slides/slide_close.png',
69 translate(u'SlideController', u'Close Screen'),
70 self.onBlankScreen)
71 self.Toolbar.addSeparator()
72 self.Toolbar.addToolbarButton(u'Start Loop',
73 u':/slides/slide_last.png',
74 translate(u'SlideController', u'Start continuous loop'),
75 self.onStartLoop)
76 self.Toolbar.addToolbarButton(u'Stop Loop',
77 u':/slides/slide_last.png',
78 translate(u'SlideController', u'Start continuous loop'),
79 self.onStopLoop)
80 self.Toolbar.setSizePolicy(sizeToolbarPolicy)
81 self.ControllerLayout.addWidget(self.Toolbar)
82
83 def onStartLoop(self):
84 """
85 Go to the last slide.
86 """
87 row = self.PreviewListData.createIndex(
88 self.PreviewListData.rowCount() - 1, 0)
89 if row.isValid():
90 self.PreviewListView.selectionModel().setCurrentIndex(row,
91 QtGui.QItemSelectionModel.SelectCurrent)
92 self.onSlideSelected(row)
93
94 def onStopLoop(self):
95 """
96 Go to the last slide.
97 """
98 row = self.PreviewListData.createIndex(
99 self.PreviewListData.rowCount() - 1, 0)
100 if row.isValid():
101 self.PreviewListView.selectionModel().setCurrentIndex(row,
102 QtGui.QItemSelectionModel.SelectCurrent)
103 self.onSlideSelected(row)
0104
=== modified file 'openlp/plugins/images/lib/mediaitem.py'
--- openlp/plugins/images/lib/mediaitem.py 2009-06-26 16:39:16 +0000
+++ openlp/plugins/images/lib/mediaitem.py 2009-06-29 05:13:06 +0000
@@ -21,10 +21,8 @@
21import os21import os
2222
23from PyQt4 import QtCore, QtGui23from PyQt4 import QtCore, QtGui
2424from openlp.core.lib import MediaManagerItem, ServiceItem, translate, BaseListWithDnD, buildIcon
25# from openlp.plugins.images.lib import ListWithPreviews25from openlp.plugins.images.lib.imageslidecontroller import ImageToolbar
26from listwithpreviews import ListWithPreviews
27from openlp.core.lib import MediaManagerItem, ServiceItem, translate, BaseListWithDnD
2826
29# We have to explicitly create separate classes for each plugin27# We have to explicitly create separate classes for each plugin
30# in order for DnD to the Service manager to work correctly.28# in order for DnD to the Service manager to work correctly.
@@ -45,19 +43,50 @@
45 self.TranslationContext = u'ImagePlugin'43 self.TranslationContext = u'ImagePlugin'
46 self.PluginTextShort = u'Image'44 self.PluginTextShort = u'Image'
47 self.ConfigSection = u'images'45 self.ConfigSection = u'images'
46 self.IconPath = u'images/image'
47 self.hasFileIcon = True
48 self.hasNewIcon = False
49 self.hasEditIcon = False
48 self.OnNewPrompt = u'Select Image(s)'50 self.OnNewPrompt = u'Select Image(s)'
49 self.OnNewFileMasks = u'Images (*.jpg *jpeg *.gif *.png *.bmp)'51 self.OnNewFileMasks = u'Images (*.jpg *jpeg *.gif *.png *.bmp)'
52 self.slidecontroller = u'image'
50 # this next is a class, not an instance of a class - it will53 # this next is a class, not an instance of a class - it will
51 # be instanced by the base MediaManagerItem54 # be instanced by the base MediaManagerItem
52 self.ListViewWithDnD_class = ImageListView55 self.ListViewWithDnD_class = ImageListView
53 MediaManagerItem.__init__(self, parent, icon, title)56 MediaManagerItem.__init__(self, parent, icon, title)
57 #create and install our own slide controllers
58 #a=c
59# live_controller = ImageSlideController(self.parent.slideManager.parent, True)
60# preview_controller = ImageSlideController(self.parent.slideManager.parent)
61# self.parent.slideManager.add_controllers(u'image', preview_controller, live_controller)
62
63 def initialise(self):
64 self.ListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
65 self.ListView.setIconSize(QtCore.QSize(88,50))
66 self.loadList(self.parent.config.load_list(self.ConfigSection))
67
68 def onDeleteClick(self):
69 item = self.ListView.currentItem()
70 if item is not None:
71 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
72 row = self.ListView.row(item)
73 self.ListView.takeItem(row)
74 self.parent.config.set_list(self.ConfigSection, self.ListData.getFileList())
75
76 def loadList(self, list):
77 for file in list:
78 (path, filename) = os.path.split(unicode(file))
79 item_name = QtGui.QListWidgetItem(filename)
80 item_name.setIcon(buildIcon(file))
81 item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file))
82 self.ListView.addItem(item_name)
5483
55 def generateSlideData(self, service_item):84 def generateSlideData(self, service_item):
56 indexes = self.ListView.selectedIndexes()85 items = self.ListView.selectedIndexes()
57 service_item.title = u'Image(s)'86 service_item.title = u'Image(s)'
58 for index in indexes:87 for item in items:
59 filename = self.ListData.getFilename(index)88 bitem = self.ListView.item(item.row())
89 filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString())
60 frame = QtGui.QImage(unicode(filename))90 frame = QtGui.QImage(unicode(filename))
61 (path, name) = os.path.split(filename)91 (path, name) = os.path.split(filename)
62 service_item.add_from_image(path, name, frame)92 service_item.add_from_image(path, name, frame)
63
6493
=== modified file 'openlp/plugins/presentations/lib/mediaitem.py'
--- openlp/plugins/presentations/lib/mediaitem.py 2009-06-26 16:39:16 +0000
+++ openlp/plugins/presentations/lib/mediaitem.py 2009-06-27 19:55:55 +0000
@@ -43,107 +43,52 @@
43 self.TranslationContext = u'PresentationPlugin'43 self.TranslationContext = u'PresentationPlugin'
44 self.PluginTextShort = u'Presentation'44 self.PluginTextShort = u'Presentation'
45 self.ConfigSection = u'presentation'45 self.ConfigSection = u'presentation'
46 self.OnNewPrompt = u'Select Image(s)'46 self.hasFileIcon = True
47 self.OnNewFileMasks = u'Images (*.ppt *.pps *.odp)'47 self.hasNewIcon = False
48 self.hasEditIcon = False
49 self.IconPath = u'presentations/presentation'
50 self.OnNewPrompt = u'Select Presentation(s)'
51 self.OnNewFileMasks = u'Presentations (*.ppt *.pps *.odp)'
48 # this next is a class, not an instance of a class - it will52 # this next is a class, not an instance of a class - it will
49 # be instanced by the base MediaManagerItem53 # be instanced by the base MediaManagerItem
50 self.ListViewWithDnD_class = PresentationListView54 self.ListViewWithDnD_class = PresentationListView
51 MediaManagerItem.__init__(self, parent, icon, title)55 MediaManagerItem.__init__(self, parent, icon, title)
5256
53# def setupUi(self):57 def addHeaderBar(self):
54# # Add a toolbar58 self.PresentationWidget = QtGui.QWidget(self)
55# self.addToolbar()59 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
56# # Create buttons for the toolbar60 sizePolicy.setHorizontalStretch(0)
57# ## New Presentation Button ##61 sizePolicy.setVerticalStretch(0)
58# self.addToolbarButton(62 sizePolicy.setHeightForWidth(self.PresentationWidget.sizePolicy().hasHeightForWidth())
59# translate(u'PresentationsMediaItem',u'New presentations'),63 self.PresentationWidget.setSizePolicy(sizePolicy)
60# translate(u'PresentationsMediaItem',u'Load presentations into openlp.org'),64 self.PresentationWidget.setObjectName(u'PresentationWidget')
61# ':/presentations/presentation_load.png', self.onPresentationNewClick, 'PresentationNewItem')65 self.DisplayLayout = QtGui.QGridLayout(self.PresentationWidget)
62# ## Delete Presentation Button ##66 self.DisplayLayout.setObjectName(u'DisplayLayout')
63# self.addToolbarButton(67 self.DisplayTypeComboBox = QtGui.QComboBox(self.PresentationWidget)
64# translate(u'PresentationsMediaItem',u'Delete Presentation'),68 self.DisplayTypeComboBox.setObjectName(u'DisplayTypeComboBox')
65# translate(u'PresentationsMediaItem',u'Delete the selected presentation'),69 self.DisplayLayout.addWidget(self.DisplayTypeComboBox, 0, 1, 1, 2)
66# ':/presentations/presentation_delete.png', self.onPresentationDeleteClick, 'PresentationDeleteItem')70 self.DisplayTypeLabel = QtGui.QLabel(self.PresentationWidget)
67# ## Separator Line ##71 self.DisplayTypeLabel.setObjectName(u'SearchTypeLabel')
68# self.addToolbarSeparator()72 self.DisplayLayout.addWidget(self.DisplayTypeLabel, 0, 0, 1, 1)
69# ## Preview Presentation Button ##73
70# self.addToolbarButton(74 self.DisplayTypeLabel.setText(translate(u'PresentationMediaItem', u'Present using:'))
71# translate(u'PresentationsMediaItem',u'Preview Presentation'),75
72# translate(u'PresentationsMediaItem',u'Preview the selected Presentation'),76 # Add the Presentation widget to the page layout
73# ':/system/system_preview.png', self.onPresentationPreviewClick, 'PresentationPreviewItem')77 self.PageLayout.addWidget(self.PresentationWidget)
74# ## Live Presentation Button ##
75# self.addToolbarButton(
76# translate(u'PresentationsMediaItem',u'Go Live'),
77# translate(u'PresentationsMediaItem',u'Send the selected presentation live'),
78# ':/system/system_live.png', self.onPresentationLiveClick, 'PresentationLiveItem')
79# ## Add Presentation Button ##
80# self.addToolbarButton(
81# translate(u'PresentationsMediaItem',u'Add Presentation To Service'),
82# translate(u'PresentationsMediaItem',u'Add the selected Presentations(s) to the service'),
83# ':/system/system_add.png',self.onPresentationAddClick, 'PresentationsAddItem')
84# ## Add the Presentationlist widget ##
85#
86# self.PresentationWidget = QtGui.QWidget(self)
87# sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
88# sizePolicy.setHorizontalStretch(0)
89# sizePolicy.setVerticalStretch(0)
90# sizePolicy.setHeightForWidth(self.PresentationWidget.sizePolicy().hasHeightForWidth())
91# self.PresentationWidget.setSizePolicy(sizePolicy)
92# self.PresentationWidget.setObjectName(u'PresentationWidget')
93# self.DisplayLayout = QtGui.QGridLayout(self.PresentationWidget)
94# self.DisplayLayout.setObjectName(u'DisplayLayout')
95# self.DisplayTypeComboBox = QtGui.QComboBox(self.PresentationWidget)
96# self.DisplayTypeComboBox.setObjectName(u'DisplayTypeComboBox')
97# self.DisplayLayout.addWidget(self.DisplayTypeComboBox, 0, 1, 1, 2)
98# self.DisplayTypeLabel = QtGui.QLabel(self.PresentationWidget)
99# self.DisplayTypeLabel.setObjectName(u'SearchTypeLabel')
100# self.DisplayLayout.addWidget(self.DisplayTypeLabel, 0, 0, 1, 1)
101#
102# self.DisplayTypeLabel.setText(translate(u'PresentationMediaItem', u'Present using:'))
103#
104# # Add the song widget to the page layout
105# self.PageLayout.addWidget(self.PresentationWidget)
106#
107# self.PresentationsListView = QtGui.QListView()
108# self.PresentationsListView.setAlternatingRowColors(True)
109# self.PresentationsListData = FileListData()
110# self.PresentationsListView.setModel(self.PresentationsListData)
111#
112# self.PageLayout.addWidget(self.PresentationsListView)
113#
114# #define and add the context menu
115# self.PresentationsListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
116#
117# self.PresentationsListView.addAction(self.contextMenuAction(
118# self.PresentationsListView, ':/system/system_preview.png',
119# translate(u'PresentationsMediaItem',u'&Preview presentations'), self.onPresentationPreviewClick))
120# self.PresentationsListView.addAction(self.contextMenuAction(
121# self.PresentationsListView, ':/system/system_live.png',
122# translate(u'PresentationsMediaItem',u'&Show Live'), self.onPresentationLiveClick))
123# self.PresentationsListView.addAction(self.contextMenuAction(
124# self.PresentationsListView, ':/system/system_add.png',
125# translate(u'PresentationsMediaItem',u'&Add to Service'), self.onPresentationAddClick))
12678
127 def initialise(self):79 def initialise(self):
128 list = self.parent.config.load_list(u'presentations')80 list = self.parent.config.load_list(u'presentations')
129 self.loadPresentationList(list)81 self.loadPresentationList(list)
130# self.DisplayTypeComboBox.addItem(u'Impress')82 self.DisplayTypeComboBox.addItem(u'Impress')
131# self.DisplayTypeComboBox.addItem(u'Powerpoint')83# self.DisplayTypeComboBox.addItem(u'Powerpoint')
132# self.DisplayTypeComboBox.addItem(u'Keynote')84# self.DisplayTypeComboBox.addItem(u'Keynote')
13385
134 def onPresentationNewClick(self):86 def loadList(self, list):
135 files = QtGui.QFileDialog.getOpenFileNames(None,87 for file in list:
136 translate(u'PresentationsMediaItem', u'Select presentations(s)'),88 (path, filename) = os.path.split(unicode(file))
137 self.parent.config.get_last_dir(), u'Presentations (*.ppt *.pps *.odp)')89 item_name = QtGui.QListWidgetItem(filename)
138 if len(files) > 0:90 item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file))
139 self.loadPresentationList(files)91 self.ListView.addItem(item_name)
140 dir, filename = os.path.split(unicode(files[0]))
141 self.parent.config.set_last_dir(dir)
142 self.parent.config.set_list(u'Presentations', self.PresentationsListData.getFileList())
143
144 def getFileList(self):
145 filelist = [item[0] for item in self.PresentationsListView];
146 return filelist
14792
148 def loadPresentationList(self, list):93 def loadPresentationList(self, list):
149 pass94 pass
15095
=== modified file 'openlp/plugins/songs/forms/editsongform.py'
--- openlp/plugins/songs/forms/editsongform.py 2009-06-17 05:11:16 +0000
+++ openlp/plugins/songs/forms/editsongform.py 2009-06-27 19:55:55 +0000
@@ -317,11 +317,6 @@
317 self.TitleEditItem.setStyleSheet(u'background-color: red; color: white')317 self.TitleEditItem.setStyleSheet(u'background-color: red; color: white')
318 else:318 else:
319 self.TitleEditItem.setStyleSheet(u'')319 self.TitleEditItem.setStyleSheet(u'')
320 if len(self.CopyrightEditItem.displayText()) == 0:
321 valid = False
322 self.CopyrightEditItem.setStyleSheet(u'background-color: red; color: white')
323 else:
324 self.CopyrightEditItem.setStyleSheet(u'')
325 if self.VerseListWidget.count() == 0:320 if self.VerseListWidget.count() == 0:
326 valid = False321 valid = False
327 self.VerseListWidget.setStyleSheet(u'background-color: red; color: white')322 self.VerseListWidget.setStyleSheet(u'background-color: red; color: white')
328323
=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py 2009-06-26 18:54:05 +0000
+++ openlp/plugins/songs/lib/mediaitem.py 2009-06-27 19:55:55 +0000
@@ -121,12 +121,12 @@
121 self.SearchLayout.addWidget(self.SearchTextButton, 3, 2, 1, 1)121 self.SearchLayout.addWidget(self.SearchTextButton, 3, 2, 1, 1)
122 # Add the song widget to the page layout122 # Add the song widget to the page layout
123 self.PageLayout.addWidget(self.SongWidget)123 self.PageLayout.addWidget(self.SongWidget)
124 self.SongListWidget = SongList()124 self.ListView = SongList()
125 self.SongListWidget.setAlternatingRowColors(True)125 self.ListView.setAlternatingRowColors(True)
126 self.SongListWidget.setDragEnabled(True)126 self.ListView.setDragEnabled(True)
127 self.SongListWidget.setObjectName(u'SongListWidget')127 self.ListView.setObjectName(u'ListView')
128 self.PageLayout.addWidget(self.SongListWidget)128 self.PageLayout.addWidget(self.ListView)
129 self.SongListWidget.setDragEnabled(True)129 self.ListView.setDragEnabled(True)
130 # Signals and slots130 # Signals and slots
131 QtCore.QObject.connect(self.SearchTextButton,131 QtCore.QObject.connect(self.SearchTextButton,
132 QtCore.SIGNAL(u'pressed()'), self.onSearchTextButtonClick)132 QtCore.SIGNAL(u'pressed()'), self.onSearchTextButtonClick)
@@ -134,21 +134,21 @@
134 QtCore.SIGNAL(u'pressed()'), self.onClearTextButtonClick)134 QtCore.SIGNAL(u'pressed()'), self.onClearTextButtonClick)
135 QtCore.QObject.connect(self.SearchTextEdit,135 QtCore.QObject.connect(self.SearchTextEdit,
136 QtCore.SIGNAL(u'textChanged(const QString&)'), self.onSearchTextEditChanged)136 QtCore.SIGNAL(u'textChanged(const QString&)'), self.onSearchTextEditChanged)
137 QtCore.QObject.connect(self.SongListWidget,137 QtCore.QObject.connect(self.ListView,
138 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onSongPreviewClick)138 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onSongPreviewClick)
139 #define and add the context menu139 #define and add the context menu
140 self.SongListWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)140 self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
141 self.SongListWidget.addAction(self.contextMenuAction(self.SongListWidget,141 self.ListView.addAction(self.contextMenuAction(self.ListView,
142 ':/songs/song_new.png', translate(u'SongMediaItem', u'&Edit Song'),142 ':/songs/song_new.png', translate(u'SongMediaItem', u'&Edit Song'),
143 self.onSongEditClick))143 self.onSongEditClick))
144 self.SongListWidget.addAction(self.contextMenuSeparator(self.SongListWidget))144 self.ListView.addAction(self.contextMenuSeparator(self.ListView))
145 self.SongListWidget.addAction(self.contextMenuAction(self.SongListWidget,145 self.ListView.addAction(self.contextMenuAction(self.ListView,
146 ':/system/system_preview.png', translate(u'SongMediaItem', u'&Preview Song'),146 ':/system/system_preview.png', translate(u'SongMediaItem', u'&Preview Song'),
147 self.onSongPreviewClick))147 self.onSongPreviewClick))
148 self.SongListWidget.addAction(self.contextMenuAction(self.SongListWidget,148 self.ListView.addAction(self.contextMenuAction(self.ListView,
149 ':/system/system_live.png', translate(u'SongMediaItem', u'&Show Live'),149 ':/system/system_live.png', translate(u'SongMediaItem', u'&Show Live'),
150 self.onSongLiveClick))150 self.onSongLiveClick))
151 self.SongListWidget.addAction(self.contextMenuAction(self.SongListWidget,151 self.ListView.addAction(self.contextMenuAction(self.ListView,
152 ':/system/system_add.png', translate(u'SongMediaItem', u'&Add to Service'),152 ':/system/system_add.png', translate(u'SongMediaItem', u'&Add to Service'),
153 self.onSongAddClick))153 self.onSongAddClick))
154154
@@ -182,7 +182,7 @@
182182
183 def displayResultsSong(self, searchresults):183 def displayResultsSong(self, searchresults):
184 log.debug(u'display results Song')184 log.debug(u'display results Song')
185 self.SongListWidget.clear()185 self.ListView.clear()
186 #log.debug(u'Records returned from search %s", len(searchresults))186 #log.debug(u'Records returned from search %s", len(searchresults))
187 for song in searchresults:187 for song in searchresults:
188 author_list = u''188 author_list = u''
@@ -193,17 +193,17 @@
193 song_detail = unicode(u'%s (%s)' % (unicode(song.title), unicode(author_list)))193 song_detail = unicode(u'%s (%s)' % (unicode(song.title), unicode(author_list)))
194 song_name = QtGui.QListWidgetItem(song_detail)194 song_name = QtGui.QListWidgetItem(song_detail)
195 song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))195 song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
196 self.SongListWidget.addItem(song_name)196 self.ListView.addItem(song_name)
197197
198 def displayResultsAuthor(self, searchresults):198 def displayResultsAuthor(self, searchresults):
199 log.debug(u'display results Author')199 log.debug(u'display results Author')
200 self.SongListWidget.clear()200 self.ListView.clear()
201 for author in searchresults:201 for author in searchresults:
202 for song in author.songs:202 for song in author.songs:
203 song_detail = unicode(u'%s (%s)' % (unicode(author.display_name), unicode(song.title)))203 song_detail = unicode(u'%s (%s)' % (unicode(author.display_name), unicode(song.title)))
204 song_name = QtGui.QListWidgetItem(song_detail)204 song_name = QtGui.QListWidgetItem(song_detail)
205 song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))205 song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
206 self.SongListWidget.addItem(song_name)206 self.ListView.addItem(song_name)
207207
208 def onClearTextButtonClick(self):208 def onClearTextButtonClick(self):
209 """209 """
@@ -223,19 +223,19 @@
223 self.edit_song_form.exec_()223 self.edit_song_form.exec_()
224224
225 def onSongEditClick(self):225 def onSongEditClick(self):
226 item = self.SongListWidget.currentItem()226 item = self.ListView.currentItem()
227 if item is not None:227 if item is not None:
228 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]228 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
229 self.edit_song_form.loadSong(item_id)229 self.edit_song_form.loadSong(item_id)
230 self.edit_song_form.exec_()230 self.edit_song_form.exec_()
231231
232 def onSongDeleteClick(self):232 def onSongDeleteClick(self):
233 item = self.SongListWidget.currentItem()233 item = self.ListView.currentItem()
234 if item is not None:234 if item is not None:
235 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]235 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
236 self.parent.songmanager.delete_song(item_id)236 self.parent.songmanager.delete_song(item_id)
237 row = self.SongListWidget.row(item)237 row = self.ListView.row(item)
238 self.SongListWidget.takeItem(row)238 self.ListView.takeItem(row)
239239
240 def onSongPreviewClick(self):240 def onSongPreviewClick(self):
241 service_item = ServiceItem(self.parent)241 service_item = ServiceItem(self.parent)
@@ -248,7 +248,7 @@
248 raw_footer = []248 raw_footer = []
249 author_list = u''249 author_list = u''
250 ccl = u''250 ccl = u''
251 item = self.SongListWidget.currentItem()251 item = self.ListView.currentItem()
252 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]252 item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
253 song = self.parent.songmanager.get_song(item_id)253 song = self.parent.songmanager.get_song(item_id)
254 service_item.theme = song.theme_name254 service_item.theme = song.theme_name