E5Gui/E5MainWindow.py

Sat, 23 Feb 2013 11:29:01 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 23 Feb 2013 11:29:01 +0100
changeset 2427
46481fe988d2
parent 2302
f29e9405c851
child 2525
8b507a9a2d40
child 2990
583beaf0b4b8
child 3163
9f50365a0870
permissions
-rw-r--r--

Added code to enable/disable certain entries of the Project->Session and Project->Debugger menus.

# -*- coding: utf-8 -*-

# Copyright (c) 2012 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Module implementing a main window class with styling support.
"""

from PyQt4.QtGui import QMainWindow, QStyleFactory,  QApplication

from .E5Application import e5App
from . import E5MessageBox


class E5MainWindow(QMainWindow):
    """
    Class implementing a main window with styling support.
    """
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget (QWidget)
        """
        super().__init__(parent)
        
        self.defaultStyleName = QApplication.style().objectName()
    
    def setStyle(self, styleName, styleSheetFile):
        """
        Public method to set the style of the interface.
        
        @param styleName name of the style to set (string)
        @param styleSheetFile name of a style sheet file to read to overwrite
            defaults of the given style (string)
        """
        # step 1: set the style
        style = None
        if styleName != "System" and styleName in QStyleFactory.keys():
            style = QStyleFactory.create(styleName)
        if style is None:
            style = QStyleFactory.create(self.defaultStyleName)
        if style is not None:
            QApplication.setStyle(style)
        
        # step 2: set a style sheet
        if styleSheetFile:
            try:
                f = open(styleSheetFile, "r", encoding="utf-8")
                styleSheet = f.read()
                f.close()
            except (IOError, OSError) as msg:
                E5MessageBox.warning(self,
                    self.trUtf8("Loading Style Sheet"),
                    self.trUtf8("""<p>The Qt Style Sheet file <b>{0}</b> could"""
                                """ not be read.<br>Reason: {1}</p>""")
                        .format(styleSheetFile, str(msg)))
                return
        else:
            styleSheet = ""
        
        e5App().setStyleSheet(styleSheet)

eric ide

mercurial