[X2Go-Commits] pyhoca-gui.git - build-baikal (branch) updated: 0.4.0.6-3-gd08b602

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


The branch, build-baikal has been updated
       via  d08b602e0ba1c0b143c4875a77b074180fe607cf (commit)
      from  c2c9d034a3449c45572bdab775082a93097807e1 (commit)

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

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

Summary of changes:
 debian/changelog              |    2 +
 pyhoca/wxgui/frontend.py      |   88 ++++++++++++++++++++++++++++++++++++++---
 pyhoca/wxgui/menus_taskbar.py |    6 +++
 3 files changed, 91 insertions(+), 5 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index d192e7a..1a8b8db 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,7 @@
 pyhoca-gui (0.4.0.7-0~x2go1) UNRELEASED; urgency=low
 
+  * New upstream version (0.4.0.7):
+    - Add import feature to the session profile manager.
   * /debian/control:
     + Replace LDAP support with session brokerage support in LONG_DESCRIPTION.
 
diff --git a/pyhoca/wxgui/frontend.py b/pyhoca/wxgui/frontend.py
index 3bc6574..9b7c44d 100644
--- a/pyhoca/wxgui/frontend.py
+++ b/pyhoca/wxgui/frontend.py
@@ -1116,9 +1116,87 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
                 pass
         self._temp_disabled_profile_names.remove(profile_name)
 
