~mvo/ubuntu-sso-client/strawman-lp711413

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# -*- coding: utf-8 -*-
#
# Copyright 2012 Canonical Ltd.
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 3, as published
# by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranties of
# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
# PURPOSE.  See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program.  If not, see <http://www.gnu.org/licenses/>.

"""Main module to open the QT UI."""

import sys

from PyQt4 import QtGui, QtCore

# Module used to include the resources into this file
# Unused import resources_rc, pylint: disable=W0611
from ubuntu_sso.qt.ui import resources_rc
# pylint: enable=W0611
from ubuntu_sso.qt.ubuntu_sso_wizard import UbuntuSSOClientGUI
from ubuntu_sso.utils import PLATFORM_QSS


# Invalid name "source", pylint: disable=C0103
if sys.platform == 'win32':
    from ubuntu_sso.qt.main import windows
    source = windows
else:
    from ubuntu_sso.qt.main import linux
    source = linux
# pylint: enable=C0103


def main(**kwargs):
    """Start the QT mainloop and open the main window."""
    app = QtGui.QApplication(sys.argv)

    source.main(app)

    data = []
    for qss_name in (PLATFORM_QSS, ":/stylesheet.qss"):
        qss = QtCore.QResource(qss_name)
        data.append(unicode(qss.data()))
    app.setStyleSheet('\n'.join(data))

    # Fix the string that contains unicode chars.
    for key in kwargs:
        value = kwargs[key]
        if isinstance(value, str):
            kwargs[key] = value.decode('utf-8')

    # Unused variable 'ui', pylint: disable=W0612
    close_callback = lambda: source.main_quit(app)
    ui = UbuntuSSOClientGUI(close_callback=close_callback, **kwargs)
    style = QtGui.QStyle.alignedRect(
                    QtCore.Qt.LeftToRight, QtCore.Qt.AlignCenter,
                    ui.size(), app.desktop().availableGeometry())
    ui.setGeometry(style)
    ui.show()

    source.main_start(app)