[X2Go-Commits] pyhoca-gui.git - twofactorauth (branch) updated: 0.2.0.4-36-g4e7c22e

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


The branch, twofactorauth has been updated
       via  4e7c22e6c1994cc74348e8c8ee808e5e31886de1 (commit)
      from  ce4e09cc437f0ff15e4ed53b7a96e100576462bc (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               |    3 +
 pyhoca/wxgui/profilemanager.py |  385 +++++++++++++++++++++-------------------
 2 files changed, 201 insertions(+), 187 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index a62501b..6c2b1b0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -28,6 +28,9 @@ pyhoca-gui (0.2.1.0-0~x2go1) UNRELEASED; urgency=low
     - Disable ,,usesshproxy'' for DirectRDP sessions.
     - Make ,,maxdim'' option configurable through session profile manager.
     - Fix naming mismatch ,,autologin'' vs. ,,autoconnect''.
+    - Introduce profile manager tab ,,Link Quality''. Move printing into renamed
+      tab ,,Resource Sharing''. Shrink profile manager window, closes upstream
+      issue: #13.
   * /debian/control:
     + Maintainer change in package: X2Go Developers
       <x2go-dev at lists.berlios.de>.
diff --git a/pyhoca/wxgui/profilemanager.py b/pyhoca/wxgui/profilemanager.py
index 1888bee..6b80fcf 100644
--- a/pyhoca/wxgui/profilemanager.py
+++ b/pyhoca/wxgui/profilemanager.py
@@ -163,8 +163,9 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         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_LinkQuality = wx.Panel(self.X2goTabs, -1)
         self.tab_Settings = wx.Panel(self.X2goTabs, -1)
-        self.tab_SharedFilesAndFolders = wx.Panel(self.X2goTabs, -1)
+        self.tab_SharedResources = wx.Panel(self.X2goTabs, -1)
 
         # boxes for all tabs
         self.staticbox_Profile = wx.StaticBox(self.tab_Profile, -1, ' %s ' % _(u'Session Title'))
@@ -172,14 +173,14 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         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_Proxy = wx.StaticBox(self.tab_Connection, -1, ' %s ' % _(u"Proxy"))
-        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"))
+        self.staticbox_LinkSpeed = wx.StaticBox(self.tab_LinkQuality, -1, ' %s ' % _(u"Connection Link Speed"))
+        self.staticbox_Compression = wx.StaticBox(self.tab_LinkQuality, -1, ' %s ' % _(u"Compression"))
         self.staticbox_Display = wx.StaticBox(self.tab_Settings, -1, ' %s ' % _(u"Display"))
         self.staticbox_Keyboard = wx.StaticBox(self.tab_Settings, -1, ' %s ' % _(u"Keyboard"))
         self.staticbox_Sound = wx.StaticBox(self.tab_Settings, -1, ' %s ' % _(u"Sound"))
-        self.staticbox_Printing = wx.StaticBox(self.tab_Settings, -1, ' %s ' % _(u"Printing"))
-        self.staticbox_FolderSharing = wx.StaticBox(self.tab_SharedFilesAndFolders, -1, ' %s ' % _(u"Folder Exports"))
-        self.staticbox_FileMIMEbox = wx.StaticBox(self.tab_SharedFilesAndFolders, -1, ' %s ' % _(u"File Import"))
+        self.staticbox_Printing = wx.StaticBox(self.tab_SharedResources, -1, ' %s ' % _(u"Printing"))
+        self.staticbox_FolderSharing = wx.StaticBox(self.tab_SharedResources, -1, ' %s ' % _(u"Folder Exports"))
+        self.staticbox_FileMIMEbox = wx.StaticBox(self.tab_SharedResources, -1, ' %s ' % _(u"File Import"))
 
         ###
         ### widgets for the PROFILE tab
@@ -268,17 +269,17 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self.SSHProxyTunnelToHost = wx.TextCtrl(self.tab_Connection, -1, "", size=wx.Size(200,20))
         self.SSHProxyTunnelToPort = wx.SpinCtrl(self.tab_Connection, -1, "22", min=1, max=65534)
 
-        self.LinkSpeed = wx.Slider(self.tab_Connection, -1, 0, 0, 4)
-        self.ModemLabel = wx.StaticText(self.tab_Connection, -1, "|\n "+_(u"Modem"), style=wx.ALIGN_CENTRE)
-        self.ISDNLabel = wx.StaticText(self.tab_Connection, -1, "|\n "+_(u"ISDN"), style=wx.ALIGN_CENTRE)
-        self.ADSLLabel = wx.StaticText(self.tab_Connection, -1, "|\n"+_(u"ADSL"), style=wx.ALIGN_CENTRE)
-        self.WANLabel = wx.StaticText(self.tab_Connection, -1, "|\n"+_(u"WAN"), style=wx.ALIGN_CENTRE)
-        self.LANLabel = wx.StaticText(self.tab_Connection, -1, "|\n"+_(u"LAN"), style=wx.ALIGN_CENTRE)
+        self.LinkSpeed = wx.Slider(self.tab_LinkQuality, -1, 0, 0, 4)
+        self.ModemLabel = wx.StaticText(self.tab_LinkQuality, -1, "|\n "+_(u"Modem"), style=wx.ALIGN_CENTRE)
+        self.ISDNLabel = wx.StaticText(self.tab_LinkQuality, -1, "|\n "+_(u"ISDN"), style=wx.ALIGN_CENTRE)
+        self.ADSLLabel = wx.StaticText(self.tab_LinkQuality, -1, "|\n"+_(u"ADSL"), style=wx.ALIGN_CENTRE)
+        self.WANLabel = wx.StaticText(self.tab_LinkQuality, -1, "|\n"+_(u"WAN"), style=wx.ALIGN_CENTRE)
+        self.LANLabel = wx.StaticText(self.tab_LinkQuality, -1, "|\n"+_(u"LAN"), style=wx.ALIGN_CENTRE)
 
-        self.CompressionLabel = wx.StaticText(self.tab_Connection, -1, _(u"Method")+": ")
-        self.Compression = wx.ComboBox(self.tab_Connection, -1, choices=self.compressionChoices.values(), style=wx.CB_DROPDOWN)
-        self.ImageQualityLabel = wx.StaticText(self.tab_Connection, -1, _(u"Image quality")+": ")
-        self.ImageQuality = wx.SpinCtrl(self.tab_Connection, -1, "9", min=0, max=9)
+        self.CompressionLabel = wx.StaticText(self.tab_LinkQuality, -1, _(u"Method")+": ")
+        self.Compression = wx.ComboBox(self.tab_LinkQuality, -1, choices=self.compressionChoices.values(), style=wx.CB_DROPDOWN)
+        self.ImageQualityLabel = wx.StaticText(self.tab_LinkQuality, -1, _(u"Image quality")+": ")
+        self.ImageQuality = wx.SpinCtrl(self.tab_LinkQuality, -1, "9", min=0, max=9)
 
         ###
         ### wigdets for the SETTINGS tab
@@ -313,29 +314,30 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self.DefaultSoundPort = wx.CheckBox(self.tab_Settings, -1, _(u"Use default sound port"))
         self.SoundPortLabel = wx.StaticText(self.tab_Settings, -1, _(u"Custom sound port")+": ")
         self.SoundPort = wx.SpinCtrl(self.tab_Settings, -1, "4713", min=23, max=64889)
-        self.ClientSidePrinting = wx.CheckBox(self.tab_Settings, -1, _(u"Client Side printing"))
-
-        self.UseLocalFolderSharing = wx.CheckBox(self.tab_SharedFilesAndFolders, -1, _(u"Use local folder sharing"))
-        self.SharedFolderPathLabel = wx.StaticText(self.tab_SharedFilesAndFolders, -1, _(u"Path")+": ")
-        self.SharedFolderPath = wx.TextCtrl(self.tab_SharedFilesAndFolders, -1, "", style=wx.TE_PROCESS_ENTER)
-        self.SharedFolderPathBrowseButton = wx.BitmapButton(self.tab_SharedFilesAndFolders, -1, wx.Bitmap('%s/PyHoca/16x16/system-search.png' % _icons_location, wx.BITMAP_TYPE_ANY), size=wx.Size(self._textfield_height,self._textfield_height), )
-        self.AddSharedFolderPathButton = wx.Button(self.tab_SharedFilesAndFolders, -1, _(u"Add"))
-        self.SharedFoldersList = CheckListCtrl(self.tab_SharedFilesAndFolders)
+
+        self.UseLocalFolderSharing = wx.CheckBox(self.tab_SharedResources, -1, _(u"Use local folder sharing"))
+        self.SharedFolderPathLabel = wx.StaticText(self.tab_SharedResources, -1, _(u"Path")+": ")
+        self.SharedFolderPath = wx.TextCtrl(self.tab_SharedResources, -1, "", style=wx.TE_PROCESS_ENTER)
+        self.SharedFolderPathBrowseButton = wx.BitmapButton(self.tab_SharedResources, -1, wx.Bitmap('%s/PyHoca/16x16/system-search.png' % _icons_location, wx.BITMAP_TYPE_ANY), size=wx.Size(self._textfield_height,self._textfield_height), )
+        self.AddSharedFolderPathButton = wx.Button(self.tab_SharedResources, -1, _(u"Add"))
+        self.SharedFoldersList = CheckListCtrl(self.tab_SharedResources)
         self.SharedFoldersList.InsertColumn(0, _("Local Path"), wx.LIST_FORMAT_LEFT)
         self.SharedFoldersList.InsertColumn(1, _("Connect Method"), wx.LIST_FORMAT_CENTER)
-        self.DeleteSharedFolderPathButton = wx.Button(self.tab_SharedFilesAndFolders, -1, _(u"Delete"))
+        self.DeleteSharedFolderPathButton = wx.Button(self.tab_SharedResources, -1, _(u"Delete"))
+
+        self.UseEncodingConverter = wx.CheckBox(self.tab_SharedResources, -1, _(u"Convert between client and server encodings"))
+        self.ClientEncodingLabel = wx.StaticText(self.tab_SharedResources, -1, _(u"Client encoding")+": ")
+        self.ClientEncoding = wx.ComboBox(self.tab_SharedResources, -1, choices=_known_encodings, style=wx.CB_DROPDOWN|wx.CB_READONLY)
+        self.ServerEncodingLabel = wx.StaticText(self.tab_SharedResources, -1, _(u"Server encoding")+": ")
+        self.ServerEncoding = wx.ComboBox(self.tab_SharedResources, -1, choices=_known_encodings, style=wx.CB_DROPDOWN|wx.CB_READONLY)
 
-        self.UseEncodingConverter = wx.CheckBox(self.tab_SharedFilesAndFolders, -1, _(u"Convert between client and server encodings"))
-        self.ClientEncodingLabel = wx.StaticText(self.tab_SharedFilesAndFolders, -1, _(u"Client encoding")+": ")
-        self.ClientEncoding = wx.ComboBox(self.tab_SharedFilesAndFolders, -1, choices=_known_encodings, style=wx.CB_DROPDOWN|wx.CB_READONLY)
-        self.ServerEncodingLabel = wx.StaticText(self.tab_SharedFilesAndFolders, -1, _(u"Server encoding")+": ")
-        self.ServerEncoding = wx.ComboBox(self.tab_SharedFilesAndFolders, -1, choices=_known_encodings, style=wx.CB_DROPDOWN|wx.CB_READONLY)
+        self.UseFileMIMEbox = wx.CheckBox(self.tab_SharedResources, -1, _(u"Use file MIME box for local file import"))
+        self.FileMIMEboxExtensionsLabel = wx.StaticText(self.tab_SharedResources, -1, _(u"Extensions")+": ")
+        self.FileMIMEboxExtensions = wx.TextCtrl(self.tab_SharedResources, -1, "", style=wx.TE_PROCESS_ENTER)
+        self.FileMIMEboxActionLabel = wx.StaticText(self.tab_SharedResources, -1, _(u"Action")+": ")
+        self.FileMIMEboxAction = wx.ComboBox(self.tab_SharedResources, -1, choices=self.mimeboxactionChoices.values(), style=wx.CB_DROPDOWN|wx.CB_READONLY)
 
-        self.UseFileMIMEbox = wx.CheckBox(self.tab_SharedFilesAndFolders, -1, _(u"Use file MIME box for local file import"))
-        self.FileMIMEboxExtensionsLabel = wx.StaticText(self.tab_SharedFilesAndFolders, -1, _(u"Extensions")+": ")
-        self.FileMIMEboxExtensions = wx.TextCtrl(self.tab_SharedFilesAndFolders, -1, "", style=wx.TE_PROCESS_ENTER)
-        self.FileMIMEboxActionLabel = wx.StaticText(self.tab_SharedFilesAndFolders, -1, _(u"Action")+": ")
-        self.FileMIMEboxAction = wx.ComboBox(self.tab_SharedFilesAndFolders, -1, choices=self.mimeboxactionChoices.values(), style=wx.CB_DROPDOWN|wx.CB_READONLY)
+        self.ClientSidePrinting = wx.CheckBox(self.tab_SharedResources, -1, _(u"Client Side printing"))
 
         if self.action == 'ADD':
             self.OKButton = wx.Button(self, -1, _(u"Add"))
@@ -491,7 +493,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self.SoundPort.SetMinSize((-1, self._textfield_height))
         self.ClientSidePrinting.SetMinSize((-1, self._textfield_height))
         self.SharedFolderPath.SetMinSize((220, self._textfield_height))
-        self.SharedFoldersList.SetMinSize((-1, 180))
+        self.SharedFoldersList.SetMinSize((-1, 90))
 
         self.ClientEncoding.SetMinSize((140, self._textfield_height))
         self.ServerEncoding.SetMinSize((140, self._textfield_height))
@@ -604,178 +606,188 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         sizer_3_2_1.Add(sizer_3_2_1_1, pos=(4,0), span=(1,6))
         sizer_3_2.Add(sizer_3_2_1, flag=wx.EXPAND|wx.ALL, border=7)
 
-        sizer_3_3 = wx.StaticBoxSizer(self.staticbox_LinkSpeed, wx.VERTICAL)
-        sizer_3_3_1 = wx.BoxSizer(wx.VERTICAL)
-        sizer_3_3_1_1 = wx.BoxSizer(wx.VERTICAL)
-        sizer_3_3_1_1.Add(self.LinkSpeed)
-        sizer_3_3_1_2 = wx.GridSizer(1,5,0,0)
-        sizer_3_3_1_2.SetMinSize((454/5*6 - 30, 36))
-        sizer_3_3_1_2.Add(self.ModemLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_3_3_1_2.Add(self.ISDNLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_3_3_1_2.Add(self.ADSLLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_3_3_1_2.Add(self.WANLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_3_3_1_2.Add(self.LANLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_3_3_1.Add(sizer_3_3_1_1, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_3_3_1.Add(sizer_3_3_1_2, flag=wx.ALIGN_CENTRE_HORIZONTAL)
-        sizer_3_3.Add(sizer_3_3_1, flag=wx.EXPAND|wx.ALL, border=7)
-
-        sizer_3_4 = wx.StaticBoxSizer(self.staticbox_Compression, wx.VERTICAL)
-        sizer_3_4_1 = wx.BoxSizer(wx.VERTICAL)
-        sizer_3_4_1_1 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_3_4_1_1.Add(self.CompressionLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_3_4_1_1.Add(self.Compression)
-        sizer_3_4_1_1.Add((0,32))
-        sizer_3_4_1_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_3_4_1_2.Add(self.ImageQualityLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_3_4_1_2.Add(self.ImageQuality)
-        sizer_3_4_1.Add(sizer_3_4_1_1, flag=wx.EXPAND)
-        sizer_3_4_1.Add(sizer_3_4_1_2, flag=wx.EXPAND)
-        sizer_3_4.Add(sizer_3_4_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, 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_Connection.SetSizerAndFit(sizer_3)
         self.tab_Connection.Layout()
 
-        ## SETTINGS TAB
+        ## LINK QUALITY TAB
         sizer_4 = wx.BoxSizer(wx.VERTICAL)
-        sizer_4_1 = wx.StaticBoxSizer(self.staticbox_Display, wx.VERTICAL)
+        sizer_4_1 = wx.StaticBoxSizer(self.staticbox_LinkSpeed, 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.DisplayTypeFullscreen, flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_4_1_1_1.Add((16, 0))
-        sizer_4_1_1_1.Add(self.DisplayTypeMaximize, 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.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_1_1 = wx.BoxSizer(wx.VERTICAL)
+        sizer_4_1_1_1.Add(self.LinkSpeed)
+        sizer_4_1_1_2 = wx.GridSizer(1,5,0,0)
+        sizer_4_1_1_2.SetMinSize((454/5*6 - 30, 36))
+        sizer_4_1_1_2.Add(self.ModemLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_4_1_1_2.Add(self.ISDNLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_4_1_1_2.Add(self.ADSLLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_4_1_1_2.Add(self.WANLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_4_1_1_2.Add(self.LANLabel, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_4_1_1.Add(sizer_4_1_1_1, flag=wx.ALIGN_CENTRE_HORIZONTAL)
+        sizer_4_1_1.Add(sizer_4_1_1_2, flag=wx.ALIGN_CENTRE_HORIZONTAL)
         sizer_4_1.Add(sizer_4_1_1, flag=wx.EXPAND|wx.ALL, border=7)
 
-        sizer_4_2 = wx.StaticBoxSizer(self.staticbox_Keyboard, wx.VERTICAL)
+        sizer_4_2 = wx.StaticBoxSizer(self.staticbox_Compression, wx.VERTICAL)
         sizer_4_2_1 = wx.BoxSizer(wx.VERTICAL)
-        sizer_4_2_1_1 = wx.BoxSizer(wx.VERTICAL)
-        sizer_4_2_1_1.Add(self.DontSetKeyboard, )
-        sizer_4_2_1_1.Add(self.AutoSetKeyboard, )
-        sizer_4_2_1_1.Add(self.CustomSetKeyboard, )
-        sizer_4_2_1_1.Add((0,8))
+        sizer_4_2_1_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_4_2_1_1.Add(self.CompressionLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_4_2_1_1.Add(self.Compression)
+        sizer_4_2_1_1.Add((0,32))
         sizer_4_2_1_2 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4_2_1_2.Add((32,0))
-        sizer_4_2_1_2_1 = wx.GridBagSizer(hgap=2, vgap=2)
-        sizer_4_2_1_2_1.Add(self.KeyboardModelLabel, pos=(0,0),)
-        sizer_4_2_1_2_1.Add(self.KeyboardModel, flag=wx.EXPAND, pos=(1,0),)
-        sizer_4_2_1_2_1.Add((32,0), pos=(0,1), span=(2,1))
-        sizer_4_2_1_2_1.Add(self.KeyboardLayoutLabel, flag=wx.ALIGN_CENTRE_VERTICAL, pos=(0,2), )
-        sizer_4_2_1_2_1.Add(self.KeyboardLayout, flag=wx.EXPAND, pos=(1,2), )
-        sizer_4_2_1_2_1.Add((32,0), pos=(0,3), span=(2,1))
-        sizer_4_2_1_2_1.Add(self.KeyboardVariantLabel, pos=(0,4),)
-        sizer_4_2_1_2_1.Add(self.KeyboardVariant, flag=wx.EXPAND, pos=(1,4),)
-        sizer_4_2_1_2.Add(sizer_4_2_1_2_1)
-        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_2_1_2.Add(self.ImageQualityLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_4_2_1_2.Add(self.ImageQuality)
+        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.Add(sizer_4_2_1, proportion=1, 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)
-        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()
+        sizer_4.Add(sizer_4_2, flag=wx.EXPAND|wx.ALL, border=5)
+        self.tab_LinkQuality.SetSizerAndFit(sizer_4)
+        self.tab_LinkQuality.Layout()
 
-        # FOLDERSHARING TAB
+        ## SETTINGS TAB
         sizer_5 = wx.BoxSizer(wx.VERTICAL)
-        sizer_5_1 = wx.StaticBoxSizer(self.staticbox_FolderSharing, wx.VERTICAL)
+        sizer_5_1 = wx.StaticBoxSizer(self.staticbox_Display, 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_1.Add(self.DisplayTypeFullscreen, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_1_1.Add((16, 0))
+        sizer_5_1_1_1.Add(self.DisplayTypeMaximize, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_1_1.Add((16, 0))
+        sizer_5_1_1_1.Add(self.DisplayTypeCustom, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_1_1.Add(self.ScreenWidthLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_1_1.Add((8,0))
+        sizer_5_1_1_1.Add(self.ScreenWidth)
+        sizer_5_1_1_1.Add((8,0))
+        sizer_5_1_1_1.Add(self.ScreenHeightLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_1_1.Add((8,0))
+        sizer_5_1_1_1.Add(self.ScreenHeight)
         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, border=5)
-        sizer_5_1_1_2_1.Add(self.SharedFolderPathBrowseButton, flag=wx.ALIGN_CENTRE_VERTICAL|wx.LEFT, border=2)
-        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|wx.LEFT, border=2)
-        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_1_2.Add((-1,48))
+        sizer_5_1_1_2.Add(self.SetDisplayDPI, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_1_2.Add((8,0))
+        sizer_5_1_1_2.Add(self.DisplayDPI, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_1_1.Add(sizer_5_1_1_1)
+        sizer_5_1_1.Add(sizer_5_1_1_2)
         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 = wx.StaticBoxSizer(self.staticbox_Keyboard, 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.GridBagSizer(vgap=2, hgap=3)
-        sizer_5_2_1_2.Add(self.FileMIMEboxActionLabel, pos=(0,0), flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_5_2_1_2.Add(self.FileMIMEboxAction, pos=(0,2))
-        sizer_5_2_1_2.Add((8,0), pos=(0,1))
-        sizer_5_2_1_2.Add((8,0), pos=(1,1))
-        sizer_5_2_1_2.Add(self.FileMIMEboxExtensionsLabel, pos=(1,0), flag=wx.ALIGN_CENTRE_VERTICAL)
-        sizer_5_2_1_2.Add(self.FileMIMEboxExtensions, pos=(1,2))
-        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_1_1 = wx.BoxSizer(wx.VERTICAL)
+        sizer_5_2_1_1.Add(self.DontSetKeyboard, )
+        sizer_5_2_1_1.Add(self.AutoSetKeyboard, )
+        sizer_5_2_1_1.Add(self.CustomSetKeyboard, )
+        sizer_5_2_1_1.Add((0,8))
+        sizer_5_2_1_2 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_2_1_2.Add((32,0))
+        sizer_5_2_1_2_1 = wx.GridBagSizer(hgap=2, vgap=2)
+        sizer_5_2_1_2_1.Add(self.KeyboardModelLabel, pos=(0,0),)
+        sizer_5_2_1_2_1.Add(self.KeyboardModel, flag=wx.EXPAND, pos=(1,0),)
+        sizer_5_2_1_2_1.Add((32,0), pos=(0,1), span=(2,1))
+        sizer_5_2_1_2_1.Add(self.KeyboardLayoutLabel, flag=wx.ALIGN_CENTRE_VERTICAL, pos=(0,2), )
+        sizer_5_2_1_2_1.Add(self.KeyboardLayout, flag=wx.EXPAND, pos=(1,2), )
+        sizer_5_2_1_2_1.Add((32,0), pos=(0,3), span=(2,1))
+        sizer_5_2_1_2_1.Add(self.KeyboardVariantLabel, pos=(0,4),)
+        sizer_5_2_1_2_1.Add(self.KeyboardVariant, flag=wx.EXPAND, pos=(1,4),)
+        sizer_5_2_1_2.Add(sizer_5_2_1_2_1)
+        sizer_5_2_1.Add(sizer_5_2_1_1)
+        sizer_5_2_1.Add(sizer_5_2_1_2)
         sizer_5_2.Add(sizer_5_2_1, flag=wx.EXPAND|wx.ALL, border=7)
 
+        sizer_5_3 = wx.StaticBoxSizer(self.staticbox_Sound, wx.VERTICAL)
+        sizer_5_3_1 = wx.GridBagSizer(vgap=4, hgap=2)
+        sizer_5_3_1.Add(self.EnableSound, pos=(0,0), span=(1,2), border=16, )
+        sizer_5_3_1.Add(self.PulseAudio, pos=(1,0), flag=wx.RIGHT, border=16, )
+        sizer_5_3_1.Add(self.Arts, pos=(2,0), flag=wx.RIGHT, border=16, )
+        sizer_5_3_1.Add(self.Esd, pos=(3,0), flag=wx.RIGHT, border=16, )
+        sizer_5_3_1.Add(self.DefaultSoundPort, pos=(1,1), )
+        sizer_5_3_1_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_5_3_1_1.Add(self.SoundPortLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_3_1_1.Add((8, -1))
+        sizer_5_3_1_1.Add(self.SoundPort, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_5_3_1.Add(sizer_5_3_1_1, pos=(2,1), )
+        sizer_5_3.Add(sizer_5_3_1, flag=wx.EXPAND|wx.ALL, border=7)
+
+        sizer_5_4 = wx.StaticBoxSizer(self.staticbox_Printing, wx.VERTICAL)
+        sizer_5_4.Add(self.ClientSidePrinting, 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()
+        sizer_5.Add(sizer_5_2, flag=wx.EXPAND|wx.ALL, border=5)
+        sizer_5.Add(sizer_5_3, flag=wx.EXPAND|wx.ALL, border=5)
+        sizer_5.Add(sizer_5_4, flag=wx.EXPAND|wx.ALL, border=5)
+        self.tab_Settings.SetSizerAndFit(sizer_5)
+        self.tab_Settings.Layout()
+
+        # RESOURCE SHARING TAB
+        sizer_6 = wx.BoxSizer(wx.VERTICAL)
+        sizer_6_1 = wx.StaticBoxSizer(self.staticbox_FolderSharing, wx.VERTICAL)
+        sizer_6_1_1 = wx.BoxSizer(wx.VERTICAL)
+        sizer_6_1_1_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_6_1_1_1.Add(self.UseLocalFolderSharing)
+        sizer_6_1_1_2 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_6_1_1_2_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_6_1_1_2_1.Add(self.SharedFolderPathLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_6_1_1_2_1.Add(self.SharedFolderPath, flag=wx.ALIGN_CENTRE_VERTICAL|wx.LEFT, border=5)
+        sizer_6_1_1_2_1.Add(self.SharedFolderPathBrowseButton, flag=wx.ALIGN_CENTRE_VERTICAL|wx.LEFT, border=2)
+        sizer_6_1_1_2_2 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_6_1_1_2_3 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_6_1_1_2_3.Add(self.AddSharedFolderPathButton, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_6_1_1_2_3.Add(self.DeleteSharedFolderPathButton, flag=wx.ALIGN_CENTRE_VERTICAL|wx.LEFT, border=2)
+        sizer_6_1_1_2.Add(sizer_6_1_1_2_1, flag=wx.EXPAND|wx.ALIGN_LEFT)
+        sizer_6_1_1_2.Add(sizer_6_1_1_2_2, proportion=1, flag=wx.EXPAND|wx.ALIGN_LEFT)
+        sizer_6_1_1_2.Add(sizer_6_1_1_2_3, flag=wx.EXPAND|wx.ALIGN_RIGHT)
+        sizer_6_1_1_3 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_6_1_1_3.Add(self.SharedFoldersList, proportion=1, flag=wx.EXPAND)
+        sizer_6_1_1.Add(sizer_6_1_1_1, flag=wx.EXPAND|wx.BOTTOM, border=12)
+        sizer_6_1_1.Add(sizer_6_1_1_2, flag=wx.EXPAND)
+        sizer_6_1_1.Add(sizer_6_1_1_3, flag=wx.EXPAND|wx.TOP|wx.BOTTOM, border=5)
+        sizer_6_1_2 = wx.BoxSizer(wx.VERTICAL)
+        sizer_6_1_2_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_6_1_2_1.Add(self.UseEncodingConverter, flag=wx.BOTTOM, border=5)
+        sizer_6_1_2_2 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_6_1_2_2.Add(self.ClientEncodingLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_6_1_2_2.Add((8,0))
+        sizer_6_1_2_2.Add(self.ClientEncoding)
+        sizer_6_1_2_2.Add((16,0))
+        sizer_6_1_2_2.Add(self.ServerEncodingLabel, flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_6_1_2_2.Add((8,0))
+        sizer_6_1_2_2.Add(self.ServerEncoding)
+        sizer_6_1_2.Add(sizer_6_1_2_1, flag=wx.EXPAND)
+        sizer_6_1_2.Add(sizer_6_1_2_2, flag=wx.EXPAND)
+        sizer_6_1.Add(sizer_6_1_1, flag=wx.EXPAND|wx.ALL, border=7)
+        sizer_6_1.Add(sizer_6_1_2, flag=wx.EXPAND|wx.ALL, border=7)
+
+        sizer_6_2 = wx.StaticBoxSizer(self.staticbox_FileMIMEbox, wx.VERTICAL)
+        sizer_6_2_1 = wx.BoxSizer(wx.VERTICAL)
+        sizer_6_2_1_1 = wx.BoxSizer(wx.HORIZONTAL)
+        sizer_6_2_1_1.Add(self.UseFileMIMEbox, flag=wx.BOTTOM, border=5)
+        sizer_6_2_1_2 = wx.GridBagSizer(vgap=2, hgap=3)
+        sizer_6_2_1_2.Add(self.FileMIMEboxActionLabel, pos=(0,0), flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_6_2_1_2.Add(self.FileMIMEboxAction, pos=(0,2))
+        sizer_6_2_1_2.Add((8,0), pos=(0,1))
+        sizer_6_2_1_2.Add((8,0), pos=(1,1))
+        sizer_6_2_1_2.Add(self.FileMIMEboxExtensionsLabel, pos=(1,0), flag=wx.ALIGN_CENTRE_VERTICAL)
+        sizer_6_2_1_2.Add(self.FileMIMEboxExtensions, pos=(1,2))
+        sizer_6_2_1.Add(sizer_6_2_1_1, flag=wx.EXPAND)
+        sizer_6_2_1.Add(sizer_6_2_1_2, flag=wx.EXPAND)
+        sizer_6_2.Add(sizer_6_2_1, flag=wx.EXPAND|wx.ALL, border=7)
+
+        sizer_6_3 = wx.StaticBoxSizer(self.staticbox_Printing, wx.VERTICAL)
+        sizer_6_3.Add(self.ClientSidePrinting, flag=wx.EXPAND|wx.ALL, border=7)
+
+        sizer_6.Add(sizer_6_1, flag=wx.EXPAND|wx.ALL, border=5)
+        sizer_6.Add(sizer_6_2, flag=wx.EXPAND|wx.ALL, border=5)
+        sizer_6.Add(sizer_6_3, flag=wx.EXPAND|wx.ALL, border=5)
+        self.tab_SharedResources.SetSizerAndFit(sizer_6)
+        self.tab_SharedResources.Layout()
 
         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_LinkQuality, _(u"Link Quality"))
         self.X2goTabs.AddPage(self.tab_Settings, _(u"Settings"))
-        self.X2goTabs.AddPage(self.tab_SharedFilesAndFolders, _(u"Sharing"))
+        self.X2goTabs.AddPage(self.tab_SharedResources, _(u"Shared Resources"))
 
         # the bottom area with OK, Defaults and Cancel buttons
         sizer_B = wx.BoxSizer(wx.HORIZONTAL)
@@ -794,19 +806,20 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         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()
+        max4_x, max4_y = self.tab_LinkQuality.GetBestSize()
+        max5_x, max5_y = self.tab_Settings.GetBestSize()
+        max6_x, max6_y = self.tab_SharedResources.GetBestSize()
 
         #self.SetSize(self.GetBestSize() + self.X2goTabs.GetBestSize())
 
-        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) + 80))
+        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) + 50))
         self.SetAutoLayout(True)
         self.Layout()
         self.CentreOnScreen()
         self.Show(True)
 
         # derive ListCtrl widths from sizer information
-        _sizer_width = sizer_5_1_1_3.GetSize().GetWidth()
+        _sizer_width = sizer_6_1_1_3.GetSize().GetWidth()
         self.SharedFoldersList.SetColumnWidth(0, abs(_sizer_width*.7))
         self.SharedFoldersList.SetColumnWidth(1, abs(_sizer_width*.3))
 
@@ -1454,7 +1467,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self.SoundPortLabel.Enable(False)
         self.SoundPort.Enable(False)
         self.Esd.Enable(False)
-        self.tab_SharedFilesAndFolders.Enable(True)
+        self.tab_SharedResources.Enable(True)
         self.RDPServer.Enable(False)
         self.RDPServer.SetValue(self.Host.GetValue())
         self.RDPOptions.SetValue(self.profile_config_bak['directrdpsettings'])
@@ -1504,7 +1517,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
             self.DefaultSoundPort.Enable(True)
             self.DefaultSoundPort.SetValue(True)
             self.Esd.Enable(True)
-        self.tab_SharedFilesAndFolders.Enable(True)
+        self.tab_SharedResources.Enable(True)
         self.RDPServer.SetValue(self.profile_config_bak['rdpserver'])
         self.RDPOptions.SetValue(self.profile_config_bak['rdpoptions'])
         if self.Application.GetValue() in self.rdpclientChoices.keys():
@@ -2246,7 +2259,6 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
             try: wx.EndBusyCursor()
             except: pass
             self.Close()
-            self.Destroy()
         else:
             try: wx.EndBusyCursor()
             except: pass
@@ -2260,7 +2272,6 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
 
         """
         self.Close()
-        self.Destroy()
 
     def OnDefault(self, event):
         """\


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