[X2Go-Commits] pyhoca-gui.git - twofactorauth (branch) updated: 0.2.1.1-44-g51f6e18

X2Go dev team git-admin at x2go.org
Sat Sep 14 15:56:41 CEST 2013


The branch, twofactorauth has been updated
       via  51f6e18ddb78fc74cca3f496281549ea54015d20 (commit)
      from  ff2c5020c462c1ee05ef32b82c60dd6ccf22777e (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:
 debian/changelog               |    2 +
 pyhoca/wxgui/frontend.py       |   81 ++++++++++++++++++---
 pyhoca/wxgui/menus_taskbar.py  |   50 ++++++++-----
 pyhoca/wxgui/profilemanager.py |  156 +++++++++++++++++++++++++++++++++-------
 4 files changed, 239 insertions(+), 50 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 8398714..053faf9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -27,6 +27,8 @@ pyhoca-gui (0.4.0.0-0~x2go1) UNRELEASED; urgency=low
     - Give control of auto-starting and auto-resuming fully into the hands
       of the session profiles. No extra cmdline options needed anymore to
       activate auto-starting/-resuming of sessions.
+    - Add support for desktop sharing in PyHoca-GUI. Requires X2Go Server
+      4.1.0.0 and above.
   * /debian/control:
     + Thanks to Orion's patch in bug #91 we can drop many build dependencies.
     + Versioned Depend: on python-x2go (>= 0.4.0.0-0~).
diff --git a/pyhoca/wxgui/frontend.py b/pyhoca/wxgui/frontend.py
index 4254f26..8ae0576 100644
--- a/pyhoca/wxgui/frontend.py
+++ b/pyhoca/wxgui/frontend.py
@@ -59,6 +59,7 @@ import basepath
 import messages
 import splash
 import sessiontitle
+import listdesktops
 
 wx.SetDefaultPyEncoding("utf-8")
 wx.InitAllImageHandlers()
@@ -145,6 +146,7 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
         self.appname = appname
         self.vendorname = vendorname
         self.version = version
+        self._exiting = False
 
         self.args = args
 
@@ -431,6 +433,7 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
           - close all associated windows
 
         """
+        self._exiting = True
         # close open password dialogs (or other remaining windows)
         for _win in self._sub_windows:
             _win.Close()
@@ -684,7 +687,7 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
                 pass
             connect_failed = True
         except x2go.X2GoRemoteHomeException, e:
-            self.notifier.send(_(u'%s - missing home directory') % profile_name, _("The remote user's home directory does not exist."), icon='auth_error', timeout=4000)
+            self.notifier.send(_(u'%s - missing home directory') % profile_name, _(u"The remote user's home directory does not exist."), icon='auth_error', timeout=4000)
             try:
                 self._temp_disabled_profile_names.remove(profile_name)
             except ValueError:
@@ -758,6 +761,39 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
             gevent.spawn(self._X2GoClient__start_session, session_uuid)
             self._X2GoClient__list_sessions(session_uuid, refresh_cache=True)
 
+    def OnShadowSessionStart(self, evt):
+        """\
+        Gets called if the user requests to start a new X2Go session.
+
+        @param evt: event
+        @type evt: C{obj}
+
+        """
+        profile_name = self._eventid_profilenames_map[evt.GetId()]
+
+        server_version = self.get_server_versions(profile_name, 'x2goserver')
+        if not self.has_server_feature(profile_name, 'X2GO_LIST_SHADOWSESSIONS'):
+            m = messages.PyHoca_MessageWindow_Ok(self,
+                                                 title=_(u'Desktop Sharing with %s not supported by server') % self.appname,
+                                                 msg=_(u"We apologize for the inconvenience...\n\nSession profiles of type ,,SHADOW'' are not\nsupported by X2Go Server (v%s)!!!\n\nDesktop Sharing with %s requires\nX2Go Server 4.1.0.0 and above.") % (server_version, self.appname),
+                                                 icon='warning',
+                                                 profile_name=profile_name)
+            m.ShowModal()
+            return
+
+        listbox = listdesktops.PyHocaGUI_DialogBoxListDesktops(self, profile_name)
+        listbox.ShowModal()
+
+        if listbox.connect:
+
+            desktop = listbox.GetSelectedDesktop()
+            if desktop:
+                session_uuid = self._X2GoClient__register_session(profile_name=profile_name, published_applications=False)
+                if self._X2GoClient__server_is_alive(session_uuid):
+                    gevent.spawn(self._X2GoClient__share_desktop_session, session_uuid, desktop=desktop, share_mode=listbox.share_mode, check_desktop_list=True)
+
+        listbox.Close()
+
     def OnPubAppSessionStart(self, evt):
         """\
         Gets called if the user requests to start a new X2Go session in published applications mode.
@@ -1129,10 +1165,10 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
             else:
                 self._pyhoca_logger('Exporting session profile(s) to file %s failed.' % _export_file, loglevel=x2go.loglevel_ERROR)
                 m = messages.PyHoca_MessageWindow_Ok(self,
-                                                        title=_(u'%s: Exporting session profile(s) failed') % self.appname,
-                                                        msg=_(u"The selected session profile(s) could not be exported to the \nfile »%s«.\n\nCheck for common problems (disk full, insufficient access, etc.).") % os.path.normpath(_export_file),
-                                                        icon='error',
-                                                        profile_name=profile_name)
+                                                     title=_(u'%s: Exporting session profile(s) failed') % self.appname,
+                                                     msg=_(u"The selected session profile(s) could not be exported to the \nfile »%s«.\n\nCheck for common problems (disk full, insufficient access, etc.).") % os.path.normpath(_export_file),
+                                                     icon='error',
+                                                     profile_name=profile_name)
                 m.ShowModal()
 
     def OnShareCustomLocalFolder(self, evt):
