diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index ef2520dac..27a34d54d 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -277,7 +277,6 @@ from listwidgetwithdnd import ListWidgetWithDnD from displaytags import DisplayTags from eventreceiver import Receiver from spelltextedit import SpellTextEdit -from imagemanager import ImageManager from settingsmanager import SettingsManager from plugin import PluginStatus, StringContent, Plugin from pluginmanager import PluginManager @@ -289,6 +288,7 @@ from htmlbuilder import build_html, build_lyrics_format_css, \ build_lyrics_outline_css from toolbar import OpenLPToolbar from dockwidget import OpenLPDockWidget +from imagemanager import ImageManager from renderer import Renderer from mediamanageritem import MediaManagerItem from openlp.core.utils.actions import ActionList diff --git a/openlp/core/lib/dockwidget.py b/openlp/core/lib/dockwidget.py index 9b4661fee..ace364ed0 100644 --- a/openlp/core/lib/dockwidget.py +++ b/openlp/core/lib/dockwidget.py @@ -32,6 +32,7 @@ import logging from PyQt4 import QtGui from openlp.core.lib import build_icon +from openlp.core.ui import ScreenList log = logging.getLogger(__name__) @@ -50,3 +51,11 @@ class OpenLPDockWidget(QtGui.QDockWidget): self.setObjectName(name) if icon: self.setWindowIcon(build_icon(icon)) + # Sort out the minimum width. + screens = ScreenList.get_instance() + screen_width = screens.current[u'size'].width() + mainwindow_docbars = screen_width / 5 + if mainwindow_docbars > 300: + self.setMinimumWidth(300) + else: + self.setMinimumWidth(mainwindow_docbars) diff --git a/openlp/core/lib/imagemanager.py b/openlp/core/lib/imagemanager.py index e7f826b38..f144248ed 100644 --- a/openlp/core/lib/imagemanager.py +++ b/openlp/core/lib/imagemanager.py @@ -35,6 +35,7 @@ import time from PyQt4 import QtCore from openlp.core.lib import resize_image, image_to_byte +from openlp.core.ui import ScreenList log = logging.getLogger(__name__) @@ -68,10 +69,11 @@ class ImageManager(QtCore.QObject): """ log.info(u'Image Manager loaded') - def __init__(self, width, height): + def __init__(self): QtCore.QObject.__init__(self) - self.width = width - self.height = height + current_screen = ScreenList.get_instance().current + self.width = current_screen[u'size'].width() + self.height = current_screen[u'size'].height() self._cache = {} self._thread_running = False self._cache_dirty = False diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 856b68937..4346d4d3f 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -28,7 +28,7 @@ import logging from PyQt4 import QtCore, QtWebKit -from openlp.core.lib import ServiceItem, ImageManager, expand_tags, \ +from openlp.core.lib import ServiceItem, expand_tags, \ build_lyrics_format_css, build_lyrics_outline_css, Receiver, \ ItemCapabilities from openlp.core.lib.theme import ThemeLevel @@ -61,23 +61,22 @@ class Renderer(object): """ log.info(u'Renderer Loaded') - def __init__(self, theme_manager): + def __init__(self, imageManager, theme_manager): """ Initialise the render manager. """ log.debug(u'Initilisation started') - self.screens = ScreenList.get_instance() - self.width = self.screens.current[u'size'].width() - self.height = self.screens.current[u'size'].height() - self.image_manager = ImageManager(self.width, self.height) - self.display = MainDisplay(self, False) - self.display.imageManager = self.image_manager self.theme_manager = theme_manager + self.image_manager = imageManager + self.screens = ScreenList.get_instance() self.service_theme = u'' self.theme_level = u'' self.override_background = None self.theme_data = None + self.bg_frame = None self.force_page = False + self.display = MainDisplay(self, self.image_manager, False) + self.display.setup() def update_display(self): """ @@ -85,8 +84,7 @@ class Renderer(object): """ log.debug(u'Update Display') self._calculate_default(self.screens.current[u'size']) - self.display = MainDisplay(self, False) - self.display.imageManager = self.image_manager + self.display = MainDisplay(self, self.image_manager, False) self.display.setup() self.bg_frame = None self.theme_data = None diff --git a/openlp/core/lib/settingsmanager.py b/openlp/core/lib/settingsmanager.py index 5e66ed807..fbc639ba6 100644 --- a/openlp/core/lib/settingsmanager.py +++ b/openlp/core/lib/settingsmanager.py @@ -33,7 +33,6 @@ import os from PyQt4 import QtCore -#from openlp.core.ui import ScreenList from openlp.core.utils import AppLocation class SettingsManager(object): @@ -41,21 +40,6 @@ class SettingsManager(object): Class to control the initial settings for the UI and provide helper functions for the loading and saving of application settings. """ - def __init__(self): - from openlp.core.ui import ScreenList - self.screen = ScreenList.get_instance().current - self.width = self.screen[u'size'].width() - self.height = self.screen[u'size'].height() - self.mainwindow_height = self.height * 0.8 - mainwindow_docbars = self.width / 5 - self.mainwindow_left = 0 - self.mainwindow_right = 0 - if mainwindow_docbars > 300: - self.mainwindow_left = 300 - self.mainwindow_right = 300 - else: - self.mainwindow_left = mainwindow_docbars - self.mainwindow_right = mainwindow_docbars @staticmethod def get_last_dir(section, num=None): diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 58ff7d6e3..45528accc 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -60,11 +60,12 @@ class MainDisplay(DisplayWidget): """ This is the display screen. """ - def __init__(self, parent, live): - DisplayWidget.__init__(self, live, parent=None) + def __init__(self, parent, imageManager, live): + DisplayWidget.__init__(self, live, parent) self.parent = parent - self.screens = ScreenList.get_instance() self.isLive = live + self.imageManager = imageManager + self.screens = ScreenList.get_instance() self.alertTab = None self.hideMode = None self.videoHide = False diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index d8dcac630..abff4068e 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -31,7 +31,7 @@ from tempfile import gettempdir from PyQt4 import QtCore, QtGui from openlp.core.lib import Renderer, build_icon, OpenLPDockWidget, \ - SettingsManager, PluginManager, Receiver, translate + PluginManager, Receiver, translate, ImageManager from openlp.core.lib.ui import UiStrings, base_action, checkable_action, \ icon_action, shortcut_action from openlp.core.ui import AboutForm, SettingsForm, ServiceManager, \ @@ -69,8 +69,6 @@ class Ui_MainWindow(object): Set up the user interface """ mainWindow.setObjectName(u'MainWindow') - mainWindow.resize(self.settingsmanager.width, - self.settingsmanager.height) mainWindow.setWindowIcon(build_icon(u':/icon/openlp-logo-64x64.png')) mainWindow.setDockNestingEnabled(True) # Set up the main container, which contains all the other form widgets. @@ -86,8 +84,8 @@ class Ui_MainWindow(object): self.controlSplitter.setObjectName(u'controlSplitter') self.mainContentLayout.addWidget(self.controlSplitter) # Create slide controllers - self.previewController = SlideController(self, self.settingsmanager) - self.liveController = SlideController(self, self.settingsmanager, True) + self.previewController = SlideController(self) + self.liveController = SlideController(self, True) previewVisible = QtCore.QSettings().value( u'user interface/preview panel', QtCore.QVariant(True)).toBool() self.previewController.panel.setVisible(previewVisible) @@ -135,8 +133,6 @@ class Ui_MainWindow(object): self.mediaManagerDock = OpenLPDockWidget(mainWindow, u'mediaManagerDock', u':/system/system_mediamanager.png') self.mediaManagerDock.setStyleSheet(MEDIA_MANAGER_STYLE) - self.mediaManagerDock.setMinimumWidth( - self.settingsmanager.mainwindow_left) # Create the media toolbox self.MediaToolBox = QtGui.QToolBox(self.mediaManagerDock) self.MediaToolBox.setObjectName(u'MediaToolBox') @@ -146,8 +142,6 @@ class Ui_MainWindow(object): # Create the service manager self.serviceManagerDock = OpenLPDockWidget(mainWindow, u'serviceManagerDock', u':/system/system_servicemanager.png') - self.serviceManagerDock.setMinimumWidth( - self.settingsmanager.mainwindow_right) self.ServiceManagerContents = ServiceManager(mainWindow, self.serviceManagerDock) self.serviceManagerDock.setWidget(self.ServiceManagerContents) @@ -156,8 +150,6 @@ class Ui_MainWindow(object): # Create the theme manager self.themeManagerDock = OpenLPDockWidget(mainWindow, u'themeManagerDock', u':/system/system_thememanager.png') - self.themeManagerDock.setMinimumWidth( - self.settingsmanager.mainwindow_right) self.themeManagerContents = ThemeManager(mainWindow, self.themeManagerDock) self.themeManagerContents.setObjectName(u'themeManagerContents') @@ -474,7 +466,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.serviceSettingsSection = u'servicemanager' self.songsSettingsSection = u'songs' self.serviceNotSaved = False - self.settingsmanager = SettingsManager() self.aboutForm = AboutForm(self) self.settingsForm = SettingsForm(self, self) self.displayTagForm = DisplayTagForm(self) @@ -484,6 +475,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): pluginpath = AppLocation.get_directory(AppLocation.PluginsDir) self.pluginManager = PluginManager(pluginpath) self.pluginHelpers = {} + self.imageManager = ImageManager() # Set up the interface self.setupUi(self) # Load settings after setupUi so default UI sizes are overwritten @@ -549,7 +541,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): # warning cyclic dependency # renderer needs to call ThemeManager and # ThemeManager needs to call Renderer - self.renderer = Renderer(self.themeManagerContents) + self.renderer = Renderer(self.imageManager, self.themeManagerContents) # Define the media Dock Manager self.mediaDockManager = MediaDockManager(self.MediaToolBox) log.info(u'Load Plugins') @@ -782,8 +774,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): their locations """ log.debug(u'screenChanged') - self.renderer.update_display() self.setFocus() + self.renderer.update_display() self.activateWindow() def closeEvent(self, event): diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 204470638..7937f6e51 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -53,18 +53,19 @@ class SlideController(QtGui.QWidget): SlideController is the slide controller widget. This widget is what the user uses to control the displaying of verses/slides/etc on the screen. """ - def __init__(self, parent, settingsmanager, isLive=False): + def __init__(self, parent, isLive=False): """ Set up the Slide Controller. """ QtGui.QWidget.__init__(self, parent) - self.settingsmanager = settingsmanager self.isLive = isLive self.parent = parent self.screens = ScreenList.get_instance() self.ratio = float(self.screens.current[u'size'].width()) / \ float(self.screens.current[u'size'].height()) - self.display = MainDisplay(self, isLive) + self.image_manager = self.parent.imageManager + self.display = MainDisplay(self, self.image_manager, isLive) + #self.display.alertTab = self.alertTab self.display.setup() self.loopList = [ u'Start Loop', @@ -422,8 +423,7 @@ class SlideController(QtGui.QWidget): screen previews. """ # rebuild display as screen size changed - self.display = MainDisplay(self, self.isLive) - self.display.imageManager = self.parent.renderer.image_manager + self.display = MainDisplay(self, self.image_manager, self.isLive) self.display.alertTab = self.alertTab self.display.setup() if self.isLive: @@ -637,10 +637,8 @@ class SlideController(QtGui.QWidget): # If current slide set background to image if framenumber == slideno: self.serviceItem.bg_image_bytes = \ - self.parent.renderer.image_manager. \ - get_image_bytes(frame[u'title']) - image = self.parent.renderer.image_manager. \ - get_image(frame[u'title']) + self.image_manager.get_image_bytes(frame[u'title']) + image = self.image_manager.get_image(frame[u'title']) label.setPixmap(QtGui.QPixmap.fromImage(image)) self.previewListWidget.setCellWidget(framenumber, 0, label) slideHeight = width * self.parent.renderer.screen_ratio