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

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


The branch, build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d has been updated
       via  f732b2117b39e725cb23902c8efad1e316123a8d (commit)
      from  f4dcc3adfb30074b5c4182e6b1048ecac1f3258a (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:
 pyhoca/wxgui/frontend.py       |   48 +++++++++++++++----------------
 pyhoca/wxgui/logon.py          |    1 +
 pyhoca/wxgui/printingprefs.py  |   62 +++++++++++++++++++++++++++++-----------
 pyhoca/wxgui/profilemanager.py |    7 +++++
 4 files changed, 77 insertions(+), 41 deletions(-)

The diff of changes is:
diff --git a/pyhoca/wxgui/frontend.py b/pyhoca/wxgui/frontend.py
index de06217..4855fa6 100644
--- a/pyhoca/wxgui/frontend.py
+++ b/pyhoca/wxgui/frontend.py
@@ -331,12 +331,10 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
             self._pyhoca_logger('public SSH key authentication to server failed, trying next auth-mechanism', loglevel=x2go.log.loglevel_INFO, )
             _logon_window = logon.PyHocaGUI_DialogBoxPassword(self, profile_name, caller=self, )
             self._logon_windows[profile_name] = _logon_window
-            self._sub_windows.append(_logon_window)
         except x2go.X2goSSHProxyAuthenticationException:
             self._pyhoca_logger('public SSH key authentication for SSH proxy failed, trying next auth-mechanism', loglevel=x2go.log.loglevel_INFO, )
             _logon_window = logon.PyHocaGUI_DialogBoxPassword(self, profile_name, caller=self, sshproxy_auth=True )
             self._logon_windows[profile_name] = _logon_window
-            self._sub_windows.append(_logon_window)
         except x2go.SSHException, e:
             self.notifier.send(_(u'%s - connect error') % profile_name, '%s!' % str(e), icon='auth_error', timeout=4000)
             self._temp_disabled_profile_names.remove(profile_name)
@@ -538,7 +536,7 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
 
         """
         self._pyhoca_logger('opening the printing preferences window', loglevel=x2go.log.loglevel_INFO, )
-        printingprefs.PyHocaGUI_PrintingPreferences(self)
+        _pp_dialog = printingprefs.PyHocaGUI_PrintingPreferences(self)
 
     def OnClose(self, evt):
         """\
@@ -586,58 +584,60 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
 
     def HOOK_no_such_command(self, cmd, profile_name='UNKNOWN', session_name='UNKNOWN'):
         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)
+
     def HOOK_rforward_request_denied(self, profile_name='UNKNOWN', session_name='UNKNOWN', server_port=0):
         self.notifier.send(_(u'%s - session warning') % profile_name, _(u'Reverse TCP port forwarding request for session %s to server port %s has been denied by the X2go server. This is a common issue with SSH, it might help to restart the X2go server\'s SSH daemon.') % (session_name, server_port), icon='session_warning', timeout=10000)
+
     def HOOK_forwarding_tunnel_setup_failed(self, profile_name='UNKNOWN', session_name='UNKNOWN', chain_host='UNKNOWN', chain_port=0):
         self.notifier.send(_(u'%s - session failure') % profile_name, _(u'Forwarding tunnel request to [%s]:%s for session %s was denied by remote X2go/SSH server. Session startup failed.') % (chain_host, chain_port, session_name), icon='session_error', timeout=10000)
+
     def HOOK_pulseaudio_not_supported_in_RDPsession(self):
         self.notifier.send(_(u'%s - audio warning') % self.appname, _(u'The X2go PulseAudio system is not available within Remote Desktop sessions.'), icon='audio_error', timeout=10000)
+
     def HOOK_pulseaudio_server_startup_failed(self):
         self.notifier.send(_(u'%s - audio error') % self.appname, _(u'The X2go PulseAudio system could not be started.'), icon='audio_error', timeout=10000)
+
     def HOOK_pulseaudio_server_died(self):
         self.notifier.send(_(u'%s - audio error') % self.appname, _(u'The X2go PulseAudio system has died unexpectedly.'), icon='audio_error', timeout=10000)
+
     def HOOK_on_sound_tunnel_failed(self, profile_name='UNKNOWN', session_name='UNKNOWN'):
         self.notifier.send(_(u'%s - audio problem') % profile_name, _(u'The audio connection could not be set up for this session.\n%s') % session_name, icon='session_warning', timeout=5000)
 
     # this hook gets called from Python X2go classes if a print job is coming in and the print action is ,,DIALOG''...
-    def HOOK_open_print_dialog(self, filename, profile_name='UNKNOWN', session_name='UNKNOWN'):
-        self.notifier.send(_(u'%s - print job') % profile_name, _(u'Opening print job dialog not implemented yet!!!\n%s')  % session_name, icon='session_printing', timeout=5000)
-
-        #_p = wx.Dialog(None, -1, '%s (%s)' % (session_name, profile_name), size=(450,380))
-        #print 1
-        #_p_data = wx.PrintData()
-        #print 2
-        #_p_data.SetFilename(filename)
-        #print 3
-        #_p_dialogdata = wx.PrintDialogData(_p_data)
-        #print 4
-        ##_p_dialog = wx.PrintDialog(_p, _p_dialogdata)
-        #print 5
-        ##_p_dialog.ShowModal()
-        #print 6
-        ##_p.Fit()
-        #print 7
-        ##_p.Layout()
-        #print 8
-        ##_p.Show(True)
-        #print 9
+    def HOOK_open_print_dialog(self, profile_name='UNKNOWN', session_name='UNKNOWN'):
+        _print_action = None
+        _pp_dialog = printingprefs.PyHocaGUI_PrintingPreferences(self, mode='print', profile_name=profile_name, session_name=session_name)
+        while _pp_dialog in self._sub_windows:
+            _print_action = _pp_dialog.get_print_action()
+            _print_action_properties = _pp_dialog.get_print_action_properties()
+            gevent.sleep(.2)
+
+        return _print_action, _print_action_properties
+
     def HOOK_printaction_error(self, filename, profile_name='UNKNOWN', session_name='UNKNOWN', err_msg='GENERIC_ERROR', printer=None):
         if printer:
             self.notifier.send(_(u'%s - print error') % profile_name, _(u'%s\n...caused on printer %s by session\n%s')  % (err_msg, printer, session_name), icon='session_error', timeout=5000)
         else:
             self.notifier.send(_(u'%s - print error') % profile_name, _(u'%s\n...caused by session\n%s')  % (err_msg, session_name), icon='session_error', timeout=5000)
+
     def HOOK_on_session_has_started_by_me(self, session_uuid='UNKNOWN', profile_name='UNKNOWN', session_name='UNKNOWN'):
         self.notifier.send(_(u'%s - start') % profile_name, _(u'New X2go session starting up...\n%s') % session_name, icon='session_start', timeout=5000)
+
     def HOOK_on_session_has_started_by_other(self, session_uuid='UNKNOWN', profile_name='UNKNOWN', session_name='UNKNOWN'):
         self.notifier.send(_(u'%s - start') % profile_name, _(u'Another client started X2go session\n%s') % session_name, icon='session_start', timeout=5000)
+
     def HOOK_on_session_has_resumed_by_me(self, session_uuid='UNKNOWN', profile_name='UNKNOWN', session_name='UNKNOWN'):
         self.notifier.send(_(u'%s - resume') % profile_name, _(u'Resuming X2go session...\n%s') % session_name, icon='session_resume', timeout=5000)
+
     def HOOK_on_session_has_resumed_by_other(self, session_uuid='UNKNOWN', profile_name='UNKNOWN', session_name='UNKNOWN'):
         self.notifier.send(_(u'%s - resume') % profile_name, _(u'Another client resumed X2go session\n%s') % session_name, icon='session_resume', timeout=5000)
+
     def HOOK_on_found_session_running_after_connect(self, session_uuid='UNKNOWN', profile_name='UNKNOWN', session_name='UNKNOWN'):
         gevent.spawn_later(5, self.notifier.send, _(u'%s - running') % profile_name, _(u'Found already running session\n%s') %  session_name, icon='session_resume', timeout=5000)
+
     def HOOK_on_session_has_been_suspended(self, session_uuid='UNKNOWN', profile_name='UNKNOWN', session_name='UNKNOWN'):
         self.notifier.send(_(u'%s - suspend') % profile_name, _(u'X2go Session has been suspended\n%s') % session_name, icon='session_suspend', timeout=5000)
+
     def HOOK_on_session_has_terminated(self, session_uuid='UNKNOWN', profile_name='UNKNOWN', session_name='UNKNOWN'):
         # avoid notification if X2goClient.clean_sessions has been used to terminate sessions
         if self._hide_notifications_map.has_key(profile_name) and session_name in self._hide_notifications_map[profile_name]:
diff --git a/pyhoca/wxgui/logon.py b/pyhoca/wxgui/logon.py
index a9b1f7d..b4ddb44 100644
--- a/pyhoca/wxgui/logon.py
+++ b/pyhoca/wxgui/logon.py
@@ -74,6 +74,7 @@ class PyHocaGUI_DialogBoxPassword(wx.Frame):
         self.current_profile_config = self._PyHocaGUI.session_profiles.get_profile_config(profile_name)
 
         wx.Frame.__init__(self, None, -1, profile_name)
