1
0
mirror of https://gitlab.com/openlp/openlp.git synced 2024-09-28 10:57:36 +00:00

- allow negative x and y values

- fixes
- removed redundant variables
This commit is contained in:
Andreas Preikschat 2011-05-06 21:09:40 +02:00
parent e1b1f7c6d0
commit 090e8378ae
3 changed files with 69 additions and 61 deletions

View File

@ -42,7 +42,6 @@ class GeneralTab(SettingsTab):
Initialise the general settings tab Initialise the general settings tab
""" """
self.screens = ScreenList.get_instance() self.screens = ScreenList.get_instance()
self.monitorNumber = 0
self.icon_path = u':/icon/openlp-logo-16x16.png' self.icon_path = u':/icon/openlp-logo-16x16.png'
generalTranslated = translate('GeneralTab', 'General') generalTranslated = translate('GeneralTab', 'General')
SettingsTab.__init__(self, parent, u'General', generalTranslated) SettingsTab.__init__(self, parent, u'General', generalTranslated)
@ -142,14 +141,14 @@ class GeneralTab(SettingsTab):
self.displayLayout.addWidget(self.customXLabel, 3, 0) self.displayLayout.addWidget(self.customXLabel, 3, 0)
self.customXValueEdit = QtGui.QSpinBox(self.displayGroupBox) self.customXValueEdit = QtGui.QSpinBox(self.displayGroupBox)
self.customXValueEdit.setObjectName(u'customXValueEdit') self.customXValueEdit.setObjectName(u'customXValueEdit')
self.customXValueEdit.setMaximum(9999) self.customXValueEdit.setRange(-9999, 9999)
self.displayLayout.addWidget(self.customXValueEdit, 4, 0) self.displayLayout.addWidget(self.customXValueEdit, 4, 0)
self.customYLabel = QtGui.QLabel(self.displayGroupBox) self.customYLabel = QtGui.QLabel(self.displayGroupBox)
self.customYLabel.setObjectName(u'customYLabel') self.customYLabel.setObjectName(u'customYLabel')
self.displayLayout.addWidget(self.customYLabel, 3, 1) self.displayLayout.addWidget(self.customYLabel, 3, 1)
self.customYValueEdit = QtGui.QSpinBox(self.displayGroupBox) self.customYValueEdit = QtGui.QSpinBox(self.displayGroupBox)
self.customYValueEdit.setObjectName(u'customYValueEdit') self.customYValueEdit.setObjectName(u'customYValueEdit')
self.customYValueEdit.setMaximum(9999) self.customYValueEdit.setRange(-9999, 9999)
self.displayLayout.addWidget(self.customYValueEdit, 4, 1) self.displayLayout.addWidget(self.customYValueEdit, 4, 1)
self.customWidthLabel = QtGui.QLabel(self.displayGroupBox) self.customWidthLabel = QtGui.QLabel(self.displayGroupBox)
self.customWidthLabel.setObjectName(u'customWidthLabel') self.customWidthLabel.setObjectName(u'customWidthLabel')
@ -171,13 +170,16 @@ class GeneralTab(SettingsTab):
QtCore.QObject.connect(self.overrideCheckBox, QtCore.QObject.connect(self.overrideCheckBox,
QtCore.SIGNAL(u'toggled(bool)'), self.onOverrideCheckBoxToggled) QtCore.SIGNAL(u'toggled(bool)'), self.onOverrideCheckBoxToggled)
QtCore.QObject.connect(self.customHeightValueEdit, QtCore.QObject.connect(self.customHeightValueEdit,
QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayPositionChanged) QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged)
QtCore.QObject.connect(self.customWidthValueEdit, QtCore.QObject.connect(self.customWidthValueEdit,
QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayPositionChanged) QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged)
QtCore.QObject.connect(self.customYValueEdit, QtCore.QObject.connect(self.customYValueEdit,
QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayPositionChanged) QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged)
QtCore.QObject.connect(self.customXValueEdit, QtCore.QObject.connect(self.customXValueEdit,
QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayPositionChanged) QtCore.SIGNAL(u'valueChanged(int)'), self.onDisplayChanged)
QtCore.QObject.connect(self.monitorComboBox,
QtCore.SIGNAL(u'currentIndexChanged(int)'),
self.onMonitorComboBoxChanged)
# Reload the tab, as the screen resolution/count may have changed. # Reload the tab, as the screen resolution/count may have changed.
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'config_screen_changed'), self.load) QtCore.SIGNAL(u'config_screen_changed'), self.load)
@ -244,6 +246,9 @@ class GeneralTab(SettingsTab):
settings.beginGroup(self.settingsSection) settings.beginGroup(self.settingsSection)
self.monitorComboBox.clear() self.monitorComboBox.clear()
self.monitorComboBox.addItems(self.screens.get_screen_list()) self.monitorComboBox.addItems(self.screens.get_screen_list())
monitorNumber = settings.value(u'monitor',
QtCore.QVariant(self.screens.display_count - 1)).toInt()[0]
self.monitorComboBox.setCurrentIndex(monitorNumber)
self.numberEdit.setText(unicode(settings.value( self.numberEdit.setText(unicode(settings.value(
u'ccli number', QtCore.QVariant(u'')).toString())) u'ccli number', QtCore.QVariant(u'')).toString()))
self.usernameEdit.setText(unicode(settings.value( self.usernameEdit.setText(unicode(settings.value(
@ -254,7 +259,6 @@ class GeneralTab(SettingsTab):
QtCore.QVariant(False)).toBool()) QtCore.QVariant(False)).toBool())
self.autoUnblankCheckBox.setChecked(settings.value(u'auto unblank', self.autoUnblankCheckBox.setChecked(settings.value(u'auto unblank',
QtCore.QVariant(False)).toBool()) QtCore.QVariant(False)).toBool())
self.monitorComboBox.setCurrentIndex(self.monitorNumber)
self.displayOnMonitorCheck.setChecked(self.screens.display) self.displayOnMonitorCheck.setChecked(self.screens.display)
self.warningCheckBox.setChecked(settings.value(u'blank warning', self.warningCheckBox.setChecked(settings.value(u'blank warning',
QtCore.QVariant(False)).toBool()) QtCore.QVariant(False)).toBool())
@ -283,16 +287,16 @@ class GeneralTab(SettingsTab):
self.customYValueEdit.setEnabled(self.overrideCheckBox.isChecked()) self.customYValueEdit.setEnabled(self.overrideCheckBox.isChecked())
self.customHeightValueEdit.setEnabled(self.overrideCheckBox.isChecked()) self.customHeightValueEdit.setEnabled(self.overrideCheckBox.isChecked())
self.customWidthValueEdit.setEnabled(self.overrideCheckBox.isChecked()) self.customWidthValueEdit.setEnabled(self.overrideCheckBox.isChecked())
self.overrideChanged = False self.display_changed = False
def save(self): def save(self):
""" """
Save the settings from the form Save the settings from the form
""" """
self.monitorNumber = self.monitorComboBox.currentIndex()
settings = QtCore.QSettings() settings = QtCore.QSettings()
settings.beginGroup(self.settingsSection) settings.beginGroup(self.settingsSection)
settings.setValue(u'monitor', QtCore.QVariant(self.monitorNumber)) settings.setValue(u'monitor',
QtCore.QVariant(self.monitorComboBox.currentIndex()))
settings.setValue(u'display on monitor', settings.setValue(u'display on monitor',
QtCore.QVariant(self.displayOnMonitorCheck.isChecked())) QtCore.QVariant(self.displayOnMonitorCheck.isChecked()))
settings.setValue(u'blank warning', settings.setValue(u'blank warning',
@ -328,15 +332,8 @@ class GeneralTab(SettingsTab):
settings.setValue(u'override position', settings.setValue(u'override position',
QtCore.QVariant(self.overrideCheckBox.isChecked())) QtCore.QVariant(self.overrideCheckBox.isChecked()))
settings.endGroup() settings.endGroup()
self.screens.display = self.displayOnMonitorCheck.isChecked()
# Monitor Number has changed.
postUpdate = False
if self.screens.monitor_number != self.monitorNumber:
self.screens.monitor_number = self.monitorNumber
self.screens.set_current_display(self.monitorNumber)
postUpdate = True
# On save update the screens as well # On save update the screens as well
self.postSetUp(postUpdate) self.postSetUp(True)
def postSetUp(self, postUpdate=False): def postSetUp(self, postUpdate=False):
""" """
@ -345,21 +342,24 @@ class GeneralTab(SettingsTab):
""" """
Receiver.send_message(u'slidecontroller_live_spin_delay', Receiver.send_message(u'slidecontroller_live_spin_delay',
self.timeoutSpinBox.value()) self.timeoutSpinBox.value())
# Reset screens after initial definition # Do not continue on start up.
if self.overrideChanged: if not postUpdate:
self.screens.override[u'size'] = QtCore.QRect( return
self.customXValueEdit.value(), self.screens.set_current_display(self.monitorComboBox.currentIndex())
self.customYValueEdit.value(), self.screens.display = self.displayOnMonitorCheck.isChecked()
self.customWidthValueEdit.value(), self.screens.override[u'size'] = QtCore.QRect(
self.customHeightValueEdit.value()) self.customXValueEdit.value(),
self.customYValueEdit.value(),
self.customWidthValueEdit.value(),
self.customHeightValueEdit.value())
if self.overrideCheckBox.isChecked(): if self.overrideCheckBox.isChecked():
self.screens.set_override_display() self.screens.set_override_display()
else: else:
self.screens.reset_current_display() self.screens.reset_current_display()
# Order is important so be careful if you change if self.display_changed:
if self.overrideChanged or postUpdate:
Receiver.send_message(u'config_screen_changed') Receiver.send_message(u'config_screen_changed')
self.overrideChanged = False self.display_changed = False
def onOverrideCheckBoxToggled(self, checked): def onOverrideCheckBoxToggled(self, checked):
""" """
@ -372,11 +372,22 @@ class GeneralTab(SettingsTab):
self.customYValueEdit.setEnabled(checked) self.customYValueEdit.setEnabled(checked)
self.customHeightValueEdit.setEnabled(checked) self.customHeightValueEdit.setEnabled(checked)
self.customWidthValueEdit.setEnabled(checked) self.customWidthValueEdit.setEnabled(checked)
self.overrideChanged = True self.display_changed = True
def onDisplayPositionChanged(self): def onDisplayChanged(self):
""" """
Called when the width, height, x position or y position has changed. Called when the width, height, x position or y position has changed.
""" """
self.overrideChanged = True self.display_changed = True
def onMonitorComboBoxChanged(self, index):
"""
"""
self.display_changed = True
if self.overrideCheckBox.isChecked():
return
screen = self.screens.screen_list[index]
self.customXValueEdit.setValue(screen[u'size'].x())
self.customYValueEdit.setValue(screen[u'size'].y())
self.customHeightValueEdit.setValue(screen[u'size'].height())
self.customWidthValueEdit.setValue(screen[u'size'].width())

View File

@ -95,8 +95,7 @@ class MainDisplay(DisplayWidget):
""" """
Set up and build the output screen Set up and build the output screen
""" """
log.debug(u'Start setup for monitor %s (live = %s)' % log.debug(u'Start MainDisplay setup (live = %s)' % self.isLive)
(self.screens.monitor_number, self.isLive))
self.usePhonon = QtCore.QSettings().value( self.usePhonon = QtCore.QSettings().value(
u'media/use phonon', QtCore.QVariant(True)).toBool() u'media/use phonon', QtCore.QVariant(True)).toBool()
self.phononActive = False self.phononActive = False
@ -107,11 +106,11 @@ class MainDisplay(DisplayWidget):
self.videoWidget.setVisible(False) self.videoWidget.setVisible(False)
self.videoWidget.setGeometry(QtCore.QRect(0, 0, self.videoWidget.setGeometry(QtCore.QRect(0, 0,
self.screen[u'size'].width(), self.screen[u'size'].height())) self.screen[u'size'].width(), self.screen[u'size'].height()))
log.debug(u'Setup Phonon for monitor %s' % self.screens.monitor_number) log.debug(u'Setup Phonon')
if self.isLive: if self.isLive:
if not self.firstTime: if not self.firstTime:
self.createMediaObject() self.createMediaObject()
log.debug(u'Setup webView for monitor %s' % self.screens.monitor_number) log.debug(u'Setup webView')
self.webView = QtWebKit.QWebView(self) self.webView = QtWebKit.QWebView(self)
self.webView.setGeometry(0, 0, self.webView.setGeometry(0, 0,
self.screen[u'size'].width(), self.screen[u'size'].height()) self.screen[u'size'].width(), self.screen[u'size'].height())
@ -128,8 +127,8 @@ class MainDisplay(DisplayWidget):
if self.isLive: if self.isLive:
# Build the initial frame. # Build the initial frame.
self.black = QtGui.QImage( self.black = QtGui.QImage(
self.screens.current[u'size'].width(), self.screen[u'size'].width(),
self.screens.current[u'size'].height(), self.screen[u'size'].height(),
QtGui.QImage.Format_ARGB32_Premultiplied) QtGui.QImage.Format_ARGB32_Premultiplied)
painter_image = QtGui.QPainter() painter_image = QtGui.QPainter()
painter_image.begin(self.black) painter_image.begin(self.black)
@ -146,17 +145,16 @@ class MainDisplay(DisplayWidget):
background_color = QtCore.Qt.white background_color = QtCore.Qt.white
splash_image = QtGui.QImage(image_file) splash_image = QtGui.QImage(image_file)
self.initialFrame = QtGui.QImage( self.initialFrame = QtGui.QImage(
self.screens.current[u'size'].width(), self.screen[u'size'].width(),
self.screens.current[u'size'].height(), self.screen[u'size'].height(),
QtGui.QImage.Format_ARGB32_Premultiplied) QtGui.QImage.Format_ARGB32_Premultiplied)
painter_image = QtGui.QPainter() painter_image = QtGui.QPainter()
painter_image.begin(self.initialFrame) painter_image.begin(self.initialFrame)
painter_image.fillRect(self.initialFrame.rect(), background_color) painter_image.fillRect(self.initialFrame.rect(), background_color)
painter_image.drawImage( painter_image.drawImage(
(self.screens.current[u'size'].width() - (self.screen[u'size'].width() - splash_image.width()) / 2,
splash_image.width()) / 2, (self.screen[u'size'].height() - splash_image.height()) / 2,
(self.screens.current[u'size'].height() splash_image)
- splash_image.height()) / 2, splash_image)
serviceItem = ServiceItem() serviceItem = ServiceItem()
serviceItem.bg_image_bytes = image_to_byte(self.initialFrame) serviceItem.bg_image_bytes = image_to_byte(self.initialFrame)
self.webView.setHtml(build_html(serviceItem, self.screen, self.webView.setHtml(build_html(serviceItem, self.screen,
@ -168,8 +166,7 @@ class MainDisplay(DisplayWidget):
self.primary = False self.primary = False
else: else:
self.primary = True self.primary = True
log.debug( log.debug(u'Finished MainDisplay setup')
u'Finished setup for monitor %s' % self.screens.monitor_number)
def createMediaObject(self): def createMediaObject(self):
self.firstTime = False self.firstTime = False
@ -452,7 +449,7 @@ class MainDisplay(DisplayWidget):
self.hideDisplay(self.hideMode) self.hideDisplay(self.hideMode)
else: else:
# Single screen active # Single screen active
if self.screens.monitor_number == 0: if self.screens.display_count == 1:
# Only make visible if setting enabled # Only make visible if setting enabled
if QtCore.QSettings().value(u'general/display on monitor', if QtCore.QSettings().value(u'general/display on monitor',
QtCore.QVariant(True)).toBool(): QtCore.QVariant(True)).toBool():

View File

@ -36,9 +36,16 @@ from openlp.core.lib import Receiver, translate
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
class Screen(object):
primary = True
number = 0
size = QtCore.QRect(0, 0, 1024, 768)
class ScreenList(object): class ScreenList(object):
""" """
Wrapper to handle the parameters of the display screen Wrapper to handle the parameters of the display screen.
To get access to the screen list call ``ScreenList.get_instance()``.
""" """
log.info(u'Screen loaded') log.info(u'Screen loaded')
instance = None instance = None
@ -62,10 +69,6 @@ class ScreenList(object):
self.override = None self.override = None
self.screen_list = [] self.screen_list = []
self.display_count = 0 self.display_count = 0
# actual display number
self.current_display = 0
# save config display number
self.monitor_number = 0
self.screen_count_changed() self.screen_count_changed()
self._load_screen_settings() self._load_screen_settings()
QtCore.QObject.connect(desktop, QtCore.QObject.connect(desktop,
@ -158,6 +161,7 @@ class ScreenList(object):
screen[u'number'], screen[u'size']) screen[u'number'], screen[u'size'])
if screen[u'primary']: if screen[u'primary']:
self.current = screen self.current = screen
self.override = copy.deepcopy(self.current)
self.screen_list.append(screen) self.screen_list.append(screen)
self.display_count += 1 self.display_count += 1
@ -197,13 +201,10 @@ class ScreenList(object):
log.debug(u'set_current_display %s', number) log.debug(u'set_current_display %s', number)
if number + 1 > self.display_count: if number + 1 > self.display_count:
self.current = self.screen_list[0] self.current = self.screen_list[0]
self.override = copy.deepcopy(self.current)
self.current_display = 0
else: else:
self.current = self.screen_list[number] self.current = self.screen_list[number]
self.override = copy.deepcopy(self.current)
self.preview = copy.deepcopy(self.current) self.preview = copy.deepcopy(self.current)
self.current_display = number self.override = copy.deepcopy(self.current)
if self.display_count == 1: if self.display_count == 1:
self.preview = self.screen_list[0] self.preview = self.screen_list[0]
@ -222,7 +223,7 @@ class ScreenList(object):
use the correct screen attributes. use the correct screen attributes.
""" """
log.debug(u'reset_current_display') log.debug(u'reset_current_display')
self.set_current_display(self.current_display) self.set_current_display(self.current[u'number'])
def _load_screen_settings(self): def _load_screen_settings(self):
""" """
@ -230,9 +231,8 @@ class ScreenList(object):
""" """
settings = QtCore.QSettings() settings = QtCore.QSettings()
settings.beginGroup(u'general') settings.beginGroup(u'general')
self.monitor_number = settings.value(u'monitor', self.set_current_display(settings.value(u'monitor',
QtCore.QVariant(self.display_count - 1)).toInt()[0] QtCore.QVariant(self.display_count - 1)).toInt()[0])
self.set_current_display(self.monitor_number)
self.display = settings.value( self.display = settings.value(
u'display on monitor', QtCore.QVariant(True)).toBool() u'display on monitor', QtCore.QVariant(True)).toBool()
override_display = settings.value( override_display = settings.value(
@ -245,8 +245,8 @@ class ScreenList(object):
QtCore.QVariant(self.current[u'size'].width())).toInt()[0] QtCore.QVariant(self.current[u'size'].width())).toInt()[0]
height = settings.value(u'height', height = settings.value(u'height',
QtCore.QVariant(self.current[u'size'].height())).toInt()[0] QtCore.QVariant(self.current[u'size'].height())).toInt()[0]
settings.endGroup()
self.override[u'size'] = QtCore.QRect(x, y, width, height) self.override[u'size'] = QtCore.QRect(x, y, width, height)
settings.endGroup()
if override_display: if override_display:
self.set_override_display() self.set_override_display()
else: else: