[X2Go-Commits] python-x2go.git - build-baikal (branch) updated: 0.1.1.4-83-g8c2c5b4
X2Go dev team
git-admin at x2go.org
Wed Jan 8 15:30:47 CET 2014
The branch, build-baikal has been updated
via 8c2c5b48cf06571c629b55782175e74cc99b7b5b (commit)
from 02d00cf85ff6e2fc9bcde04c2c9118e423c519c8 (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 | 1 +
x2go/backends/terminal/_stdout.py | 15 ++++++++++++++-
x2go/client.py | 11 +++++++++++
x2go/session.py | 21 +++++++++++++++++++++
x2go/utils.py | 29 +++++++++++++++++++++++++++++
5 files changed, 76 insertions(+), 1 deletion(-)
The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 98b72dc..81a5ccc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -19,6 +19,7 @@ python-x2go (0.1.1.9-0-x2go1) UNRELEASED; urgency=low
- Make terminal backend ,,applications'' aware.
- Allow session parameter change for already registered sessions.
- Add support for session window title renaming.
+ - Add support for bringing session windows on top.
-- Mike Gabriel <mike.gabriel at das-netzwerkteam.de> Wed, 12 Oct 2011 10:54:23 +0200
diff --git a/x2go/backends/terminal/_stdout.py b/x2go/backends/terminal/_stdout.py
index 7753572..07b0be9 100644
--- a/x2go/backends/terminal/_stdout.py
+++ b/x2go/backends/terminal/_stdout.py
@@ -783,7 +783,7 @@ class X2goTerminalSessionSTDOUT(object):
@type title: C{str}
"""
- print self.params.cmd
+ self.session_title = title
if self.session_info.name not in title:
title = '%s (X2GO-%s)' % (title, self.session_info.name)
@@ -794,6 +794,17 @@ class X2goTerminalSessionSTDOUT(object):
timeout=30,
)
+ def raise_session_window(self):
+ """\
+ Try to lift the session window above all other windows and bring
+ it to focus.
+
+ """
+ gevent.spawn(utils.raise_session_window,
+ session_name=self.session_info.name,
+ timeout=30,
+ )
+
def has_command(self, cmd):
"""\
Verify if the command <cmd> exists on the X2go server.
@@ -1008,6 +1019,7 @@ class X2goTerminalSessionSTDOUT(object):
self.active_threads.append(self.proxy)
self._auto_session_window_title()
+ self.raise_session_window()
return self.ok()
@@ -1056,6 +1068,7 @@ class X2goTerminalSessionSTDOUT(object):
self.session_info.username = self.control_session.remote_username()
self._auto_session_window_title()
+ self.raise_session_window()
return self.ok()
diff --git a/x2go/client.py b/x2go/client.py
index aca0b68..e8db628 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -1197,6 +1197,17 @@ class X2goClient(object):
self.session_registry(session_uuid).set_session_window_title(title=title)
__set_session_window_title = set_session_window_title
+ def raise_session_window(self, session_uuid):
+ """\
+ Try to lift the session window above all other windows and bring
+ it to focus.
+
+ @param session_uuid: the X2go session's UUID registry hash
+ @type session_uuid: C{str}
+ """
+ self.session_registry(session_uuid).raise_session_window()
+ __raise_session_window = raise_session_window
+
def start_session(self, session_uuid):
"""\
Start a new X2go session on the remote X2go server. This method
diff --git a/x2go/session.py b/x2go/session.py
index 0539524..26f812f 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -616,6 +616,18 @@ class X2goSession(object):
return None
__get_session_cmd = get_session_cmd
+ def get_session_title(self):
+ """\
+ Retrieve the session window title of this
+ session.
+
+ @return: session window title
+ @rtype: C{str}
+
+ """
+ if self.terminal_session is not None:
+ return self.terminal_session.session_title
+
def get_control_session(self):
"""\
Retrieve the control session (C{X2goControlSession*} backend) of this L{X2goSession}.
@@ -862,6 +874,15 @@ class X2goSession(object):
if self.terminal_session is not None:
self.terminal_session.set_session_window_title(title=title)
+ def raise_session_window(self):
+ """\
+ Try to lift the session window above all other windows and bring
+ it to focus.
+
+ """
+ if self.terminal_session is not None:
+ self.terminal_session.raise_session_window()
+
def set_print_action(self, print_action, **kwargs):
"""\
If X2go client-side printing is enable within this X2go session you can use
diff --git a/x2go/utils.py b/x2go/utils.py
index b197ea8..8ec0862 100644
--- a/x2go/utils.py
+++ b/x2go/utils.py
@@ -491,3 +491,32 @@ def set_session_window_title(session_name, title, timeout=0):
break
gevent.sleep(1)
+
+def raise_session_window(session_name, timeout=0):
+
+ timeout += 1
+ while timeout:
+
+ timeout -= 1
+ success = False
+
+ if _X2GOCLIENT_OS != 'Windows':
+
+ display = Xlib.display.Display()
+ root = display.screen().root
+
+ windowIDs = root.get_full_property(display.intern_atom('_NET_CLIENT_LIST'), Xlib.X.AnyPropertyType).value
+ for windowID in windowIDs:
+ window = display.create_resource_object('window', windowID)
+ if session_name in window.get_wm_name():
+ success = True
+ window.set_input_focus(Xlib.X.RevertToParent, Xlib.X.CurrentTime)
+ window.configure(stack_mode=Xlib.X.Above)
+ window.circulate(Xlib.X.RaiseLowest)
+ display.sync()
+ break
+
+ if success:
+ break
+
+ gevent.sleep(1)
hooks/post-receive
--
python-x2go.git (Python X2Go Client API)
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 "python-x2go.git" (Python X2Go Client API).
More information about the x2go-commits
mailing list