use own ScreenList() call instead of using parents to access it

And more tests

bzr-revno: 2184
This commit is contained in:
Andreas Preikschat 2013-02-16 20:42:29 +00:00 committed by Tim Bentley
commit e9ac83bf47
13 changed files with 84 additions and 17 deletions

View File

@ -58,6 +58,7 @@ else:
from PyQt4 import QtCore from PyQt4 import QtCore
from openlp.core.lib import ScreenList
from openlp.core.utils import delete_file, get_uno_command, get_uno_instance from openlp.core.utils import delete_file, get_uno_command, get_uno_instance
from presentationcontroller import PresentationController, PresentationDocument from presentationcontroller import PresentationController, PresentationDocument
@ -254,7 +255,7 @@ class ImpressDocument(PresentationDocument):
window = self.document.getCurrentController().getFrame().getContainerWindow() window = self.document.getCurrentController().getFrame().getContainerWindow()
window.setVisible(False) window.setVisible(False)
self.presentation = self.document.getPresentation() self.presentation = self.document.getPresentation()
self.presentation.Display = self.controller.plugin.renderer.screens.current[u'number'] + 1 self.presentation.Display = ScreenList().current[u'number'] + 1
self.control = None self.control = None
self.create_thumbnails() self.create_thumbnails()
return True return True

View File

@ -36,6 +36,7 @@ if os.name == u'nt':
import win32ui import win32ui
import pywintypes import pywintypes
from openlp.core.lib import ScreenList
from presentationcontroller import PresentationController, PresentationDocument from presentationcontroller import PresentationController, PresentationDocument
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -252,8 +253,7 @@ class PowerpointDocument(PresentationDocument):
dpi = win32ui.GetForegroundWindow().GetDC().GetDeviceCaps(88) dpi = win32ui.GetForegroundWindow().GetDC().GetDeviceCaps(88)
except win32ui.error: except win32ui.error:
dpi = 96 dpi = 96
renderer = self.controller.plugin.renderer rect = ScreenList().current[u'size']
rect = renderer.screens.current[u'size']
ppt_window = self.presentation.SlideShowSettings.Run() ppt_window = self.presentation.SlideShowSettings.Run()
if not ppt_window: if not ppt_window:
return return

View File

@ -34,6 +34,7 @@ if os.name == u'nt':
from ctypes import cdll from ctypes import cdll
from ctypes.wintypes import RECT from ctypes.wintypes import RECT
from openlp.core.lib import ScreenList
from presentationcontroller import PresentationController, PresentationDocument from presentationcontroller import PresentationController, PresentationDocument
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -120,8 +121,7 @@ class PptviewDocument(PresentationDocument):
PptView task started earlier. PptView task started earlier.
""" """
log.debug(u'LoadPresentation') log.debug(u'LoadPresentation')
renderer = self.controller.plugin.renderer rect = ScreenList().current[u'size']
rect = renderer.screens.current[u'size']
rect = RECT(rect.x(), rect.y(), rect.right(), rect.bottom()) rect = RECT(rect.x(), rect.y(), rect.right(), rect.bottom())
filepath = str(self.filepath.replace(u'/', u'\\')) filepath = str(self.filepath.replace(u'/', u'\\'))
if not os.path.isdir(self.get_temp_folder()): if not os.path.isdir(self.get_temp_folder()):

View File

@ -5,4 +5,9 @@ sip.setapi(u'QString', 2)
sip.setapi(u'QTextStream', 2) sip.setapi(u'QTextStream', 2)
sip.setapi(u'QTime', 2) sip.setapi(u'QTime', 2)
sip.setapi(u'QUrl', 2) sip.setapi(u'QUrl', 2)
sip.setapi(u'QVariant', 2) sip.setapi(u'QVariant', 2)
from PyQt4 import QtGui
# Only one QApplication can be created. Use QtGui.QApplication.instance() when you need to "create" a QApplication.
application = QtGui.QApplication([])

View File

