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

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


The branch, build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d has been updated
       via  c68c5a5f64749dad34276a4e43185db3fcdc3518 (commit)
      from  bea3b4a98da6ae150b4189b284a2cdde7fcfe41c (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/profilemanager.py |  591 ++++++++++++++++++++--------------------
 2 files changed, 304 insertions(+), 289 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index cd6f6be..b75262c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -26,6 +26,8 @@ pyhoca-gui (0.1.0.11-0~x2go1) UNRELEASED; urgency=low
       PyHoca-GUI on Debian or other Distros that also ship the
       gnome-colors-common icon theme.
     - Replace non-code string ,,X2go'' by ,,X2Go''.
+    - Rearrange profile manager. Add one more tab to the profile manager window.
+      Reintroduce window icon in profile manager.
   * Depend on Python X2Go 0.1.1.9.
   * Install GNOME icons via dh_links.
   * Install X2Go icons with explicit install paths.
diff --git a/pyhoca/wxgui/profilemanager.py b/pyhoca/wxgui/profilemanager.py
index c876065..0172b7d 100644
--- a/pyhoca/wxgui/profilemanager.py
+++ b/pyhoca/wxgui/profilemanager.py
@@ -136,14 +136,16 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self.profile_config_bak = copy.deepcopy(self.profile_config)
 
         self.X2goTabs = wx.Notebook(self, -1, style=0)
+        self.tab_Profile = wx.Panel(self.X2goTabs, -1)
         self.tab_Session = wx.Panel(self.X2goTabs, -1)
         self.tab_Connection = wx.Panel(self.X2goTabs, -1)
         self.tab_Settings = wx.Panel(self.X2goTabs, -1)
         self.tab_SharedFilesAndFolders = wx.Panel(self.X2goTabs, -1)
 
         # boxes for all tabs
-        self.staticbox_Profile = wx.StaticBox(self.tab_Session, -1, ' %s ' % _(u'Profile '))
-        self.staticbox_SessionType = wx.StaticBox(self.tab_Session, -1, ' %s ' % _(u'Session'))
+        self.staticbox_Profile = wx.StaticBox(self.tab_Profile, -1, ' %s ' % _(u'Session Title'))
+        self.staticbox_Window = wx.StaticBox(self.tab_Profile, -1, ' %s ' % _(u'Session Window'))
+        self.staticbox_SessionType = wx.StaticBox(self.tab_Session, -1, ' %s ' % _(u'Session Startup'))
         self.staticbox_Server = wx.StaticBox(self.tab_Connection, -1, ' %s ' % _(u"Server"))
         self.staticbox_LinkSpeed = wx.StaticBox(self.tab_Connection, -1, ' %s ' % _(u"Connection Link Speed"))
         self.staticbox_Compression = wx.StaticBox(self.tab_Connection, -1, ' %s ' % _(u"Compression"))
@@ -155,37 +157,40 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self.staticbox_FileMIMEbox = wx.StaticBox(self.tab_SharedFilesAndFolders, -1, ' %s ' % _(u"File Import"))
 
         ###
+        ### widgets for the PROFILE tab
+        ###
+        self.ProfileNameLabel = wx.StaticText(self.tab_Profile, -1, _(u"Name")+":")
+        self.ProfileName = wx.TextCtrl(self.tab_Profile, -1, "")
+        self.SetSessionWindowTitle = wx.CheckBox(self.tab_Profile, -1, _(u"Set session window title"))
+        self.UseDefaultSessionWindowTitle = wx.CheckBox(self.tab_Profile, -1, _(u"Use a default session window title"))
+        self.CustomSessionWindowTitleLabel = wx.StaticText(self.tab_Profile, -1, _(u"Custom session window title") + ":")
+        self.CustomSessionWindowTitle = wx.TextCtrl(self.tab_Profile, -1, "")
+        _share_location = os.path.split(_icons_location)[0]
+        if 'icon' in self.profile_config:
+            path_to_icon = self.profile_config['icon']
+            path_to_icon = path_to_icon.lstrip(':')
+            path_to_icon = os.path.join(os.path.normpath(_share_location), os.path.normpath(path_to_icon))
+        if not os.path.exists(path_to_icon) or not 'icon' in self.profile_config:
+            path_to_icon = os.path.normpath('%s/icons/PyHoca/128x128/pyhoca-session.png' % _share_location)
+        self.IconPath = path_to_icon
+        self.IconButtonLabel = wx.StaticText(self.tab_Profile, -1, _(u"Window Icon")+':')
+        self.IconButton = wx.BitmapButton(self.tab_Profile, -1, wx.Bitmap(path_to_icon, wx.BITMAP_TYPE_ANY), size=(128,128))
+
+        ###
         ### widgets for the SESSION tab
         ###
-        self.ProfileNameLabel = wx.StaticText(self.tab_Session, -1, _(u"Name")+":")
-        self.ProfileName = wx.TextCtrl(self.tab_Session, -1, "")
-        #_share_location = os.path.split(_icons_location)[0]
-        #if 'icon' in self.profile_config:
-        #    path_to_icon = self.profile_config['icon']
-        #    path_to_icon = path_to_icon.lstrip(':')
-        #    path_to_icon = os.path.join(os.path.normpath(_share_location), os.path.normpath(path_to_icon))
-        #if not os.path.exists(path_to_icon) or not 'icon' in self.profile_config:
-        #    path_to_icon = os.path.normpath('%s/icons/PyHoca/128x128/pyhoca-session.png' % _share_location)
-        #self.IconPath = path_to_icon
-        #self.IconButtonLabel = wx.StaticText(self.tab_Session, -1, _(u"Icon")+':')
-        #self.IconButton = wx.BitmapButton(self.tab_Session, -1, wx.Bitmap(path_to_icon, wx.BITMAP_TYPE_ANY), size=(48,48))
-        self.SetSessionWindowTitle = wx.CheckBox(self.tab_Session, -1, _(u"Set session window title"))
-        self.UseDefaultSessionWindowTitle = wx.CheckBox(self.tab_Session, -1, _(u"Use a default session window title"))
-        self.CustomSessionWindowTitleLabel = wx.StaticText(self.tab_Session, -1, _(u"Custom session window title") + ":")
-        self.CustomSessionWindowTitle = wx.TextCtrl(self.tab_Session, -1, "")
         self.SessionTypeLabel = wx.StaticText(self.tab_Session, -1, _(u"Type")+':')
         self.SessionType = wx.ComboBox(self.tab_Session, -1, choices=self.sessionChoices.values(), style=wx.CB_DROPDOWN|wx.CB_READONLY)
         self.ApplicationLabel = wx.StaticText(self.tab_Session, -1, _(u"Application")+':')
         self.Application = wx.ComboBox(self.tab_Session, -1, choices=self.applicationChoices.values(), style=wx.CB_DROPDOWN|wx.CB_READONLY)
         self.CommandLabel = wx.StaticText(self.tab_Session, -1, _(u"Custom command")+':')
-        self.Command = wx.TextCtrl(self.tab_Session, -1, "", size=wx.Size(200,20))
-        self.RDPSettingsLabel = wx.StaticText(self.tab_Session, -1, _(u"RDP settings")+':')
+        self.Command = wx.TextCtrl(self.tab_Session, -1, "", )
+        self.XDMCPServerLabel = wx.StaticText(self.tab_Session, -1, _(u"XDMCP server")+':')
+        self.XDMCPServer = wx.TextCtrl(self.tab_Session, -1, "", )
         self.RDPServerLabel = wx.StaticText(self.tab_Session, -1, _(u"RDP server")+':')
-        self.RDPServer = wx.TextCtrl(self.tab_Session, -1, "", size=wx.Size(160,20))
+        self.RDPServer = wx.TextCtrl(self.tab_Session, -1, "", )
         self.RDPOptionsLabel = wx.StaticText(self.tab_Session, -1, _(u"RDP options")+':')
-        self.RDPOptions = wx.TextCtrl(self.tab_Session, -1, "", size=wx.Size(160,20))
-        self.XDMCPServerLabel = wx.StaticText(self.tab_Session, -1, _(u"XDMCP server")+':')
-        self.XDMCPServer = wx.TextCtrl(self.tab_Session, -1, "", size=wx.Size(160,20))
+        self.RDPOptions = wx.TextCtrl(self.tab_Session, -1, "", )
 
         ###
         ### widgets for the CONNECTION tab
@@ -291,7 +296,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self.__do_layout()
         self.__update_fields()
 
-        #self.Bind(wx.EVT_BUTTON, self.OnIconChange, self.IconButton)
+        self.Bind(wx.EVT_BUTTON, self.OnIconChange, self.IconButton)
         self.Bind(wx.EVT_COMBOBOX, self.OnSessionTypeSelected, self.SessionType)
         self.Bind(wx.EVT_CHECKBOX, self.OnUseDefaultSessionWindowTitle, self.UseDefaultSessionWindowTitle)
         self.Bind(wx.EVT_CHECKBOX, self.OnSetSessionWindowTitle, self.SetSessionWindowTitle)
@@ -347,9 +352,11 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self.UseDefaultSessionWindowTitle.SetMinSize((-1, _textfield_height))
         self.CustomSessionWindowTitleLabel.SetMinSize((160, 16))
         self.CustomSessionWindowTitle.SetMinSize((320, _textfield_height))
-        #self.IconButton.SetSize(self.IconButton.GetBestSize())
+        self.IconButtonLabel.SetMinSize((168, 16))
+        self.IconButton.SetSize(self.IconButton.GetBestSize())
+
         self.SessionTypeLabel.SetMinSize((120, 16))
-        self.SessionType.SetMinSize((-1, _textfield_height))
+        self.SessionType.SetMinSize((320, _textfield_height))
         self.SessionType.SetSelection(5)
         self.ApplicationLabel.SetMinSize((120, 16))
         self.Application.SetMinSize((-1, _textfield_height))
@@ -357,16 +364,15 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self.Command.SetMinSize((-1, _textfield_height))
         self.XDMCPServerLabel.SetMinSize((120, 16))
         self.XDMCPServer.SetMinSize((-1, _textfield_height))
-        self.RDPSettingsLabel.SetMinSize((120, 16))
         self.RDPServerLabel.SetMinSize((180, 16))
-        self.RDPServer.SetMinSize((180, _textfield_height))
-        self.RDPOptionsLabel.SetMinSize((120, 16))
-        self.RDPOptions.SetMinSize((120, _textfield_height))
+        self.RDPServer.SetMinSize((-1, _textfield_height))
+        self.RDPOptionsLabel.SetMinSize((180, 16))
+        self.RDPOptions.SetMinSize((-1, _textfield_height))
 
-        self.HostLabel.SetMinSize((110, 16))
-        self.Host.SetMinSize((180, _textfield_height))
         self.UserNameLabel.SetMinSize((110, 16))
-        self.UserName.SetMinSize((180, _textfield_height))
+        self.UserName.SetMinSize((220, _textfield_height))
+        self.HostLabel.SetMinSize((110, 16))
+        self.Host.SetMinSize((220, _textfield_height))
         self.SSHPortLabel.SetMinSize((110, 16))
         self.SSHPort.SetMinSize((65, _textfield_height))
         self.SSHKeyFileLabel.SetMinSize((-1, 16))
@@ -428,271 +434,280 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
 
     def __do_layout(self):
 
-        # SESSION TAB
+        # PROFILE TAB
         sizer_1 = wx.BoxSizer(wx.VERTICAL)
         sizer_1_1 = wx.StaticBoxSizer(self.staticbox_Profile, wx.VERTICAL)
         sizer_1_1_1 = wx.FlexGridSizer(1, 2, 7, 9)
         sizer_1_1_1.Add(self.ProfileNameLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
         sizer_1_1_1.Add(self.ProfileName)
-        #sizer_1_1_1.Add(self.IconButtonLabel, flag=wx.TOP)
-        #sizer_1_1_1.Add(self.IconButton)
-        sizer_1_1_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_1_1_2.Add(self.SetSessionWindowTitle)
-        sizer_1_1_2.Add((32,0))
-        sizer_1_1_2.Add(self.UseDefaultSessionWindowTitle)
-        sizer_1_1_3 = wx.FlexGridSizer(1, 2, 7, 9)
-        sizer_1_1_3.Add(self.CustomSessionWindowTitleLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_1_1_3.Add(self.CustomSessionWindowTitle)
-
         sizer_1_1.Add(sizer_1_1_1, flag=wx.EXPAND|wx.ALL, border=7)
-        sizer_1_1.Add(sizer_1_1_2, flag=wx.EXPAND|wx.ALL, border=7)
-        sizer_1_1.Add(sizer_1_1_3, flag=wx.EXPAND|wx.ALL, border=7)
-
-        sizer_1_2 = wx.StaticBoxSizer(self.staticbox_SessionType, wx.VERTICAL)
-        sizer_1_2_1 = wx.GridBagSizer(hgap=3,vgap=6)
-        sizer_1_2_1.Add(self.SessionTypeLabel, pos=(0,0), flag=wx.ALIGN_CENTRE_VERTICAL, )
-        sizer_1_2_1.Add(self.SessionType, pos=(0,1), span=(1,2), flag=wx.EXPAND, )
-        sizer_1_2_1.Add(self.ApplicationLabel, pos=(1,0), flag=wx.ALIGN_CENTRE_VERTICAL, )
-        sizer_1_2_1.Add(self.Application, pos=(1,1), span=(1,2), flag=wx.EXPAND, )
-        sizer_1_2_1.Add(self.CommandLabel, pos=(2,0), flag=wx.ALIGN_CENTRE_VERTICAL, )
-        sizer_1_2_1.Add(self.Command, pos=(2, 1), span=(1,2), flag=wx.EXPAND, )
-        sizer_1_2_1.Add(self.XDMCPServerLabel, (3,0), flag=wx.ALIGN_CENTRE_VERTICAL, )
-        sizer_1_2_1.Add(self.XDMCPServer, pos=(3,1), span=(1,2), flag=wx.EXPAND, )
-        sizer_1_2_1.Add(self.RDPServerLabel, pos=(4,1), flag=wx.ALIGN_BOTTOM, )
-        sizer_1_2_1.Add(self.RDPOptionsLabel, pos=(4,2), flag=wx.ALIGN_BOTTOM, )
-        sizer_1_2_1.Add(self.RDPSettingsLabel, pos=(5,0), flag=wx.ALIGN_CENTRE_VERTICAL, )
-        sizer_1_2_1.Add(self.RDPServer, pos=(5, 1), )
-        sizer_1_2_1.Add(self.RDPOptions, pos=(5,2), )
+
+        sizer_1_2 = wx.StaticBoxSizer(self.staticbox_Window, wx.VERTICAL)
+        sizer_1_2_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_1_2_1.Add(self.SetSessionWindowTitle)
+        sizer_1_2_1.Add((32,0))
+        sizer_1_2_1.Add(self.UseDefaultSessionWindowTitle)
+        sizer_1_2_2 = wx.FlexGridSizer(1, 2, 7, 9)
+        sizer_1_2_2.Add(self.CustomSessionWindowTitleLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_1_2_2.Add(self.CustomSessionWindowTitle)
+        sizer_1_2_3 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_1_2_3.Add(self.IconButtonLabel, flag=wx.TOP)
+        sizer_1_2_3.Add(self.IconButton)
+
         sizer_1_2.Add(sizer_1_2_1, flag=wx.EXPAND|wx.ALL, border=7)
+        sizer_1_2.Add(sizer_1_2_2, flag=wx.EXPAND|wx.ALL, border=7)
+        sizer_1_2.Add(sizer_1_2_3, flag=wx.EXPAND|wx.ALL, border=7)
 
         sizer_1.Add(sizer_1_1, flag=wx.EXPAND|wx.ALL, border=5)
         sizer_1.Add(sizer_1_2, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
-        self.tab_Session.SetSizerAndFit(sizer_1)
-        self.tab_Session.Layout()
+        self.tab_Profile.SetSizerAndFit(sizer_1)
+        self.tab_Profile.Layout()
 
-        ## CONNECTION TAB
+        # SESSION TAB
         sizer_2 = wx.BoxSizer(wx.VERTICAL)
-        sizer_2_1 = wx.StaticBoxSizer(self.staticbox_Server, wx.VERTICAL)
-        sizer_2_1_1 = wx.BoxSizer(wx.VERTICAL)
-        sizer_2_1_1_1 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_2_1_1_1.Add(self.UserNameLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_1_1.Add(self.UserName)
-        sizer_2_1_1_1.Add((0,32))
-        sizer_2_1_1_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_2_1_1_2.Add(self.HostLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_1_2.Add(self.Host)
-        sizer_2_1_1_2.Add((0,32))
-        sizer_2_1_1_3 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_2_1_1_3.Add(self.SSHPortLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_1_3.Add(self.SSHPort)
-        sizer_2_1_1_3.Add((16,0))
-        sizer_2_1_1_3.Add(self.SSHKeyFileLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_1_3.Add((8,0))
-        sizer_2_1_1_3.Add(self.SSHKeyFile, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_1_3.Add(self.SSHKeyFileBrowseButton, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_1_3.Add((0,32))
-        sizer_2_1_1.Add(sizer_2_1_1_1, flag=wx.EXPAND)
-        sizer_2_1_1.Add(sizer_2_1_1_2, flag=wx.EXPAND)
-        sizer_2_1_1.Add(sizer_2_1_1_3, flag=wx.EXPAND)
-
-        sizer_2_1_2 = wx.BoxSizer(wx.VERTICAL)
-        sizer_2_1_2_1 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_2_1_2_1.Add(self.UseSSHProxy, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_2_1_2_2.Add(self.SSHProxyUserLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_2.Add(self.SSHProxyUser, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_2.Add((16,0))
-        sizer_2_1_2_2.Add(self.SSHProxyKeyFileLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_2.Add((8,0))
-        sizer_2_1_2_2.Add(self.SSHProxyKeyFile, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_2.Add(self.SSHProxyKeyFileBrowseButton, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_2.Add((0,32))
-        sizer_2_1_2_3 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_2_1_2_3.Add(self.SSHProxyHostLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_3.Add(self.SSHProxyHost, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_3.Add((0,32))
-        sizer_2_1_2_4 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_2_1_2_4.Add(self.SSHProxyTunnelLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_4.Add(self.SSHProxyTunnelFromHost, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_4.Add((4, 0))
-        sizer_2_1_2_4.Add(self.SSHProxyTunnelFromPort, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_4.Add((8, 0))
-        sizer_2_1_2_4.Add(self.SSHProxyTunnelBetweenLabel, flag=wx.ALIGN_CENTRE_VERTICAL|wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_2_1_2_4.Add((8, 0))
-        sizer_2_1_2_4.Add(self.SSHProxyTunnelToHost, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_4.Add((4, 0))
-        sizer_2_1_2_4.Add(self.SSHProxyTunnelToPort, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_1_2_4.Add((0,32))
-        sizer_2_1_2.Add(sizer_2_1_2_1, flag=wx.EXPAND)
-        sizer_2_1_2.Add(sizer_2_1_2_2, flag=wx.EXPAND)
-        sizer_2_1_2.Add(sizer_2_1_2_3, flag=wx.EXPAND)
-        sizer_2_1_2.Add(sizer_2_1_2_4, flag=wx.EXPAND)
+        sizer_2_1 = wx.StaticBoxSizer(self.staticbox_SessionType, wx.VERTICAL)
+        sizer_2_1_1 = wx.GridBagSizer(hgap=2,vgap=6)
+        sizer_2_1_1.Add(self.SessionTypeLabel, pos=(0,0), flag=wx.ALIGN_CENTRE_VERTICAL, )
+        sizer_2_1_1.Add(self.SessionType, pos=(0,1), flag=wx.EXPAND, )
+        sizer_2_1_1.Add(self.ApplicationLabel, pos=(1,0), flag=wx.ALIGN_CENTRE_VERTICAL, )
+        sizer_2_1_1.Add(self.Application, pos=(1,1), flag=wx.EXPAND, )
+        sizer_2_1_1.Add(self.CommandLabel, pos=(2,0), flag=wx.ALIGN_CENTRE_VERTICAL, )
+        sizer_2_1_1.Add(self.Command, pos=(2, 1), flag=wx.EXPAND, )
+        sizer_2_1_1.Add(self.XDMCPServerLabel, (3,0), flag=wx.ALIGN_CENTRE_VERTICAL, )
+        sizer_2_1_1.Add(self.XDMCPServer, pos=(3,1), flag=wx.EXPAND, )
+        sizer_2_1_1.Add(self.RDPServerLabel, pos=(4,0), flag=wx.ALIGN_CENTRE_VERTICAL, )
+        sizer_2_1_1.Add(self.RDPServer, pos=(4,1), flag=wx.EXPAND, )
+        sizer_2_1_1.Add(self.RDPOptionsLabel, pos=(5,0), flag=wx.ALIGN_CENTRE_VERTICAL, )
+        sizer_2_1_1.Add(self.RDPOptions, pos=(5,1), flag=wx.EXPAND, )
         sizer_2_1.Add(sizer_2_1_1, flag=wx.EXPAND|wx.ALL, border=7)
-        sizer_2_1.Add(sizer_2_1_2, flag=wx.EXPAND|wx.ALL, border=7)
-
-        sizer_2_2 = wx.StaticBoxSizer(self.staticbox_LinkSpeed, wx.VERTICAL)
-        sizer_2_2_1 = wx.BoxSizer(wx.VERTICAL)
-        sizer_2_2_1_1 = wx.BoxSizer(wx.VERTICAL)
-        sizer_2_2_1_1.Add(self.LinkSpeed)
-        sizer_2_2_1_2 = wx.GridSizer(1,5,0,0)
-        sizer_2_2_1_2.SetMinSize((454/5*6 - 30, -1))
-        sizer_2_2_1_2.Add(self.ModemLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_2_2_1_2.Add(self.ISDNLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_2_2_1_2.Add(self.ADSLLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_2_2_1_2.Add(self.WANLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_2_2_1_2.Add(self.LANLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_2_2_1.Add(sizer_2_2_1_1, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_2_2_1.Add(sizer_2_2_1_2, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_2_2.Add(sizer_2_2_1, flag=wx.EXPAND|wx.ALL, border=7)
-
-        sizer_2_3 = wx.StaticBoxSizer(self.staticbox_Compression, wx.VERTICAL)
-        sizer_2_3_1 = wx.BoxSizer(wx.VERTICAL)
-        sizer_2_3_1_1 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_2_3_1_1.Add(self.CompressionLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_3_1_1.Add(self.Compression)
-        sizer_2_3_1_1.Add((0,32))
-        sizer_2_3_1_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_2_3_1_2.Add(self.ImageQualityLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_2_3_1_2.Add(self.ImageQuality)
-        sizer_2_3_1.Add(sizer_2_3_1_1, flag=wx.EXPAND)
-        sizer_2_3_1.Add(sizer_2_3_1_2, flag=wx.EXPAND)
-        sizer_2_3.Add(sizer_2_3_1, proportion=1, flag=wx.EXPAND|wx.ALL, border=7)
-
-        sizer_2.Add(sizer_2_1, flag=wx.EXPAND|wx.ALL, border=5)
-        sizer_2.Add(sizer_2_2, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
-        sizer_2.Add(sizer_2_3, flag=wx.EXPAND|wx.ALL, border=5)
-        self.tab_Connection.SetSizerAndFit(sizer_2)
-        self.tab_Connection.Layout()
+        sizer_2.Add(sizer_2_1, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
+        self.tab_Session.SetSizerAndFit(sizer_2)
+        self.tab_Session.Layout()
 
-        ## SETTINGS TAB
+        ## CONNECTION TAB
         sizer_3 = wx.BoxSizer(wx.VERTICAL)
-        sizer_3_1 = wx.StaticBoxSizer(self.staticbox_Display, wx.VERTICAL)
+        sizer_3_1 = wx.StaticBoxSizer(self.staticbox_Server, wx.VERTICAL)
         sizer_3_1_1 = wx.BoxSizer(wx.VERTICAL)
         sizer_3_1_1_1 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_3_1_1_1.Add(self.DisplayTypeFullscreen, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_3_1_1_1.Add((16, 0))
-        sizer_3_1_1_1.Add(self.DisplayTypeCustom, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_3_1_1_1.Add(self.ScreenWidthLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_3_1_1_1.Add((8,0))
-        sizer_3_1_1_1.Add(self.ScreenWidth)
-        sizer_3_1_1_1.Add((8,0))
-        sizer_3_1_1_1.Add(self.ScreenHeightLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_3_1_1_1.Add((8,0))
-        sizer_3_1_1_1.Add(self.ScreenHeight)
+        sizer_3_1_1_1.Add(self.UserNameLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_1_1.Add(self.UserName)
+        sizer_3_1_1_1.Add((0,32))
         sizer_3_1_1_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_3_1_1_2.Add((-1,48))
-        sizer_3_1_1_2.Add(self.SetDisplayDPI, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_3_1_1_2.Add((8,0))
-        sizer_3_1_1_2.Add(self.DisplayDPI, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_3_1_1.Add(sizer_3_1_1_1)
-        sizer_3_1_1.Add(sizer_3_1_1_2)
+        sizer_3_1_1_2.Add(self.HostLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_1_2.Add(self.Host)
+        sizer_3_1_1_2.Add((0,32))
+        sizer_3_1_1_3 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_3_1_1_3.Add(self.SSHPortLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_1_3.Add(self.SSHPort)
+        sizer_3_1_1_3.Add((16,0))
+        sizer_3_1_1_3.Add(self.SSHKeyFileLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_1_3.Add((8,0))
+        sizer_3_1_1_3.Add(self.SSHKeyFile, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_1_3.Add(self.SSHKeyFileBrowseButton, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_1_3.Add((0,32))
+        sizer_3_1_1.Add(sizer_3_1_1_1, flag=wx.EXPAND)
+        sizer_3_1_1.Add(sizer_3_1_1_2, flag=wx.EXPAND)
+        sizer_3_1_1.Add(sizer_3_1_1_3, flag=wx.EXPAND)
+
+        sizer_3_1_2 = wx.BoxSizer(wx.VERTICAL)
+        sizer_3_1_2_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_3_1_2_1.Add(self.UseSSHProxy, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_2 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_3_1_2_2.Add(self.SSHProxyUserLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_2.Add(self.SSHProxyUser, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_2.Add((16,0))
+        sizer_3_1_2_2.Add(self.SSHProxyKeyFileLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_2.Add((8,0))
+        sizer_3_1_2_2.Add(self.SSHProxyKeyFile, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_2.Add(self.SSHProxyKeyFileBrowseButton, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_2.Add((0,32))
+        sizer_3_1_2_3 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_3_1_2_3.Add(self.SSHProxyHostLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_3.Add(self.SSHProxyHost, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_3.Add((0,32))
+        sizer_3_1_2_4 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_3_1_2_4.Add(self.SSHProxyTunnelLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_4.Add(self.SSHProxyTunnelFromHost, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_4.Add((4, 0))
+        sizer_3_1_2_4.Add(self.SSHProxyTunnelFromPort, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_4.Add((8, 0))
+        sizer_3_1_2_4.Add(self.SSHProxyTunnelBetweenLabel, flag=wx.ALIGN_CENTRE_VERTICAL|wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_3_1_2_4.Add((8, 0))
+        sizer_3_1_2_4.Add(self.SSHProxyTunnelToHost, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_4.Add((4, 0))
+        sizer_3_1_2_4.Add(self.SSHProxyTunnelToPort, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_1_2_4.Add((0,32))
+        sizer_3_1_2.Add(sizer_3_1_2_1, flag=wx.EXPAND)
+        sizer_3_1_2.Add(sizer_3_1_2_2, flag=wx.EXPAND)
+        sizer_3_1_2.Add(sizer_3_1_2_3, flag=wx.EXPAND)
+        sizer_3_1_2.Add(sizer_3_1_2_4, flag=wx.EXPAND)
         sizer_3_1.Add(sizer_3_1_1, flag=wx.EXPAND|wx.ALL, border=7)
+        sizer_3_1.Add(sizer_3_1_2, flag=wx.EXPAND|wx.ALL, border=7)
 
-        sizer_3_2 = wx.StaticBoxSizer(self.staticbox_Keyboard, wx.VERTICAL)
+        sizer_3_2 = wx.StaticBoxSizer(self.staticbox_LinkSpeed, wx.VERTICAL)
         sizer_3_2_1 = wx.BoxSizer(wx.VERTICAL)
-        sizer_3_2_1_1 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_3_2_1_1.Add(self.CurrentKeyBoard, flag=wx.ALIGN_TOP)
-        sizer_3_2_1_1.Add((0, 32))
-        sizer_3_2_1_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_3_2_1_2.Add((32,0))
-        sizer_3_2_1_2_1 = wx.BoxSizer(wx.VERTICAL)
-        sizer_3_2_1_2_1.Add(self.KeyboardLayoutLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_3_2_1_2_1.Add(self.KeyboardLayout, flag=wx.EXPAND)
-        sizer_3_2_1_2_2 = wx.BoxSizer(wx.VERTICAL)
-        sizer_3_2_1_2_2.Add(self.KeyboardModelLabel)
-        sizer_3_2_1_2_2.Add(self.KeyboardModel, flag=wx.EXPAND)
-        sizer_3_2_1_2.Add(sizer_3_2_1_2_1)
-        sizer_3_2_1_2.Add((32,0))
-        sizer_3_2_1_2.Add(sizer_3_2_1_2_2)
-        sizer_3_2_1.Add(sizer_3_2_1_1)
-        sizer_3_2_1.Add(sizer_3_2_1_2)
+        sizer_3_2_1_1 = wx.BoxSizer(wx.VERTICAL)
+        sizer_3_2_1_1.Add(self.LinkSpeed)
+        sizer_3_2_1_2 = wx.GridSizer(1,5,0,0)
+        sizer_3_2_1_2.SetMinSize((454/5*6 - 30, -1))
+        sizer_3_2_1_2.Add(self.ModemLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_3_2_1_2.Add(self.ISDNLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_3_2_1_2.Add(self.ADSLLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_3_2_1_2.Add(self.WANLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_3_2_1_2.Add(self.LANLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_3_2_1.Add(sizer_3_2_1_1, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_3_2_1.Add(sizer_3_2_1_2, flag=wx.ALIGN_CENTRE_HORIZONTAL)
         sizer_3_2.Add(sizer_3_2_1, flag=wx.EXPAND|wx.ALL, border=7)
 
-        sizer_3_3 = wx.StaticBoxSizer(self.staticbox_Sound, wx.VERTICAL)
-        sizer_3_3_1 = wx.GridBagSizer(vgap=4, hgap=2)
-        sizer_3_3_1.Add(self.EnableSound, pos=(0,0), span=(1,2), border=16, )
-        sizer_3_3_1.Add(self.PulseAudio, pos=(1,0), flag=wx.RIGHT, border=16, )
-        sizer_3_3_1.Add(self.Arts, pos=(2,0), flag=wx.RIGHT, border=16, )
-        sizer_3_3_1.Add(self.Esd, pos=(3,0), flag=wx.RIGHT, border=16, )
-        sizer_3_3_1.Add(self.DefaultSoundPort, pos=(1,1), )
+        sizer_3_3 = wx.StaticBoxSizer(self.staticbox_Compression, wx.VERTICAL)
+        sizer_3_3_1 = wx.BoxSizer(wx.VERTICAL)
         sizer_3_3_1_1 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_3_3_1_1.Add(self.SoundPortLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_3_3_1_1.Add((8, -1))
-        sizer_3_3_1_1.Add(self.SoundPort, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_3_3_1.Add(sizer_3_3_1_1, pos=(2,1), )
-        sizer_3_3.Add(sizer_3_3_1, flag=wx.EXPAND|wx.ALL, border=7)
-
-        sizer_3_4 = wx.StaticBoxSizer(self.staticbox_Printing, wx.VERTICAL)
-        sizer_3_4.Add(self.ClientSidePrinting, flag=wx.EXPAND|wx.ALL, border=7)
+        sizer_3_3_1_1.Add(self.CompressionLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_3_1_1.Add(self.Compression)
+        sizer_3_3_1_1.Add((0,32))
+        sizer_3_3_1_2 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_3_3_1_2.Add(self.ImageQualityLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_3_3_1_2.Add(self.ImageQuality)
+        sizer_3_3_1.Add(sizer_3_3_1_1, flag=wx.EXPAND)
+        sizer_3_3_1.Add(sizer_3_3_1_2, flag=wx.EXPAND)
+        sizer_3_3.Add(sizer_3_3_1, proportion=1, flag=wx.EXPAND|wx.ALL, border=7)
 
         sizer_3.Add(sizer_3_1, flag=wx.EXPAND|wx.ALL, border=5)
         sizer_3.Add(sizer_3_2, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
-        sizer_3.Add(sizer_3_3, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
-        sizer_3.Add(sizer_3_4, flag=wx.EXPAND|wx.ALL, border=5)
-        self.tab_Settings.SetSizerAndFit(sizer_3)
-        self.tab_Settings.Layout()
+        sizer_3.Add(sizer_3_3, flag=wx.EXPAND|wx.ALL, border=5)
+        self.tab_Connection.SetSizerAndFit(sizer_3)
+        self.tab_Connection.Layout()
 
-        # FOLDERSHARING TAB
+        ## SETTINGS TAB
         sizer_4 = wx.BoxSizer(wx.VERTICAL)
-        sizer_4_1 = wx.StaticBoxSizer(self.staticbox_FolderSharing, wx.VERTICAL)
+        sizer_4_1 = wx.StaticBoxSizer(self.staticbox_Display, wx.VERTICAL)
         sizer_4_1_1 = wx.BoxSizer(wx.VERTICAL)
         sizer_4_1_1_1 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4_1_1_1.Add(self.UseLocalFolderSharing)
+        sizer_4_1_1_1.Add(self.DisplayTypeFullscreen, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_4_1_1_1.Add((16, 0))
+        sizer_4_1_1_1.Add(self.DisplayTypeCustom, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_4_1_1_1.Add(self.ScreenWidthLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_4_1_1_1.Add((8,0))
+        sizer_4_1_1_1.Add(self.ScreenWidth)
+        sizer_4_1_1_1.Add((8,0))
+        sizer_4_1_1_1.Add(self.ScreenHeightLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_4_1_1_1.Add((8,0))
+        sizer_4_1_1_1.Add(self.ScreenHeight)
         sizer_4_1_1_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4_1_1_2_1 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4_1_1_2_1.Add(self.SharedFolderPathLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_4_1_1_2_1.Add(self.SharedFolderPath, flag=wx.ALIGN_CENTRE_VERTICAL|wx.LEFT|wx.RIGHT, border=5)
-        sizer_4_1_1_2_1.Add(self.SharedFolderPathBrowseButton, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_4_1_1_2_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4_1_1_2_3 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4_1_1_2_3.Add(self.AddSharedFolderPathButton, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_4_1_1_2_3.Add(self.DeleteSharedFolderPathButton, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_4_1_1_2.Add(sizer_4_1_1_2_1, flag=wx.EXPAND|wx.ALIGN_LEFT)
-        sizer_4_1_1_2.Add(sizer_4_1_1_2_2, proportion=1, flag=wx.EXPAND|wx.ALIGN_LEFT)
-        sizer_4_1_1_2.Add(sizer_4_1_1_2_3, flag=wx.EXPAND|wx.ALIGN_RIGHT)
-        sizer_4_1_1_3 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4_1_1_3.Add(self.SharedFoldersList, proportion=1, flag=wx.EXPAND)
-        sizer_4_1_1.Add(sizer_4_1_1_1, flag=wx.EXPAND|wx.BOTTOM, border=12)
-        sizer_4_1_1.Add(sizer_4_1_1_2, flag=wx.EXPAND)
-        sizer_4_1_1.Add(sizer_4_1_1_3, flag=wx.EXPAND|wx.TOP|wx.BOTTOM, border=5)
-        sizer_4_1_2 = wx.BoxSizer(wx.VERTICAL)
-        sizer_4_1_2_1 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4_1_2_1.Add(self.UseEncodingConverter, flag=wx.BOTTOM, border=5)
-        sizer_4_1_2_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4_1_2_2.Add(self.ClientEncodingLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_4_1_2_2.Add((8,0))
-        sizer_4_1_2_2.Add(self.ClientEncoding)
-        sizer_4_1_2_2.Add((16,0))
-        sizer_4_1_2_2.Add(self.ServerEncodingLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_4_1_2_2.Add((8,0))
-        sizer_4_1_2_2.Add(self.ServerEncoding)
-        sizer_4_1_2.Add(sizer_4_1_2_1, flag=wx.EXPAND)
-        sizer_4_1_2.Add(sizer_4_1_2_2, flag=wx.EXPAND)
+        sizer_4_1_1_2.Add((-1,48))
+        sizer_4_1_1_2.Add(self.SetDisplayDPI, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_4_1_1_2.Add((8,0))
+        sizer_4_1_1_2.Add(self.DisplayDPI, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_4_1_1.Add(sizer_4_1_1_1)
+        sizer_4_1_1.Add(sizer_4_1_1_2)
         sizer_4_1.Add(sizer_4_1_1, flag=wx.EXPAND|wx.ALL, border=7)
-        sizer_4_1.Add(sizer_4_1_2, flag=wx.EXPAND|wx.ALL, border=7)
 
-        sizer_4_2 = wx.StaticBoxSizer(self.staticbox_FileMIMEbox, wx.VERTICAL)
+        sizer_4_2 = wx.StaticBoxSizer(self.staticbox_Keyboard, wx.VERTICAL)
         sizer_4_2_1 = wx.BoxSizer(wx.VERTICAL)
         sizer_4_2_1_1 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4_2_1_1.Add(self.UseFileMIMEbox, flag=wx.BOTTOM, border=5)
+        sizer_4_2_1_1.Add(self.CurrentKeyBoard, flag=wx.ALIGN_TOP)
+        sizer_4_2_1_1.Add((0, 32))
         sizer_4_2_1_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4_2_1_2.Add(self.FileMIMEboxExtensionsLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_4_2_1_2.Add((8,0))
-        sizer_4_2_1_2.Add(self.FileMIMEboxExtensions)
-        sizer_4_2_1_2.Add((16,0))
-        sizer_4_2_1_2.Add(self.FileMIMEboxActionLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_4_2_1_2.Add((8,0))
-        sizer_4_2_1_2.Add(self.FileMIMEboxAction)
-        sizer_4_2_1.Add(sizer_4_2_1_1, flag=wx.EXPAND)
-        sizer_4_2_1.Add(sizer_4_2_1_2, flag=wx.EXPAND)
+        sizer_4_2_1_2.Add((32,0))
+        sizer_4_2_1_2_1 = wx.BoxSizer(wx.VERTICAL)
+        sizer_4_2_1_2_1.Add(self.KeyboardLayoutLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_4_2_1_2_1.Add(self.KeyboardLayout, flag=wx.EXPAND)
+        sizer_4_2_1_2_2 = wx.BoxSizer(wx.VERTICAL)
+        sizer_4_2_1_2_2.Add(self.KeyboardModelLabel)
+        sizer_4_2_1_2_2.Add(self.KeyboardModel, flag=wx.EXPAND)
+        sizer_4_2_1_2.Add(sizer_4_2_1_2_1)
+        sizer_4_2_1_2.Add((32,0))
+        sizer_4_2_1_2.Add(sizer_4_2_1_2_2)
+        sizer_4_2_1.Add(sizer_4_2_1_1)
+        sizer_4_2_1.Add(sizer_4_2_1_2)
         sizer_4_2.Add(sizer_4_2_1, flag=wx.EXPAND|wx.ALL, border=7)
 
+        sizer_4_3 = wx.StaticBoxSizer(self.staticbox_Sound, wx.VERTICAL)
+        sizer_4_3_1 = wx.GridBagSizer(vgap=4, hgap=2)
+        sizer_4_3_1.Add(self.EnableSound, pos=(0,0), span=(1,2), border=16, )
+        sizer_4_3_1.Add(self.PulseAudio, pos=(1,0), flag=wx.RIGHT, border=16, )
+        sizer_4_3_1.Add(self.Arts, pos=(2,0), flag=wx.RIGHT, border=16, )
+        sizer_4_3_1.Add(self.Esd, pos=(3,0), flag=wx.RIGHT, border=16, )
+        sizer_4_3_1.Add(self.DefaultSoundPort, pos=(1,1), )
+        sizer_4_3_1_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_4_3_1_1.Add(self.SoundPortLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_4_3_1_1.Add((8, -1))
+        sizer_4_3_1_1.Add(self.SoundPort, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_4_3_1.Add(sizer_4_3_1_1, pos=(2,1), )
+        sizer_4_3.Add(sizer_4_3_1, flag=wx.EXPAND|wx.ALL, border=7)
+
+        sizer_4_4 = wx.StaticBoxSizer(self.staticbox_Printing, wx.VERTICAL)
+        sizer_4_4.Add(self.ClientSidePrinting, flag=wx.EXPAND|wx.ALL, border=7)
+
         sizer_4.Add(sizer_4_1, flag=wx.EXPAND|wx.ALL, border=5)
         sizer_4.Add(sizer_4_2, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
-        self.tab_SharedFilesAndFolders.SetSizerAndFit(sizer_4)
+        sizer_4.Add(sizer_4_3, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
+        sizer_4.Add(sizer_4_4, flag=wx.EXPAND|wx.ALL, border=5)
+        self.tab_Settings.SetSizerAndFit(sizer_4)
+        self.tab_Settings.Layout()
+
+        # FOLDERSHARING TAB
+        sizer_5 = wx.BoxSizer(wx.VERTICAL)
+        sizer_5_1 = wx.StaticBoxSizer(self.staticbox_FolderSharing, wx.VERTICAL)
+        sizer_5_1_1 = wx.BoxSizer(wx.VERTICAL)
+        sizer_5_1_1_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_1_1_1.Add(self.UseLocalFolderSharing)
+        sizer_5_1_1_2 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_1_1_2_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_1_1_2_1.Add(self.SharedFolderPathLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_1_2_1.Add(self.SharedFolderPath, flag=wx.ALIGN_CENTRE_VERTICAL|wx.LEFT|wx.RIGHT, border=5)
+        sizer_5_1_1_2_1.Add(self.SharedFolderPathBrowseButton, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_1_2_2 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_1_1_2_3 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_1_1_2_3.Add(self.AddSharedFolderPathButton, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_1_2_3.Add(self.DeleteSharedFolderPathButton, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_1_2.Add(sizer_5_1_1_2_1, flag=wx.EXPAND|wx.ALIGN_LEFT)
+        sizer_5_1_1_2.Add(sizer_5_1_1_2_2, proportion=1, flag=wx.EXPAND|wx.ALIGN_LEFT)
+        sizer_5_1_1_2.Add(sizer_5_1_1_2_3, flag=wx.EXPAND|wx.ALIGN_RIGHT)
+        sizer_5_1_1_3 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_1_1_3.Add(self.SharedFoldersList, proportion=1, flag=wx.EXPAND)
+        sizer_5_1_1.Add(sizer_5_1_1_1, flag=wx.EXPAND|wx.BOTTOM, border=12)
+        sizer_5_1_1.Add(sizer_5_1_1_2, flag=wx.EXPAND)
+        sizer_5_1_1.Add(sizer_5_1_1_3, flag=wx.EXPAND|wx.TOP|wx.BOTTOM, border=5)
+        sizer_5_1_2 = wx.BoxSizer(wx.VERTICAL)
+        sizer_5_1_2_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_1_2_1.Add(self.UseEncodingConverter, flag=wx.BOTTOM, border=5)
+        sizer_5_1_2_2 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_1_2_2.Add(self.ClientEncodingLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_2_2.Add((8,0))
+        sizer_5_1_2_2.Add(self.ClientEncoding)
+        sizer_5_1_2_2.Add((16,0))
+        sizer_5_1_2_2.Add(self.ServerEncodingLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_2_2.Add((8,0))
+        sizer_5_1_2_2.Add(self.ServerEncoding)
+        sizer_5_1_2.Add(sizer_5_1_2_1, flag=wx.EXPAND)
+        sizer_5_1_2.Add(sizer_5_1_2_2, flag=wx.EXPAND)
+        sizer_5_1.Add(sizer_5_1_1, flag=wx.EXPAND|wx.ALL, border=7)
+        sizer_5_1.Add(sizer_5_1_2, flag=wx.EXPAND|wx.ALL, border=7)
+
+        sizer_5_2 = wx.StaticBoxSizer(self.staticbox_FileMIMEbox, wx.VERTICAL)
+        sizer_5_2_1 = wx.BoxSizer(wx.VERTICAL)
+        sizer_5_2_1_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_2_1_1.Add(self.UseFileMIMEbox, flag=wx.BOTTOM, border=5)
+        sizer_5_2_1_2 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_2_1_2.Add(self.FileMIMEboxExtensionsLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_2_1_2.Add((8,0))
+        sizer_5_2_1_2.Add(self.FileMIMEboxExtensions)
+        sizer_5_2_1_2.Add((16,0))
+        sizer_5_2_1_2.Add(self.FileMIMEboxActionLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_2_1_2.Add((8,0))
+        sizer_5_2_1_2.Add(self.FileMIMEboxAction)
+        sizer_5_2_1.Add(sizer_5_2_1_1, flag=wx.EXPAND)
+        sizer_5_2_1.Add(sizer_5_2_1_2, flag=wx.EXPAND)
+        sizer_5_2.Add(sizer_5_2_1, flag=wx.EXPAND|wx.ALL, border=7)
+
+        sizer_5.Add(sizer_5_1, flag=wx.EXPAND|wx.ALL, border=5)
+        sizer_5.Add(sizer_5_2, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
+        self.tab_SharedFilesAndFolders.SetSizerAndFit(sizer_5)
         self.tab_SharedFilesAndFolders.Layout()
 
-        self.X2goTabs.AddPage(self.tab_Session, _(u"Session Profile"))
+        self.X2goTabs.AddPage(self.tab_Profile, _(u"Profile"))
+        self.X2goTabs.AddPage(self.tab_Session, _(u"Session"))
         self.X2goTabs.AddPage(self.tab_Connection, _(u"Connection"))
         self.X2goTabs.AddPage(self.tab_Settings, _(u"Settings"))
         self.X2goTabs.AddPage(self.tab_SharedFilesAndFolders, _(u"Sharing"))
@@ -711,20 +726,22 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         MainSizer.Add(sizer_B, flag=wx.ALIGN_RIGHT)
         self.SetSizerAndFit(MainSizer)
 
-        max1_x, max1_y = self.tab_Session.GetBestSize()
-        max2_x, max2_y = self.tab_Connection.GetBestSize()
-        max3_x, max3_y = self.tab_Settings.GetBestSize()
-        max4_x, max4_y = self.tab_SharedFilesAndFolders.GetBestSize()
+        max1_x, max1_y = self.tab_Profile.GetBestSize()
+        max2_x, max2_y = self.tab_Session.GetBestSize()
+        max3_x, max3_y = self.tab_Connection.GetBestSize()
+        max4_x, max4_y = self.tab_Settings.GetBestSize()
+        max5_x, max5_y = self.tab_SharedFilesAndFolders.GetBestSize()
+
+        #self.SetSize(self.GetBestSize() + self.X2goTabs.GetBestSize())
 
-        self.SetSize(self.GetBestSize())
-        self.SetSize((max(max1_x, max2_x, max3_x, max4_x) * 1.05, max(max1_y, max2_y, max3_y, max4_y) + 64))
+        self.SetSize((max(max1_x, max2_x, max3_x, max4_x, max5_x) * 1.05, max(max1_y, max2_y, max3_y, max4_y, max5_y) + 64))
         self.SetAutoLayout(True)
         self.Layout()
         self.CentreOnScreen()
         self.Show(True)
 
         # derive ListCtrl widths from sizer information
-        _sizer_width = sizer_4_1_1_3.GetSize().GetWidth()
+        _sizer_width = sizer_5_1_1_3.GetSize().GetWidth()
         self.SharedFoldersList.SetColumnWidth(0, abs(_sizer_width*.7))
         self.SharedFoldersList.SetColumnWidth(1, abs(_sizer_width*.3))
 
@@ -836,13 +853,11 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
             self.XDMCPServer.Enable(True)
 
         if _command in ('RDP', 'DirectRDP'):
-            self.RDPSettingsLabel.Enable(True)
             self.RDPServerLabel.Enable(True)
             self.RDPServer.Enable(True)
             self.RDPOptionsLabel.Enable(True)
             self.RDPOptions.Enable(True)
         else:
-            self.RDPSettingsLabel.Enable(False)
             self.RDPServerLabel.Enable(False)
             self.RDPServer.Enable(False)
             self.RDPOptionsLabel.Enable(False)
@@ -1000,8 +1015,8 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
             self.staticbox_Profile.Enable(False)
             self.ProfileNameLabel.Enable(False)
             self.ProfileName.Enable(False)
-            #self.IconButton.Enable(False)
-            #self.IconButtonLabel.Enable(False)
+            self.IconButton.Enable(False)
+            self.IconButtonLabel.Enable(False)
             self.HostLabel.Enable(False)
             self.Host.Enable(False)
             self.UserNameLabel.Enable(False)
@@ -1034,7 +1049,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
             self.profile_config['sessiontitle'] = ''
         else:
             self.profile_config['sessiontitle'] = self.CustomSessionWindowTitle.GetValue()
-        #self.profile_config['icon'] = self.IconPath
+        self.profile_config['icon'] = self.IconPath
         self.profile_config['user'] = self.UserName.GetValue()
         self.profile_config['key'] = self.SSHKeyFile.GetValue()
         if self.UseSSHProxy.GetValue():
@@ -1140,25 +1155,25 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
             _mimebox_action = 'OPEN'
         self.profile_config['mimeboxaction'] = _mimebox_action
 
-    #def OnIconChange(self, event):
-    #    _share_location = os.path.split(_icons_location)[0]
-    #    iconsdir = _icons_location
-    #    if not os.path.exists(iconsdir):
-    #        iconsdir = os.getcwd()
-    #    wildcard = _(u"Icon Files (*.png)|*.png|"     \
-    #       "All files (*.*)|*")
-    #    dlg = wx.FileDialog(
-    #        self, message=_(u"Choose an icon for this session profile"), defaultDir=iconsdir,
-    #        defaultFile="", wildcard=wildcard, style=wx.OPEN | wx.CHANGE_DIR )
-    #    # Show the dialog and retrieve the user response. If it is the OK response,
-    #    # process the data.
-    #    if dlg.ShowModal() == wx.ID_OK:
-    #        # This returns a Python list of files that were selected.
-    #        path_to_icon = dlg.GetPath()
-    #        self.IconButton.SetBitmapLabel(wx.Bitmap(path_to_icon, wx.BITMAP_TYPE_ANY))
-    #        rel_path = path_to_icon.replace('%s/' % _share_location, ':')
-    #        rel_path = rel_path.replace( 'icons/PyHoca/128x128/pyhoca-session.png', 'icons/128x128/x2gosession.png')
-    #        self.IconPath = rel_path
+    def OnIconChange(self, event):
+        _share_location = os.path.split(_icons_location)[0]
+        iconsdir = _icons_location
+        if not os.path.exists(iconsdir):
+            iconsdir = os.getcwd()
+        wildcard = _(u"Icon Files (*.png)|*.png|"     \
+           "All files (*.*)|*")
+        dlg = wx.FileDialog(
+            self, message=_(u"Choose an icon for this session profile"), defaultDir=iconsdir,
+            defaultFile="", wildcard=wildcard, style=wx.OPEN | wx.CHANGE_DIR )
+        # Show the dialog and retrieve the user response. If it is the OK response,
+        # process the data.
+        if dlg.ShowModal() == wx.ID_OK:
+            # This returns a Python list of files that were selected.
+            path_to_icon = dlg.GetPath()
+            self.IconButton.SetBitmapLabel(wx.Bitmap(path_to_icon, wx.BITMAP_TYPE_ANY))
+            rel_path = path_to_icon.replace('%s/' % _share_location, ':')
+            rel_path = rel_path.replace( 'icons/PyHoca/128x128/pyhoca-session.png', 'icons/128x128/x2gosession.png')
+            self.IconPath = rel_path
 
     def OnSetSessionWindowTitle(self, event):
         if self.SetSessionWindowTitle.GetValue():
@@ -1253,13 +1268,11 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
             self.XDMCPServer.Enable(False)
 
         if _session_type in ('RDP', 'DirectRDP', ):
-            self.RDPSettingsLabel.Enable(True)
             self.RDPServerLabel.Enable(True)
             self.RDPServer.Enable(True)
             self.RDPOptionsLabel.Enable(True)
             self.RDPOptions.Enable(True)
         else:
-            self.RDPSettingsLabel.Enable(False)
             self.RDPServerLabel.Enable(False)
             self.RDPServer.Enable(False)
             self.RDPOptionsLabel.Enable(False)


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