Merge lp:~raoul-snyman/openlp/bugfixes into lp:openlp
- bugfixes
- Merge into trunk
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Tim Bentley | Approve | ||
Review via email: mp+9940@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Raoul Snyman (raoul-snyman) wrote : | # |
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
1 | === modified file 'openlp.pyw' | |||
2 | --- openlp.pyw 2009-07-08 06:55:08 +0000 | |||
3 | +++ openlp.pyw 2009-08-09 17:58:37 +0000 | |||
4 | @@ -71,7 +71,7 @@ | |||
5 | 71 | self.mainWindow = MainWindow(screens) | 71 | self.mainWindow = MainWindow(screens) |
6 | 72 | self.mainWindow.show() | 72 | self.mainWindow.show() |
7 | 73 | # now kill the splashscreen | 73 | # now kill the splashscreen |
9 | 74 | self.splash.finish(self.mainWindow.mainWindow) | 74 | self.splash.finish(self.mainWindow) |
10 | 75 | sys.exit(app.exec_()) | 75 | sys.exit(app.exec_()) |
11 | 76 | 76 | ||
12 | 77 | if __name__ == u'__main__': | 77 | if __name__ == u'__main__': |
13 | 78 | 78 | ||
14 | === modified file 'openlp/core/lib/event.py' | |||
15 | --- openlp/core/lib/event.py 2009-07-10 15:45:17 +0000 | |||
16 | +++ openlp/core/lib/event.py 2009-08-09 17:58:37 +0000 | |||
17 | @@ -28,6 +28,7 @@ | |||
18 | 28 | # "Default" event - a non-event | 28 | # "Default" event - a non-event |
19 | 29 | Default = 0 | 29 | Default = 0 |
20 | 30 | # General application events | 30 | # General application events |
21 | 31 | Ready = 10 | ||
22 | 31 | # Service events | 32 | # Service events |
23 | 32 | LoadServiceItem = 20 | 33 | LoadServiceItem = 20 |
24 | 33 | # Preview events | 34 | # Preview events |
25 | @@ -43,6 +44,7 @@ | |||
26 | 43 | """ | 44 | """ |
27 | 44 | Provides an Event class to encapsulate events within openlp.org. | 45 | Provides an Event class to encapsulate events within openlp.org. |
28 | 45 | """ | 46 | """ |
30 | 46 | def __init__(self, event_type=EventType.Default, payload=None): | 47 | def __init__(self, event_type=EventType.Default, payload=None, sender=None): |
31 | 47 | self.event_type = event_type | 48 | self.event_type = event_type |
32 | 48 | self.payload = payload | 49 | self.payload = payload |
33 | 50 | self.sender = sender | ||
34 | 49 | 51 | ||
35 | === modified file 'openlp/core/lib/eventmanager.py' | |||
36 | --- openlp/core/lib/eventmanager.py 2009-07-11 05:18:34 +0000 | |||
37 | +++ openlp/core/lib/eventmanager.py 2009-08-09 17:58:37 +0000 | |||
38 | @@ -25,10 +25,10 @@ | |||
39 | 25 | 25 | ||
40 | 26 | class EventManager(object): | 26 | class EventManager(object): |
41 | 27 | """ | 27 | """ |
46 | 28 | A mechanism to send events to all registered endpoints | 28 | A mechanism to send events to all registered endpoints. The |
47 | 29 | the endpoints are registered and listen with a handle_event method | 29 | endpoints are registered and listen with a handle_event method. |
48 | 30 | the endpoint will decide whether to do somthing with the event or ignore it | 30 | The endpoint will decide whether to do somthing with the event or |
49 | 31 | 31 | ignore it. | |
50 | 32 | """ | 32 | """ |
51 | 33 | global log | 33 | global log |
52 | 34 | log = logging.getLogger(u'EventManager') | 34 | log = logging.getLogger(u'EventManager') |
53 | 35 | 35 | ||
54 | === modified file 'openlp/core/ui/maindisplay.py' | |||
55 | --- openlp/core/ui/maindisplay.py 2009-08-06 21:30:14 +0000 | |||
56 | +++ openlp/core/ui/maindisplay.py 2009-08-09 12:05:54 +0000 | |||
57 | @@ -60,10 +60,6 @@ | |||
58 | 60 | Sets up the screen on a particular screen. | 60 | Sets up the screen on a particular screen. |
59 | 61 | @param (integer) screen This is the screen number. | 61 | @param (integer) screen This is the screen number. |
60 | 62 | """ | 62 | """ |
61 | 63 | # Temporary fix until I can speak to Tim Bentley. | ||
62 | 64 | if screenNumber not in self.screens: | ||
63 | 65 | screenNumber = 0 | ||
64 | 66 | # /Temporary fix | ||
65 | 67 | screen = self.screens[screenNumber] | 63 | screen = self.screens[screenNumber] |
66 | 68 | if screen[u'number'] != screenNumber: | 64 | if screen[u'number'] != screenNumber: |
67 | 69 | # We will most probably never actually hit this bit, but just in | 65 | # We will most probably never actually hit this bit, but just in |
68 | @@ -79,20 +75,23 @@ | |||
69 | 79 | else: | 75 | else: |
70 | 80 | self.showMinimized() | 76 | self.showMinimized() |
71 | 81 | #Build a custom splash screen | 77 | #Build a custom splash screen |
74 | 82 | self.InitialFrame = QtGui.QImage(screen[u'size'].width(), | 78 | self.InitialFrame = QtGui.QImage( |
75 | 83 | screen[u'size'].height(), QtGui.QImage.Format_ARGB32_Premultiplied) | 79 | screen[u'size'].width(), screen[u'size'].height(), |
76 | 80 | QtGui.QImage.Format_ARGB32_Premultiplied) | ||
77 | 84 | splash_image = QtGui.QImage(u':/graphics/openlp-splash-screen.png') | 81 | splash_image = QtGui.QImage(u':/graphics/openlp-splash-screen.png') |
78 | 85 | painter_image = QtGui.QPainter() | 82 | painter_image = QtGui.QPainter() |
79 | 86 | painter_image.begin(self.InitialFrame) | 83 | painter_image.begin(self.InitialFrame) |
80 | 87 | painter_image.fillRect(self.InitialFrame.rect(), QtCore.Qt.white) | 84 | painter_image.fillRect(self.InitialFrame.rect(), QtCore.Qt.white) |
84 | 88 | painter_image.drawImage((screen[u'size'].width() - splash_image.width()) / 2, | 85 | painter_image.drawImage( |
85 | 89 | (screen[u'size'].height() - splash_image.height()) / 2, | 86 | (screen[u'size'].width() - splash_image.width()) / 2, |
86 | 90 | splash_image) | 87 | (screen[u'size'].height() - splash_image.height()) / 2, |
87 | 88 | splash_image) | ||
88 | 91 | self.frameView(self.InitialFrame) | 89 | self.frameView(self.InitialFrame) |
89 | 92 | #Build a Black screen | 90 | #Build a Black screen |
90 | 93 | painter = QtGui.QPainter() | 91 | painter = QtGui.QPainter() |
93 | 94 | self.blankFrame = QtGui.QImage(screen[u'size'].width(), | 92 | self.blankFrame = QtGui.QImage( |
94 | 95 | screen[u'size'].height(), QtGui.QImage.Format_ARGB32_Premultiplied) | 93 | screen[u'size'].width(), screen[u'size'].height(), |
95 | 94 | QtGui.QImage.Format_ARGB32_Premultiplied) | ||
96 | 96 | painter.begin(self.blankFrame) | 95 | painter.begin(self.blankFrame) |
97 | 97 | painter.fillRect(self.blankFrame.rect(), QtCore.Qt.black) | 96 | painter.fillRect(self.blankFrame.rect(), QtCore.Qt.black) |
98 | 98 | 97 | ||
99 | 99 | 98 | ||
100 | === modified file 'openlp/core/ui/mainwindow.py' | |||
101 | --- openlp/core/ui/mainwindow.py 2009-08-06 21:30:14 +0000 | |||
102 | +++ openlp/core/ui/mainwindow.py 2009-08-09 17:58:37 +0000 | |||
103 | @@ -22,178 +22,32 @@ | |||
104 | 22 | 22 | ||
105 | 23 | from PyQt4 import QtCore, QtGui | 23 | from PyQt4 import QtCore, QtGui |
106 | 24 | 24 | ||
261 | 25 | from openlp.core.ui import AboutForm, SettingsForm, AlertForm, ServiceManager, \ | 25 | from openlp.core.ui import AboutForm, SettingsForm, AlertForm, \ |
262 | 26 | ThemeManager, MainDisplay, SlideController | 26 | ServiceManager, ThemeManager, MainDisplay, SlideController |
263 | 27 | from openlp.core.lib import translate, Plugin, MediaManagerItem, SettingsTab, \ | 27 | from openlp.core.lib import translate, Plugin, MediaManagerItem, \ |
264 | 28 | EventManager, RenderManager, PluginConfig, SettingsManager, PluginManager | 28 | SettingsTab, EventManager, RenderManager, PluginConfig, \ |
265 | 29 | 29 | SettingsManager, PluginManager, EventType | |
266 | 30 | class MainWindow(object): | 30 | |
267 | 31 | """ | 31 | class Ui_MainWindow(object): |
268 | 32 | The main window. | 32 | def setupUi(self, MainWindow): |
115 | 33 | """ | ||
116 | 34 | global log | ||
117 | 35 | log = logging.getLogger(u'MainWindow') | ||
118 | 36 | log.info(u'MainWindow loaded') | ||
119 | 37 | |||
120 | 38 | def __init__(self, screens): | ||
121 | 39 | """ | ||
122 | 40 | This constructor sets up the interface, the various managers, and the | ||
123 | 41 | plugins. | ||
124 | 42 | """ | ||
125 | 43 | self.oosNotSaved = False | ||
126 | 44 | self.settingsmanager = SettingsManager(screens) | ||
127 | 45 | self.mainWindow = QtGui.QMainWindow() | ||
128 | 46 | self.mainWindow.__class__.closeEvent = self.onCloseEvent | ||
129 | 47 | self.mainDisplay = MainDisplay(None, screens) | ||
130 | 48 | self.screenList = screens | ||
131 | 49 | self.EventManager = EventManager() | ||
132 | 50 | self.generalConfig = PluginConfig(u'General') | ||
133 | 51 | self.alertForm = AlertForm(self) | ||
134 | 52 | self.aboutForm = AboutForm() | ||
135 | 53 | self.settingsForm = SettingsForm(self.screenList, self) | ||
136 | 54 | # Set up the path with plugins | ||
137 | 55 | pluginpath = os.path.split(os.path.abspath(__file__))[0] | ||
138 | 56 | pluginpath = os.path.abspath( | ||
139 | 57 | os.path.join(pluginpath, u'..', u'..', u'plugins')) | ||
140 | 58 | self.plugin_manager = PluginManager(pluginpath) | ||
141 | 59 | self.plugin_helpers = {} | ||
142 | 60 | # Set up the interface | ||
143 | 61 | self.setupUi() | ||
144 | 62 | #warning cyclic dependency | ||
145 | 63 | #RenderManager needs to call ThemeManager and | ||
146 | 64 | #ThemeManager needs to call RenderManager | ||
147 | 65 | self.RenderManager = RenderManager(self.ThemeManagerContents, | ||
148 | 66 | self.screenList, int(self.generalConfig.get_config(u'Monitor', 0))) | ||
149 | 67 | log.info(u'Load Plugins') | ||
150 | 68 | #make the controllers available to the plugins | ||
151 | 69 | self.plugin_helpers[u'preview'] = self.PreviewController | ||
152 | 70 | self.plugin_helpers[u'live'] = self.LiveController | ||
153 | 71 | self.plugin_helpers[u'event'] = self.EventManager | ||
154 | 72 | self.plugin_helpers[u'theme'] = self.ThemeManagerContents | ||
155 | 73 | self.plugin_helpers[u'render'] = self.RenderManager | ||
156 | 74 | self.plugin_helpers[u'service'] = self.ServiceManagerContents | ||
157 | 75 | self.plugin_helpers[u'settings'] = self.settingsForm | ||
158 | 76 | self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers, | ||
159 | 77 | self.EventManager) | ||
160 | 78 | # hook methods have to happen after find_plugins. Find plugins needs the | ||
161 | 79 | # controllers hence the hooks have moved from setupUI() to here | ||
162 | 80 | |||
163 | 81 | # Find and insert settings tabs | ||
164 | 82 | log.info(u'hook settings') | ||
165 | 83 | self.plugin_manager.hook_settings_tabs(self.settingsForm) | ||
166 | 84 | # Find and insert media manager items | ||
167 | 85 | log.info(u'hook media') | ||
168 | 86 | self.plugin_manager.hook_media_manager(self.MediaToolBox) | ||
169 | 87 | # Call the hook method to pull in import menus. | ||
170 | 88 | log.info(u'hook menus') | ||
171 | 89 | self.plugin_manager.hook_import_menu(self.FileImportMenu) | ||
172 | 90 | # Call the hook method to pull in export menus. | ||
173 | 91 | self.plugin_manager.hook_export_menu(self.FileExportMenu) | ||
174 | 92 | # Call the initialise method to setup plugins. | ||
175 | 93 | log.info(u'initialise plugins') | ||
176 | 94 | self.plugin_manager.initialise_plugins() | ||
177 | 95 | # Once all components are initialised load the Themes | ||
178 | 96 | log.info(u'Load Themes') | ||
179 | 97 | self.ThemeManagerContents.loadThemes() | ||
180 | 98 | |||
181 | 99 | def show(self): | ||
182 | 100 | """ | ||
183 | 101 | Show the main form, as well as the display form | ||
184 | 102 | """ | ||
185 | 103 | self.mainWindow.showMaximized() | ||
186 | 104 | self.mainDisplay.setup(self.settingsForm.GeneralTab.MonitorNumber) | ||
187 | 105 | |||
188 | 106 | def onHelpAboutItemClicked(self): | ||
189 | 107 | """ | ||
190 | 108 | Show the About form | ||
191 | 109 | """ | ||
192 | 110 | self.aboutForm.exec_() | ||
193 | 111 | |||
194 | 112 | def onToolsAlertItemClicked(self): | ||
195 | 113 | """ | ||
196 | 114 | Show the Alert form | ||
197 | 115 | """ | ||
198 | 116 | self.alertForm.exec_() | ||
199 | 117 | |||
200 | 118 | def onOptionsSettingsItemClicked(self): | ||
201 | 119 | """ | ||
202 | 120 | Show the Settings dialog | ||
203 | 121 | """ | ||
204 | 122 | self.settingsForm.exec_() | ||
205 | 123 | screen_number = int(self.generalConfig.get_config(u'Monitor', 0)) | ||
206 | 124 | self.RenderManager.update_display(screen_number) | ||
207 | 125 | self.mainDisplay.setup(screen_number) | ||
208 | 126 | |||
209 | 127 | def onCloseEvent(self, event): | ||
210 | 128 | """ | ||
211 | 129 | Hook to close the main window and display windows on exit | ||
212 | 130 | """ | ||
213 | 131 | if self.oosNotSaved == True: | ||
214 | 132 | ret = QtGui.QMessageBox.question(None, | ||
215 | 133 | translate(u'mainWindow', u'Save Changes to Service?'), | ||
216 | 134 | translate(u'mainWindow', u'Your service has been changed, do you want to save those changes?'), | ||
217 | 135 | QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Discard | QtGui.QMessageBox.Save), | ||
218 | 136 | QtGui.QMessageBox.Save) | ||
219 | 137 | if ret == QtGui.QMessageBox.Save: | ||
220 | 138 | self.ServiceManagerContents.onSaveService() | ||
221 | 139 | self.mainDisplay.close() | ||
222 | 140 | self.cleanUp() | ||
223 | 141 | event.accept() | ||
224 | 142 | elif ret == QtGui.QMessageBox.Discard: | ||
225 | 143 | self.mainDisplay.close() | ||
226 | 144 | self.cleanUp() | ||
227 | 145 | event.accept() | ||
228 | 146 | else: | ||
229 | 147 | event.ignore() | ||
230 | 148 | else: | ||
231 | 149 | self.mainDisplay.close() | ||
232 | 150 | self.cleanUp() | ||
233 | 151 | event.accept() | ||
234 | 152 | |||
235 | 153 | def cleanUp(self): | ||
236 | 154 | # Call the cleanup method to shutdown plugins. | ||
237 | 155 | log.info(u'cleanup plugins') | ||
238 | 156 | self.plugin_manager.initialise_plugins() | ||
239 | 157 | |||
240 | 158 | def OosChanged(self, reset = False, oosName = None): | ||
241 | 159 | """ | ||
242 | 160 | Hook to change the title if the OOS has been changed | ||
243 | 161 | reset - tells if the OOS has been cleared or saved | ||
244 | 162 | oosName - is the name of the OOS (if it has one) | ||
245 | 163 | """ | ||
246 | 164 | if reset == True: | ||
247 | 165 | self.oosNotSaved = False | ||
248 | 166 | if oosName is None: | ||
249 | 167 | title = self.mainTitle | ||
250 | 168 | else: | ||
251 | 169 | title = self.mainTitle + u' - (' + oosName + u')' | ||
252 | 170 | else: | ||
253 | 171 | self.oosNotSaved = True | ||
254 | 172 | if oosName is None: | ||
255 | 173 | title = self.mainTitle + u' - *' | ||
256 | 174 | else: | ||
257 | 175 | title = self.mainTitle + u' - *(' + oosName + u')' | ||
258 | 176 | self.mainWindow.setWindowTitle(title) | ||
259 | 177 | |||
260 | 178 | def setupUi(self): | ||
269 | 179 | """ | 33 | """ |
270 | 180 | Set up the user interface | 34 | Set up the user interface |
271 | 181 | """ | 35 | """ |
274 | 182 | self.mainWindow.setObjectName(u'mainWindow') | 36 | MainWindow.setObjectName(u'MainWindow') |
275 | 183 | self.mainWindow.resize(self.settingsmanager.width, self.settingsmanager.height) | 37 | MainWindow.resize(self.settingsmanager.width, self.settingsmanager.height) |
276 | 184 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, | 38 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, |
277 | 185 | QtGui.QSizePolicy.Expanding) | 39 | QtGui.QSizePolicy.Expanding) |
278 | 186 | sizePolicy.setHorizontalStretch(0) | 40 | sizePolicy.setHorizontalStretch(0) |
279 | 187 | sizePolicy.setVerticalStretch(0) | 41 | sizePolicy.setVerticalStretch(0) |
280 | 188 | sizePolicy.setHeightForWidth( | 42 | sizePolicy.setHeightForWidth( |
283 | 189 | self.mainWindow.sizePolicy().hasHeightForWidth()) | 43 | MainWindow.sizePolicy().hasHeightForWidth()) |
284 | 190 | self.mainWindow.setSizePolicy(sizePolicy) | 44 | MainWindow.setSizePolicy(sizePolicy) |
285 | 191 | main_icon = QtGui.QIcon() | 45 | main_icon = QtGui.QIcon() |
286 | 192 | main_icon.addPixmap(QtGui.QPixmap(u':/icon/openlp-logo-16x16.png'), | 46 | main_icon.addPixmap(QtGui.QPixmap(u':/icon/openlp-logo-16x16.png'), |
287 | 193 | QtGui.QIcon.Normal, QtGui.QIcon.Off) | 47 | QtGui.QIcon.Normal, QtGui.QIcon.Off) |
289 | 194 | self.mainWindow.setWindowIcon(main_icon) | 48 | MainWindow.setWindowIcon(main_icon) |
290 | 195 | # Set up the main container, which contains all the other form widgets | 49 | # Set up the main container, which contains all the other form widgets |
292 | 196 | self.MainContent = QtGui.QWidget(self.mainWindow) | 50 | self.MainContent = QtGui.QWidget(MainWindow) |
293 | 197 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, | 51 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, |
294 | 198 | QtGui.QSizePolicy.Expanding) | 52 | QtGui.QSizePolicy.Expanding) |
295 | 199 | sizePolicy.setHorizontalStretch(0) | 53 | sizePolicy.setHorizontalStretch(0) |
296 | @@ -206,7 +60,7 @@ | |||
297 | 206 | self.MainContentLayout.setSpacing(0) | 60 | self.MainContentLayout.setSpacing(0) |
298 | 207 | self.MainContentLayout.setMargin(0) | 61 | self.MainContentLayout.setMargin(0) |
299 | 208 | self.MainContentLayout.setObjectName(u'MainContentLayout') | 62 | self.MainContentLayout.setObjectName(u'MainContentLayout') |
301 | 209 | self.mainWindow.setCentralWidget(self.MainContent) | 63 | MainWindow.setCentralWidget(self.MainContent) |
302 | 210 | self.ControlSplitter = QtGui.QSplitter(self.MainContent) | 64 | self.ControlSplitter = QtGui.QSplitter(self.MainContent) |
303 | 211 | self.ControlSplitter.setOrientation(QtCore.Qt.Horizontal) | 65 | self.ControlSplitter.setOrientation(QtCore.Qt.Horizontal) |
304 | 212 | self.ControlSplitter.setObjectName(u'ControlSplitter') | 66 | self.ControlSplitter.setObjectName(u'ControlSplitter') |
305 | @@ -215,7 +69,7 @@ | |||
306 | 215 | self.PreviewController = SlideController(self) | 69 | self.PreviewController = SlideController(self) |
307 | 216 | self.LiveController = SlideController(self, True) | 70 | self.LiveController = SlideController(self, True) |
308 | 217 | # Create menu | 71 | # Create menu |
310 | 218 | self.MenuBar = QtGui.QMenuBar(self.mainWindow) | 72 | self.MenuBar = QtGui.QMenuBar(MainWindow) |
311 | 219 | self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27)) | 73 | self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27)) |
312 | 220 | self.MenuBar.setObjectName(u'MenuBar') | 74 | self.MenuBar.setObjectName(u'MenuBar') |
313 | 221 | self.FileMenu = QtGui.QMenu(self.MenuBar) | 75 | self.FileMenu = QtGui.QMenu(self.MenuBar) |
314 | @@ -236,12 +90,15 @@ | |||
315 | 236 | self.ToolsMenu.setObjectName(u'ToolsMenu') | 90 | self.ToolsMenu.setObjectName(u'ToolsMenu') |
316 | 237 | self.HelpMenu = QtGui.QMenu(self.MenuBar) | 91 | self.HelpMenu = QtGui.QMenu(self.MenuBar) |
317 | 238 | self.HelpMenu.setObjectName(u'HelpMenu') | 92 | self.HelpMenu.setObjectName(u'HelpMenu') |
320 | 239 | self.mainWindow.setMenuBar(self.MenuBar) | 93 | MainWindow.setMenuBar(self.MenuBar) |
321 | 240 | self.StatusBar = QtGui.QStatusBar(self.mainWindow) | 94 | self.StatusBar = QtGui.QStatusBar(MainWindow) |
322 | 241 | self.StatusBar.setObjectName(u'StatusBar') | 95 | self.StatusBar.setObjectName(u'StatusBar') |
324 | 242 | self.mainWindow.setStatusBar(self.StatusBar) | 96 | MainWindow.setStatusBar(self.StatusBar) |
325 | 97 | self.DefaultThemeLabel = QtGui.QLabel(self.StatusBar) | ||
326 | 98 | self.DefaultThemeLabel.setObjectName(u'DefaultThemeLabel') | ||
327 | 99 | self.StatusBar.addPermanentWidget(self.DefaultThemeLabel) | ||
328 | 243 | # Create the MediaManager | 100 | # Create the MediaManager |
330 | 244 | self.MediaManagerDock = QtGui.QDockWidget(self.mainWindow) | 101 | self.MediaManagerDock = QtGui.QDockWidget(MainWindow) |
331 | 245 | icon = QtGui.QIcon() | 102 | icon = QtGui.QIcon() |
332 | 246 | icon.addPixmap(QtGui.QPixmap(u':/system/system_mediamanager.png'), | 103 | icon.addPixmap(QtGui.QPixmap(u':/system/system_mediamanager.png'), |
333 | 247 | QtGui.QIcon.Normal, QtGui.QIcon.Off) | 104 | QtGui.QIcon.Normal, QtGui.QIcon.Off) |
334 | @@ -258,10 +115,10 @@ | |||
335 | 258 | self.MediaToolBox.setObjectName(u'MediaToolBox') | 115 | self.MediaToolBox.setObjectName(u'MediaToolBox') |
336 | 259 | self.MediaManagerLayout.addWidget(self.MediaToolBox) | 116 | self.MediaManagerLayout.addWidget(self.MediaToolBox) |
337 | 260 | self.MediaManagerDock.setWidget(self.MediaManagerContents) | 117 | self.MediaManagerDock.setWidget(self.MediaManagerContents) |
339 | 261 | self.mainWindow.addDockWidget( | 118 | MainWindow.addDockWidget( |
340 | 262 | QtCore.Qt.DockWidgetArea(1), self.MediaManagerDock) | 119 | QtCore.Qt.DockWidgetArea(1), self.MediaManagerDock) |
341 | 263 | # Create the service manager | 120 | # Create the service manager |
343 | 264 | self.ServiceManagerDock = QtGui.QDockWidget(self.mainWindow) | 121 | self.ServiceManagerDock = QtGui.QDockWidget(MainWindow) |
344 | 265 | ServiceManagerIcon = QtGui.QIcon() | 122 | ServiceManagerIcon = QtGui.QIcon() |
345 | 266 | ServiceManagerIcon.addPixmap( | 123 | ServiceManagerIcon.addPixmap( |
346 | 267 | QtGui.QPixmap(u':/system/system_servicemanager.png'), | 124 | QtGui.QPixmap(u':/system/system_servicemanager.png'), |
347 | @@ -273,10 +130,10 @@ | |||
348 | 273 | self.ServiceManagerDock.setMinimumWidth(300) | 130 | self.ServiceManagerDock.setMinimumWidth(300) |
349 | 274 | self.ServiceManagerContents = ServiceManager(self) | 131 | self.ServiceManagerContents = ServiceManager(self) |
350 | 275 | self.ServiceManagerDock.setWidget(self.ServiceManagerContents) | 132 | self.ServiceManagerDock.setWidget(self.ServiceManagerContents) |
352 | 276 | self.mainWindow.addDockWidget( | 133 | MainWindow.addDockWidget( |
353 | 277 | QtCore.Qt.DockWidgetArea(2), self.ServiceManagerDock) | 134 | QtCore.Qt.DockWidgetArea(2), self.ServiceManagerDock) |
354 | 278 | # Create the theme manager | 135 | # Create the theme manager |
356 | 279 | self.ThemeManagerDock = QtGui.QDockWidget(self.mainWindow) | 136 | self.ThemeManagerDock = QtGui.QDockWidget(MainWindow) |
357 | 280 | ThemeManagerIcon = QtGui.QIcon() | 137 | ThemeManagerIcon = QtGui.QIcon() |
358 | 281 | ThemeManagerIcon.addPixmap( | 138 | ThemeManagerIcon.addPixmap( |
359 | 282 | QtGui.QPixmap(u':/system/system_thememanager.png'), | 139 | QtGui.QPixmap(u':/system/system_thememanager.png'), |
360 | @@ -286,97 +143,97 @@ | |||
361 | 286 | self.ThemeManagerDock.setObjectName(u'ThemeManagerDock') | 143 | self.ThemeManagerDock.setObjectName(u'ThemeManagerDock') |
362 | 287 | self.ThemeManagerContents = ThemeManager(self) | 144 | self.ThemeManagerContents = ThemeManager(self) |
363 | 288 | self.ThemeManagerDock.setWidget(self.ThemeManagerContents) | 145 | self.ThemeManagerDock.setWidget(self.ThemeManagerContents) |
365 | 289 | self.mainWindow.addDockWidget( | 146 | MainWindow.addDockWidget( |
366 | 290 | QtCore.Qt.DockWidgetArea(2), self.ThemeManagerDock) | 147 | QtCore.Qt.DockWidgetArea(2), self.ThemeManagerDock) |
367 | 291 | # Create the menu items | 148 | # Create the menu items |
369 | 292 | self.FileNewItem = QtGui.QAction(self.mainWindow) | 149 | self.FileNewItem = QtGui.QAction(MainWindow) |
370 | 293 | self.FileNewItem.setIcon( | 150 | self.FileNewItem.setIcon( |
371 | 294 | self.ServiceManagerContents.Toolbar.getIconFromTitle(u'New Service')) | 151 | self.ServiceManagerContents.Toolbar.getIconFromTitle(u'New Service')) |
372 | 295 | self.FileNewItem.setObjectName(u'FileNewItem') | 152 | self.FileNewItem.setObjectName(u'FileNewItem') |
374 | 296 | self.FileOpenItem = QtGui.QAction(self.mainWindow) | 153 | self.FileOpenItem = QtGui.QAction(MainWindow) |
375 | 297 | self.FileOpenItem.setIcon( | 154 | self.FileOpenItem.setIcon( |
376 | 298 | self.ServiceManagerContents.Toolbar.getIconFromTitle(u'Open Service')) | 155 | self.ServiceManagerContents.Toolbar.getIconFromTitle(u'Open Service')) |
377 | 299 | self.FileOpenItem.setObjectName(u'FileOpenItem') | 156 | self.FileOpenItem.setObjectName(u'FileOpenItem') |
379 | 300 | self.FileSaveItem = QtGui.QAction(self.mainWindow) | 157 | self.FileSaveItem = QtGui.QAction(MainWindow) |
380 | 301 | self.FileSaveItem.setIcon( | 158 | self.FileSaveItem.setIcon( |
381 | 302 | self.ServiceManagerContents.Toolbar.getIconFromTitle(u'Save Service')) | 159 | self.ServiceManagerContents.Toolbar.getIconFromTitle(u'Save Service')) |
382 | 303 | self.FileSaveItem.setObjectName(u'FileSaveItem') | 160 | self.FileSaveItem.setObjectName(u'FileSaveItem') |
384 | 304 | self.FileSaveAsItem = QtGui.QAction(self.mainWindow) | 161 | self.FileSaveAsItem = QtGui.QAction(MainWindow) |
385 | 305 | self.FileSaveAsItem.setObjectName(u'FileSaveAsItem') | 162 | self.FileSaveAsItem.setObjectName(u'FileSaveAsItem') |
387 | 306 | self.FileExitItem = QtGui.QAction(self.mainWindow) | 163 | self.FileExitItem = QtGui.QAction(MainWindow) |
388 | 307 | ExitIcon = QtGui.QIcon() | 164 | ExitIcon = QtGui.QIcon() |
389 | 308 | ExitIcon.addPixmap(QtGui.QPixmap(u':/system/system_exit.png'), | 165 | ExitIcon.addPixmap(QtGui.QPixmap(u':/system/system_exit.png'), |
390 | 309 | QtGui.QIcon.Normal, QtGui.QIcon.Off) | 166 | QtGui.QIcon.Normal, QtGui.QIcon.Off) |
391 | 310 | self.FileExitItem.setIcon(ExitIcon) | 167 | self.FileExitItem.setIcon(ExitIcon) |
392 | 311 | self.FileExitItem.setObjectName(u'FileExitItem') | 168 | self.FileExitItem.setObjectName(u'FileExitItem') |
394 | 312 | self.ImportThemeItem = QtGui.QAction(self.mainWindow) | 169 | self.ImportThemeItem = QtGui.QAction(MainWindow) |
395 | 313 | self.ImportThemeItem.setObjectName(u'ImportThemeItem') | 170 | self.ImportThemeItem.setObjectName(u'ImportThemeItem') |
397 | 314 | self.ImportLanguageItem = QtGui.QAction(self.mainWindow) | 171 | self.ImportLanguageItem = QtGui.QAction(MainWindow) |
398 | 315 | self.ImportLanguageItem.setObjectName(u'ImportLanguageItem') | 172 | self.ImportLanguageItem.setObjectName(u'ImportLanguageItem') |
400 | 316 | self.ExportThemeItem = QtGui.QAction(self.mainWindow) | 173 | self.ExportThemeItem = QtGui.QAction(MainWindow) |
401 | 317 | self.ExportThemeItem.setObjectName(u'ExportThemeItem') | 174 | self.ExportThemeItem.setObjectName(u'ExportThemeItem') |
403 | 318 | self.ExportLanguageItem = QtGui.QAction(self.mainWindow) | 175 | self.ExportLanguageItem = QtGui.QAction(MainWindow) |
404 | 319 | self.ExportLanguageItem.setObjectName(u'ExportLanguageItem') | 176 | self.ExportLanguageItem.setObjectName(u'ExportLanguageItem') |
406 | 320 | self.actionLook_Feel = QtGui.QAction(self.mainWindow) | 177 | self.actionLook_Feel = QtGui.QAction(MainWindow) |
407 | 321 | self.actionLook_Feel.setObjectName(u'actionLook_Feel') | 178 | self.actionLook_Feel.setObjectName(u'actionLook_Feel') |
409 | 322 | self.OptionsSettingsItem = QtGui.QAction(self.mainWindow) | 179 | self.OptionsSettingsItem = QtGui.QAction(MainWindow) |
410 | 323 | SettingsIcon = QtGui.QIcon() | 180 | SettingsIcon = QtGui.QIcon() |
411 | 324 | SettingsIcon.addPixmap(QtGui.QPixmap(u':/system/system_settings.png'), | 181 | SettingsIcon.addPixmap(QtGui.QPixmap(u':/system/system_settings.png'), |
412 | 325 | QtGui.QIcon.Normal, QtGui.QIcon.Off) | 182 | QtGui.QIcon.Normal, QtGui.QIcon.Off) |
413 | 326 | self.OptionsSettingsItem.setIcon(SettingsIcon) | 183 | self.OptionsSettingsItem.setIcon(SettingsIcon) |
414 | 327 | self.OptionsSettingsItem.setObjectName(u'OptionsSettingsItem') | 184 | self.OptionsSettingsItem.setObjectName(u'OptionsSettingsItem') |
416 | 328 | self.ViewMediaManagerItem = QtGui.QAction(self.mainWindow) | 185 | self.ViewMediaManagerItem = QtGui.QAction(MainWindow) |
417 | 329 | self.ViewMediaManagerItem.setCheckable(True) | 186 | self.ViewMediaManagerItem.setCheckable(True) |
418 | 330 | self.ViewMediaManagerItem.setChecked(True) | 187 | self.ViewMediaManagerItem.setChecked(True) |
419 | 331 | self.ViewMediaManagerItem.setIcon(icon) | 188 | self.ViewMediaManagerItem.setIcon(icon) |
420 | 332 | self.ViewMediaManagerItem.setObjectName(u'ViewMediaManagerItem') | 189 | self.ViewMediaManagerItem.setObjectName(u'ViewMediaManagerItem') |
422 | 333 | self.ViewThemeManagerItem = QtGui.QAction(self.mainWindow) | 190 | self.ViewThemeManagerItem = QtGui.QAction(MainWindow) |
423 | 334 | self.ViewThemeManagerItem.setCheckable(True) | 191 | self.ViewThemeManagerItem.setCheckable(True) |
424 | 335 | self.ViewThemeManagerItem.setChecked(True) | 192 | self.ViewThemeManagerItem.setChecked(True) |
425 | 336 | self.ViewThemeManagerItem.setIcon(ThemeManagerIcon) | 193 | self.ViewThemeManagerItem.setIcon(ThemeManagerIcon) |
426 | 337 | self.ViewThemeManagerItem.setObjectName(u'ViewThemeManagerItem') | 194 | self.ViewThemeManagerItem.setObjectName(u'ViewThemeManagerItem') |
428 | 338 | self.ViewServiceManagerItem = QtGui.QAction(self.mainWindow) | 195 | self.ViewServiceManagerItem = QtGui.QAction(MainWindow) |
429 | 339 | self.ViewServiceManagerItem.setCheckable(True) | 196 | self.ViewServiceManagerItem.setCheckable(True) |
430 | 340 | self.ViewServiceManagerItem.setChecked(True) | 197 | self.ViewServiceManagerItem.setChecked(True) |
431 | 341 | self.ViewServiceManagerItem.setIcon(ServiceManagerIcon) | 198 | self.ViewServiceManagerItem.setIcon(ServiceManagerIcon) |
432 | 342 | self.ViewServiceManagerItem.setObjectName(u'ViewServiceManagerItem') | 199 | self.ViewServiceManagerItem.setObjectName(u'ViewServiceManagerItem') |
434 | 343 | self.ToolsAlertItem = QtGui.QAction(self.mainWindow) | 200 | self.ToolsAlertItem = QtGui.QAction(MainWindow) |
435 | 344 | AlertIcon = QtGui.QIcon() | 201 | AlertIcon = QtGui.QIcon() |
436 | 345 | AlertIcon.addPixmap(QtGui.QPixmap(u':/tools/tools_alert.png'), | 202 | AlertIcon.addPixmap(QtGui.QPixmap(u':/tools/tools_alert.png'), |
437 | 346 | QtGui.QIcon.Normal, QtGui.QIcon.Off) | 203 | QtGui.QIcon.Normal, QtGui.QIcon.Off) |
438 | 347 | self.ToolsAlertItem.setIcon(AlertIcon) | 204 | self.ToolsAlertItem.setIcon(AlertIcon) |
439 | 348 | self.ToolsAlertItem.setObjectName(u'ToolsAlertItem') | 205 | self.ToolsAlertItem.setObjectName(u'ToolsAlertItem') |
441 | 349 | self.HelpDocumentationItem = QtGui.QAction(self.mainWindow) | 206 | self.HelpDocumentationItem = QtGui.QAction(MainWindow) |
442 | 350 | ContentsIcon = QtGui.QIcon() | 207 | ContentsIcon = QtGui.QIcon() |
443 | 351 | ContentsIcon.addPixmap(QtGui.QPixmap(u':/system/system_help_contents.png'), | 208 | ContentsIcon.addPixmap(QtGui.QPixmap(u':/system/system_help_contents.png'), |
444 | 352 | QtGui.QIcon.Normal, QtGui.QIcon.Off) | 209 | QtGui.QIcon.Normal, QtGui.QIcon.Off) |
445 | 353 | self.HelpDocumentationItem.setIcon(ContentsIcon) | 210 | self.HelpDocumentationItem.setIcon(ContentsIcon) |
446 | 354 | self.HelpDocumentationItem.setObjectName(u'HelpDocumentationItem') | 211 | self.HelpDocumentationItem.setObjectName(u'HelpDocumentationItem') |
448 | 355 | self.HelpAboutItem = QtGui.QAction(self.mainWindow) | 212 | self.HelpAboutItem = QtGui.QAction(MainWindow) |
449 | 356 | AboutIcon = QtGui.QIcon() | 213 | AboutIcon = QtGui.QIcon() |
450 | 357 | AboutIcon.addPixmap(QtGui.QPixmap(u':/system/system_about.png'), | 214 | AboutIcon.addPixmap(QtGui.QPixmap(u':/system/system_about.png'), |
451 | 358 | QtGui.QIcon.Normal, QtGui.QIcon.Off) | 215 | QtGui.QIcon.Normal, QtGui.QIcon.Off) |
452 | 359 | self.HelpAboutItem.setIcon(AboutIcon) | 216 | self.HelpAboutItem.setIcon(AboutIcon) |
453 | 360 | self.HelpAboutItem.setObjectName(u'HelpAboutItem') | 217 | self.HelpAboutItem.setObjectName(u'HelpAboutItem') |
455 | 361 | self.HelpOnlineHelpItem = QtGui.QAction(self.mainWindow) | 218 | self.HelpOnlineHelpItem = QtGui.QAction(MainWindow) |
456 | 362 | self.HelpOnlineHelpItem.setObjectName(u'HelpOnlineHelpItem') | 219 | self.HelpOnlineHelpItem.setObjectName(u'HelpOnlineHelpItem') |
458 | 363 | self.HelpWebSiteItem = QtGui.QAction(self.mainWindow) | 220 | self.HelpWebSiteItem = QtGui.QAction(MainWindow) |
459 | 364 | self.HelpWebSiteItem.setObjectName(u'HelpWebSiteItem') | 221 | self.HelpWebSiteItem.setObjectName(u'HelpWebSiteItem') |
461 | 365 | self.LanguageTranslateItem = QtGui.QAction(self.mainWindow) | 222 | self.LanguageTranslateItem = QtGui.QAction(MainWindow) |
462 | 366 | self.LanguageTranslateItem.setObjectName(u'LanguageTranslateItem') | 223 | self.LanguageTranslateItem.setObjectName(u'LanguageTranslateItem') |
464 | 367 | self.LanguageEnglishItem = QtGui.QAction(self.mainWindow) | 224 | self.LanguageEnglishItem = QtGui.QAction(MainWindow) |
465 | 368 | self.LanguageEnglishItem.setObjectName(u'LanguageEnglishItem') | 225 | self.LanguageEnglishItem.setObjectName(u'LanguageEnglishItem') |
467 | 369 | self.ToolsAddToolItem = QtGui.QAction(self.mainWindow) | 226 | self.ToolsAddToolItem = QtGui.QAction(MainWindow) |
468 | 370 | AddToolIcon = QtGui.QIcon() | 227 | AddToolIcon = QtGui.QIcon() |
469 | 371 | AddToolIcon.addPixmap(QtGui.QPixmap(u':/tools/tools_add.png'), | 228 | AddToolIcon.addPixmap(QtGui.QPixmap(u':/tools/tools_add.png'), |
470 | 372 | QtGui.QIcon.Normal, QtGui.QIcon.Off) | 229 | QtGui.QIcon.Normal, QtGui.QIcon.Off) |
471 | 373 | self.ToolsAddToolItem.setIcon(AddToolIcon) | 230 | self.ToolsAddToolItem.setIcon(AddToolIcon) |
472 | 374 | self.ToolsAddToolItem.setObjectName(u'ToolsAddToolItem') | 231 | self.ToolsAddToolItem.setObjectName(u'ToolsAddToolItem') |
474 | 375 | self.action_Preview_Panel = QtGui.QAction(self.mainWindow) | 232 | self.action_Preview_Panel = QtGui.QAction(MainWindow) |
475 | 376 | self.action_Preview_Panel.setCheckable(True) | 233 | self.action_Preview_Panel.setCheckable(True) |
476 | 377 | self.action_Preview_Panel.setChecked(True) | 234 | self.action_Preview_Panel.setChecked(True) |
477 | 378 | self.action_Preview_Panel.setObjectName(u'action_Preview_Panel') | 235 | self.action_Preview_Panel.setObjectName(u'action_Preview_Panel') |
479 | 379 | self.ModeLiveItem = QtGui.QAction(self.mainWindow) | 236 | self.ModeLiveItem = QtGui.QAction(MainWindow) |
480 | 380 | self.ModeLiveItem.setObjectName(u'ModeLiveItem') | 237 | self.ModeLiveItem.setObjectName(u'ModeLiveItem') |
481 | 381 | self.FileImportMenu.addAction(self.ImportThemeItem) | 238 | self.FileImportMenu.addAction(self.ImportThemeItem) |
482 | 382 | self.FileImportMenu.addAction(self.ImportLanguageItem) | 239 | self.FileImportMenu.addAction(self.ImportLanguageItem) |
483 | @@ -419,43 +276,20 @@ | |||
484 | 419 | self.MenuBar.addAction(self.ToolsMenu.menuAction()) | 276 | self.MenuBar.addAction(self.ToolsMenu.menuAction()) |
485 | 420 | self.MenuBar.addAction(self.HelpMenu.menuAction()) | 277 | self.MenuBar.addAction(self.HelpMenu.menuAction()) |
486 | 421 | # Initialise the translation | 278 | # Initialise the translation |
488 | 422 | self.retranslateUi() | 279 | self.retranslateUi(MainWindow) |
489 | 423 | self.MediaToolBox.setCurrentIndex(0) | 280 | self.MediaToolBox.setCurrentIndex(0) |
490 | 424 | # Connect up some signals and slots | 281 | # Connect up some signals and slots |
491 | 425 | QtCore.QObject.connect(self.FileExitItem, | 282 | QtCore.QObject.connect(self.FileExitItem, |
518 | 426 | QtCore.SIGNAL(u'triggered()'), self.mainWindow.close) | 283 | QtCore.SIGNAL(u'triggered()'), MainWindow.close) |
519 | 427 | QtCore.QObject.connect(self.ImportThemeItem, | 284 | QtCore.QMetaObject.connectSlotsByName(MainWindow) |
494 | 428 | QtCore.SIGNAL(u'triggered()'), self.ThemeManagerContents.onImportTheme) | ||
495 | 429 | QtCore.QObject.connect(self.ExportThemeItem, | ||
496 | 430 | QtCore.SIGNAL(u'triggered()'), self.ThemeManagerContents.onExportTheme) | ||
497 | 431 | QtCore.QObject.connect(self.ViewMediaManagerItem, | ||
498 | 432 | QtCore.SIGNAL(u'triggered(bool)'), self.MediaManagerDock.setVisible) | ||
499 | 433 | QtCore.QObject.connect(self.ViewServiceManagerItem, | ||
500 | 434 | QtCore.SIGNAL(u'triggered(bool)'), self.ServiceManagerDock.setVisible) | ||
501 | 435 | QtCore.QObject.connect(self.ViewThemeManagerItem, | ||
502 | 436 | QtCore.SIGNAL(u'triggered(bool)'), self.ThemeManagerDock.setVisible) | ||
503 | 437 | QtCore.QObject.connect(self.action_Preview_Panel, | ||
504 | 438 | QtCore.SIGNAL(u'toggled(bool)'), self.PreviewController.Panel.setVisible) | ||
505 | 439 | QtCore.QObject.connect(self.MediaManagerDock, | ||
506 | 440 | QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewMediaManagerItem.setChecked) | ||
507 | 441 | QtCore.QObject.connect(self.ServiceManagerDock, | ||
508 | 442 | QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewServiceManagerItem.setChecked) | ||
509 | 443 | QtCore.QObject.connect(self.ThemeManagerDock, | ||
510 | 444 | QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewThemeManagerItem.setChecked) | ||
511 | 445 | QtCore.QObject.connect(self.HelpAboutItem, | ||
512 | 446 | QtCore.SIGNAL(u'triggered()'), self.onHelpAboutItemClicked) | ||
513 | 447 | QtCore.QObject.connect(self.ToolsAlertItem, | ||
514 | 448 | QtCore.SIGNAL(u'triggered()'), self.onToolsAlertItemClicked) | ||
515 | 449 | QtCore.QObject.connect(self.OptionsSettingsItem, | ||
516 | 450 | QtCore.SIGNAL(u'triggered()'), self.onOptionsSettingsItemClicked) | ||
517 | 451 | QtCore.QMetaObject.connectSlotsByName(self.mainWindow) | ||
520 | 452 | 285 | ||
522 | 453 | def retranslateUi(self): | 286 | def retranslateUi(self, MainWindow): |
523 | 454 | """ | 287 | """ |
524 | 455 | Set up the translation system | 288 | Set up the translation system |
525 | 456 | """ | 289 | """ |
528 | 457 | self.mainTitle = translate(u'mainWindow', u'OpenLP 2.0') | 290 | MainWindow.mainTitle = translate(u'mainWindow', u'OpenLP 2.0') |
529 | 458 | self.mainWindow.setWindowTitle(self.mainTitle) | 291 | MainWindow.defaultThemeText = translate(u'mainWindow', 'Default Theme: ') |
530 | 292 | MainWindow.setWindowTitle(MainWindow.mainTitle) | ||
531 | 459 | self.FileMenu.setTitle(translate(u'mainWindow', u'&File')) | 293 | self.FileMenu.setTitle(translate(u'mainWindow', u'&File')) |
532 | 460 | self.FileImportMenu.setTitle(translate(u'mainWindow', u'&Import')) | 294 | self.FileImportMenu.setTitle(translate(u'mainWindow', u'&Import')) |
533 | 461 | self.FileExportMenu.setTitle(translate(u'mainWindow', u'&Export')) | 295 | self.FileExportMenu.setTitle(translate(u'mainWindow', u'&Export')) |
534 | @@ -471,6 +305,8 @@ | |||
535 | 471 | translate(u'mainWindow', u'Service Manager')) | 305 | translate(u'mainWindow', u'Service Manager')) |
536 | 472 | self.ThemeManagerDock.setWindowTitle( | 306 | self.ThemeManagerDock.setWindowTitle( |
537 | 473 | translate(u'mainWindow', u'Theme Manager')) | 307 | translate(u'mainWindow', u'Theme Manager')) |
538 | 308 | self.DefaultThemeLabel.setText(MainWindow.defaultThemeText + \ | ||
539 | 309 | self.ThemeManagerContents.getDefault()) | ||
540 | 474 | self.FileNewItem.setText(translate(u'mainWindow', u'&New')) | 310 | self.FileNewItem.setText(translate(u'mainWindow', u'&New')) |
541 | 475 | self.FileNewItem.setToolTip(translate(u'mainWindow', u'New Service')) | 311 | self.FileNewItem.setToolTip(translate(u'mainWindow', u'New Service')) |
542 | 476 | self.FileNewItem.setStatusTip( | 312 | self.FileNewItem.setStatusTip( |
543 | @@ -548,3 +384,198 @@ | |||
544 | 548 | self.action_Preview_Panel.setText( | 384 | self.action_Preview_Panel.setText( |
545 | 549 | translate(u'mainWindow', u'&Preview Pane')) | 385 | translate(u'mainWindow', u'&Preview Pane')) |
546 | 550 | self.ModeLiveItem.setText(translate(u'mainWindow', u'&Live')) | 386 | self.ModeLiveItem.setText(translate(u'mainWindow', u'&Live')) |
547 | 387 | |||
548 | 388 | |||
549 | 389 | class MainWindow(QtGui.QMainWindow, Ui_MainWindow): | ||
550 | 390 | """ | ||
551 | 391 | The main window. | ||
552 | 392 | """ | ||
553 | 393 | global log | ||
554 | 394 | log = logging.getLogger(u'MainWindow') | ||
555 | 395 | log.info(u'MainWindow loaded') | ||
556 | 396 | |||
557 | 397 | def __init__(self, screens): | ||
558 | 398 | """ | ||
559 | 399 | This constructor sets up the interface, the various managers, and the | ||
560 | 400 | plugins. | ||
561 | 401 | """ | ||
562 | 402 | QtGui.QMainWindow.__init__(self) | ||
563 | 403 | self.closeEvent = self.onCloseEvent | ||
564 | 404 | self.screenList = screens | ||
565 | 405 | self.oosNotSaved = False | ||
566 | 406 | self.settingsmanager = SettingsManager(screens) | ||
567 | 407 | self.mainDisplay = MainDisplay(None, screens) | ||
568 | 408 | self.EventManager = EventManager() | ||
569 | 409 | self.generalConfig = PluginConfig(u'General') | ||
570 | 410 | self.alertForm = AlertForm(self) | ||
571 | 411 | self.aboutForm = AboutForm() | ||
572 | 412 | self.settingsForm = SettingsForm(self.screenList, self) | ||
573 | 413 | # Set up the path with plugins | ||
574 | 414 | pluginpath = os.path.split(os.path.abspath(__file__))[0] | ||
575 | 415 | pluginpath = os.path.abspath( | ||
576 | 416 | os.path.join(pluginpath, u'..', u'..', u'plugins')) | ||
577 | 417 | self.plugin_manager = PluginManager(pluginpath) | ||
578 | 418 | self.plugin_helpers = {} | ||
579 | 419 | # Set up the interface | ||
580 | 420 | self.setupUi(self) | ||
581 | 421 | # Set up signals and slots | ||
582 | 422 | QtCore.QObject.connect(self.ImportThemeItem, | ||
583 | 423 | QtCore.SIGNAL(u'triggered()'), self.ThemeManagerContents.onImportTheme) | ||
584 | 424 | QtCore.QObject.connect(self.ExportThemeItem, | ||
585 | 425 | QtCore.SIGNAL(u'triggered()'), self.ThemeManagerContents.onExportTheme) | ||
586 | 426 | QtCore.QObject.connect(self.ViewMediaManagerItem, | ||
587 | 427 | QtCore.SIGNAL(u'triggered(bool)'), self.MediaManagerDock.setVisible) | ||
588 | 428 | QtCore.QObject.connect(self.ViewServiceManagerItem, | ||
589 | 429 | QtCore.SIGNAL(u'triggered(bool)'), self.ServiceManagerDock.setVisible) | ||
590 | 430 | QtCore.QObject.connect(self.ViewThemeManagerItem, | ||
591 | 431 | QtCore.SIGNAL(u'triggered(bool)'), self.ThemeManagerDock.setVisible) | ||
592 | 432 | QtCore.QObject.connect(self.action_Preview_Panel, | ||
593 | 433 | QtCore.SIGNAL(u'toggled(bool)'), self.PreviewController.Panel.setVisible) | ||
594 | 434 | QtCore.QObject.connect(self.MediaManagerDock, | ||
595 | 435 | QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewMediaManagerItem.setChecked) | ||
596 | 436 | QtCore.QObject.connect(self.ServiceManagerDock, | ||
597 | 437 | QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewServiceManagerItem.setChecked) | ||
598 | 438 | QtCore.QObject.connect(self.ThemeManagerDock, | ||
599 | 439 | QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewThemeManagerItem.setChecked) | ||
600 | 440 | QtCore.QObject.connect(self.HelpAboutItem, | ||
601 | 441 | QtCore.SIGNAL(u'triggered()'), self.onHelpAboutItemClicked) | ||
602 | 442 | QtCore.QObject.connect(self.ToolsAlertItem, | ||
603 | 443 | QtCore.SIGNAL(u'triggered()'), self.onToolsAlertItemClicked) | ||
604 | 444 | QtCore.QObject.connect(self.OptionsSettingsItem, | ||
605 | 445 | QtCore.SIGNAL(u'triggered()'), self.onOptionsSettingsItemClicked) | ||
606 | 446 | #warning cyclic dependency | ||
607 | 447 | #RenderManager needs to call ThemeManager and | ||
608 | 448 | #ThemeManager needs to call RenderManager | ||
609 | 449 | self.RenderManager = RenderManager(self.ThemeManagerContents, | ||
610 | 450 | self.screenList, self.getMonitorNumber()) | ||
611 | 451 | log.info(u'Load Plugins') | ||
612 | 452 | #make the controllers available to the plugins | ||
613 | 453 | self.plugin_helpers[u'preview'] = self.PreviewController | ||
614 | 454 | self.plugin_helpers[u'live'] = self.LiveController | ||
615 | 455 | self.plugin_helpers[u'event'] = self.EventManager | ||
616 | 456 | self.plugin_helpers[u'theme'] = self.ThemeManagerContents | ||
617 | 457 | self.plugin_helpers[u'render'] = self.RenderManager | ||
618 | 458 | self.plugin_helpers[u'service'] = self.ServiceManagerContents | ||
619 | 459 | self.plugin_helpers[u'settings'] = self.settingsForm | ||
620 | 460 | self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers, | ||
621 | 461 | self.EventManager) | ||
622 | 462 | # hook methods have to happen after find_plugins. Find plugins needs the | ||
623 | 463 | # controllers hence the hooks have moved from setupUI() to here | ||
624 | 464 | |||
625 | 465 | # Find and insert settings tabs | ||
626 | 466 | log.info(u'hook settings') | ||
627 | 467 | self.plugin_manager.hook_settings_tabs(self.settingsForm) | ||
628 | 468 | # Find and insert media manager items | ||
629 | 469 | log.info(u'hook media') | ||
630 | 470 | self.plugin_manager.hook_media_manager(self.MediaToolBox) | ||
631 | 471 | # Call the hook method to pull in import menus. | ||
632 | 472 | log.info(u'hook menus') | ||
633 | 473 | self.plugin_manager.hook_import_menu(self.FileImportMenu) | ||
634 | 474 | # Call the hook method to pull in export menus. | ||
635 | 475 | self.plugin_manager.hook_export_menu(self.FileExportMenu) | ||
636 | 476 | # Call the initialise method to setup plugins. | ||
637 | 477 | log.info(u'initialise plugins') | ||
638 | 478 | self.plugin_manager.initialise_plugins() | ||
639 | 479 | # Once all components are initialised load the Themes | ||
640 | 480 | log.info(u'Load Themes') | ||
641 | 481 | self.ThemeManagerContents.loadThemes() | ||
642 | 482 | # Register the main form as an event consumer. | ||
643 | 483 | self.EventManager.register(self) | ||
644 | 484 | |||
645 | 485 | def getMonitorNumber(self): | ||
646 | 486 | """ | ||
647 | 487 | Set up the default behaviour of the monitor configuration in | ||
648 | 488 | here. Currently it is set to default to monitor 0 if the saved | ||
649 | 489 | monitor number does not exist. | ||
650 | 490 | """ | ||
651 | 491 | screen_number = int(self.generalConfig.get_config(u'Monitor', 0)) | ||
652 | 492 | if screen_number not in self.screenList: | ||
653 | 493 | screen_number = 0 | ||
654 | 494 | return screen_number | ||
655 | 495 | |||
656 | 496 | def show(self): | ||
657 | 497 | """ | ||
658 | 498 | Show the main form, as well as the display form | ||
659 | 499 | """ | ||
660 | 500 | self.showMaximized() | ||
661 | 501 | screen_number = self.getMonitorNumber() | ||
662 | 502 | self.mainDisplay.setup(screen_number) | ||
663 | 503 | self.setFocus() | ||
664 | 504 | |||
665 | 505 | def onHelpAboutItemClicked(self): | ||
666 | 506 | """ | ||
667 | 507 | Show the About form | ||
668 | 508 | """ | ||
669 | 509 | self.aboutForm.exec_() | ||
670 | 510 | |||
671 | 511 | def onToolsAlertItemClicked(self): | ||
672 | 512 | """ | ||
673 | 513 | Show the Alert form | ||
674 | 514 | """ | ||
675 | 515 | self.alertForm.exec_() | ||
676 | 516 | |||
677 | 517 | def onOptionsSettingsItemClicked(self): | ||
678 | 518 | """ | ||
679 | 519 | Show the Settings dialog | ||
680 | 520 | """ | ||
681 | 521 | self.settingsForm.exec_() | ||
682 | 522 | screen_number = self.getMonitorNumber() | ||
683 | 523 | self.RenderManager.update_display(screen_number) | ||
684 | 524 | self.mainDisplay.setup(screen_number) | ||
685 | 525 | |||
686 | 526 | def onCloseEvent(self, event): | ||
687 | 527 | """ | ||
688 | 528 | Hook to close the main window and display windows on exit | ||
689 | 529 | """ | ||
690 | 530 | if self.oosNotSaved == True: | ||
691 | 531 | ret = QtGui.QMessageBox.question(None, | ||
692 | 532 | translate(u'mainWindow', u'Save Changes to Service?'), | ||
693 | 533 | translate(u'mainWindow', u'Your service has been changed, do you want to save those changes?'), | ||
694 | 534 | QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Discard | QtGui.QMessageBox.Save), | ||
695 | 535 | QtGui.QMessageBox.Save) | ||
696 | 536 | if ret == QtGui.QMessageBox.Save: | ||
697 | 537 | self.ServiceManagerContents.onSaveService() | ||
698 | 538 | self.mainDisplay.close() | ||
699 | 539 | self.cleanUp() | ||
700 | 540 | event.accept() | ||
701 | 541 | elif ret == QtGui.QMessageBox.Discard: | ||
702 | 542 | self.mainDisplay.close() | ||
703 | 543 | self.cleanUp() | ||
704 | 544 | event.accept() | ||
705 | 545 | else: | ||
706 | 546 | event.ignore() | ||
707 | 547 | else: | ||
708 | 548 | self.mainDisplay.close() | ||
709 | 549 | self.cleanUp() | ||
710 | 550 | event.accept() | ||
711 | 551 | |||
712 | 552 | def cleanUp(self): | ||
713 | 553 | # Call the cleanup method to shutdown plugins. | ||
714 | 554 | log.info(u'cleanup plugins') | ||
715 | 555 | self.plugin_manager.initialise_plugins() | ||
716 | 556 | |||
717 | 557 | def OosChanged(self, reset=False, oosName=None): | ||
718 | 558 | """ | ||
719 | 559 | Hook to change the title if the OOS has been changed | ||
720 | 560 | reset - tells if the OOS has been cleared or saved | ||
721 | 561 | oosName - is the name of the OOS (if it has one) | ||
722 | 562 | """ | ||
723 | 563 | if not oosName: | ||
724 | 564 | service_name = u'(unsaved service)' | ||
725 | 565 | else: | ||
726 | 566 | service_name = oosName | ||
727 | 567 | if reset == True: | ||
728 | 568 | self.oosNotSaved = False | ||
729 | 569 | title = u'%s - %s' % (self.mainTitle, service_name) | ||
730 | 570 | else: | ||
731 | 571 | self.oosNotSaved = True | ||
732 | 572 | title = u'%s - %s*' % (self.mainTitle, service_name) | ||
733 | 573 | self.setWindowTitle(title) | ||
734 | 574 | |||
735 | 575 | def handle_event(self, event): | ||
736 | 576 | if event.event_type == EventType.ThemeListChanged: | ||
737 | 577 | themes = self.ThemeManagerContents.getThemes() | ||
738 | 578 | self.ServiceManagerContents.updateThemeList(themes) | ||
739 | 579 | self.settingsForm.ThemesTab.updateThemeList(themes) | ||
740 | 580 | self.DefaultThemeLabel.setText(self.defaultThemeText + \ | ||
741 | 581 | self.ThemeManagerContents.getDefault()) | ||
742 | 551 | 582 | ||
743 | === modified file 'openlp/core/ui/slidecontroller.py' | |||
744 | --- openlp/core/ui/slidecontroller.py 2009-07-12 20:38:34 +0000 | |||
745 | +++ openlp/core/ui/slidecontroller.py 2009-08-09 12:05:54 +0000 | |||
746 | @@ -24,9 +24,12 @@ | |||
747 | 24 | from openlp.core.lib import OpenLPToolbar, translate, buildIcon | 24 | from openlp.core.lib import OpenLPToolbar, translate, buildIcon |
748 | 25 | 25 | ||
749 | 26 | class SlideList(QtGui.QTableWidget): | 26 | class SlideList(QtGui.QTableWidget): |
753 | 27 | 27 | """ | |
754 | 28 | def __init__(self,parent=None,name=None): | 28 | Customised version of QTableWidget which can respond to keyboard |
755 | 29 | QtGui.QTableWidget.__init__(self,parent.Controller) | 29 | events. |
756 | 30 | """ | ||
757 | 31 | def __init__(self, parent=None, name=None): | ||
758 | 32 | QtGui.QTableWidget.__init__(self, parent.Controller) | ||
759 | 30 | self.parent = parent | 33 | self.parent = parent |
760 | 31 | 34 | ||
761 | 32 | def keyPressEvent(self, event): | 35 | def keyPressEvent(self, event): |
762 | @@ -56,7 +59,7 @@ | |||
763 | 56 | global log | 59 | global log |
764 | 57 | log = logging.getLogger(u'SlideController') | 60 | log = logging.getLogger(u'SlideController') |
765 | 58 | 61 | ||
767 | 59 | def __init__(self, parent, isLive=False): | 62 | def __init__(self, parent, isLive=False): |
768 | 60 | """ | 63 | """ |
769 | 61 | Set up the Slide Controller. | 64 | Set up the Slide Controller. |
770 | 62 | """ | 65 | """ |
771 | 63 | 66 | ||
772 | === modified file 'openlp/core/ui/thememanager.py' | |||
773 | --- openlp/core/ui/thememanager.py 2009-08-07 19:05:00 +0000 | |||
774 | +++ openlp/core/ui/thememanager.py 2009-08-09 17:58:37 +0000 | |||
775 | @@ -28,7 +28,9 @@ | |||
776 | 28 | 28 | ||
777 | 29 | from openlp.core.ui import AmendThemeForm, ServiceManager | 29 | from openlp.core.ui import AmendThemeForm, ServiceManager |
778 | 30 | from openlp.core.theme import Theme | 30 | from openlp.core.theme import Theme |
780 | 31 | from openlp.core.lib import PluginConfig, Event, EventType, EventManager, OpenLPToolbar, ThemeXML, Renderer, translate, file_to_xml, buildIcon | 31 | from openlp.core.lib import PluginConfig, Event, EventType, \ |
781 | 32 | EventManager, OpenLPToolbar, ThemeXML, Renderer, translate, \ | ||
782 | 33 | file_to_xml, buildIcon | ||
783 | 32 | from openlp.core.utils import ConfigHelper | 34 | from openlp.core.utils import ConfigHelper |
784 | 33 | 35 | ||
785 | 34 | class ThemeManager(QtGui.QWidget): | 36 | class ThemeManager(QtGui.QWidget): |
786 | @@ -39,7 +41,7 @@ | |||
787 | 39 | log = logging.getLogger(u'ThemeManager') | 41 | log = logging.getLogger(u'ThemeManager') |
788 | 40 | 42 | ||
789 | 41 | def __init__(self, parent): | 43 | def __init__(self, parent): |
791 | 42 | QtGui.QWidget.__init__(self) | 44 | QtGui.QWidget.__init__(self, parent) |
792 | 43 | self.parent = parent | 45 | self.parent = parent |
793 | 44 | self.Layout = QtGui.QVBoxLayout(self) | 46 | self.Layout = QtGui.QVBoxLayout(self) |
794 | 45 | self.Layout.setSpacing(0) | 47 | self.Layout.setSpacing(0) |
795 | @@ -81,6 +83,9 @@ | |||
796 | 81 | self.servicePath = self.config.get_data_path() | 83 | self.servicePath = self.config.get_data_path() |
797 | 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'')) |
798 | 83 | 85 | ||
799 | 86 | def getDefault(self): | ||
800 | 87 | return self.global_theme | ||
801 | 88 | |||
802 | 84 | def changeGlobal(self, index): | 89 | def changeGlobal(self, index): |
803 | 85 | for count in range (0, self.ThemeListWidget.count()): | 90 | for count in range (0, self.ThemeListWidget.count()): |
804 | 86 | item = self.ThemeListWidget.item(count) | 91 | item = self.ThemeListWidget.item(count) |
805 | @@ -91,10 +96,10 @@ | |||
806 | 91 | #Set the new name | 96 | #Set the new name |
807 | 92 | if count == index.row(): | 97 | if count == index.row(): |
808 | 93 | self.global_theme = unicode(self.ThemeListWidget.item(count).text()) | 98 | self.global_theme = unicode(self.ThemeListWidget.item(count).text()) |
810 | 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')) |
811 | 95 | self.ThemeListWidget.item(count).setText(name) | 100 | self.ThemeListWidget.item(count).setText(name) |
812 | 96 | self.config.set_config(u'theme global theme', self.global_theme) | 101 | self.config.set_config(u'theme global theme', self.global_theme) |
814 | 97 | self.push_themes() | 102 | self.pushThemes() |
815 | 98 | 103 | ||
816 | 99 | def onAddTheme(self): | 104 | def onAddTheme(self): |
817 | 100 | self.amendThemeForm.loadTheme(None) | 105 | self.amendThemeForm.loadTheme(None) |
818 | @@ -134,7 +139,7 @@ | |||
819 | 134 | pass | 139 | pass |
820 | 135 | #As we do not reload the themes push out the change | 140 | #As we do not reload the themes push out the change |
821 | 136 | #Reaload the list as the internal lists and events need to be triggered | 141 | #Reaload the list as the internal lists and events need to be triggered |
823 | 137 | self.push_themes() | 142 | self.pushThemes() |
824 | 138 | 143 | ||
825 | 139 | def onExportTheme(self): | 144 | def onExportTheme(self): |
826 | 140 | pass | 145 | pass |
827 | @@ -168,7 +173,7 @@ | |||
828 | 168 | (path, filename) = os.path.split(unicode(file)) | 173 | (path, filename) = os.path.split(unicode(file)) |
829 | 169 | textName = os.path.splitext(name)[0] | 174 | textName = os.path.splitext(name)[0] |
830 | 170 | if textName == self.global_theme: | 175 | if textName == self.global_theme: |
832 | 171 | name = (u'(%s):%s' % (translate(u'ThemeManager', u'default'), textName)) | 176 | name = u'%s (%s)' % (textName, translate(u'ThemeManager', u'default')) |
833 | 172 | else: | 177 | else: |
834 | 173 | name = textName | 178 | name = textName |
835 | 174 | item_name = QtGui.QListWidgetItem(name) | 179 | item_name = QtGui.QListWidgetItem(name) |
836 | @@ -176,12 +181,10 @@ | |||
837 | 176 | item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(textName)) | 181 | item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(textName)) |
838 | 177 | self.ThemeListWidget.addItem(item_name) | 182 | self.ThemeListWidget.addItem(item_name) |
839 | 178 | self.themelist.append(textName) | 183 | self.themelist.append(textName) |
841 | 179 | self.push_themes() | 184 | self.pushThemes() |
842 | 180 | 185 | ||
844 | 181 | def push_themes(self): | 186 | def pushThemes(self): |
845 | 182 | self.parent.EventManager.post_event(Event(EventType.ThemeListChanged)) | 187 | self.parent.EventManager.post_event(Event(EventType.ThemeListChanged)) |
846 | 183 | self.parent.ServiceManagerContents.updateThemeList(self.getThemes()) | ||
847 | 184 | self.parent.settingsForm.ThemesTab.updateThemeList(self.getThemes()) | ||
848 | 185 | 188 | ||
849 | 186 | def getThemes(self): | 189 | def getThemes(self): |
850 | 187 | return self.themelist | 190 | return self.themelist |
851 | 188 | 191 | ||
852 | === modified file 'openlp/plugins/images/lib/imageslidecontroller.py' | |||
853 | --- openlp/plugins/images/lib/imageslidecontroller.py 2009-07-06 16:34:13 +0000 | |||
854 | +++ openlp/plugins/images/lib/imageslidecontroller.py 2009-08-09 17:58:37 +0000 | |||
855 | @@ -93,7 +93,7 @@ | |||
856 | 93 | Go to the last slide. | 93 | Go to the last slide. |
857 | 94 | """ | 94 | """ |
858 | 95 | if self.PreviewListWidget.rowCount() > 1: | 95 | if self.PreviewListWidget.rowCount() > 1: |
860 | 96 | self.timer_id = self.startTimer(int(self.TimeoutSpinBox.value()) * 1000) | 96 | self.timer_id = self.startTimer(int(self.TimeoutSpinBox.value()) * 1000) |
861 | 97 | 97 | ||
862 | 98 | def onStopLoop(self): | 98 | def onStopLoop(self): |
863 | 99 | """ | 99 | """ |
Let's see what changes there are between my few bugfixes, and trunk.