+        self._PyHocaGUI._sub_windows.append(self)
 
         if self.sshproxy_auth:
             self.sshproxy_started = False
diff --git a/pyhoca/wxgui/printingprefs.py b/pyhoca/wxgui/printingprefs.py
index 46c56b7..371671b 100644
--- a/pyhoca/wxgui/printingprefs.py
+++ b/pyhoca/wxgui/printingprefs.py
@@ -58,13 +58,14 @@ class PyHocaGUI_PrintingPreferences(wx.Dialog):
         else:
             _title = _(u'%s - Incoming Print Job from  %s (%s)') % (self._PyHocaGUI.appname, profile_name, session_name)
         wx.Dialog.__init__(self, None, -1, title=_title, style=wx.DEFAULT_DIALOG_STYLE, )
+        self._PyHocaGUI._sub_windows.append(self)
 
         self._availablePrintActions = {
+            'DIALOG': _(u'Open this dialog window'),
             'PDFVIEW': _(u'Open with PDF viewer'),
             'PDFSAVE': _(u'Save to a local folder'),
             'PRINT': _(u'Print to a local printer'),
             'PRINTCMD': _(u'Run custom print command'),
-            'DIALOG': _(u'Open this dialog window'),
             }
         if self.mode != 'edit':
             self._availablePrintActions['DIALOG'] = _(u'<Select a print action here>')
@@ -122,12 +123,12 @@ class PyHocaGUI_PrintingPreferences(wx.Dialog):
         self.PrintCmd = wx.TextCtrl(self, -1, '', )
 
         if self.mode == 'edit':
-            self.OKButton = wx.Button(self, -1, _(u"Ok"))
+            self.OKButton = wx.Button(self, wx.ID_OK, _(u"Ok"))
             self.ApplyButton = wx.Button(self, -1, _(u"Apply"))
         else:
-            self.OKButton = wx.Button(self, -1, _(u"Print"))
+            self.OKButton = wx.Button(self, wx.ID_OK, _(u"Print"))
         self.OKButton.SetDefault()
-        self.CancelButton = wx.Button(self, -1, _(u"Cancel"))
+        self.CancelButton = wx.Button(self, wx.ID_CANCEL, _(u"Cancel"))
 
         self.__set_properties()
         self.__update_fields()
@@ -139,7 +140,8 @@ class PyHocaGUI_PrintingPreferences(wx.Dialog):
         self.Bind(wx.EVT_BUTTON, self.OnPdfSaveToFolderBrowseButton, self.PdfSaveToFolderBrowseButton)
 
         self.Bind(wx.EVT_BUTTON, self.OnOKButton, self.OKButton)
-        self.Bind(wx.EVT_BUTTON, self.OnApplyButton, self.ApplyButton)
+        if self.mode == 'edit':
+            self.Bind(wx.EVT_BUTTON, self.OnApplyButton, self.ApplyButton)
         self.Bind(wx.EVT_BUTTON, self.OnCancel, self.CancelButton)
 
 
@@ -151,7 +153,8 @@ class PyHocaGUI_PrintingPreferences(wx.Dialog):
         self.PdfViewCmdBrowseButton.SetMinSize(self.PdfViewCmdBrowseButton.GetBestSize())
         self.PdfSaveToFolderBrowseButton.SetMinSize(self.PdfSaveToFolderBrowseButton.GetBestSize())
         self.OKButton.SetMinSize((-1, 30))
-        self.ApplyButton.SetMinSize((-1, 30))
+        if self.mode == 'edit':
+            self.ApplyButton.SetMinSize((-1, 30))
         self.CancelButton.SetMinSize((-1, 30))
 
     def __do_layout(self):
@@ -204,7 +207,7 @@ class PyHocaGUI_PrintingPreferences(wx.Dialog):
 
     def __update_fields(self):
 
-        print_action_name = self.client_printing.get_print_action(reinit=True, return_name=True)
+        print_action_name = self.client_printing.get_print_action(reload=True, reinit=True, return_name=True)
 
         self.PdfViewCmd.SetValue(self.client_printing.get_property('pdfview_cmd'))
         self.PdfSaveToFolder.SetValue(self.client_printing.get_property('save_to_folder'))
@@ -221,18 +224,31 @@ class PyHocaGUI_PrintingPreferences(wx.Dialog):
             self.PrintAction.SetValue(print_action_name)
         self._onPrintActionChange()
 
+        if self.mode != 'edit':
+            if self._print_action == 'DIALOG':
+                self.OKButton.Enable(False)
+
     def __update_from_screen(self):
