This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch brokerclient in repository pyhoca-gui. commit 437c839e89852e3a334e5ff61a769745d6ddc604 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Tue Mar 18 01:14:07 2014 +0100 add forgotten new file: brokerlogon.py --- pyhoca/wxgui/brokerlogon.py | 206 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) diff --git a/pyhoca/wxgui/brokerlogon.py b/pyhoca/wxgui/brokerlogon.py new file mode 100644 index 0000000..38a4b1d --- /dev/null +++ b/pyhoca/wxgui/brokerlogon.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2010-2013 by Mike Gabriel <mike.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2013 by Dick Kniep <dick.kniep@lindix.nl> +# +# PyHoca GUI is free software; you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# PyHoca GUI 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + +modules ={} + +try: + import wxversion + wxversion.select('2.9') +except: pass + +try: + import wxversion + wxversion.select('2.8') +except: pass + +# Python X2Go +import x2go + +# gevent +import gevent +import gevent.monkey +gevent.monkey.patch_all() + +import wx +import os + +if os.environ.has_key('DESKTOP_SESSION'): + WINDOW_MANAGER = os.environ['DESKTOP_SESSION'] +else: + WINDOW_MANAGER = 'generic' + +class PyHocaGUI_BrokerDialogBoxPassword(wx.Dialog): + """\ + Broker logon window for L{PyHocaGUI}. + + """ + def __init__(self, _PyHocaGUI, caller=None): + """\ + Broker logon window (constructor) + + @param _PyHocaGUI: main application instance + @type _PyHocaGUI: C{obj} + + """ + self._PyHocaGUI = _PyHocaGUI + self._pyhoca_logger = self._PyHocaGUI._pyhoca_logger + self._pyhoca_logger('password dialog box started', loglevel=x2go.loglevel_INFO, ) + + wx.Dialog.__init__(self, None, id=-1, title=self._PyHocaGUI.broker_name + ' ' + _(u'Logon'), style=wx.DEFAULT_FRAME_STYLE, ) + self._PyHocaGUI._sub_windows.append(self) + + self.brokerLbl = wx.StaticText(self, wx.ID_ANY, _(u'Broker URL')+':', size=(-1, -1)) + self.brokerTxt = wx.TextCtrl(self, wx.ID_ANY, '', style=wx.TE_PROCESS_ENTER, size=(240, -1)) + + self.userLbl = wx.StaticText(self, wx.ID_ANY, _(u'Username')+':', size=(-1, -1)) + self.userTxt = wx.TextCtrl(self, wx.ID_ANY, '', style=wx.TE_PROCESS_ENTER, size=(240, -1)) + + if self._PyHocaGUI.session_profiles.get_broker_username(): + self.userTxt.SetValue(self._PyHocaGUI.session_profiles.get_broker_username()) + else: + self.userTxt.SetFocus() + + if self._PyHocaGUI.session_profiles.get_broker_url(): + if self._PyHocaGUI.session_profiles.get_broker_url().upper() in ('HTTP', 'SSH'): + self.brokerTxt.SetFocus() + if self._PyHocaGUI.session_profiles.get_broker_type() == 'http': + self.brokerTxt.SetValue('http://<host>[:<port>]/json/') + self.userTxt.SetValue('<user>') + elif self._PyHocaGUI.session_profiles.get_broker_type() == 'ssh': + self.brokerTxt.SetValue('ssh://<host>[:<port>]/usr/bin/x2gobroker') + self.userTxt.SetValue('<user>') + else: + self.brokerTxt.SetValue(self._PyHocaGUI.session_profiles.get_broker_url()) + + + self.passwordLbl = wx.StaticText(self, wx.ID_ANY, _(u'Password')+':', size=(-1, -1)) + self.passwordTxt = wx.TextCtrl(self, wx.ID_ANY, '', style=wx.TE_PROCESS_ENTER|wx.TE_PASSWORD, size=(240, -1)) + self.passwordTxt.SetFocus() + + self.loginBtn = wx.Button(self, wx.ID_OK, _(u'Authenticate'), ) + self.loginBtn.SetDefault() + self.cancelBtn = wx.Button(self, wx.ID_CANCEL, _(u'Cancel'), ) + _tab_order = [self.userTxt, self.passwordTxt, self.loginBtn, self.cancelBtn, ] + + self.Bind(wx.EVT_BUTTON, self.OnLogin, self.loginBtn) + self.Bind(wx.EVT_TEXT_ENTER, self.OnLogin, self.brokerTxt) + self.Bind(wx.EVT_TEXT_ENTER, self.OnLogin, self.userTxt) + self.Bind(wx.EVT_TEXT_ENTER, self.OnLogin, self.passwordTxt) + self.Bind(wx.EVT_BUTTON, self.OnCancel, self.cancelBtn) + + btnSizer = wx.BoxSizer(wx.HORIZONTAL) + mainSizer = wx.BoxSizer(wx.VERTICAL) + + credSizer = wx.GridBagSizer(hgap=2, vgap=3) + credSizer.Add(self.brokerLbl, pos=(0,0), flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL, border=5) + credSizer.Add(self.brokerTxt, pos=(0,1), flag=wx.ALL, border=5) + credSizer.Add(self.userLbl, pos=(1,0), flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL, border=5) + credSizer.Add(self.userTxt, pos=(1,1), flag=wx.ALL, border=5) + credSizer.Add(self.passwordLbl, pos=(2,0), flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL, border=5) + credSizer.Add(self.passwordTxt, pos=(2,1), flag=wx.ALL, border=5) + + btnSizer.Add(self.loginBtn, 0, wx.ALL, 5) + btnSizer.Add(self.cancelBtn, 0, wx.ALL, 5) + + mainSizer.Add(credSizer, 0, wx.ALL, 5) + mainSizer.Add(btnSizer, 0, wx.ALL|wx.ALIGN_RIGHT, 5) + + # Logged in variable + self.loggedIn = False + + self.SetSizerAndFit(mainSizer) + self.Layout() + + for i in xrange(len(_tab_order) - 1): + _tab_order[i+1].MoveAfterInTabOrder(_tab_order[i]) + + maxX, maxY = wx.GetDisplaySize() + + if self._PyHocaGUI.logon_window_position_x and self._PyHocaGUI.logon_window_position_y: + + # allow positioning of logon window via command line option + if self._PyHocaGUI.logon_window_position_x < 0: + move_x = maxX - (self.GetSize().GetWidth() + self._PyHocaGUI.logon_window_position_x) + else: + move_x = self._PyHocaGUI.logon_window_position_x + if self._PyHocaGUI.logon_window_position_y < 0: + move_y = maxX - (self.GetSize().GetHeight() + self._PyHocaGUI.logon_window_position_y) + else: + move_y = self._PyHocaGUI.logon_window_position_y + + elif (x2go.X2GOCLIENT_OS == 'Linux') and (WINDOW_MANAGER in ('gnome', 'gnome-fallback', 'awesome', 'mate', 'ubuntu', 'ubuntu-2d', 'openbox-gnome', )): + + # automatically place logon Window for GNOME, awesome + move_x = maxX - (self.GetSize().GetWidth() + 20) + move_y = 35 + + else: + + # automatically place logon Window for KDE4, LXDE, etc. + move_x = maxX - (self.GetSize().GetWidth() + 20) + move_y = maxY - (self.GetSize().GetHeight() + 70) + + self.Move((move_x, move_y)) + self.Show() + + def OnLogin(self, evt): + """\ + If the user clicks ,,Ok'' in the logon window. + + @param evt: event + @type evt: C{obj} + + """ + broker_url = self.brokerTxt.GetValue() + username = self.userTxt.GetValue() + password = self.passwordTxt.GetValue() + + self._PyHocaGUI.session_profiles.set_broker_url(broker_url) + if self._PyHocaGUI.session_profiles.broker_simpleauth(username, password): + self._PyHocaGUI.notifier.send("%s - success" % self._PyHocaGUI.broker_name, "Authentication to session broker has been\nsuccessful.", icon='success', timeout=10000) + self._PyHocaGUI.session_profiles.populate_session_profiles() + self.Close() + self.Destroy() + else: + self._PyHocaGUI.notifier.send("%s - failure" % self._PyHocaGUI.broker_name, "Authentication to session broker failed.", icon='success', timeout=10000) + self.Close() + self.Destroy() + + def OnCancel(self, evt): + """ + If the user clicks ,,Cancel'' in the logon window. + + @param evt: event + @type evt: C{obj} + + """ + self.Close() + self.Destroy() + + def Destroy(self): + """ + Tidy up some stuff in the main application instance when the logon window gets destroyed. + + """ + try: + self._PyHocaGUI._sub_windows.remove(self) + except ValueError: + pass + wx.Dialog.Destroy(self) -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/pyhoca-gui.git