@@ -1355,7 +1391,8 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
         @type profile_name: C{str}
 
         """
-        self.notifier.send(_(u'%s - channel error') % profile_name, _(u'Lost connection to server %s unexpectedly! Try to re-authenticate to the server...') % profile_name, icon='session_warning', timeout=10000)
+        if not self._exiting:
+            self.notifier.send(_(u'%s - channel error') % profile_name, _(u'Lost connection to server %s unexpectedly! Try to re-authenticate to the server...') % profile_name, icon='session_warning', timeout=10000)
         try:
             del self._temp_disabled_session_names[profile_name]
         except KeyError:
@@ -1364,7 +1401,6 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
             self.WakeUpIdle()
             self.ExitMainLoop()
 
-
     def HOOK_session_startup_failed(self, profile_name='UNKNOWN', **kwargs):
         """\
         Notify about session startup failures.
@@ -1373,7 +1409,32 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
         @type profile_name: C{str}
 
         """
-        self.notifier.send(_(u'%s - session failure') % profile_name, _('The session startup failed.'), icon='session_error', timeout=10000)
+        self.notifier.send(_(u'%s - session failure') % profile_name, _(u'The session startup failed.'), icon='session_error', timeout=10000)
+        if self.exit_on_disconnect:
+            self.WakeUpIdle()
+            self.ExitMainLoop()
+
+    def HOOK_list_desktops_timeout(self, profile_name='UNKNOWN', **kwargs):
+        """\
+        Notify about x2golistdesktops timeout events.
+
+        @param profile_name: profile name of session that called this hook method
+        @type profile_name: C{str}
+
+        """
+        self.notifier.send(_(u'%s - timeout') % profile_name, _(u'The server took long to provide a list of sharable desktops.\nThis can happen from time to time, please try again'), icon='session_warning', timeout=10000)
+
+    def HOOK_no_such_desktop(self, profile_name='UNKNOWN', desktop='UNKNOWN', **kwargs):
+        """\
+        Notify that a before-seen sharable desktop is not available for sharing (anymore).
+
+        @param profile_name: profile name of session that called this hook method
+        @type profile_name: C{str}
+        @param desktop: the desktop identifier that was attemted to be shared
+        @type desktop: C{str}
+
+        """
+        self.notifier.send(_(u'%s - desktop sharing failed') % profile_name, _(u'The desktop %s is not available for sharing (anymore).') % desktop, icon='session_warning', timeout=10000)
         if self.exit_on_disconnect:
             self.WakeUpIdle()
             self.ExitMainLoop()
@@ -1391,9 +1452,9 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
 
         """
         if session_name == 'UNKNOWN':
-            self.notifier.send(_(u'%s - session failure') % profile_name, _('The command ,,%s\'\' is not available on X2Go server.') % cmd, icon='session_error', timeout=10000)
+            self.notifier.send(_(u'%s - session failure') % profile_name, _(u'The command ,,%s\'\' is not available on X2Go server.') % cmd, icon='session_error', timeout=10000)
         else:
-            self.notifier.send(_(u'%s - session failure') % profile_name, _('The command ,,%s\'\' is not available on X2Go server\n%s.') % (cmd, session_name), icon='session_error', timeout=10000)
+            self.notifier.send(_(u'%s - session failure') % profile_name, _(u'The command ,,%s\'\' is not available on X2Go server\n%s.') % (cmd, session_name), icon='session_error', timeout=10000)
         if self.exit_on_disconnect:
             self.WakeUpIdle()
             self.ExitMainLoop()
diff --git a/pyhoca/wxgui/menus_taskbar.py b/pyhoca/wxgui/menus_taskbar.py
index 9aca407..eff9387 100644
--- a/pyhoca/wxgui/menus_taskbar.py
+++ b/pyhoca/wxgui/menus_taskbar.py
@@ -253,22 +253,30 @@ class PyHocaGUI_Menu_TaskbarSessionActions(wx.Menu):
                     _ts = self.Append(text=_(u"Transfer Session (not possible)"), id=ID_TRANSFERSESSION_DISABLED)
                     _ts.Enable(False)
 
-            if self._PyHocaGUI.disconnect_on_suspend and self._PyHocaGUI.exit_on_disconnect and _s.has_terminal_session(): 
-                _ss = self.Append(text=_(u"Suspend Session (and disconnect/exit)"), id=ID_SUSPENDSESSION)
-            elif self._PyHocaGUI.disconnect_on_suspend and _s.has_terminal_session():
-                _ss = self.Append(text=_(u"Suspend Session (and disconnect)"), id=ID_SUSPENDSESSION)
+            if not _s.is_shadow_session():
+                if self._PyHocaGUI.disconnect_on_suspend and self._PyHocaGUI.exit_on_disconnect and _s.has_terminal_session(): 
+                    _ss = self.Append(text=_(u"Suspend Session (and disconnect/exit)"), id=ID_SUSPENDSESSION)
+                elif self._PyHocaGUI.disconnect_on_suspend and _s.has_terminal_session():
+                    _ss = self.Append(text=_(u"Suspend Session (and disconnect)"), id=ID_SUSPENDSESSION)
+                else:
+                    _ss = self.Append(text=_(u"Suspend Session"), id=ID_SUSPENDSESSION)
+
+                if _s.is_published_applications_provider() and not self._PyHocaGUI.get_profile_config(profile_name)['published']:
+                    _ss.Enable(False)
+        if not _s.is_shadow_session():
+            if self._PyHocaGUI.disconnect_on_terminate and self._PyHocaGUI.exit_on_disconnect and _s.has_terminal_session():
+                self.Append(text=_(u"Terminate Session (and disconnect/exit)"), id=ID_SUSPENDSESSION)
+            elif self._PyHocaGUI.disconnect_on_terminate and _s.has_terminal_session():
+                self.Append(text=_(u"Terminate Session (and disconnect)"), id=ID_TERMINATESESSION)
             else:
