Merge lp:~raoul-snyman/openlp/bugfixes into lp:openlp

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

Let's see what changes there are between my few bugfixes, and trunk.

Revision history for this message
Tim Bentley (trb143) wrote :

Approved though you missed a bug fix!

review: Approve
lp:~raoul-snyman/openlp/bugfixes updated
505. By Raoul Snyman

Merge from bugfixes

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'openlp.pyw'
--- openlp.pyw 2009-07-08 06:55:08 +0000
+++ openlp.pyw 2009-08-09 17:58:37 +0000
@@ -71,7 +71,7 @@
71 self.mainWindow = MainWindow(screens)71 self.mainWindow = MainWindow(screens)
72 self.mainWindow.show()72 self.mainWindow.show()
73 # now kill the splashscreen73 # now kill the splashscreen
74 self.splash.finish(self.mainWindow.mainWindow)74 self.splash.finish(self.mainWindow)
75 sys.exit(app.exec_())75 sys.exit(app.exec_())
7676
77if __name__ == u'__main__':77if __name__ == u'__main__':
7878
=== modified file 'openlp/core/lib/event.py'
--- openlp/core/lib/event.py 2009-07-10 15:45:17 +0000
+++ openlp/core/lib/event.py 2009-08-09 17:58:37 +0000
@@ -28,6 +28,7 @@
28 # "Default" event - a non-event28 # "Default" event - a non-event
29 Default = 029 Default = 0
30 # General application events30 # General application events
31 Ready = 10
31 # Service events32 # Service events
32 LoadServiceItem = 2033 LoadServiceItem = 20
33 # Preview events34 # Preview events
@@ -43,6 +44,7 @@
43 """44 """
44 Provides an Event class to encapsulate events within openlp.org.45 Provides an Event class to encapsulate events within openlp.org.
45 """46 """
46 def __init__(self, event_type=EventType.Default, payload=None):47 def __init__(self, event_type=EventType.Default, payload=None, sender=None):
47 self.event_type = event_type48 self.event_type = event_type
48 self.payload = payload49 self.payload = payload
50 self.sender = sender
4951
=== modified file 'openlp/core/lib/eventmanager.py'
--- openlp/core/lib/eventmanager.py 2009-07-11 05:18:34 +0000
+++ openlp/core/lib/eventmanager.py 2009-08-09 17:58:37 +0000
@@ -25,10 +25,10 @@
2525
26class EventManager(object):26class EventManager(object):
27 """27 """
28 A mechanism to send events to all registered endpoints28 A mechanism to send events to all registered endpoints. The
29 the endpoints are registered and listen with a handle_event method29 endpoints are registered and listen with a handle_event method.
30 the endpoint will decide whether to do somthing with the event or ignore it30 The endpoint will decide whether to do somthing with the event or
3131 ignore it.
32 """32 """
33 global log33 global log
34 log = logging.getLogger(u'EventManager')34 log = logging.getLogger(u'EventManager')
3535
=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py 2009-08-06 21:30:14 +0000
+++ openlp/core/ui/maindisplay.py 2009-08-09 12:05:54 +0000
@@ -60,10 +60,6 @@
60 Sets up the screen on a particular screen.60 Sets up the screen on a particular screen.
61 @param (integer) screen This is the screen number.61 @param (integer) screen This is the screen number.
62 """62 """
63 # Temporary fix until I can speak to Tim Bentley.
64 if screenNumber not in self.screens:
65 screenNumber = 0
66 # /Temporary fix
67 screen = self.screens[screenNumber]63 screen = self.screens[screenNumber]
68 if screen[u'number'] != screenNumber:64 if screen[u'number'] != screenNumber:
69 # We will most probably never actually hit this bit, but just in65 # We will most probably never actually hit this bit, but just in
@@ -79,20 +75,23 @@
79 else:75 else:
80 self.showMinimized()76 self.showMinimized()
81 #Build a custom splash screen77 #Build a custom splash screen
82 self.InitialFrame = QtGui.QImage(screen[u'size'].width(),78 self.InitialFrame = QtGui.QImage(
83 screen[u'size'].height(), QtGui.QImage.Format_ARGB32_Premultiplied)79 screen[u'size'].width(), screen[u'size'].height(),
80 QtGui.QImage.Format_ARGB32_Premultiplied)
84 splash_image = QtGui.QImage(u':/graphics/openlp-splash-screen.png')81 splash_image = QtGui.QImage(u':/graphics/openlp-splash-screen.png')
85 painter_image = QtGui.QPainter()82 painter_image = QtGui.QPainter()
86 painter_image.begin(self.InitialFrame)83 painter_image.begin(self.InitialFrame)
87 painter_image.fillRect(self.InitialFrame.rect(), QtCore.Qt.white)84 painter_image.fillRect(self.InitialFrame.rect(), QtCore.Qt.white)
88 painter_image.drawImage((screen[u'size'].width() - splash_image.width()) / 2,85 painter_image.drawImage(
89 (screen[u'size'].height() - splash_image.height()) / 2,86 (screen[u'size'].width() - splash_image.width()) / 2,
90 splash_image)87 (screen[u'size'].height() - splash_image.height()) / 2,
88 splash_image)
91 self.frameView(self.InitialFrame)89 self.frameView(self.InitialFrame)
92 #Build a Black screen90 #Build a Black screen
93 painter = QtGui.QPainter()91 painter = QtGui.QPainter()
94 self.blankFrame = QtGui.QImage(screen[u'size'].width(),92 self.blankFrame = QtGui.QImage(
95 screen[u'size'].height(), QtGui.QImage.Format_ARGB32_Premultiplied)93 screen[u'size'].width(), screen[u'size'].height(),
94 QtGui.QImage.Format_ARGB32_Premultiplied)
96 painter.begin(self.blankFrame)95 painter.begin(self.blankFrame)
97 painter.fillRect(self.blankFrame.rect(), QtCore.Qt.black)96 painter.fillRect(self.blankFrame.rect(), QtCore.Qt.black)
9897
9998
=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py 2009-08-06 21:30:14 +0000
+++ openlp/core/ui/mainwindow.py 2009-08-09 17:58:37 +0000
@@ -22,178 +22,32 @@
2222
23from PyQt4 import QtCore, QtGui23from PyQt4 import QtCore, QtGui
2424
25from openlp.core.ui import AboutForm, SettingsForm, AlertForm, ServiceManager, \25from openlp.core.ui import AboutForm, SettingsForm, AlertForm, \
26 ThemeManager, MainDisplay, SlideController26 ServiceManager, ThemeManager, MainDisplay, SlideController
27from openlp.core.lib import translate, Plugin, MediaManagerItem, SettingsTab, \27from openlp.core.lib import translate, Plugin, MediaManagerItem, \
28 EventManager, RenderManager, PluginConfig, SettingsManager, PluginManager28 SettingsTab, EventManager, RenderManager, PluginConfig, \
2929 SettingsManager, PluginManager, EventType
30class MainWindow(object):30
31 """31class Ui_MainWindow(object):
32 The main window.32 def setupUi(self, MainWindow):
33 """
34 global log
35 log = logging.getLogger(u'MainWindow')
36 log.info(u'MainWindow loaded')
37
38 def __init__(self, screens):
39 """
40 This constructor sets up the interface, the various managers, and the
41 plugins.
42 """
43 self.oosNotSaved = False
44 self.settingsmanager = SettingsManager(screens)
45 self.mainWindow = QtGui.QMainWindow()
46 self.mainWindow.__class__.closeEvent = self.onCloseEvent
47 self.mainDisplay = MainDisplay(None, screens)
48 self.screenList = screens
49 self.EventManager = EventManager()
50 self.generalConfig = PluginConfig(u'General')
51 self.alertForm = AlertForm(self)
52 self.aboutForm = AboutForm()
53 self.settingsForm = SettingsForm(self.screenList, self)
54 # Set up the path with plugins
55 pluginpath = os.path.split(os.path.abspath(__file__))[0]
56 pluginpath = os.path.abspath(
57 os.path.join(pluginpath, u'..', u'..', u'plugins'))
58 self.plugin_manager = PluginManager(pluginpath)
59 self.plugin_helpers = {}
60 # Set up the interface
61 self.setupUi()
62 #warning cyclic dependency
63 #RenderManager needs to call ThemeManager and
64 #ThemeManager needs to call RenderManager
65 self.RenderManager = RenderManager(self.ThemeManagerContents,
66 self.screenList, int(self.generalConfig.get_config(u'Monitor', 0)))
67 log.info(u'Load Plugins')
68 #make the controllers available to the plugins
69 self.plugin_helpers[u'preview'] = self.PreviewController
70 self.plugin_helpers[u'live'] = self.LiveController
71 self.plugin_helpers[u'event'] = self.EventManager
72 self.plugin_helpers[u'theme'] = self.ThemeManagerContents
73 self.plugin_helpers[u'render'] = self.RenderManager
74 self.plugin_helpers[u'service'] = self.ServiceManagerContents
75 self.plugin_helpers[u'settings'] = self.settingsForm
76 self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers,
77 self.EventManager)
78 # hook methods have to happen after find_plugins. Find plugins needs the
79 # controllers hence the hooks have moved from setupUI() to here
80
81 # Find and insert settings tabs
82 log.info(u'hook settings')
83 self.plugin_manager.hook_settings_tabs(self.settingsForm)
84 # Find and insert media manager items
85 log.info(u'hook media')
86 self.plugin_manager.hook_media_manager(self.MediaToolBox)
87 # Call the hook method to pull in import menus.
88 log.info(u'hook menus')
89 self.plugin_manager.hook_import_menu(self.FileImportMenu)
90 # Call the hook method to pull in export menus.
91 self.plugin_manager.hook_export_menu(self.FileExportMenu)
92 # Call the initialise method to setup plugins.
93 log.info(u'initialise plugins')
94 self.plugin_manager.initialise_plugins()
95 # Once all components are initialised load the Themes
96 log.info(u'Load Themes')
97 self.ThemeManagerContents.loadThemes()
98
99 def show(self):
100 """
101 Show the main form, as well as the display form
102 """
103 self.mainWindow.showMaximized()
104 self.mainDisplay.setup(self.settingsForm.GeneralTab.MonitorNumber)
105
106 def onHelpAboutItemClicked(self):
107 """
108 Show the About form
109 """
110 self.aboutForm.exec_()
111
112 def onToolsAlertItemClicked(self):
113 """
114 Show the Alert form
115 """
116 self.alertForm.exec_()
117
118 def onOptionsSettingsItemClicked(self):
119 """
120 Show the Settings dialog
121 """
122 self.settingsForm.exec_()
123 screen_number = int(self.generalConfig.get_config(u'Monitor', 0))
124 self.RenderManager.update_display(screen_number)
125 self.mainDisplay.setup(screen_number)
126
127 def onCloseEvent(self, event):
128 """
129 Hook to close the main window and display windows on exit
130 """
131 if self.oosNotSaved == True:
132 ret = QtGui.QMessageBox.question(None,
133 translate(u'mainWindow', u'Save Changes to Service?'),
134 translate(u'mainWindow', u'Your service has been changed, do you want to save those changes?'),
135 QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Discard | QtGui.QMessageBox.Save),
136 QtGui.QMessageBox.Save)
137 if ret == QtGui.QMessageBox.Save:
138 self.ServiceManagerContents.onSaveService()
139 self.mainDisplay.close()
140 self.cleanUp()
141 event.accept()
142 elif ret == QtGui.QMessageBox.Discard:
143 self.mainDisplay.close()
144 self.cleanUp()
145 event.accept()
146 else:
147 event.ignore()
148 else:
149 self.mainDisplay.close()
150 self.cleanUp()
151 event.accept()
152
153 def cleanUp(self):
154 # Call the cleanup method to shutdown plugins.
155 log.info(u'cleanup plugins')
156 self.plugin_manager.initialise_plugins()
157
158 def OosChanged(self, reset = False, oosName = None):
159 """
160 Hook to change the title if the OOS has been changed
161 reset - tells if the OOS has been cleared or saved
162 oosName - is the name of the OOS (if it has one)
163 """
164 if reset == True:
165 self.oosNotSaved = False
166 if oosName is None:
167 title = self.mainTitle
168 else:
169 title = self.mainTitle + u' - (' + oosName + u')'
170 else:
171 self.oosNotSaved = True
172 if oosName is None:
173 title = self.mainTitle + u' - *'
174 else:
175 title = self.mainTitle + u' - *(' + oosName + u')'
176 self.mainWindow.setWindowTitle(title)
177
178 def setupUi(self):
179 """33 """
180 Set up the user interface34 Set up the user interface
181 """35 """
182 self.mainWindow.setObjectName(u'mainWindow')36 MainWindow.setObjectName(u'MainWindow')
183 self.mainWindow.resize(self.settingsmanager.width, self.settingsmanager.height)37 MainWindow.resize(self.settingsmanager.width, self.settingsmanager.height)
184 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,38 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
185 QtGui.QSizePolicy.Expanding)39 QtGui.QSizePolicy.Expanding)
186 sizePolicy.setHorizontalStretch(0)40 sizePolicy.setHorizontalStretch(0)
187 sizePolicy.setVerticalStretch(0)41 sizePolicy.setVerticalStretch(0)
188 sizePolicy.setHeightForWidth(42 sizePolicy.setHeightForWidth(
189 self.mainWindow.sizePolicy().hasHeightForWidth())43 MainWindow.sizePolicy().hasHeightForWidth())
190 self.mainWindow.setSizePolicy(sizePolicy)44 MainWindow.setSizePolicy(sizePolicy)
191 main_icon = QtGui.QIcon()45 main_icon = QtGui.QIcon()
192 main_icon.addPixmap(QtGui.QPixmap(u':/icon/openlp-logo-16x16.png'),46 main_icon.addPixmap(QtGui.QPixmap(u':/icon/openlp-logo-16x16.png'),
193 QtGui.QIcon.Normal, QtGui.QIcon.Off)47 QtGui.QIcon.Normal, QtGui.QIcon.Off)
194 self.mainWindow.setWindowIcon(main_icon)48 MainWindow.setWindowIcon(main_icon)
195 # Set up the main container, which contains all the other form widgets49 # Set up the main container, which contains all the other form widgets
196 self.MainContent = QtGui.QWidget(self.mainWindow)50 self.MainContent = QtGui.QWidget(MainWindow)
197 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,51 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
198 QtGui.QSizePolicy.Expanding)52 QtGui.QSizePolicy.Expanding)
199 sizePolicy.setHorizontalStretch(0)53 sizePolicy.setHorizontalStretch(0)
@@ -206,7 +60,7 @@
206 self.MainContentLayout.setSpacing(0)60 self.MainContentLayout.setSpacing(0)
207 self.MainContentLayout.setMargin(0)61 self.MainContentLayout.setMargin(0)
208 self.MainContentLayout.setObjectName(u'MainContentLayout')62 self.MainContentLayout.setObjectName(u'MainContentLayout')
209 self.mainWindow.setCentralWidget(self.MainContent)63 MainWindow.setCentralWidget(self.MainContent)
210 self.ControlSplitter = QtGui.QSplitter(self.MainContent)64 self.ControlSplitter = QtGui.QSplitter(self.MainContent)
211 self.ControlSplitter.setOrientation(QtCore.Qt.Horizontal)65 self.ControlSplitter.setOrientation(QtCore.Qt.Horizontal)
212 self.ControlSplitter.setObjectName(u'ControlSplitter')66 self.ControlSplitter.setObjectName(u'ControlSplitter')
@@ -215,7 +69,7 @@
215 self.PreviewController = SlideController(self)69 self.PreviewController = SlideController(self)
216 self.LiveController = SlideController(self, True)70 self.LiveController = SlideController(self, True)
217 # Create menu71 # Create menu
218 self.MenuBar = QtGui.QMenuBar(self.mainWindow)72 self.MenuBar = QtGui.QMenuBar(MainWindow)
219 self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27))73 self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27))
220 self.MenuBar.setObjectName(u'MenuBar')74 self.MenuBar.setObjectName(u'MenuBar')
221 self.FileMenu = QtGui.QMenu(self.MenuBar)75 self.FileMenu = QtGui.QMenu(self.MenuBar)
@@ -236,12 +90,15 @@
236 self.ToolsMenu.setObjectName(u'ToolsMenu')90 self.ToolsMenu.setObjectName(u'ToolsMenu')
237 self.HelpMenu = QtGui.QMenu(self.MenuBar)91 self.HelpMenu = QtGui.QMenu(self.MenuBar)
238 self.HelpMenu.setObjectName(u'HelpMenu')92 self.HelpMenu.setObjectName(u'HelpMenu')
239 self.mainWindow.setMenuBar(self.MenuBar)93 MainWindow.setMenuBar(self.MenuBar)
240 self.StatusBar = QtGui.QStatusBar(self.mainWindow)94 self.StatusBar = QtGui.QStatusBar(MainWindow)
241 self.StatusBar.setObjectName(u'StatusBar')95 self.StatusBar.setObjectName(u'StatusBar')
242 self.mainWindow.setStatusBar(self.StatusBar)96 MainWindow.setStatusBar(self.StatusBar)
97 self.DefaultThemeLabel = QtGui.QLabel(self.StatusBar)
98 self.DefaultThemeLabel.setObjectName(u'DefaultThemeLabel')
99 self.StatusBar.addPermanentWidget(self.DefaultThemeLabel)
243 # Create the MediaManager100 # Create the MediaManager
244 self.MediaManagerDock = QtGui.QDockWidget(self.mainWindow)101 self.MediaManagerDock = QtGui.QDockWidget(MainWindow)
245 icon = QtGui.QIcon()102 icon = QtGui.QIcon()
246 icon.addPixmap(QtGui.QPixmap(u':/system/system_mediamanager.png'),103 icon.addPixmap(QtGui.QPixmap(u':/system/system_mediamanager.png'),
247 QtGui.QIcon.Normal, QtGui.QIcon.Off)104 QtGui.QIcon.Normal, QtGui.QIcon.Off)
@@ -258,10 +115,10 @@
258 self.MediaToolBox.setObjectName(u'MediaToolBox')115 self.MediaToolBox.setObjectName(u'MediaToolBox')
259 self.MediaManagerLayout.addWidget(self.MediaToolBox)116 self.MediaManagerLayout.addWidget(self.MediaToolBox)
260 self.MediaManagerDock.setWidget(self.MediaManagerContents)117 self.MediaManagerDock.setWidget(self.MediaManagerContents)
261 self.mainWindow.addDockWidget(118 MainWindow.addDockWidget(
262 QtCore.Qt.DockWidgetArea(1), self.MediaManagerDock)119 QtCore.Qt.DockWidgetArea(1), self.MediaManagerDock)
263 # Create the service manager120 # Create the service manager
264 self.ServiceManagerDock = QtGui.QDockWidget(self.mainWindow)121 self.ServiceManagerDock = QtGui.QDockWidget(MainWindow)
265 ServiceManagerIcon = QtGui.QIcon()122 ServiceManagerIcon = QtGui.QIcon()
266 ServiceManagerIcon.addPixmap(123 ServiceManagerIcon.addPixmap(
267 QtGui.QPixmap(u':/system/system_servicemanager.png'),124 QtGui.QPixmap(u':/system/system_servicemanager.png'),
@@ -273,10 +130,10 @@
273 self.ServiceManagerDock.setMinimumWidth(300)130 self.ServiceManagerDock.setMinimumWidth(300)
274 self.ServiceManagerContents = ServiceManager(self)131 self.ServiceManagerContents = ServiceManager(self)
275 self.ServiceManagerDock.setWidget(self.ServiceManagerContents)132 self.ServiceManagerDock.setWidget(self.ServiceManagerContents)
276 self.mainWindow.addDockWidget(133 MainWindow.addDockWidget(
277 QtCore.Qt.DockWidgetArea(2), self.ServiceManagerDock)134 QtCore.Qt.DockWidgetArea(2), self.ServiceManagerDock)
278 # Create the theme manager135 # Create the theme manager
279 self.ThemeManagerDock = QtGui.QDockWidget(self.mainWindow)136 self.ThemeManagerDock = QtGui.QDockWidget(MainWindow)
280 ThemeManagerIcon = QtGui.QIcon()137 ThemeManagerIcon = QtGui.QIcon()
281 ThemeManagerIcon.addPixmap(138 ThemeManagerIcon.addPixmap(
282 QtGui.QPixmap(u':/system/system_thememanager.png'),139 QtGui.QPixmap(u':/system/system_thememanager.png'),
@@ -286,97 +143,97 @@
286 self.ThemeManagerDock.setObjectName(u'ThemeManagerDock')143 self.ThemeManagerDock.setObjectName(u'ThemeManagerDock')
287 self.ThemeManagerContents = ThemeManager(self)144 self.ThemeManagerContents = ThemeManager(self)
288 self.ThemeManagerDock.setWidget(self.ThemeManagerContents)145 self.ThemeManagerDock.setWidget(self.ThemeManagerContents)
289 self.mainWindow.addDockWidget(146 MainWindow.addDockWidget(
290 QtCore.Qt.DockWidgetArea(2), self.ThemeManagerDock)147 QtCore.Qt.DockWidgetArea(2), self.ThemeManagerDock)
291 # Create the menu items148 # Create the menu items
292 self.FileNewItem = QtGui.QAction(self.mainWindow)149 self.FileNewItem = QtGui.QAction(MainWindow)
293 self.FileNewItem.setIcon(150 self.FileNewItem.setIcon(
294 self.ServiceManagerContents.Toolbar.getIconFromTitle(u'New Service'))151 self.ServiceManagerContents.Toolbar.getIconFromTitle(u'New Service'))
295 self.FileNewItem.setObjectName(u'FileNewItem')152 self.FileNewItem.setObjectName(u'FileNewItem')
296 self.FileOpenItem = QtGui.QAction(self.mainWindow)153 self.FileOpenItem = QtGui.QAction(MainWindow)
297 self.FileOpenItem.setIcon(154 self.FileOpenItem.setIcon(
298 self.ServiceManagerContents.Toolbar.getIconFromTitle(u'Open Service'))155 self.ServiceManagerContents.Toolbar.getIconFromTitle(u'Open Service'))
299 self.FileOpenItem.setObjectName(u'FileOpenItem')156 self.FileOpenItem.setObjectName(u'FileOpenItem')
300 self.FileSaveItem = QtGui.QAction(self.mainWindow)157 self.FileSaveItem = QtGui.QAction(MainWindow)
301 self.FileSaveItem.setIcon(158 self.FileSaveItem.setIcon(
302 self.ServiceManagerContents.Toolbar.getIconFromTitle(u'Save Service'))159 self.ServiceManagerContents.Toolbar.getIconFromTitle(u'Save Service'))
303 self.FileSaveItem.setObjectName(u'FileSaveItem')160 self.FileSaveItem.setObjectName(u'FileSaveItem')
304 self.FileSaveAsItem = QtGui.QAction(self.mainWindow)161 self.FileSaveAsItem = QtGui.QAction(MainWindow)
305 self.FileSaveAsItem.setObjectName(u'FileSaveAsItem')162 self.FileSaveAsItem.setObjectName(u'FileSaveAsItem')
306 self.FileExitItem = QtGui.QAction(self.mainWindow)163 self.FileExitItem = QtGui.QAction(MainWindow)
307 ExitIcon = QtGui.QIcon()164 ExitIcon = QtGui.QIcon()
308 ExitIcon.addPixmap(QtGui.QPixmap(u':/system/system_exit.png'),165 ExitIcon.addPixmap(QtGui.QPixmap(u':/system/system_exit.png'),
309 QtGui.QIcon.Normal, QtGui.QIcon.Off)166 QtGui.QIcon.Normal, QtGui.QIcon.Off)
310 self.FileExitItem.setIcon(ExitIcon)167 self.FileExitItem.setIcon(ExitIcon)
311 self.FileExitItem.setObjectName(u'FileExitItem')168 self.FileExitItem.setObjectName(u'FileExitItem')
312 self.ImportThemeItem = QtGui.QAction(self.mainWindow)169 self.ImportThemeItem = QtGui.QAction(MainWindow)
313 self.ImportThemeItem.setObjectName(u'ImportThemeItem')170 self.ImportThemeItem.setObjectName(u'ImportThemeItem')
314 self.ImportLanguageItem = QtGui.QAction(self.mainWindow)171 self.ImportLanguageItem = QtGui.QAction(MainWindow)
315 self.ImportLanguageItem.setObjectName(u'ImportLanguageItem')172 self.ImportLanguageItem.setObjectName(u'ImportLanguageItem')
316 self.ExportThemeItem = QtGui.QAction(self.mainWindow)173 self.ExportThemeItem = QtGui.QAction(MainWindow)
317 self.ExportThemeItem.setObjectName(u'ExportThemeItem')174 self.ExportThemeItem.setObjectName(u'ExportThemeItem')
318 self.ExportLanguageItem = QtGui.QAction(self.mainWindow)175 self.ExportLanguageItem = QtGui.QAction(MainWindow)
319 self.ExportLanguageItem.setObjectName(u'ExportLanguageItem')176 self.ExportLanguageItem.setObjectName(u'ExportLanguageItem')
320 self.actionLook_Feel = QtGui.QAction(self.mainWindow)177 self.actionLook_Feel = QtGui.QAction(MainWindow)
321 self.actionLook_Feel.setObjectName(u'actionLook_Feel')178 self.actionLook_Feel.setObjectName(u'actionLook_Feel')
322 self.OptionsSettingsItem = QtGui.QAction(self.mainWindow)179 self.OptionsSettingsItem = QtGui.QAction(MainWindow)
323 SettingsIcon = QtGui.QIcon()180 SettingsIcon = QtGui.QIcon()
324 SettingsIcon.addPixmap(QtGui.QPixmap(u':/system/system_settings.png'),181 SettingsIcon.addPixmap(QtGui.QPixmap(u':/system/system_settings.png'),
325 QtGui.QIcon.Normal, QtGui.QIcon.Off)182 QtGui.QIcon.Normal, QtGui.QIcon.Off)
326 self.OptionsSettingsItem.setIcon(SettingsIcon)183 self.OptionsSettingsItem.setIcon(SettingsIcon)
327 self.OptionsSettingsItem.setObjectName(u'OptionsSettingsItem')184 self.OptionsSettingsItem.setObjectName(u'OptionsSettingsItem')
328 self.ViewMediaManagerItem = QtGui.QAction(self.mainWindow)185 self.ViewMediaManagerItem = QtGui.QAction(MainWindow)
329 self.ViewMediaManagerItem.setCheckable(True)186 self.ViewMediaManagerItem.setCheckable(True)
330 self.ViewMediaManagerItem.setChecked(True)187 self.ViewMediaManagerItem.setChecked(True)
331 self.ViewMediaManagerItem.setIcon(icon)188 self.ViewMediaManagerItem.setIcon(icon)
332 self.ViewMediaManagerItem.setObjectName(u'ViewMediaManagerItem')189 self.ViewMediaManagerItem.setObjectName(u'ViewMediaManagerItem')
333 self.ViewThemeManagerItem = QtGui.QAction(self.mainWindow)190 self.ViewThemeManagerItem = QtGui.QAction(MainWindow)
334 self.ViewThemeManagerItem.setCheckable(True)191 self.ViewThemeManagerItem.setCheckable(True)
335 self.ViewThemeManagerItem.setChecked(True)192 self.ViewThemeManagerItem.setChecked(True)
336 self.ViewThemeManagerItem.setIcon(ThemeManagerIcon)193 self.ViewThemeManagerItem.setIcon(ThemeManagerIcon)
337 self.ViewThemeManagerItem.setObjectName(u'ViewThemeManagerItem')194 self.ViewThemeManagerItem.setObjectName(u'ViewThemeManagerItem')
338 self.ViewServiceManagerItem = QtGui.QAction(self.mainWindow)195 self.ViewServiceManagerItem = QtGui.QAction(MainWindow)
339 self.ViewServiceManagerItem.setCheckable(True)196 self.ViewServiceManagerItem.setCheckable(True)
340 self.ViewServiceManagerItem.setChecked(True)197 self.ViewServiceManagerItem.setChecked(True)
341 self.ViewServiceManagerItem.setIcon(ServiceManagerIcon)198 self.ViewServiceManagerItem.setIcon(ServiceManagerIcon)
342 self.ViewServiceManagerItem.setObjectName(u'ViewServiceManagerItem')199 self.ViewServiceManagerItem.setObjectName(u'ViewServiceManagerItem')
343 self.ToolsAlertItem = QtGui.QAction(self.mainWindow)200 self.ToolsAlertItem = QtGui.QAction(MainWindow)
344 AlertIcon = QtGui.QIcon()201 AlertIcon = QtGui.QIcon()
345 AlertIcon.addPixmap(QtGui.QPixmap(u':/tools/tools_alert.png'),202 AlertIcon.addPixmap(QtGui.QPixmap(u':/tools/tools_alert.png'),
346 QtGui.QIcon.Normal, QtGui.QIcon.Off)203 QtGui.QIcon.Normal, QtGui.QIcon.Off)
347 self.ToolsAlertItem.setIcon(AlertIcon)204 self.ToolsAlertItem.setIcon(AlertIcon)
348 self.ToolsAlertItem.setObjectName(u'ToolsAlertItem')205 self.ToolsAlertItem.setObjectName(u'ToolsAlertItem')
349 self.HelpDocumentationItem = QtGui.QAction(self.mainWindow)206 self.HelpDocumentationItem = QtGui.QAction(MainWindow)
350 ContentsIcon = QtGui.QIcon()207 ContentsIcon = QtGui.QIcon()
351 ContentsIcon.addPixmap(QtGui.QPixmap(u':/system/system_help_contents.png'),208 ContentsIcon.addPixmap(QtGui.QPixmap(u':/system/system_help_contents.png'),
352 QtGui.QIcon.Normal, QtGui.QIcon.Off)209 QtGui.QIcon.Normal, QtGui.QIcon.Off)
353 self.HelpDocumentationItem.setIcon(ContentsIcon)210 self.HelpDocumentationItem.setIcon(ContentsIcon)
354 self.HelpDocumentationItem.setObjectName(u'HelpDocumentationItem')211 self.HelpDocumentationItem.setObjectName(u'HelpDocumentationItem')
355 self.HelpAboutItem = QtGui.QAction(self.mainWindow)212 self.HelpAboutItem = QtGui.QAction(MainWindow)
356 AboutIcon = QtGui.QIcon()213 AboutIcon = QtGui.QIcon()
357 AboutIcon.addPixmap(QtGui.QPixmap(u':/system/system_about.png'),214 AboutIcon.addPixmap(QtGui.QPixmap(u':/system/system_about.png'),
358 QtGui.QIcon.Normal, QtGui.QIcon.Off)215 QtGui.QIcon.Normal, QtGui.QIcon.Off)
359 self.HelpAboutItem.setIcon(AboutIcon)216 self.HelpAboutItem.setIcon(AboutIcon)
360 self.HelpAboutItem.setObjectName(u'HelpAboutItem')217 self.HelpAboutItem.setObjectName(u'HelpAboutItem')
361 self.HelpOnlineHelpItem = QtGui.QAction(self.mainWindow)218 self.HelpOnlineHelpItem = QtGui.QAction(MainWindow)
362 self.HelpOnlineHelpItem.setObjectName(u'HelpOnlineHelpItem')219 self.HelpOnlineHelpItem.setObjectName(u'HelpOnlineHelpItem')
363 self.HelpWebSiteItem = QtGui.QAction(self.mainWindow)220 self.HelpWebSiteItem = QtGui.QAction(MainWindow)
364 self.HelpWebSiteItem.setObjectName(u'HelpWebSiteItem')221 self.HelpWebSiteItem.setObjectName(u'HelpWebSiteItem')
365 self.LanguageTranslateItem = QtGui.QAction(self.mainWindow)222 self.LanguageTranslateItem = QtGui.QAction(MainWindow)
366 self.LanguageTranslateItem.setObjectName(u'LanguageTranslateItem')223 self.LanguageTranslateItem.setObjectName(u'LanguageTranslateItem')
367 self.LanguageEnglishItem = QtGui.QAction(self.mainWindow)224 self.LanguageEnglishItem = QtGui.QAction(MainWindow)
368 self.LanguageEnglishItem.setObjectName(u'LanguageEnglishItem')225 self.LanguageEnglishItem.setObjectName(u'LanguageEnglishItem')
369 self.ToolsAddToolItem = QtGui.QAction(self.mainWindow)226 self.ToolsAddToolItem = QtGui.QAction(MainWindow)
370 AddToolIcon = QtGui.QIcon()227 AddToolIcon = QtGui.QIcon()
371 AddToolIcon.addPixmap(QtGui.QPixmap(u':/tools/tools_add.png'),228 AddToolIcon.addPixmap(QtGui.QPixmap(u':/tools/tools_add.png'),
372 QtGui.QIcon.Normal, QtGui.QIcon.Off)229 QtGui.QIcon.Normal, QtGui.QIcon.Off)
373 self.ToolsAddToolItem.setIcon(AddToolIcon)230 self.ToolsAddToolItem.setIcon(AddToolIcon)
374 self.ToolsAddToolItem.setObjectName(u'ToolsAddToolItem')231 self.ToolsAddToolItem.setObjectName(u'ToolsAddToolItem')
375 self.action_Preview_Panel = QtGui.QAction(self.mainWindow)232 self.action_Preview_Panel = QtGui.QAction(MainWindow)
376 self.action_Preview_Panel.setCheckable(True)233 self.action_Preview_Panel.setCheckable(True)
377 self.action_Preview_Panel.setChecked(True)234 self.action_Preview_Panel.setChecked(True)
378 self.action_Preview_Panel.setObjectName(u'action_Preview_Panel')235 self.action_Preview_Panel.setObjectName(u'action_Preview_Panel')
379 self.ModeLiveItem = QtGui.QAction(self.mainWindow)236 self.ModeLiveItem = QtGui.QAction(MainWindow)
380 self.ModeLiveItem.setObjectName(u'ModeLiveItem')237 self.ModeLiveItem.setObjectName(u'ModeLiveItem')
381 self.FileImportMenu.addAction(self.ImportThemeItem)238 self.FileImportMenu.addAction(self.ImportThemeItem)
382 self.FileImportMenu.addAction(self.ImportLanguageItem)239 self.FileImportMenu.addAction(self.ImportLanguageItem)
@@ -419,43 +276,20 @@
419 self.MenuBar.addAction(self.ToolsMenu.menuAction())276 self.MenuBar.addAction(self.ToolsMenu.menuAction())
420 self.MenuBar.addAction(self.HelpMenu.menuAction())277 self.MenuBar.addAction(self.HelpMenu.menuAction())
421 # Initialise the translation278 # Initialise the translation
422 self.retranslateUi()279 self.retranslateUi(MainWindow)
423 self.MediaToolBox.setCurrentIndex(0)280 self.MediaToolBox.setCurrentIndex(0)
424 # Connect up some signals and slots281 # Connect up some signals and slots
425 QtCore.QObject.connect(self.FileExitItem,282 QtCore.QObject.connect(self.FileExitItem,
426 QtCore.SIGNAL(u'triggered()'), self.mainWindow.close)283 QtCore.SIGNAL(u'triggered()'), MainWindow.close)
427 QtCore.QObject.connect(self.ImportThemeItem,284 QtCore.QMetaObject.connectSlotsByName(MainWindow)
428 QtCore.SIGNAL(u'triggered()'), self.ThemeManagerContents.onImportTheme)
429 QtCore.QObject.connect(self.ExportThemeItem,
430 QtCore.SIGNAL(u'triggered()'), self.ThemeManagerContents.onExportTheme)
431 QtCore.QObject.connect(self.ViewMediaManagerItem,
432 QtCore.SIGNAL(u'triggered(bool)'), self.MediaManagerDock.setVisible)
433 QtCore.QObject.connect(self.ViewServiceManagerItem,
434 QtCore.SIGNAL(u'triggered(bool)'), self.ServiceManagerDock.setVisible)
435 QtCore.QObject.connect(self.ViewThemeManagerItem,
436 QtCore.SIGNAL(u'triggered(bool)'), self.ThemeManagerDock.setVisible)
437 QtCore.QObject.connect(self.action_Preview_Panel,
438 QtCore.SIGNAL(u'toggled(bool)'), self.PreviewController.Panel.setVisible)
439 QtCore.QObject.connect(self.MediaManagerDock,
440 QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewMediaManagerItem.setChecked)
441 QtCore.QObject.connect(self.ServiceManagerDock,
442 QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewServiceManagerItem.setChecked)
443 QtCore.QObject.connect(self.ThemeManagerDock,
444 QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewThemeManagerItem.setChecked)
445 QtCore.QObject.connect(self.HelpAboutItem,
446 QtCore.SIGNAL(u'triggered()'), self.onHelpAboutItemClicked)
447 QtCore.QObject.connect(self.ToolsAlertItem,
448 QtCore.SIGNAL(u'triggered()'), self.onToolsAlertItemClicked)
449 QtCore.QObject.connect(self.OptionsSettingsItem,
450 QtCore.SIGNAL(u'triggered()'), self.onOptionsSettingsItemClicked)
451 QtCore.QMetaObject.connectSlotsByName(self.mainWindow)
452285
453 def retranslateUi(self):286 def retranslateUi(self, MainWindow):
454 """287 """
455 Set up the translation system288 Set up the translation system
456 """289 """
457 self.mainTitle = translate(u'mainWindow', u'OpenLP 2.0')290 MainWindow.mainTitle = translate(u'mainWindow', u'OpenLP 2.0')
458 self.mainWindow.setWindowTitle(self.mainTitle)291 MainWindow.defaultThemeText = translate(u'mainWindow', 'Default Theme: ')
292 MainWindow.setWindowTitle(MainWindow.mainTitle)
459 self.FileMenu.setTitle(translate(u'mainWindow', u'&File'))293 self.FileMenu.setTitle(translate(u'mainWindow', u'&File'))
460 self.FileImportMenu.setTitle(translate(u'mainWindow', u'&Import'))294 self.FileImportMenu.setTitle(translate(u'mainWindow', u'&Import'))
461 self.FileExportMenu.setTitle(translate(u'mainWindow', u'&Export'))295 self.FileExportMenu.setTitle(translate(u'mainWindow', u'&Export'))
@@ -471,6 +305,8 @@
471 translate(u'mainWindow', u'Service Manager'))305 translate(u'mainWindow', u'Service Manager'))
472 self.ThemeManagerDock.setWindowTitle(306 self.ThemeManagerDock.setWindowTitle(
473 translate(u'mainWindow', u'Theme Manager'))307 translate(u'mainWindow', u'Theme Manager'))
308 self.DefaultThemeLabel.setText(MainWindow.defaultThemeText + \
309 self.ThemeManagerContents.getDefault())
474 self.FileNewItem.setText(translate(u'mainWindow', u'&New'))310 self.FileNewItem.setText(translate(u'mainWindow', u'&New'))
475 self.FileNewItem.setToolTip(translate(u'mainWindow', u'New Service'))311 self.FileNewItem.setToolTip(translate(u'mainWindow', u'New Service'))
476 self.FileNewItem.setStatusTip(312 self.FileNewItem.setStatusTip(
@@ -548,3 +384,198 @@
548 self.action_Preview_Panel.setText(384 self.action_Preview_Panel.setText(
549 translate(u'mainWindow', u'&Preview Pane'))385 translate(u'mainWindow', u'&Preview Pane'))
550 self.ModeLiveItem.setText(translate(u'mainWindow', u'&Live'))386 self.ModeLiveItem.setText(translate(u'mainWindow', u'&Live'))
387
388
389class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
390 """
391 The main window.
392 """
393 global log
394 log = logging.getLogger(u'MainWindow')
395 log.info(u'MainWindow loaded')
396
397 def __init__(self, screens):
398 """
399 This constructor sets up the interface, the various managers, and the
400 plugins.
401 """
402 QtGui.QMainWindow.__init__(self)
403 self.closeEvent = self.onCloseEvent
404 self.screenList = screens
405 self.oosNotSaved = False
406 self.settingsmanager = SettingsManager(screens)
407 self.mainDisplay = MainDisplay(None, screens)
408 self.EventManager = EventManager()
409 self.generalConfig = PluginConfig(u'General')
410 self.alertForm = AlertForm(self)
411 self.aboutForm = AboutForm()
412 self.settingsForm = SettingsForm(self.screenList, self)
413 # Set up the path with plugins
414 pluginpath = os.path.split(os.path.abspath(__file__))[0]
415 pluginpath = os.path.abspath(
416 os.path.join(pluginpath, u'..', u'..', u'plugins'))
417 self.plugin_manager = PluginManager(pluginpath)
418 self.plugin_helpers = {}
419 # Set up the interface
420 self.setupUi(self)
421 # Set up signals and slots
422 QtCore.QObject.connect(self.ImportThemeItem,
423 QtCore.SIGNAL(u'triggered()'), self.ThemeManagerContents.onImportTheme)
424 QtCore.QObject.connect(self.ExportThemeItem,
425 QtCore.SIGNAL(u'triggered()'), self.ThemeManagerContents.onExportTheme)
426 QtCore.QObject.connect(self.ViewMediaManagerItem,
427 QtCore.SIGNAL(u'triggered(bool)'), self.MediaManagerDock.setVisible)
428 QtCore.QObject.connect(self.ViewServiceManagerItem,
429 QtCore.SIGNAL(u'triggered(bool)'), self.ServiceManagerDock.setVisible)
430 QtCore.QObject.connect(self.ViewThemeManagerItem,
431 QtCore.SIGNAL(u'triggered(bool)'), self.ThemeManagerDock.setVisible)
432 QtCore.QObject.connect(self.action_Preview_Panel,
433 QtCore.SIGNAL(u'toggled(bool)'), self.PreviewController.Panel.setVisible)
434 QtCore.QObject.connect(self.MediaManagerDock,
435 QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewMediaManagerItem.setChecked)
436 QtCore.QObject.connect(self.ServiceManagerDock,
437 QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewServiceManagerItem.setChecked)
438 QtCore.QObject.connect(self.ThemeManagerDock,
439 QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewThemeManagerItem.setChecked)
440 QtCore.QObject.connect(self.HelpAboutItem,
441 QtCore.SIGNAL(u'triggered()'), self.onHelpAboutItemClicked)
442 QtCore.QObject.connect(self.ToolsAlertItem,
443 QtCore.SIGNAL(u'triggered()'), self.onToolsAlertItemClicked)
444 QtCore.QObject.connect(self.OptionsSettingsItem,
445 QtCore.SIGNAL(u'triggered()'), self.onOptionsSettingsItemClicked)
446 #warning cyclic dependency
447 #RenderManager needs to call ThemeManager and
448 #ThemeManager needs to call RenderManager
449 self.RenderManager = RenderManager(self.ThemeManagerContents,
450 self.screenList, self.getMonitorNumber())
451 log.info(u'Load Plugins')
452 #make the controllers available to the plugins
453 self.plugin_helpers[u'preview'] = self.PreviewController
454 self.plugin_helpers[u'live'] = self.LiveController
455 self.plugin_helpers[u'event'] = self.EventManager
456 self.plugin_helpers[u'theme'] = self.ThemeManagerContents
457 self.plugin_helpers[u'render'] = self.RenderManager
458 self.plugin_helpers[u'service'] = self.ServiceManagerContents
459 self.plugin_helpers[u'settings'] = self.settingsForm
460 self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers,
461 self.EventManager)
462 # hook methods have to happen after find_plugins. Find plugins needs the
463 # controllers hence the hooks have moved from setupUI() to here
464
465 # Find and insert settings tabs
466 log.info(u'hook settings')
467 self.plugin_manager.hook_settings_tabs(self.settingsForm)
468 # Find and insert media manager items
469 log.info(u'hook media')
470 self.plugin_manager.hook_media_manager(self.MediaToolBox)
471 # Call the hook method to pull in import menus.
472 log.info(u'hook menus')
473 self.plugin_manager.hook_import_menu(self.FileImportMenu)
474 # Call the hook method to pull in export menus.
475 self.plugin_manager.hook_export_menu(self.FileExportMenu)
476 # Call the initialise method to setup plugins.
477 log.info(u'initialise plugins')
478 self.plugin_manager.initialise_plugins()
479 # Once all components are initialised load the Themes
480 log.info(u'Load Themes')
481 self.ThemeManagerContents.loadThemes()
482 # Register the main form as an event consumer.
483 self.EventManager.register(self)
484
485 def getMonitorNumber(self):
486 """
487 Set up the default behaviour of the monitor configuration in
488 here. Currently it is set to default to monitor 0 if the saved
489 monitor number does not exist.
490 """
491 screen_number = int(self.generalConfig.get_config(u'Monitor', 0))
492 if screen_number not in self.screenList:
493 screen_number = 0
494 return screen_number
495
496 def show(self):
497 """
498 Show the main form, as well as the display form
499 """
500 self.showMaximized()
501 screen_number = self.getMonitorNumber()
502 self.mainDisplay.setup(screen_number)
503 self.setFocus()
504
505 def onHelpAboutItemClicked(self):
506 """
507 Show the About form
508 """
509 self.aboutForm.exec_()
510
511 def onToolsAlertItemClicked(self):
512 """
513 Show the Alert form
514 """
515 self.alertForm.exec_()
516
517 def onOptionsSettingsItemClicked(self):
518 """
519 Show the Settings dialog
520 """
521 self.settingsForm.exec_()
522 screen_number = self.getMonitorNumber()
523 self.RenderManager.update_display(screen_number)
524 self.mainDisplay.setup(screen_number)
525
526 def onCloseEvent(self, event):
527 """
528 Hook to close the main window and display windows on exit
529 """
530 if self.oosNotSaved == True:
531 ret = QtGui.QMessageBox.question(None,
532 translate(u'mainWindow', u'Save Changes to Service?'),
533 translate(u'mainWindow', u'Your service has been changed, do you want to save those changes?'),
534 QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Discard | QtGui.QMessageBox.Save),
535 QtGui.QMessageBox.Save)
536 if ret == QtGui.QMessageBox.Save:
537 self.ServiceManagerContents.onSaveService()
538 self.mainDisplay.close()
539 self.cleanUp()
540 event.accept()
541 elif ret == QtGui.QMessageBox.Discard:
542 self.mainDisplay.close()
543 self.cleanUp()
544 event.accept()
545 else:
546 event.ignore()
547 else:
548 self.mainDisplay.close()
549 self.cleanUp()
550 event.accept()
551
552 def cleanUp(self):
553 # Call the cleanup method to shutdown plugins.
554 log.info(u'cleanup plugins')
555 self.plugin_manager.initialise_plugins()
556
557 def OosChanged(self, reset=False, oosName=None):
558 """
559 Hook to change the title if the OOS has been changed
560 reset - tells if the OOS has been cleared or saved
561 oosName - is the name of the OOS (if it has one)
562 """
563 if not oosName:
564 service_name = u'(unsaved service)'
565 else:
566 service_name = oosName
567 if reset == True:
568 self.oosNotSaved = False
569 title = u'%s - %s' % (self.mainTitle, service_name)
570 else:
571 self.oosNotSaved = True
572 title = u'%s - %s*' % (self.mainTitle, service_name)
573 self.setWindowTitle(title)
574
575 def handle_event(self, event):
576 if event.event_type == EventType.ThemeListChanged:
577 themes = self.ThemeManagerContents.getThemes()
578 self.ServiceManagerContents.updateThemeList(themes)
579 self.settingsForm.ThemesTab.updateThemeList(themes)
580 self.DefaultThemeLabel.setText(self.defaultThemeText + \
581 self.ThemeManagerContents.getDefault())
551582
=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py 2009-07-12 20:38:34 +0000
+++ openlp/core/ui/slidecontroller.py 2009-08-09 12:05:54 +0000
@@ -24,9 +24,12 @@
24from openlp.core.lib import OpenLPToolbar, translate, buildIcon24from openlp.core.lib import OpenLPToolbar, translate, buildIcon
2525
26class SlideList(QtGui.QTableWidget):26class SlideList(QtGui.QTableWidget):
2727 """
28 def __init__(self,parent=None,name=None):28 Customised version of QTableWidget which can respond to keyboard
29 QtGui.QTableWidget.__init__(self,parent.Controller)29 events.
30 """
31 def __init__(self, parent=None, name=None):
32 QtGui.QTableWidget.__init__(self, parent.Controller)
30 self.parent = parent33 self.parent = parent
3134
32 def keyPressEvent(self, event):35 def keyPressEvent(self, event):
@@ -56,7 +59,7 @@
56 global log59 global log
57 log = logging.getLogger(u'SlideController')60 log = logging.getLogger(u'SlideController')
5861
59 def __init__(self, parent, isLive=False):62 def __init__(self, parent, isLive=False):
60 """63 """
61 Set up the Slide Controller.64 Set up the Slide Controller.
62 """65 """
6366
=== modified file 'openlp/core/ui/thememanager.py'
--- openlp/core/ui/thememanager.py 2009-08-07 19:05:00 +0000
+++ openlp/core/ui/thememanager.py 2009-08-09 17:58:37 +0000
@@ -28,7 +28,9 @@
2828
29from openlp.core.ui import AmendThemeForm, ServiceManager29from openlp.core.ui import AmendThemeForm, ServiceManager
30from openlp.core.theme import Theme30from openlp.core.theme import Theme
31from openlp.core.lib import PluginConfig, Event, EventType, EventManager, OpenLPToolbar, ThemeXML, Renderer, translate, file_to_xml, buildIcon31from openlp.core.lib import PluginConfig, Event, EventType, \
32 EventManager, OpenLPToolbar, ThemeXML, Renderer, translate, \
33 file_to_xml, buildIcon
32from openlp.core.utils import ConfigHelper34from openlp.core.utils import ConfigHelper
3335
34class ThemeManager(QtGui.QWidget):36class ThemeManager(QtGui.QWidget):
@@ -39,7 +41,7 @@
39 log = logging.getLogger(u'ThemeManager')41 log = logging.getLogger(u'ThemeManager')
4042
41 def __init__(self, parent):43 def __init__(self, parent):
42 QtGui.QWidget.__init__(self)44 QtGui.QWidget.__init__(self, parent)
43 self.parent = parent45 self.parent = parent
44 self.Layout = QtGui.QVBoxLayout(self)46 self.Layout = QtGui.QVBoxLayout(self)
45 self.Layout.setSpacing(0)47 self.Layout.setSpacing(0)
@@ -81,6 +83,9 @@
81 self.servicePath = self.config.get_data_path()83 self.servicePath = self.config.get_data_path()
82 self.global_theme = unicode(self.config.get_config(u'theme global theme', u''))84 self.global_theme = unicode(self.config.get_config(u'theme global theme', u''))
8385
86 def getDefault(self):
87 return self.global_theme
88
84 def changeGlobal(self, index):89 def changeGlobal(self, index):
85 for count in range (0, self.ThemeListWidget.count()):90 for count in range (0, self.ThemeListWidget.count()):
86 item = self.ThemeListWidget.item(count)91 item = self.ThemeListWidget.item(count)
@@ -91,10 +96,10 @@
91 #Set the new name96 #Set the new name
92 if count == index.row():97 if count == index.row():
93 self.global_theme = unicode(self.ThemeListWidget.item(count).text())98 self.global_theme = unicode(self.ThemeListWidget.item(count).text())
94 name = (u'(%s):%s' % (translate(u'ThemeManager', u'default'), self.global_theme))99 name = u'%s (%s)' % (self.global_theme, translate(u'ThemeManager', u'default'))
95 self.ThemeListWidget.item(count).setText(name)100 self.ThemeListWidget.item(count).setText(name)
96 self.config.set_config(u'theme global theme', self.global_theme)101 self.config.set_config(u'theme global theme', self.global_theme)
97 self.push_themes()102 self.pushThemes()
98103
99 def onAddTheme(self):104 def onAddTheme(self):
100 self.amendThemeForm.loadTheme(None)105 self.amendThemeForm.loadTheme(None)
@@ -134,7 +139,7 @@
134 pass139 pass
135 #As we do not reload the themes push out the change140 #As we do not reload the themes push out the change
136 #Reaload the list as the internal lists and events need to be triggered141 #Reaload the list as the internal lists and events need to be triggered
137 self.push_themes()142 self.pushThemes()
138143
139 def onExportTheme(self):144 def onExportTheme(self):
140 pass145 pass
@@ -168,7 +173,7 @@
168 (path, filename) = os.path.split(unicode(file))173 (path, filename) = os.path.split(unicode(file))
169 textName = os.path.splitext(name)[0]174 textName = os.path.splitext(name)[0]
170 if textName == self.global_theme:175 if textName == self.global_theme:
171 name = (u'(%s):%s' % (translate(u'ThemeManager', u'default'), textName))176 name = u'%s (%s)' % (textName, translate(u'ThemeManager', u'default'))
172 else:177 else:
173 name = textName178 name = textName
174 item_name = QtGui.QListWidgetItem(name)179 item_name = QtGui.QListWidgetItem(name)
@@ -176,12 +181,10 @@
176 item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(textName))181 item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(textName))
177 self.ThemeListWidget.addItem(item_name)182 self.ThemeListWidget.addItem(item_name)
178 self.themelist.append(textName)183 self.themelist.append(textName)
179 self.push_themes()184 self.pushThemes()
180185
181 def push_themes(self):186 def pushThemes(self):
182 self.parent.EventManager.post_event(Event(EventType.ThemeListChanged))187 self.parent.EventManager.post_event(Event(EventType.ThemeListChanged))
183 self.parent.ServiceManagerContents.updateThemeList(self.getThemes())
184 self.parent.settingsForm.ThemesTab.updateThemeList(self.getThemes())
185188
186 def getThemes(self):189 def getThemes(self):
187 return self.themelist190 return self.themelist
188191
=== modified file 'openlp/plugins/images/lib/imageslidecontroller.py'
--- openlp/plugins/images/lib/imageslidecontroller.py 2009-07-06 16:34:13 +0000
+++ openlp/plugins/images/lib/imageslidecontroller.py 2009-08-09 17:58:37 +0000
@@ -93,7 +93,7 @@
93 Go to the last slide.93 Go to the last slide.
94 """94 """
95 if self.PreviewListWidget.rowCount() > 1:95 if self.PreviewListWidget.rowCount() > 1:
96 self.timer_id = self.startTimer(int(self.TimeoutSpinBox.value()) * 1000)96 self.timer_id = self.startTimer(int(self.TimeoutSpinBox.value()) * 1000)
9797
98 def onStopLoop(self):98 def onStopLoop(self):
99 """99 """