[X2Go-Commits] pyhoca-gui.git - build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d (branch) updated: e90dfa515174ef9c9256843034ca57e784cafbd5

X2Go dev team git-admin at x2go.org
Tue Aug 27 13:20:33 CEST 2013


The branch, build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d has been updated
       via  e90dfa515174ef9c9256843034ca57e784cafbd5 (commit)
      from  81eeb4e708475585014567bb826564641777364b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 SessionProfile.py |   12 ++++++-
 x2goLogon.py      |   98 +++++++++++++++++++++++++++++++++++------------------
 2 files changed, 76 insertions(+), 34 deletions(-)

The diff of changes is:
diff --git a/SessionProfile.py b/SessionProfile.py
index 40ca343..c3b976d 100644
--- a/SessionProfile.py
+++ b/SessionProfile.py
@@ -254,9 +254,12 @@ class SingleProfile:
 
     def updValue(self, key, value):
         setattr(self, key, value)
+        
+    def setPassword(self, password):
+        self.password = password
 
 class x2goProfiles:
-    def __init__(self, logger, liblogger):
+    def __init__(self, logger, liblogger, profile=None):
         self.logger = logger
         self.liblogger = liblogger
         self.x2goprofs = []
@@ -275,6 +278,13 @@ class x2goProfiles:
             self.current_profile = self.x2goprofs[0]
         for idx, prof in enumerate(self.x2goprofs):
             self.x2gonames[prof.name] = idx
+            
+        if profile:
+            if self.profileExists(profile):
+                self.current_profile = self.getProfileByName(profile)
+                self.there_is_a_default = True
+            else:
+                self.current_profile = None
 
     def AddProfile(self, name, **kw):
         if self.profileExists(name):
diff --git a/x2goLogon.py b/x2goLogon.py
index de101e4..fae9961 100644
--- a/x2goLogon.py
+++ b/x2goLogon.py
@@ -119,7 +119,7 @@ class menuActions(wx.Menu):
 
     def OnNewSession(self, evt):
         self.logger('NewSession started for self.parent.__class__.__name__ %s, len(self.SessionProfiles.x2goprofs) %s' % (self.parent.__class__.__name__, len(self.SessionProfiles.x2goprofs)), x2go.loglevel_INFO, )
-        if hasattr(self.parent,'selected_profile') and 1==0:
+        if hasattr(self.parent,'selected_profile'):
             X2GoPasswordScrn(self.parent)
         elif len(self.SessionProfiles.x2goprofs) > 1:
             self.logger('self.parent.IsIconized() %s' % self.parent.IsIconized(), x2go.loglevel_INFO, )
@@ -184,7 +184,7 @@ class X2GoResumeSessions(sc.SizedFrame):
                         style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
 
 class X2GoPasswordScrn(sc.SizedFrame):
-    def __init__(self, parent, Iconize=False):
+    def __init__(self, parent):
         """
         Screen to enter the userid and password for the session
 
@@ -208,32 +208,22 @@ class X2GoPasswordScrn(sc.SizedFrame):
         pane = self.GetContentsPane()
         pane.SetSizerType("form")
         pwScrn = self.passwordScrn(pane)
-        self.Main_MenuBar = wx.MenuBar()
-        self.SetMenuBar(self.Main_MenuBar)
-        self.Main_MenuBar.Append(menuActions(self), '&Connection')
-        #self.Bind(wx.EVT_CLOSE, self.OnCancel)
-        if Iconize:
-            if not self.IsIconized():
-                self.Iconize(True)
-            if parent.parent.args.password and parent.parent.args.username and parent.parent.args.profile and SessionProfiles.profileExists(parent.parent.args.profile):
-                self.onConnect()
-            elif parent.args.profile:
-                Message(self, 'Not all credentials are available')
-                self.Iconize(False)
+        self.Fit()
+        if parent.parent.args.password and parent.parent.args.username and self.current_profile:
+            self.onConnect()
         else:
             self.Show(True)
-        self.Fit()
 
     def passwordScrn(self, pnl):
-        wx.StaticText(pnl, -1, 'User'),
+        wx.StaticText(pnl, -1, '  User'),
         self.username_ctl = wx.TextCtrl(pnl, -1)
         self.username_ctl.SetSizerProps(expand=True)
         if hasattr(self.current_profile,'username'):
-            self.username_ctl.SetValue(self.SessionProfile.username)
+            self.username_ctl.SetValue(self.current_profile.username)
         else:
             self.username_ctl.SetValue(self.parent.parent.args.username)
 
-        wx.StaticText(pnl, -1, 'Password'),
+        wx.StaticText(pnl, -1, '  Password'),
         self.passwd_ctl = wx.TextCtrl(pnl, -1, style=wx.TE_PASSWORD)
 
         self.ConnectButton = wx.Button(pnl, -1, "Connect")
@@ -253,23 +243,32 @@ class X2GoPasswordScrn(sc.SizedFrame):
             Message(self,'Password is required')
             return
         self.current_profile.updValue('username',username)
-        self.current_profile.password = password
+        self.current_profile.setPassword(password)
         self.onConnect()
 
     def onConnect(self):
-        set_iconize = False
+        error = True
         try:
             connection = self.current_profile.Connect(self)
             connection.makeConnection(self.session, self.StatusText)
-            set_iconize = True
+            error = False
         except x2go.AuthenticationException:
             Message(self,'Userid/Password verification failed')
         except x2go.BadHostKeyException:
-            self.Message(self,'SSH host key verification for remote host [%s]:%s failed' % (self.current_profile.host, self.current_profile.ssh_port ))
+            Message(self,'SSH host key verification for remote host [%s]:%s failed' % (self.current_profile.host, self.current_profile.sshport ))
         except x2go.SSHException, e:
-            self.Message(self,'Problem with ssh tunnel for host [%s]:%s failed' % (self.current_profile.host, self.current_profile.ssh_port ))
-        if (set_iconize and not self.IsIconized()) or (self.IsIconized() and not set_iconize):
-            self.Iconize(set_iconize)
+            Message(self,'Problem with ssh tunnel for host [%s]:%s failed' % (self.current_profile.host, self.current_profile.sshport ))
+        except:
+            Message(self,'Unknown problem with connection to host [%s]:%s' % (self.current_profile.host, self.current_profile.sshport ))
+        if error:
+            self.Show(True)
+            if self.IsIconized():
+                self.Iconize(False)
+        else:
+            self.Show(False)
+            if not self.IsIconized():
+                self.Iconize(True)
+        self.parent.callbackConnection(error)
         return
 
     def OnCancel(self, evt):
@@ -302,8 +301,9 @@ class X2GoChooseSessionScrn(wx.Frame):
         self.SessionProfiles = parent.SessionProfiles
         self.current_profile = parent.SessionProfiles.current_profile
         self.selected_profile = None
+        self.currentItem = None
         self.printProfile = parent.printProfile
-        self.logger('Choose Session screen started', x2go.loglevel_INFO, )
+        self.logger('Choose Session screen started iconize %s' % Iconize, x2go.loglevel_INFO, )
         wx.Frame.__init__(self, None, -1)
         self.CentreOnScreen()
         self.il = wx.ImageList(16, 16)
@@ -341,6 +341,11 @@ class X2GoChooseSessionScrn(wx.Frame):
         if Iconize:
             if not self.IsIconized():
                 self.Iconize(True)
+            if parent.args.password and parent.args.username and self.current_profile:
+                X2GoPasswordScrn(self)
+            elif parent.args.profile:
+                Message(self, 'Not all credentials are available')
+                self.Iconize(False)
         else:
             self.Show(True)
 
@@ -407,6 +412,14 @@ class X2GoChooseSessionScrn(wx.Frame):
         #self.Close()
             self.tb.Destroy()
         self.Destroy()
+        
+    def callbackConnection(self, error):
+        if self.currentItem:
+            if error:
+                self.list.SetItemImage(self.currentItem, self.idx1)
+            else:
+                self.list.SetItemImage(self.currentItem, self.idx2)
+            
 
 class X2GoSessionDefScrn(wx.Frame):
     SESSIONNOTEBOOK = wx.NewId()
@@ -554,8 +567,7 @@ class X2GoLogonTaskBarIcon(wx.TaskBarIcon):
         wx.TaskBarIcon.__init__(self)
         self.parent = parent
         self.parent.parent.logger('Start TaskBarIcon type %s' % (wx.PlatformInfo, ), x2go.loglevel_INFO, )
-        img = wx.Image('Images/x2goclient.png')
-        icon = self.MakeIcon(img)
+        icon = self.MakeIcon(pyhocaguiImages.getx2goclientImage())
         self.SetIcon(icon, "x2go connect")
         self.imgidx = 1
 
@@ -641,16 +653,36 @@ def startX2Go(parent):
     This routine starts all processing
 
     If there is only one profile available, or if there is one (1) single
-    profile that has the default switch, the logon screen
-    can be shown immediately
+    profile that has the default switch, and the password has not been passed, 
+    the logon screen is shown immediately
+    
+    If there is only one profile available, or if there is one (1) single
+    profile that has the default switch, and the password has been passed, 
+    the connection can be made immediately and the screens should not be shown,
+    but if there is an error in the connection, the logon screen should be shown with an errormessage.
+    
+    if there are more than one profile available, and there is no default, 
+    the list of available profiles should be shown. After the user chooses
+    a profile, the connection should be made to that specific profile, turning
+    it into a session. After that all screens should be minimized.
+    
+    First all profile information is retrieved together with the settings and 
+    the printprofile. 
+    
+    Then it is tested if there are more than one profile that can be selected
     """
     parent.logger('starting a new X2go GUI session', x2go.loglevel_INFO, )
 
     parent.printProfile = SessionProfile.Printing(parent.logger)
     parent.settingsProfile = SessionProfile.Settings(parent.logger)