@ -20,7 +20,7 @@ class TestImageManager(TestCase):
Create the UI Create the UI
""" """
Registry.create() Registry.create()
self.app = QtGui.QApplication([]) self.app = QtGui.QApplication.instance()
ScreenList.create(self.app.desktop()) ScreenList.create(self.app.desktop())
self.image_manager = ImageManager() self.image_manager = ImageManager()

View File

@ -0,0 +1,55 @@
"""
Package to test the openlp.core.lib.screenlist package.
"""
import copy
from unittest import TestCase
from mock import MagicMock
from PyQt4 import QtGui, QtCore
from openlp.core.lib import ScreenList
SCREEN = {
u'primary': False,
u'number': 1,
u'size': QtCore.QRect(0, 0, 1024, 768)
}
class TestScreenList(TestCase):
def setUp(self):
"""
Set up the components need for all tests.
"""
self.application = QtGui.QApplication.instance()
self.screens = ScreenList.create(self.application.desktop())
def tearDown(self):
"""
Delete QApplication.
"""
del self.application
def add_desktop_test(self):
"""
Test the ScreenList class' screen_count_changed method to check if new monitors are detected by OpenLP.
"""
# GIVEN: The screen list.
old_screens = copy.deepcopy(self.screens.screen_list)
# Mock the attributes.
self.screens.desktop.primaryScreen = MagicMock(return_value=SCREEN[u'primary'])
self.screens.desktop.screenCount = MagicMock(return_value=SCREEN[u'number'] + 1)
self.screens.desktop.screenGeometry = MagicMock(return_value=SCREEN[u'size'])
# WHEN: Add a new screen.
self.screens.screen_count_changed(len(old_screens))
# THEN: The screen should have been added.
new_screens = self.screens.screen_list
assert len(old_screens) + 1 == len(new_screens), u'The new_screens list should be bigger.'
# THEN: The screens should be identically.
assert SCREEN == new_screens.pop(), u'The new screen should be identically to the screen defined above.'

View File

@ -17,7 +17,6 @@ VERSE = u'The Lord said to {r}Noah{/r}: \n'\
'{r}C{/r}{b}h{/b}{bl}i{/bl}{y}l{/y}{g}d{/g}{pk}'\ '{r}C{/r}{b}h{/b}{bl}i{/bl}{y}l{/y}{g}d{/g}{pk}'\
'r{/pk}{o}e{/o}{pp}n{/pp} of the Lord\n' 'r{/pk}{o}e{/o}{pp}n{/pp} of the Lord\n'
FOOTER = [u'Arky Arky (Unknown)', u'Public Domain', u'CCLI 123456'] FOOTER = [u'Arky Arky (Unknown)', u'Public Domain', u'CCLI 123456']
TESTPATH = os.path.abspath(os.path.join(os.path.dirname(__file__), u'..', u'..', u'resources')) TESTPATH = os.path.abspath(os.path.join(os.path.dirname(__file__), u'..', u'..', u'resources'))
@ -39,7 +38,7 @@ class TestServiceItem(TestCase):
""" """
# GIVEN: A new service item # GIVEN: A new service item
# WHEN:A service item is created (without a plugin) # WHEN: A service item is created (without a plugin)
service_item = ServiceItem(None) service_item = ServiceItem(None)
# THEN: We should get back a valid service item # THEN: We should get back a valid service item

View File

@ -5,4 +5,9 @@ sip.setapi(u'QString', 2)
sip.setapi(u'QTextStream', 2) sip.setapi(u'QTextStream', 2)
sip.setapi(u'QTime', 2) sip.setapi(u'QTime', 2)
sip.setapi(u'QUrl', 2) sip.setapi(u'QUrl', 2)
sip.setapi(u'QVariant', 2) sip.setapi(u'QVariant', 2)
from PyQt4 import QtGui
# Only one QApplication can be created. Use QtGui.QApplication.instance() when you need to "create" a QApplication.
application = QtGui.QApplication([])

View File

