added method to get list of screens, clean ups

This commit is contained in:
Andreas Preikschat 2011-03-02 18:44:01 +01:00
parent 89c988b728
commit 1ec23f00ff
3 changed files with 33 additions and 26 deletions

View File

@ -234,6 +234,9 @@ class GeneralTab(SettingsTab):
QtCore.QObject.connect(self.customXValueEdit, QtCore.QObject.connect(self.customXValueEdit,
QtCore.SIGNAL(u'textEdited(const QString&)'), QtCore.SIGNAL(u'textEdited(const QString&)'),
self.onDisplayPositionChanged) self.onDisplayPositionChanged)
# Reload the tab, as the screen resolution/count may has changed.
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'config_screen_changed'), self.load)
def retranslateUi(self): def retranslateUi(self):
""" """
@ -301,13 +304,8 @@ class GeneralTab(SettingsTab):
settings = QtCore.QSettings() settings = QtCore.QSettings()
settings.beginGroup(self.settingsSection) settings.beginGroup(self.settingsSection)
self.monitorComboBox.clear() self.monitorComboBox.clear()
for screen in self.screens.screen_list: for screen in self.screens.get_screen_list():
screen_name = u'%s %d' % (translate('OpenLP.GeneralTab', 'Screen'), self.monitorComboBox.addItem(screen)
screen[u'number'] + 1)
if screen[u'primary']:
screen_name = u'%s (%s)' % (screen_name,
translate('OpenLP.GeneralTab', 'primary'))
self.monitorComboBox.addItem(screen_name)
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(

View File

@ -32,7 +32,7 @@ import copy
from PyQt4 import QtCore from PyQt4 import QtCore
from openlp.core.lib import Receiver from openlp.core.lib import Receiver, translate
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -58,13 +58,14 @@ class ScreenList(object):
self.current_display = 0 self.current_display = 0
# save config display number # save config display number
self.monitor_number = 0 self.monitor_number = 0
self.screenCountChanged() self.screen_count_changed()
QtCore.QObject.connect(desktop, QtCore.QObject.connect(desktop,
QtCore.SIGNAL(u'resized(int)'), self.screenResolutionChanged) QtCore.SIGNAL(u'resized(int)'), self.screen_resolution_changed)
QtCore.QObject.connect(desktop, QtCore.QObject.connect(desktop,
QtCore.SIGNAL(u'screenCountChanged(int)'), self.screenCountChanged) QtCore.SIGNAL(u'screenCountChanged(int)'),
self.screen_count_changed)
def screenResolutionChanged(self, number): def screen_resolution_changed(self, number):
""" """
Called when the resolution of a screen has changed. Called when the resolution of a screen has changed.
@ -86,15 +87,14 @@ class ScreenList(object):
if screen == self.override: if screen == self.override:
self.override = copy.deepcopy(newScreen) self.override = copy.deepcopy(newScreen)
self.set_override_display() self.set_override_display()
self.parent.mainWindow.settingsForm.reload()
Receiver.send_message(u'config_screen_changed') Receiver.send_message(u'config_screen_changed')
break break
def screenCountChanged(self, count=-1): def screen_count_changed(self, changed_screen=-1):
""" """
Called when a screen has been added or removed. Called when a screen has been added or removed.
``count`` ``changed_screen``
The screen's number which has been (un)plugged. The screen's number which has been (un)plugged.
""" """
# Remove unplugged screens. # Remove unplugged screens.
@ -109,11 +109,28 @@ class ScreenList(object):
u'size': self.desktop.screenGeometry(number), u'size': self.desktop.screenGeometry(number),
u'primary': (self.desktop.primaryScreen() == number) u'primary': (self.desktop.primaryScreen() == number)
}) })
if count != -1: # We do not want to send this message, when the method is called the
# first time.
if changed_screen != -1:
# Reload setting tabs to apply possible changes. # Reload setting tabs to apply possible changes.
self.parent.mainWindow.settingsForm.reload()
Receiver.send_message(u'config_screen_changed') Receiver.send_message(u'config_screen_changed')
# TODO: Make the new (second) monitor the live display.
def get_screen_list(self):
"""
Returns a list with the screens. This should only be used to display
available screens to the user::
[u'Screen 1 (primary)', Screen 2']
"""
screen_list= []
for screen in self.screen_list:
screen_name = u'%s %d' % (translate('OpenLP.ScreenList', 'Screen'),
screen[u'number'] + 1)
if screen[u'primary']:
screen_name = u'%s (%s)' % (screen_name,
translate('OpenLP.ScreenList', 'primary'))
screen_list.append(screen_name)
return screen_list
def add_screen(self, screen): def add_screen(self, screen):
""" """

View File

@ -107,11 +107,3 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
""" """
for tabIndex in range(0, self.settingsTabWidget.count()): for tabIndex in range(0, self.settingsTabWidget.count()):
self.settingsTabWidget.widget(tabIndex).postSetUp() self.settingsTabWidget.widget(tabIndex).postSetUp()
def reload(self):
"""
Reload all tabs to update settings which have been changed and are
outside of our scope.
"""
for tabIndex in range(0, self.settingsTabWidget.count()):
self.settingsTabWidget.widget(tabIndex).load()