+    def OnProfileImport(self, evt):#
+        """\
+        Gets called if the user requests a session profile (group) import.
+
+        @param evt: event
+        @type evt: C{obj}
+
+        """
+        dlg = wx.FileDialog(
+            self.about, message=_(u"import session profile(s)"), wildcard="*.x2go", style=wx.FD_OPEN)
+
+        # Show the dialog and retrieve the user response. If it is the OK response,
+        # process the data.
+        if dlg.ShowModal() == wx.ID_OK:
+
+            _import_file = dlg.GetPath()
+
+            try:
+                imported_session_profiles = x2go.X2GoSessionProfiles(config_files=[_import_file])
+            except:
+                m = messages.PyHoca_MessageWindow_Ok(self,
+                                                     title=_(u'%s: Import of session profile(s) failed') % self.appname,
+                                                     msg=_(u"The selected session profile(s) could not be imported from \nfile »%s«.\n\nAre you sure the session profiles file has the correct format?") % os.path.normpath(_import_file),
+                                                     icon='error')
+                m.ShowModal()
+                return
+
+
+            failed_profiles = []
+            for profile_name in imported_session_profiles.profile_names:
+                this_profile = imported_session_profiles.get_profile_config(profile_name)
+
+                # clean up session profile options that are unknown to Python X2Go
+                for key in copy.deepcopy(this_profile).keys():
+                    if key not in x2go.defaults.X2GO_SESSIONPROFILE_DEFAULTS:
+                        del this_profile[key]
+
+                try:
+                    self.session_profiles.add_profile(**this_profile)
+                except x2go.x2go_exceptions.X2GoProfileException, e:
+                    self._pyhoca_logger('Importing session profile %s failed. Reason: %s' % (profile_name, str(e)), loglevel=x2go.loglevel_ERROR)
+                    failed_profiles.append(profile_name)
+
+            self.session_profiles.write_user_config = True
+            if not self.session_profiles.write():
+                m = messages.PyHoca_MessageWindow_Ok(self,
+                                                     title=_(u'%s: Write failure after import') % self.appname,
+                                                     msg=_(u"The session profiles configuration could not be written to file after import\n\nCheck for common problems (disk full, insufficient access, etc.)."),
+                                                     icon='error',
+                                                     profile_name=profile_name)
+                m.ShowModal()
+            elif len(failed_profiles) == len(imported_session_profiles.profile_names):
+                _notify_text = _(u'None of the session profiles could be imported...') + '\n'
+                for failed_profile in failed_profiles:
+                    _notify_text += '\n  %s' % failed_profile
+                _notify_text += '\n\n' + _(u'For details, start %s from the command line and retry the import.') % self.appname
+                self.notifier.send(u'Session Profile Import (Failure)', _notify_text, icon='profile_error', timeout=10000)
+
+            elif 0 < len(failed_profiles) < len(imported_session_profiles.profile_names):
+                _notify_text = _(u'Only these session profiles could be imported...') + '\n'
+                for profile_name in [ pn for pn in imported_session_profiles.profile_names if pn not in failed_profiles ]:
+                    _notify_text += '\n  %s' % profile_name
+                _notify_text += '\n\n' + (u'Whereas these session profiles failed to import...') + '\n'
+                for failed_profile in failed_profiles:
+                    _notify_text += '\n  %s' % failed_profile
+                _notify_text += '\n\n' + _(u'For details, start %s from the command line and retry the import.') % self.appname
+                self.notifier.send(u'Session Profile Import (Warning)', _notify_text, icon='profile_warning', timeout=10000)
+            elif 1 < len(imported_session_profiles.profile_names):
+                _notify_text = _(u'New session profiles have been imported...') + '\n'
+                for profile_name in imported_session_profiles.profile_names:
+                    _notify_text += '\n  %s' % profile_name
+                self.notifier.send(u'Session Profile Import (Success)', _notify_text, icon='profile_add', timeout=10000)
+            elif 1 == len(imported_session_profiles.profile_names):
+                _notify_text = _(u'New session profile has been imported...') + '\n'
+                for profile_name in imported_session_profiles.profile_names:
+                    _notify_text += '\n  %s' % profile_name
+                self.notifier.send(u'Session Profile Import (Success)', _notify_text, icon='profile_add', timeout=10000)
+
     def OnProfileExport(self, evt):
         """\
-        Gets called if the user request a session profile (group) export.
+        Gets called if the user requests a session profile (group) export.
 
         @param evt: event
         @type evt: C{obj}
@@ -1165,7 +1243,7 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
                 if not m.Yes(): return
                 else: os.remove(_export_file)
 
-            exported_sessions = x2go.X2GoSessionProfiles(config_files=[_export_file])
+            exported_session_profiles = x2go.X2GoSessionProfiles(config_files=[_export_file])
             for profile_name in filtered_profile_names:
                 this_profile = self._X2GoClient__get_profile_config(profile_name)
 
@@ -1174,10 +1252,10 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
                     if key not in x2go.defaults.X2GO_SESSIONPROFILE_DEFAULTS:
                         del this_profile[key]
 
-                exported_sessions.add_profile(**this_profile)
+                exported_session_profiles.add_profile(**this_profile)
 
-            exported_sessions.write_user_config = True
-            if exported_sessions.write():
+            exported_session_profiles.write_user_config = True
+            if exported_session_profiles.write():
                 if profile_group:
                     self.notifier.send(_(u'%s - profiles exported') % profile_group, _(u'Successfully exported session profile group »%s« to file »%s«.') % (profile_group, os.path.basename(_export_file)), icon='success', timeout=10000)
                 elif profile_name:
diff --git a/pyhoca/wxgui/menus_taskbar.py b/pyhoca/wxgui/menus_taskbar.py
index 5815454..413b4c0 100644
--- a/pyhoca/wxgui/menus_taskbar.py
+++ b/pyhoca/wxgui/menus_taskbar.py
@@ -968,6 +968,12 @@ class PyHocaGUI_Menu_TaskbarProfileNames(wx.Menu):
                     self.Append(text=_(u'Export Profile Group'), id=_export_id)
                 self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnProfileExport, id=_export_id)
 
+        if bind_method is None and not group_name:
+            _import_id = wx.NewId()
+            self.AppendSeparator()
+            self.Append(text=_(u'Import Session Profiles'), id=_import_id)
+            self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnProfileImport, id=_import_id)
+
     def OnUpdateUI(self, evt):
         profile_name = self._PyHocaGUI._eventid_profilenames_map[evt.GetId()]
         if profile_name in self._PyHocaGUI._temp_disabled_profile_names:


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