@ -26,13 +26,14 @@ class TestPluginManager(TestCase):
Settings().set_filename(self.ini_file) Settings().set_filename(self.ini_file)
Registry.create() Registry.create()
Registry().register(u'service_list', MagicMock()) Registry().register(u'service_list', MagicMock())
self.app = QtGui.QApplication([]) self.app = QtGui.QApplication.instance()
self.main_window = QtGui.QMainWindow() self.main_window = QtGui.QMainWindow()
Registry().register(u'main_window', self.main_window) Registry().register(u'main_window', self.main_window)
self.plugins_dir = os.path.abspath(os.path.join(os.path.basename(__file__), u'..', u'openlp', u'plugins')) self.plugins_dir = os.path.abspath(os.path.join(os.path.basename(__file__), u'..', u'openlp', u'plugins'))
def tearDown(self): def tearDown(self):
os.unlink(self.ini_file) os.unlink(self.ini_file)
del self.app
def find_plugins_test(self): def find_plugins_test(self):
""" """

View File

@ -15,7 +15,7 @@ class TestStartFileRenameForm(TestCase):
Create the UI Create the UI
""" """
registry = Registry.create() registry = Registry.create()
self.app = QtGui.QApplication([]) self.app = QtGui.QApplication.instance()
self.main_window = QtGui.QMainWindow() self.main_window = QtGui.QMainWindow()
Registry().register(u'main_window', self.main_window) Registry().register(u'main_window', self.main_window)
self.form = filerenameform.FileRenameForm() self.form = filerenameform.FileRenameForm()

View File

@ -18,7 +18,7 @@ class TestStartNoteDialog(TestCase):
Create the UI Create the UI
""" """
Registry.create() Registry.create()
self.app = QtGui.QApplication([]) self.app = QtGui.QApplication.instance()
ScreenList.create(self.app.desktop()) ScreenList.create(self.app.desktop())
Registry().register(u'application', MagicMock()) Registry().register(u'application', MagicMock())
self.main_window = MainWindow() self.main_window = MainWindow()

View File

@ -17,7 +17,7 @@ class TestStartNoteDialog(TestCase):
Create the UI Create the UI
""" """
Registry.create() Registry.create()
self.app = QtGui.QApplication([]) self.app = QtGui.QApplication.instance()
self.main_window = QtGui.QMainWindow() self.main_window = QtGui.QMainWindow()
Registry().register(u'main_window', self.main_window) Registry().register(u'main_window', self.main_window)
self.form = servicenoteform.ServiceNoteForm() self.form = servicenoteform.ServiceNoteForm()
@ -66,4 +66,5 @@ class TestStartNoteDialog(TestCase):
QtTest.QTest.mouseClick(okWidget, QtCore.Qt.LeftButton) QtTest.QTest.mouseClick(okWidget, QtCore.Qt.LeftButton)
# THEN the following text is returned # THEN the following text is returned
self.assertEqual(self.form.text_edit.toPlainText(), text, u'The new text should be returned') self.assertEqual(self.form.text_edit.toPlainText(), text, u'The new text should be returned')

View File

@ -17,7 +17,7 @@ class TestStartTimeDialog(TestCase):
Create the UI Create the UI
""" """
Registry.create() Registry.create()
self.app = QtGui.QApplication([]) self.app = QtGui.QApplication.instance()
self.main_window = QtGui.QMainWindow() self.main_window = QtGui.QMainWindow()
Registry().register(u'main_window', self.main_window) Registry().register(u'main_window', self.main_window)
self.form = starttimeform.StartTimeForm() self.form = starttimeform.StartTimeForm()
@ -93,4 +93,4 @@ class TestStartTimeDialog(TestCase):
self.assertEqual(self.form.hourSpinBox.value(), 0) self.assertEqual(self.form.hourSpinBox.value(), 0)
self.assertEqual(self.form.minuteSpinBox.value(), 2) self.assertEqual(self.form.minuteSpinBox.value(), 2)
self.assertEqual(self.form.secondSpinBox.value(), 3) self.assertEqual(self.form.secondSpinBox.value(), 3)
self.assertEqual(self.form.item[u'service_item'].start_time, 123, u'The start time should have changed') self.assertEqual(self.form.item[u'service_item'].start_time, 123, u'The start time should have changed')