-                _ss = self.Append(text=_(u"Suspend Session"), id=ID_SUSPENDSESSION)
-
-            if _s.is_published_applications_provider() and not self._PyHocaGUI.get_profile_config(profile_name)['published']:
-                _ss.Enable(False)
-
-        if self._PyHocaGUI.disconnect_on_terminate and self._PyHocaGUI.exit_on_disconnect and _s.has_terminal_session():
-            self.Append(text=_(u"Terminate Session (and disconnect/exit)"), id=ID_SUSPENDSESSION)
-        elif self._PyHocaGUI.disconnect_on_terminate and _s.has_terminal_session():
-            self.Append(text=_(u"Terminate Session (and disconnect)"), id=ID_TERMINATESESSION)
+                self.Append(text=_(u"Terminate Session"), id=ID_TERMINATESESSION)
         else:
-            self.Append(text=_(u"Terminate Session"), id=ID_TERMINATESESSION)
+            if self._PyHocaGUI.disconnect_on_terminate and self._PyHocaGUI.exit_on_disconnect and _s.has_terminal_session():
+                self.Append(text=_(u"End Session Sharing (and disconnect/exit)"), id=ID_SUSPENDSESSION)
+            elif self._PyHocaGUI.disconnect_on_terminate and _s.has_terminal_session():
+                self.Append(text=_(u"End Session Sharing (and disconnect)"), id=ID_TERMINATESESSION)
+            else:
+                self.Append(text=_(u"End Session Sharing"), id=ID_TERMINATESESSION)
 
         if _s is not None and _s.is_published_applications_provider() and self._PyHocaGUI.get_profile_config(profile_name)['published']:
             self.AppendSeparator()
@@ -514,6 +522,7 @@ class PyHocaGUI_Menu_TaskbarSessionProfile(wx.Menu):
         ID_CONNECT=wx.NewId()
         ID_PUBAPPSESSIONSTART=wx.NewId()
         ID_SESSIONSTART=wx.NewId()
+        ID_SHADOWSESSIONSTART=wx.NewId()
         ID_LAUNCHAPPLICATION = wx.NewId()
         ID_CLEANSESSIONS = wx.NewId()
         ID_EDITPROFILEWHILECONNECTED = wx.NewId()
@@ -540,11 +549,17 @@ class PyHocaGUI_Menu_TaskbarSessionProfile(wx.Menu):
 
             else:
 
-                self._PyHocaGUI._eventid_profilenames_map[ID_SESSIONSTART] = profile_name
+                self._PyHocaGUI._eventid_profilenames_map[ID_SESSIONSTART] = \
+                    self._PyHocaGUI._eventid_profilenames_map[ID_SHADOWSESSIONSTART] = profile_name
 
                 if current_profile_config['command'] in x2go.defaults.X2GO_DESKTOPSESSIONS:
                     self.Append(id=ID_SESSIONSTART, text='%s (%s)' % (_(u"Start &new Desktop Session"), current_profile_config['command']))
                     self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnSessionStart, id=ID_SESSIONSTART)
+
+                elif current_profile_config['command'] == 'SHADOW':
+                    start_shadow_session = self.Append(id=ID_SHADOWSESSIONSTART, text=_(u"Connect to another Desktop Session"))
+                    self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnShadowSessionStart, id=ID_SHADOWSESSIONSTART)
+
                 elif current_profile_config['command'] == '' and current_profile_config['published']:
                     _pub_app_start_item = None
                     if profile_name in self._PyHocaGUI._temp_launching_pubapp_profiles:
@@ -636,11 +651,14 @@ class PyHocaGUI_Menu_TaskbarSessionProfile(wx.Menu):
                     self._PyHocaGUI._eventid_profilenames_map[ID_LAUNCHAPPLICATION] = \
                         self._PyHocaGUI._eventid_profilenames_map[ID_CLEANSESSIONS] = profile_name
 
