From 16f798e404b7bd83bca34a63a93985ee8de6cc1a Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Mon, 12 Dec 2011 22:10:37 +0000 Subject: [PATCH 1/6] Attempt to check for gnome version --- openlp/core/ui/exceptionform.py | 8 +++++++- openlp/core/ui/maindisplay.py | 10 +++++++--- openlp/core/utils/__init__.py | 12 ++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py index 0cda4bd60..83a6d4344 100644 --- a/openlp/core/ui/exceptionform.py +++ b/openlp/core/ui/exceptionform.py @@ -32,7 +32,7 @@ import platform import sqlalchemy import BeautifulSoup from lxml import etree -from PyQt4 import Qt, QtCore, QtGui +from PyQt4 import Qt, QtCore, QtGui, QtWebKit try: from PyQt4.phonon import Phonon @@ -77,6 +77,11 @@ try: UNO_VERSION = node.getByName(u'ooSetupVersion') except ImportError: UNO_VERSION = u'-' +try: + WEBKIT_VERSION = QtWebKit.qWebKitVersion() +except AttributeError: + WEBKIT_VERSION = u'-' + from openlp.core.lib import translate, SettingsManager from openlp.core.lib.ui import UiStrings @@ -111,6 +116,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog): u'Qt4: %s\n' % Qt.qVersion() + \ u'Phonon: %s\n' % PHONON_VERSION + \ u'PyQt4: %s\n' % Qt.PYQT_VERSION_STR + \ + u'QtWebkit: %s\n' % WEBKIT_VERSION + \ u'SQLAlchemy: %s\n' % sqlalchemy.__version__ + \ u'SQLAlchemy Migrate: %s\n' % MIGRATE_VERSION + \ u'BeautifulSoup: %s\n' % BeautifulSoup.__version__ + \ diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 328970d45..6452fc87f 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -38,6 +38,8 @@ from openlp.core.lib import Receiver, build_html, ServiceItem, image_to_byte, \ from openlp.core.ui import HideMode, ScreenList, AlertLocation +from openlp.core.utils import get_gnome_version + log = logging.getLogger(__name__) #http://www.steveheffernan.com/html5-video-player/demo-video-player.html @@ -120,9 +122,11 @@ class MainDisplay(Display): self.audioPlayer = None self.firstTime = True self.setStyleSheet(u'border: 0px; margin: 0px; padding: 0px;') - self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | - QtCore.Qt.WindowStaysOnTopHint | - QtCore.Qt.X11BypassWindowManagerHint) + gnome_vers = get_gnome_version() + if gnome_vers is None or gnome_vers < u'3.2': + self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | + QtCore.Qt.WindowStaysOnTopHint | + QtCore.Qt.X11BypassWindowManagerHint) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) if self.isLive: QtCore.QObject.connect(Receiver.get_receiver(), diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index fbf185474..7b719168e 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -502,6 +502,18 @@ def get_uno_instance(resolver): return resolver.resolve(u'uno:socket,host=localhost,port=2002;' \ + u'urp;StarOffice.ComponentContext') +def get_gnome_version(): + if sys.platform == u'win32' or sys.platform == u'darwin': + return None + if os.environ.get(u'DESKTOP_SESSION') != u'gnome': + return None + gnome = Popen((u'gnome-session', u'--version'), stdout=PIPE) + output, error = gnome.communicate() + code = gnome.wait() + if code != 1: + return None + return output.split(u' ')[1] + from languagemanager import LanguageManager from actions import ActionList From 3874363e54c0aa800109ee5347e32e54c98219b6 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Wed, 14 Dec 2011 22:44:41 +0000 Subject: [PATCH 2/6] Add a more specific test for gnome shell --- openlp/core/ui/maindisplay.py | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 6452fc87f..ff3122977 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -29,6 +29,9 @@ The :mod:`maindisplay` module provides the functionality to display screens and play multimedia within OpenLP. """ import logging +import os +import sys +from subprocess import Popen, PIPE from PyQt4 import QtCore, QtGui, QtWebKit, QtOpenGL from PyQt4.phonon import Phonon @@ -38,8 +41,6 @@ from openlp.core.lib import Receiver, build_html, ServiceItem, image_to_byte, \ from openlp.core.ui import HideMode, ScreenList, AlertLocation -from openlp.core.utils import get_gnome_version - log = logging.getLogger(__name__) #http://www.steveheffernan.com/html5-video-player/demo-video-player.html @@ -122,8 +123,7 @@ class MainDisplay(Display): self.audioPlayer = None self.firstTime = True self.setStyleSheet(u'border: 0px; margin: 0px; padding: 0px;') - gnome_vers = get_gnome_version() - if gnome_vers is None or gnome_vers < u'3.2': + if not self.checkGnomeShell32(): self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.X11BypassWindowManagerHint) @@ -444,6 +444,31 @@ class MainDisplay(Display): self.setCursor(QtCore.Qt.ArrowCursor) self.frame.evaluateJavaScript('document.body.style.cursor = "auto"') + def checkGnomeShell32(self): + if hasattr(MainDisplay, u'gnomeShell32'): + return MainDisplay.gnomeShell32 + MainDisplay.gnomeShell32 = False + if sys.platform == u'win32' or sys.platform == u'darwin': + return False + if os.environ.get(u'DESKTOP_SESSION') != u'gnome': + return False + gnome = Popen((u'gnome-session', u'--version'), stdout=PIPE) + output, error = gnome.communicate() + code = gnome.wait() + if code != 1: + return False + version = output.split(u' ')[1][:-1].split(u'.') + if int(version[0]) < 3: + return False + if int(version[0]) == 3 and int(version[1]) < 2: + return False + ps = Popen((u'ps', u'-C' u'gnome-shell', u'-o', u'comm='), stdout=PIPE) + output, error = ps.communicate() + code = ps.wait() + if code != 0: + return False + MainDisplay.gnomeShell32 = True + return True class AudioPlayer(QtCore.QObject): """ From 98a6c25ac8e6bd18febc14ceab023a55ca2f8142 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Wed, 14 Dec 2011 23:41:52 +0000 Subject: [PATCH 3/6] Missed a file... --- openlp/core/utils/__init__.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 7b719168e..fbf185474 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -502,18 +502,6 @@ def get_uno_instance(resolver): return resolver.resolve(u'uno:socket,host=localhost,port=2002;' \ + u'urp;StarOffice.ComponentContext') -def get_gnome_version(): - if sys.platform == u'win32' or sys.platform == u'darwin': - return None - if os.environ.get(u'DESKTOP_SESSION') != u'gnome': - return None - gnome = Popen((u'gnome-session', u'--version'), stdout=PIPE) - output, error = gnome.communicate() - code = gnome.wait() - if code != 1: - return None - return output.split(u' ')[1] - from languagemanager import LanguageManager from actions import ActionList From febf40884ffd4120f7f8aa5f71faa3f9c24c4fb4 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Wed, 21 Dec 2011 21:19:35 +0000 Subject: [PATCH 4/6] Just remove X11 bypass --- openlp/core/ui/maindisplay.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index ff3122977..41d3bed7a 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -127,6 +127,9 @@ class MainDisplay(Display): self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.X11BypassWindowManagerHint) + else: + self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | + QtCore.Qt.WindowStaysOnTopHint) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) if self.isLive: QtCore.QObject.connect(Receiver.get_receiver(), From 16043527fc629232ffbbc513ba72209e92a5baab Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 22 Dec 2011 12:27:54 +0000 Subject: [PATCH 5/6] Check for Unity instead --- openlp/core/ui/maindisplay.py | 37 +++++------------------------------ 1 file changed, 5 insertions(+), 32 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 41d3bed7a..9f00c2baf 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -123,13 +123,11 @@ class MainDisplay(Display): self.audioPlayer = None self.firstTime = True self.setStyleSheet(u'border: 0px; margin: 0px; padding: 0px;') - if not self.checkGnomeShell32(): - self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | - QtCore.Qt.WindowStaysOnTopHint | - QtCore.Qt.X11BypassWindowManagerHint) - else: - self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | - QtCore.Qt.WindowStaysOnTopHint) + windowFlags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | \ + QtCore.Qt.WindowStaysOnTopHint + if os.environ.get(u'XDG_CURRENT_DESKTOP') == u'Unity': + windowFlags = windowFlags | QtCore.Qt.X11BypassWindowManagerHint + self.setWindowFlags(windowFlags) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) if self.isLive: QtCore.QObject.connect(Receiver.get_receiver(), @@ -447,31 +445,6 @@ class MainDisplay(Display): self.setCursor(QtCore.Qt.ArrowCursor) self.frame.evaluateJavaScript('document.body.style.cursor = "auto"') - def checkGnomeShell32(self): - if hasattr(MainDisplay, u'gnomeShell32'): - return MainDisplay.gnomeShell32 - MainDisplay.gnomeShell32 = False - if sys.platform == u'win32' or sys.platform == u'darwin': - return False - if os.environ.get(u'DESKTOP_SESSION') != u'gnome': - return False - gnome = Popen((u'gnome-session', u'--version'), stdout=PIPE) - output, error = gnome.communicate() - code = gnome.wait() - if code != 1: - return False - version = output.split(u' ')[1][:-1].split(u'.') - if int(version[0]) < 3: - return False - if int(version[0]) == 3 and int(version[1]) < 2: - return False - ps = Popen((u'ps', u'-C' u'gnome-shell', u'-o', u'comm='), stdout=PIPE) - output, error = ps.communicate() - code = ps.wait() - if code != 0: - return False - MainDisplay.gnomeShell32 = True - return True class AudioPlayer(QtCore.QObject): """ From 1cd3206f96425f6b6e6fdb3b50fb485f5aa3b279 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 22 Dec 2011 13:23:04 +0000 Subject: [PATCH 6/6] Redundant imports --- openlp/core/ui/maindisplay.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 9f00c2baf..03b5da7e6 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -30,8 +30,6 @@ and play multimedia within OpenLP. """ import logging import os -import sys -from subprocess import Popen, PIPE from PyQt4 import QtCore, QtGui, QtWebKit, QtOpenGL from PyQt4.phonon import Phonon