From 9f7ece48ebeb1e87734303b8873255f33668976a Mon Sep 17 00:00:00 2001 From: Dustin Falgout Date: Sun, 22 Jan 2017 21:40:07 -0600 Subject: [PATCH] Finish with the LightDMGreeter Bridge Object --- web-greeter/bridge/Config.py | 29 ++++++++ web-greeter/bridge/Greeter.py | 127 ++++++++++++++++++++++++++-------- 2 files changed, 128 insertions(+), 28 deletions(-) create mode 100644 web-greeter/bridge/Config.py diff --git a/web-greeter/bridge/Config.py b/web-greeter/bridge/Config.py new file mode 100644 index 0000000..ed1d3ed --- /dev/null +++ b/web-greeter/bridge/Config.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Config.py +# +# Copyright © 2017 Antergos +# +# This file is part of Web Greeter. +# +# Web Greeter is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Web Greeter is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# The following additional terms are in effect as per Section 7 of the license: +# +# The preservation of all legal notices and author attributions in +# the material or in the Appropriate Legal Notices displayed +# by works containing it is required. +# +# You should have received a copy of the GNU General Public License +# along with Web Greeter; If not, see . + +# Standard Lib diff --git a/web-greeter/bridge/Greeter.py b/web-greeter/bridge/Greeter.py index 161601f..004b04a 100644 --- a/web-greeter/bridge/Greeter.py +++ b/web-greeter/bridge/Greeter.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# LightDMGreeter.py +# Greeter.py # # Copyright © 2017 Antergos # @@ -33,7 +33,10 @@ import gi gi.require_version('LightDM', '1') from gi.repository import LightDM from PyQt5.QtCore import QVariant -from whither.bridge import BridgeObject, prop +from whither.bridge import ( + BridgeObject, + bridge, +) # This Application from . import ( @@ -50,110 +53,178 @@ LightDMUserList = LightDM.UserList() class Greeter(BridgeObject): + authentication_complete = bridge.signal() + autologin_timer_expired = bridge.signal() + idle = bridge.signal() + reset = bridge.signal() + show_message = bridge.signal(str, str, arguments=('text', 'type')) + show_prompt = bridge.signal(str, str, arguments=('text', 'type')) + def __init__(self, *args, **kwargs): super().__init__(name='LightDMGreeter', *args, **kwargs) - @prop(str) + LightDMGreeter.connect_to_daemon_sync() + + self._connect_signals() + + def _connect_signals(self): + LightDMGreeter.connect('authentication-complete', self.authentication_complete.emit) + LightDMGreeter.connect('autologin-timer-expired', self.authentication_complete.emit) + LightDMGreeter.connect('idle', self.idle.emit) + LightDMGreeter.connect('reset', self.reset.emit) + LightDMGreeter.connect('show-message', self.reset.emit) + LightDMGreeter.connect('show-prompt', self.reset.emit) + + @bridge.prop(str) def authentication_user(self): return LightDMGreeter.get_authentication_user() or '' - @prop(bool) + @bridge.prop(bool) def autologin_guest(self): return LightDMGreeter.get_autologin_guest_hint() - @prop(int) + @bridge.prop(int) def autologin_timeout(self): return LightDMGreeter.get_autologin_timeout_hint() - @prop(str) + @bridge.prop(str) def autologin_user(self): return LightDMGreeter.get_autologin_user_hint() - @prop(bool) + @bridge.prop(bool) def can_hibernate(self): return LightDM.get_can_hibernate() - @prop(bool) + @bridge.prop(bool) def can_restart(self): return LightDM.get_can_restart() - @prop(bool) + @bridge.prop(bool) def can_shutdown(self): return LightDM.get_can_shutdown() - @prop(bool) + @bridge.prop(bool) def can_suspend(self): return LightDM.get_can_suspend() - @prop(str) + @bridge.prop(str) def default_session(self): return LightDMGreeter.get_default_session_hint() - @prop(bool) + @bridge.prop(bool) def has_guest_account(self): return LightDMGreeter.get_has_guest_account_hint() - @prop(bool) + @bridge.prop(bool) def hide_users(self): return LightDMGreeter.get_hide_users_hint() - @prop(str) + @bridge.prop(str) def hostname(self): return LightDM.get_hostname() - @prop(bool) + @bridge.prop(bool) def in_authentication(self): return LightDMGreeter.get_in_authentication() - @prop(bool) + @bridge.prop(bool) def is_authenticated(self): return LightDMGreeter.get_is_authenticated() - @prop(QVariant) + @bridge.prop(QVariant) def language(self): return language_to_dict(LightDM.get_language()) - @prop(list) + @bridge.prop(list) def languages(self): return [language_to_dict(lang) for lang in LightDM.get_languages()] - @prop(QVariant) + @bridge.prop(QVariant) def layout(self): return layout_to_dict(LightDM.get_layout()) - @prop(list) + @bridge.prop(list) def layouts(self): return [layout_to_dict(layout) for layout in LightDM.get_layouts()] - @prop(bool) + @bridge.prop(bool) def lock_hint(self): return LightDMGreeter.get_lock_hint() - @prop(list) + @bridge.prop(list) def remote_sessions(self): return [session_to_dict(session) for session in LightDM.get_remote_sessions()] - @prop(bool) + @bridge.prop(bool) def select_guest_hint(self): return LightDMGreeter.get_select_guest_hint() - @prop(str) + @bridge.prop(str) def select_user_hint(self): return LightDMGreeter.get_select_user_hint() or '' - @prop(list) + @bridge.prop(QVariant) def sessions(self): return [session_to_dict(session) for session in LightDM.get_sessions()] - @prop(bool) + @bridge.prop(bool) def show_manual_login_hint(self): return LightDMGreeter.get_show_manual_login_hint() - @prop(bool) + @bridge.prop(bool) def show_remote_login_hint(self): return LightDMGreeter.get_show_remote_login_hint() - @prop(list) + @bridge.prop(QVariant) def users(self): return [user_to_dict(user) for user in LightDMUserList.get_users()] + @bridge.method(str) + def authenticate(self, username): + LightDMGreeter.authenticate(username) + + @bridge.method() + def authenticate_as_guest(self): + LightDMGreeter.authenticate_as_guest() + + @bridge.method() + def cancel_authentication(self): + LightDMGreeter.cancel_authentication() + + @bridge.method() + def cancel_autologin(self): + LightDMGreeter.cancel_autologin() + + @bridge.method(result=bool) + def hibernate(self): + return LightDMGreeter.hibernate() + + @bridge.method(str) + def respond(self, response): + LightDMGreeter.respond(response) + + @bridge.method(result=bool) + def restart(self): + return LightDMGreeter.restart() + + @bridge.method(str) + def set_language(self, lang): + if self.is_authenticated: + LightDMGreeter.set_language(lang) + + @bridge.method(result=bool) + def shutdown(self): + return LightDMGreeter.shutdown() + + @bridge.method(str, result=bool) + def start_session(self, session): + return LightDMGreeter.start_session_sync(session) + + @bridge.method(result=bool) + def suspend(self): + return LightDMGreeter.suspend() + + + + +