-                    if current_profile_config['applications'] and current_profile_config['command'] in x2go.defaults.X2GO_DESKTOPSESSIONS and not current_profile_config['published']:
+                    if current_profile_config['applications'] and current_profile_config['command'] in x2go.defaults.X2GO_DESKTOPSESSIONS.keys() and not current_profile_config['published']:
                         self.AppendSeparator()
                         self.AppendMenu(id=ID_LAUNCHAPPLICATION, text=_(u"Launch Single Application"),
                                         submenu=PyHocaGUI_Menu_LaunchSingleApplication(self._PyHocaGUI, caller=self, profile_name=profile_name)
                                        )
+                        if current_profile_config['command'] != 'SHADOW' and not self._PyHocaGUI.restricted_trayicon:
+                            self.Append(id=ID_SHADOWSESSIONSTART, text=_(u"Connect to Shared Desktop"))
+                            self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnShadowSessionStart, id=ID_SHADOWSESSIONSTART)
 
                     if current_profile_config['published']:
 
diff --git a/pyhoca/wxgui/profilemanager.py b/pyhoca/wxgui/profilemanager.py
index 71fd136..9f01a78 100644
--- a/pyhoca/wxgui/profilemanager.py
+++ b/pyhoca/wxgui/profilemanager.py
@@ -84,6 +84,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
             'XFCE': _(u'XFCE Desktop (XFCE)'),
             'PUBLISHEDAPPLICATIONS': _(u'Published Applications'),
             'APPLICATION': _(u'Single Application'),
+            'SHADOW': _(u'Share desktop session (SHADOW)'),
             'XDMCP': _(u'XDMCP Query'),
             'RDP': _(u'Windows Terminal Server (X2Go-proxied RDP)'),
             'DirectRDP': _(u'Windows Terminal Server (Direct RDP)'),
@@ -898,6 +899,12 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         if _command == 'RDP' and self.profile_config['directrdp']:
             self.SessionType.SetValue(self.sessionChoices['DirectRDP'])
             self.Command.SetValue('')
+        elif _command == 'SHADOW':
+            self.SessionType.SetValue(self.sessionChoices[_command])
+            self.Application.SetValue('')
+            self.Command.SetValue('')
+            self.AutoStartSession.Enable(False)
+            self.AutoStartSession.SetValue(False)
         elif _command in self.sessionChoices.keys():
             self.SessionType.SetValue(self.sessionChoices[_command])
             self.Application.SetValue('')
@@ -985,27 +992,12 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
             self.KeyboardModel.Enable(True)
             self.KeyboardVariant.Enable(True)
 
-        self.EnableSound.SetValue(self.profile_config['sound'])
-        self.DefaultSoundPort.SetValue(self.profile_config['defsndport'])
-        self.SoundPort.SetValue(self.profile_config['sndport'])
-        if self.profile_config['sound']:
-            self.PulseAudio.Enable(True)
-            self.Esd.Enable(True)
-            self.DefaultSoundPort.Enable(True)
-            if not self.profile_config['defsndport']:
-                self.SoundPortLabel.Enable(True)
-                self.SoundPort.Enable(True)
-            else:
-                self.SoundPortLabel.Enable(False)
-                self.SoundPort.Enable(False)
+        if _command != 'SHADOW':
+            self.ClientSidePrinting.SetValue(self.profile_config['print'])
         else:
-            self.PulseAudio.Enable(False)
-            self.Esd.Enable(False)
-            self.DefaultSoundPort.Enable(False)
-            self.SoundPortLabel.Enable(False)
-            self.SoundPort.Enable(False)
-
-        self.ClientSidePrinting.SetValue(self.profile_config['print'])
+            self.ClientSidePrinting.SetValue(False)
+            self.ClientSidePrinting.Enable(False)
+            self.staticbox_Printing.Enable(False)
 
         if _command == 'RDP':
             if self.profile_config['directrdp']:
@@ -1049,6 +1041,26 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
             self.RDPOptionsLabel.Enable(False)
             self.RDPOptions.Enable(False)
 