-        properties = {
+        self.client_printing.store_print_action(self._print_action, **self._print_action_properties)
+
+    @property
+    def _print_action(self):
+        return [ p for p in self._availablePrintActions.keys() if self._availablePrintActions[p] == self.PrintAction.GetValue() ][0]
+
+    @property
+    def _print_action_properties(self):
+        return {
             'pdfview_cmd': self.PdfViewCmd.GetValue(),
             'save_to_folder': self.PdfSaveToFolder.GetValue(),
             'printer': [ p for p in self._availablePrinters.keys() if self._availablePrinters[p] == self.PrintPrinter.GetValue() ][0],
             'print_cmd': self.PrintCmd.GetValue(),
         }
-        self.client_printing.store_print_action(self._print_action, **properties)
 
-    @property
-    def _print_action(self):
-        return [ p for p in self._availablePrintActions.keys() if self._availablePrintActions[p] == self.PrintAction.GetValue() ][0]
+    def get_print_action(self):
+        return self.client_printing.get_print_action(reinit=True)
+
+    def get_print_action_properties(self):
+        return self._print_action_properties
 
     def _onPrintActionChange(self):
         if self._print_action == 'PDFVIEW':
@@ -245,6 +261,7 @@ class PyHocaGUI_PrintingPreferences(wx.Dialog):
             self.PrintCmdSelected()
         else:
             self._disable_PrintOptions()
+        self.__update_from_screen()
 
     def OnPrintActionChange(self, evt):
         self._onPrintActionChange()
@@ -261,6 +278,12 @@ class PyHocaGUI_PrintingPreferences(wx.Dialog):
         self.PrintCmdLabel.Enable(False)
         self.PrintCmd.Enable(False)
 
+        if self.mode != 'edit':
+            if self._print_action == 'DIALOG':
+                self.OKButton.Enable(False)
+            else:
+                self.OKButton.Enable(True)
+
     def PdfViewSelected(self):
         self._disable_PrintOptions()
         self.PdfViewCmdLabel.Enable(True)
@@ -283,7 +306,6 @@ class PyHocaGUI_PrintingPreferences(wx.Dialog):
         self.PrintCmdLabel.Enable(True)
         self.PrintCmd.Enable(True)
 
-
     def OnPdfViewCmdBrowseButton(self, evt):
         wildcard = "All files (*.*)|*"
         dlg = wx.FileDialog(
@@ -325,11 +347,11 @@ class PyHocaGUI_PrintingPreferences(wx.Dialog):
     def _apply_changes(self):
         self.__update_from_screen()
         if self.__validate():
-            self.client_printing.write()
+            if self.mode == 'edit': self.client_printing.write()
             return True
         return False
 
-    def OnOKButton(self, event):
+    def OnOKButton(self, evt):
         wx.BeginBusyCursor()
         if self._apply_changes():
             wx.EndBusyCursor()
@@ -338,13 +360,19 @@ class PyHocaGUI_PrintingPreferences(wx.Dialog):
         else:
             wx.EndBusyCursor()
 
-    def OnApplyButton(self, event):
+    def OnApplyButton(self, evt):
         wx.BeginBusyCursor()
         self._apply_changes()
         wx.EndBusyCursor()
 
-    def OnCancel(self, event):
+    def OnCancel(self, evt):
         self.client_printing.load()
         self.Close()
         self.Destroy()
 
+    def Destroy(self):
+        try:
+            self._PyHocaGUI._sub_windows.remove(self)
+        except ValueError:
+            pass
+        wx.Dialog.Destroy(self)
diff --git a/pyhoca/wxgui/profilemanager.py b/pyhoca/wxgui/profilemanager.py
index c1ba168..aa72f2c 100644
--- a/pyhoca/wxgui/profilemanager.py
+++ b/pyhoca/wxgui/profilemanager.py
@@ -53,6 +53,7 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self._pyhoca_logger('starting profile manager, action is: %s' % action, loglevel=log.loglevel_INFO)
 
         wx.Dialog.__init__(self, None, -1, style=wx.DEFAULT_DIALOG_STYLE, size=wx.Size(550,450))
+        self._PyHocaGUI._sub_windows.append(self)
 
         self.profileManagerDefaults = defaults.X2GO_SESSIONPROFILE_DEFAULTS
         self.success = False
@@ -1375,3 +1376,9 @@ class PyHocaGUI_ProfileManager(wx.Dialog):
         self.profile_config = copy.deepcopy(self.profile_config_bak)
         self.__update_fields()
 
+    def Destroy(self):
+        try:
+            self._PyHocaGUI._sub_windows.remove(self)
+        except ValueError:
+            pass
+        wx.Dialog.Destroy(self)


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