mirror of https://gitlab.com/openlp/openlp.git
- make start up smoother by setting up the displays correct the first time
- do not pass screens as argument
This commit is contained in:
parent
2df3de81f2
commit
cbd7ae2afc
|
@ -97,7 +97,7 @@ class OpenLP(QtGui.QApplication):
|
|||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'cursor_normal'), self.setNormalCursor)
|
||||
# Decide how many screens we have and their size
|
||||
screens = ScreenList(self.desktop())
|
||||
screens = ScreenList.get_instance(self.desktop())
|
||||
# First time checks in settings
|
||||
has_run_wizard = QtCore.QSettings().value(
|
||||
u'general/has run wizard', QtCore.QVariant(False)).toBool()
|
||||
|
@ -115,8 +115,7 @@ class OpenLP(QtGui.QApplication):
|
|||
# make sure Qt really display the splash screen
|
||||
self.processEvents()
|
||||
# start the main app window
|
||||
self.mainWindow = MainWindow(screens, self.clipboard(),
|
||||
self.arguments())
|
||||
self.mainWindow = MainWindow(self.clipboard(), self.arguments())
|
||||
self.mainWindow.show()
|
||||
if show_splash:
|
||||
# now kill the splashscreen
|
||||
|
|
|
@ -68,8 +68,10 @@ class ImageManager(QtCore.QObject):
|
|||
"""
|
||||
log.info(u'Image Manager loaded')
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self, width, height):
|
||||
QtCore.QObject.__init__(self)
|
||||
self.width = width
|
||||
self.height = height
|
||||
self._cache = {}
|
||||
self._thread_running = False
|
||||
self._cache_dirty = False
|
||||
|
|
|
@ -32,7 +32,7 @@ from openlp.core.lib import ServiceItem, ImageManager, expand_tags, \
|
|||
build_lyrics_format_css, build_lyrics_outline_css, Receiver, \
|
||||
ItemCapabilities
|
||||
from openlp.core.lib.theme import ThemeLevel
|
||||
from openlp.core.ui import MainDisplay
|
||||
from openlp.core.ui import MainDisplay, ScreenList
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
@ -56,22 +56,21 @@ class Renderer(object):
|
|||
``theme_manager``
|
||||
The ThemeManager instance, used to get the current theme details.
|
||||
|
||||
``screens``
|
||||
Contains information about the Screens.
|
||||
|
||||
``screen_number``
|
||||
Defaults to *0*. The index of the output/display screen.
|
||||
"""
|
||||
log.info(u'Renderer Loaded')
|
||||
|
||||
def __init__(self, theme_manager, screens):
|
||||
def __init__(self, theme_manager):
|
||||
"""
|
||||
Initialise the render manager.
|
||||
"""
|
||||
log.debug(u'Initilisation started')
|
||||
self.screens = screens
|
||||
self.image_manager = ImageManager()
|
||||
self.display = MainDisplay(self, screens, False)
|
||||
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.service_theme = u''
|
||||
|
@ -86,7 +85,7 @@ class Renderer(object):
|
|||
"""
|
||||
log.debug(u'Update Display')
|
||||
self._calculate_default(self.screens.current[u'size'])
|
||||
self.display = MainDisplay(self, self.screens, False)
|
||||
self.display = MainDisplay(self, False)
|
||||
self.display.imageManager = self.image_manager
|
||||
self.display.setup()
|
||||
self.bg_frame = None
|
||||
|
|
|
@ -33,6 +33,7 @@ import os
|
|||
|
||||
from PyQt4 import QtCore
|
||||
|
||||
#from openlp.core.ui import ScreenList
|
||||
from openlp.core.utils import AppLocation
|
||||
|
||||
class SettingsManager(object):
|
||||
|
@ -40,8 +41,9 @@ 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, screen):
|
||||
self.screen = screen.current
|
||||
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
|
||||
|
@ -54,9 +56,6 @@ class SettingsManager(object):
|
|||
else:
|
||||
self.mainwindow_left = mainwindow_docbars
|
||||
self.mainwindow_right = mainwindow_docbars
|
||||
self.slidecontroller = (self.width - (
|
||||
self.mainwindow_left + self.mainwindow_right) - 100) / 2
|
||||
self.slidecontroller_image = self.slidecontroller - 50
|
||||
|
||||
@staticmethod
|
||||
def get_last_dir(section, num=None):
|
||||
|
|
|
@ -56,10 +56,10 @@ from firsttimelanguageform import FirstTimeLanguageForm
|
|||
from themeform import ThemeForm
|
||||
from filerenameform import FileRenameForm
|
||||
from starttimeform import StartTimeForm
|
||||
from screen import ScreenList
|
||||
from maindisplay import MainDisplay
|
||||
from servicenoteform import ServiceNoteForm
|
||||
from serviceitemeditform import ServiceItemEditForm
|
||||
from screen import ScreenList
|
||||
from slidecontroller import SlideController
|
||||
from splashscreen import SplashScreen
|
||||
from generaltab import GeneralTab
|
||||
|
|
|
@ -29,6 +29,7 @@ from PyQt4 import QtCore, QtGui
|
|||
|
||||
from openlp.core.lib import SettingsTab, Receiver, translate
|
||||
from openlp.core.lib.ui import UiStrings
|
||||
from openlp.core.ui import ScreenList
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
@ -36,33 +37,16 @@ class GeneralTab(SettingsTab):
|
|||
"""
|
||||
GeneralTab is the general settings tab in the settings dialog.
|
||||
"""
|
||||
def __init__(self, parent, screens):
|
||||
def __init__(self, parent):
|
||||
"""
|
||||
Initialise the general settings tab
|
||||
"""
|
||||
self.screens = screens
|
||||
self.screens = ScreenList.get_instance()
|
||||
self.monitorNumber = 0
|
||||
# Set to True to allow PostSetup to work on application start up
|
||||
self.overrideChanged = True
|
||||
self.icon_path = u':/icon/openlp-logo-16x16.png'
|
||||
generalTranslated = translate('GeneralTab', 'General')
|
||||
SettingsTab.__init__(self, parent, u'General', generalTranslated)
|
||||
|
||||
def preLoad(self):
|
||||
"""
|
||||
Set up the display screen and set correct screen values.
|
||||
If not set before default to last screen.
|
||||
"""
|
||||
settings = QtCore.QSettings()
|
||||
settings.beginGroup(self.settingsSection)
|
||||
self.monitorNumber = settings.value(u'monitor',
|
||||
QtCore.QVariant(self.screens.display_count - 1)).toInt()[0]
|
||||
self.screens.set_current_display(self.monitorNumber)
|
||||
self.screens.monitor_number = self.monitorNumber
|
||||
self.screens.display = settings.value(
|
||||
u'display on monitor', QtCore.QVariant(True)).toBool()
|
||||
settings.endGroup()
|
||||
|
||||
def setupUi(self):
|
||||
"""
|
||||
Create the user interface for the general settings tab
|
||||
|
@ -203,7 +187,6 @@ class GeneralTab(SettingsTab):
|
|||
self.passwordLabel.setVisible(False)
|
||||
self.passwordEdit.setVisible(False)
|
||||
|
||||
|
||||
def retranslateUi(self):
|
||||
"""
|
||||
Translate the general settings tab to the currently selected language
|
||||
|
@ -300,6 +283,7 @@ class GeneralTab(SettingsTab):
|
|||
self.customYValueEdit.setEnabled(self.overrideCheckBox.isChecked())
|
||||
self.customHeightValueEdit.setEnabled(self.overrideCheckBox.isChecked())
|
||||
self.customWidthValueEdit.setEnabled(self.overrideCheckBox.isChecked())
|
||||
self.overrideChanged = False
|
||||
|
||||
def save(self):
|
||||
"""
|
||||
|
@ -394,4 +378,5 @@ class GeneralTab(SettingsTab):
|
|||
"""
|
||||
Called when the width, height, x position or y position has changed.
|
||||
"""
|
||||
self.overrideChanged = True
|
||||
self.overrideChanged = True
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ from PyQt4.phonon import Phonon
|
|||
from openlp.core.lib import Receiver, build_html, ServiceItem, image_to_byte, \
|
||||
translate
|
||||
|
||||
from openlp.core.ui import HideMode
|
||||
from openlp.core.ui import HideMode, ScreenList
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
@ -60,10 +60,10 @@ class MainDisplay(DisplayWidget):
|
|||
"""
|
||||
This is the display screen.
|
||||
"""
|
||||
def __init__(self, parent, screens, live):
|
||||
def __init__(self, parent, live):
|
||||
DisplayWidget.__init__(self, live, parent=None)
|
||||
self.parent = parent
|
||||
self.screens = screens
|
||||
self.screens = ScreenList.get_instance()
|
||||
self.isLive = live
|
||||
self.alertTab = None
|
||||
self.hideMode = None
|
||||
|
|
|
@ -86,10 +86,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.screens)
|
||||
self.liveController = SlideController(self, self.settingsmanager,
|
||||
self.screens, True)
|
||||
self.previewController = SlideController(self, self.settingsmanager)
|
||||
self.liveController = SlideController(self, self.settingsmanager, True)
|
||||
previewVisible = QtCore.QSettings().value(
|
||||
u'user interface/preview panel', QtCore.QVariant(True)).toBool()
|
||||
self.previewController.panel.setVisible(previewVisible)
|
||||
|
@ -461,13 +459,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||
"""
|
||||
log.info(u'MainWindow loaded')
|
||||
|
||||
def __init__(self, screens, clipboard, arguments):
|
||||
def __init__(self, clipboard, arguments):
|
||||
"""
|
||||
This constructor sets up the interface, the various managers, and the
|
||||
plugins.
|
||||
"""
|
||||
QtGui.QMainWindow.__init__(self)
|
||||
self.screens = screens
|
||||
self.clipboard = clipboard
|
||||
self.arguments = arguments
|
||||
# Set up settings sections for the main application
|
||||
|
@ -477,9 +474,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||
self.serviceSettingsSection = u'servicemanager'
|
||||
self.songsSettingsSection = u'songs'
|
||||
self.serviceNotSaved = False
|
||||
self.settingsmanager = SettingsManager(screens)
|
||||
self.settingsmanager = SettingsManager()
|
||||
self.aboutForm = AboutForm(self)
|
||||
self.settingsForm = SettingsForm(self.screens, self, self)
|
||||
self.settingsForm = SettingsForm(self, self)
|
||||
self.displayTagForm = DisplayTagForm(self)
|
||||
self.shortcutForm = ShortcutListForm(self)
|
||||
self.recentFiles = QtCore.QStringList()
|
||||
|
@ -552,8 +549,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.screens)
|
||||
self.renderer = Renderer(self.themeManagerContents)
|
||||
# Define the media Dock Manager
|
||||
self.mediaDockManager = MediaDockManager(self.MediaToolBox)
|
||||
log.info(u'Load Plugins')
|
||||
|
|
|
@ -41,6 +41,13 @@ class ScreenList(object):
|
|||
Wrapper to handle the parameters of the display screen
|
||||
"""
|
||||
log.info(u'Screen loaded')
|
||||
instance = None
|
||||
|
||||
@staticmethod
|
||||
def get_instance(desktop=None):
|
||||
if desktop is not None and ScreenList.instance is None:
|
||||
ScreenList.instance = ScreenList(desktop)
|
||||
return ScreenList.instance
|
||||
|
||||
def __init__(self, desktop):
|
||||
"""
|
||||
|
@ -60,6 +67,7 @@ class ScreenList(object):
|
|||
# save config display number
|
||||
self.monitor_number = 0
|
||||
self.screen_count_changed()
|
||||
self._load_screen_settings()
|
||||
QtCore.QObject.connect(desktop,
|
||||
QtCore.SIGNAL(u'resized(int)'), self.screen_resolution_changed)
|
||||
QtCore.QObject.connect(desktop,
|
||||
|
@ -215,3 +223,31 @@ class ScreenList(object):
|
|||
"""
|
||||
log.debug(u'reset_current_display')
|
||||
self.set_current_display(self.current_display)
|
||||
|
||||
def _load_screen_settings(self):
|
||||
"""
|
||||
Loads the screen size and the monitor number from the settings.
|
||||
"""
|
||||
settings = QtCore.QSettings()
|
||||
settings.beginGroup(u'general')
|
||||
self.monitor_number = settings.value(u'monitor',
|
||||
QtCore.QVariant(self.display_count - 1)).toInt()[0]
|
||||
self.set_current_display(self.monitor_number)
|
||||
self.display = settings.value(
|
||||
u'display on monitor', QtCore.QVariant(True)).toBool()
|
||||
override_display = settings.value(
|
||||
u'override position', QtCore.QVariant(False)).toBool()
|
||||
x = settings.value(u'x position',
|
||||
QtCore.QVariant(self.current[u'size'].x())).toInt()[0]
|
||||
y = settings.value(u'y position',
|
||||
QtCore.QVariant(self.current[u'size'].y())).toInt()[0]
|
||||
width = settings.value(u'width',
|
||||
QtCore.QVariant(self.current[u'size'].width())).toInt()[0]
|
||||
height = settings.value(u'height',
|
||||
QtCore.QVariant(self.current[u'size'].height())).toInt()[0]
|
||||
settings.endGroup()
|
||||
self.override[u'size'] = QtCore.QRect(x, y, width, height)
|
||||
if override_display:
|
||||
self.set_override_display()
|
||||
else:
|
||||
self.reset_current_display()
|
||||
|
|
|
@ -40,14 +40,14 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
|||
"""
|
||||
Provide the form to manipulate the settings for OpenLP
|
||||
"""
|
||||
def __init__(self, screens, mainWindow, parent=None):
|
||||
def __init__(self, mainWindow, parent=None):
|
||||
"""
|
||||
Initialise the settings form
|
||||
"""
|
||||
QtGui.QDialog.__init__(self, parent)
|
||||
self.setupUi(self)
|
||||
# General tab
|
||||
self.generalTab = GeneralTab(self, screens)
|
||||
self.generalTab = GeneralTab(self)
|
||||
# Themes tab
|
||||
self.themesTab = ThemesTab(self, mainWindow)
|
||||
# Advanced tab
|
||||
|
|
|
@ -33,7 +33,7 @@ from PyQt4.phonon import Phonon
|
|||
from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \
|
||||
ItemCapabilities, translate
|
||||
from openlp.core.lib.ui import UiStrings, shortcut_action
|
||||
from openlp.core.ui import HideMode, MainDisplay
|
||||
from openlp.core.ui import HideMode, MainDisplay, ScreenList
|
||||
from openlp.core.utils.actions import ActionList, CategoryOrder
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
@ -53,7 +53,7 @@ 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, screens, isLive=False):
|
||||
def __init__(self, parent, settingsmanager, isLive=False):
|
||||
"""
|
||||
Set up the Slide Controller.
|
||||
"""
|
||||
|
@ -61,10 +61,11 @@ class SlideController(QtGui.QWidget):
|
|||
self.settingsmanager = settingsmanager
|
||||
self.isLive = isLive
|
||||
self.parent = parent
|
||||
self.screens = screens
|
||||
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, screens, isLive)
|
||||
self.display = MainDisplay(self, isLive)
|
||||
self.display.setup()
|
||||
self.loopList = [
|
||||
u'Start Loop',
|
||||
u'Loop Separator',
|
||||
|
@ -296,9 +297,6 @@ class SlideController(QtGui.QWidget):
|
|||
sizePolicy.setHeightForWidth(
|
||||
self.slidePreview.sizePolicy().hasHeightForWidth())
|
||||
self.slidePreview.setSizePolicy(sizePolicy)
|
||||
self.slidePreview.setFixedSize(
|
||||
QtCore.QSize(self.settingsmanager.slidecontroller_image,
|
||||
self.settingsmanager.slidecontroller_image / self.ratio))
|
||||
self.slidePreview.setFrameShape(QtGui.QFrame.Box)
|
||||
self.slidePreview.setFrameShadow(QtGui.QFrame.Plain)
|
||||
self.slidePreview.setLineWidth(1)
|
||||
|
@ -424,7 +422,7 @@ class SlideController(QtGui.QWidget):
|
|||
screen previews.
|
||||
"""
|
||||
# rebuild display as screen size changed
|
||||
self.display = MainDisplay(self, self.screens, self.isLive)
|
||||
self.display = MainDisplay(self, self.isLive)
|
||||
self.display.imageManager = self.parent.renderer.image_manager
|
||||
self.display.alertTab = self.alertTab
|
||||
self.display.setup()
|
||||
|
|
Loading…
Reference in New Issue