+        if _command != 'SHADOW':
+            self.EnableSound.SetValue(self.profile_config['sound'])
+            self.DefaultSoundPort.SetValue(self.profile_config['defsndport'])
+            self.SoundPort.SetValue(self.profile_config['sndport'])
+            if self.EnableSound.GetValue():
+                self.PulseAudio.Enable(True)
+                self.Esd.Enable(True)
+                self.DefaultSoundPort.Enable(True)
+                self._toggle_DefaultSoundPort()
+        else:
+            self.EnableSound.SetValue(False)
+            self.EnableSound.Enable(False)
+            self.PulseAudio.Enable(False)
+            self.Arts.Enable(False)
+            self.Esd.Enable(False)
+            self.DefaultSoundPort.Enable(False)
+            self.SoundPortLabel.Enable(False)
+            self.SoundPort.Enable(False)
+            self.staticbox_Sound.Enable(False)
+
         self.XDMCPServer.SetValue(self.profile_config['xdmcpserver'])
 
         self.DisplayTypeFullscreen.SetValue(self.profile_config['fullscreen'] and not self.profile_config['maxdim'])
@@ -1066,7 +1078,13 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         else:
             self.DisplayDPI.Enable(True)
 
-        self.UseLocalFolderSharing.SetValue(self.profile_config['useexports'])
+        if _command != 'SHADOW':
+            self.UseLocalFolderSharing.SetValue(self.profile_config['useexports'])
+        else:
+            self.UseLocalFolderSharing.SetValue(False)
+            self.UseLocalFolderSharing.Enable(False)
+            self.staticbox_FolderSharing.Enable(False)
+
         self.RestoreSharedLocalFolders.SetValue(self.profile_config['restoreexports'])
         self._toggle_localFolderSharing()
         self.SharedFoldersList.DeleteAllItems()
@@ -1080,7 +1098,6 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         if ',' in self.profile_config['export']:
             self.profile_config['export'] = self.profile_config['export'].replace(',', ';')
 
-
         # strip off whitespaces and ";" from beginning and end of string
         _shared_folders = self.profile_config['export'].strip().strip(';').strip()
         # strip off '"' from beginning and end of string
@@ -1117,7 +1134,13 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self.ServerEncoding.SetValue(self.profile_config['iconvto'])
         self._toggle_useEncodingConverter()
 
-        self.UseFileMIMEbox.SetValue(self.profile_config['usemimebox'])
+        if _command != 'SHADOW':
+            self.UseFileMIMEbox.SetValue(self.profile_config['usemimebox'])
+        else:
+            self.UseFileMIMEbox.SetValue(False)
+            self.UseFileMIMEbox.Enable(False)
+            self.staticbox_FileMIMEbox.Enable(False)
+
         self.FileMIMEboxExtensions.SetValue(self.profile_config['mimeboxextensions'])
         if self.profile_config['mimeboxaction'] in self.mimeboxactionChoices.keys():
             self.FileMIMEboxAction.SetValue(self.mimeboxactionChoices[self.profile_config['mimeboxaction']])
@@ -1127,6 +1150,8 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
 
         self.disable_EditConnected_options()
 
+        self._last_session_type = [ i for i in self.sessionChoices.keys() if self.sessionChoices[i] == self.SessionType.GetValue() ][0]
+
     def _toggle_DisplayProperties(self):
         """\
         Toggle display properties, depend on activation/deactivation of rootless session mode.
@@ -1207,7 +1232,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
             self.SSHPort.Enable(False)
             self.SSHKeyFileLabel.Enable(False)
             self.SSHKeyFile.Enable(False)
-            self.UniqueHostAliases.Enable(False)
+            self.UniqueHostKeyAliases.Enable(False)
             self.SSHAutoLogin.Enable(False)
             if PARAMIKO_FEATURE['forward-ssh-agent']:
                 self.SSHForwardAuthAgent.Enable(False)
@@ -1582,6 +1607,44 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
 
         """
         _session_type = [ i for i in self.sessionChoices.keys() if self.sessionChoices[i] == self.SessionType.GetValue() ][0]