-    parent.SessionProfiles = SessionProfile.x2goProfiles(parent.logger, parent.liblogger)
+    if parent.args.profile:
+        parent.SessionProfiles = SessionProfile.x2goProfiles(parent.logger, parent.liblogger, parent.args.profile)
+    else:
+        parent.SessionProfiles = SessionProfile.x2goProfiles(parent.logger, parent.liblogger)
     noSessionsDefined = len(parent.SessionProfiles.x2goprofs) == 0
     moreSessionsDefined = len(parent.SessionProfiles.x2goprofs) > 1
+    if parent.args.password and parent.SessionProfiles.current_profile:
+        parent.SessionProfiles.current_profile.setPassword(parent.args.password)
 
     #checkArgs(parent, parent.args, SessionProfiles)
     parent.logger('parent.SessionProfiles %s' % parent.SessionProfiles, x2go.loglevel_INFO, )
@@ -665,11 +697,11 @@ def startX2Go(parent):
         X2GoResumeSessions(parent, sessionsSuspended)
     else:
         if parent.args.minimized:
-            parent.logger('Start minimized', x2go.loglevel_INFO, )
+            parent.logger('Start X2GoChooseSessionScrn minimized', x2go.loglevel_INFO, )
             ChoiceScrn = X2GoChooseSessionScrn(parent, Iconize=True)
         else:
             if not noSessionsDefined and (not moreSessionsDefined or parent.SessionProfiles.defaultAvailable()):
-                parent.logger('Start password entry normally', x2go.loglevel_INFO, )
+                parent.logger('Start X2GoChooseSessionScrn entry normally with a default or chosen profile', x2go.loglevel_INFO, )
                 ChoiceScrn = X2GoChooseSessionScrn(parent, Iconize=True)
             elif noSessionsDefined:
                 parent.logger('Start Profile Definition', x2go.loglevel_INFO, )


hooks/post-receive
-- 
pyhoca-gui.git (Python X2Go Client (wxPython GUI))

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "pyhoca-gui.git" (Python X2Go Client (wxPython GUI)).




More information about the x2go-commits mailing list