+        if self._last_session_type == 'SHADOW':
+
+            self.EnableSound.SetValue(self.profile_config_bak['sound'])
+            self.RootlessSession.SetValue(self.profile_config_bak['rootless'])
+            self.UseLocalFolderSharing.SetValue(self.profile_config_bak['useexports'])
+            self.ClientSidePrinting.SetValue(self.profile_config_bak['print'])
+            self.UseFileMIMEbox.SetValue(self.profile_config_bak['usemimebox'])
+            self.AutoStartSession.SetValue(self.profile_config_bak['autostart'])
+
+            self.RootlessSession.Enable(True)
+
+            if self.EnableSound.GetValue():
+                self.PulseAudio.Enable(True)
+                self.Esd.Enable(True)
+                self.DefaultSoundPort.Enable(True)
+                self._toggle_DefaultSoundPort()
+            else:
+                self.PulseAudio.Enable(False)
+                self.Esd.Enable(False)
+                self.DefaultSoundPort.Enable(False)
+                self.SoundPortLabel.Enable(False)
+                self.SoundPort.Enable(False)
+
+            self.staticbox_Sound.Enable(True)
+
+            # no local folder sharing available
+            self.staticbox_FolderSharing.Enable(True)
+            self.UseLocalFolderSharing.Enable(True)
+            self._toggle_localFolderSharing()
+
+            # no printing available
+            self.ClientSidePrinting.Enable(True)
+            self.staticbox_Printing.Enable(True)
+
+            # no file MIME box available
+            self.UseFileMIMEbox.Enable(True)
+            self.staticbox_FileMIMEbox.Enable(True)
+
         self.UsePublishedApplications.Enable(True)
         self.AutoStartSession.Enable(True)
 
@@ -1711,9 +1774,54 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
                 self.AutoStartSession.SetValue(self._last_auto_start_value)
                 self._last_auto_start_value = None
 
+        if _session_type == 'SHADOW':
+
+            self.profile_config_bak['autostart'] = self.AutoStartSession.GetValue()
+            self.profile_config_bak['sound'] = self.EnableSound.GetValue()
+            self.profile_config_bak['rootless'] = self.RootlessSession.GetValue()
+            self.profile_config_bak['useexports'] = self.UseLocalFolderSharing.GetValue()
+            self.profile_config_bak['print'] = self.ClientSidePrinting.GetValue()
+            self.profile_config_bak['usemimebox'] = self.UseFileMIMEbox.GetValue()
+
+            self.AutoStartSession.SetValue(False)
+            self.AutoStartSession.Enable(False)
+
+            # shadow sessions are always desktop sessions
+            self.RootlessSession.SetValue(True)
+            self.RootlessSession.Enable(False)
+
+            # no sound available with SHADOW sessions
+            self.EnableSound.SetValue(False)
+            self.EnableSound.Enable(False)
+            self.PulseAudio.Enable(False)
+            self.Esd.Enable(False)
+            self.DefaultSoundPort.Enable(False)
+            self.SoundPortLabel.Enable(False)
+            self.SoundPort.Enable(False)
+            self.staticbox_Sound.Enable(False)
+
+            # no local folder sharing available
+            self.UseLocalFolderSharing.SetValue(False)
+            self.UseLocalFolderSharing.Enable(False)
+            self.staticbox_FolderSharing.Enable(False)
+            self._toggle_localFolderSharing()
+
+            # no printing available
+            self.ClientSidePrinting.SetValue(False)
+            self.ClientSidePrinting.Enable(False)
+            self.staticbox_Printing.Enable(False)
+
+            # no file MIME box available
+            self.UseFileMIMEbox.SetValue(False)
+            self.UseFileMIMEbox.Enable(False)
+            self.staticbox_FileMIMEbox.Enable(False)
+            self._toggle_useFileMIMEbox()
+
         self._toggle_DisplayProperties()
         self.disable_EditConnected_options()
 
+        self._last_session_type = _session_type
+
     def OnCompressionSelected(self, event):
         """\
         Gets called if another compression method gets selected.


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