[X2Go-Commits] pyhoca-gui.git - build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d (branch) updated: 0.1.0.10-105-g0ede3ea
X2Go dev team
git-admin at x2go.org
Tue Aug 27 13:22:06 CEST 2013
The branch, build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d has been updated
via 0ede3ea2232bbd63e6d13a22d858ada9543c6916 (commit)
from b4c4b60aa4e9adb76678117f9d3266a461e6ac76 (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 +
icons/PyHoca/22x22/application-exit.png | Bin 0 -> 870 bytes
icons/PyHoca/32x32/application-exit.png | Bin 0 -> 1289 bytes
icons/PyHoca/scalable/application-exit.svg | 332 +++++++++++++++++++
icons_symlinked/PyHoca/32x32/application-exit.png | 1 +
.../PyHoca/scalable/application-exit.svg | 1 +
pyhoca-gui | 4 +
pyhoca/wxgui/frontend.py | 44 ++-
pyhoca/wxgui/menus_taskbar.py | 335 +++++++++++---------
pyhoca/wxgui/taskbar.py | 5 +-
10 files changed, 553 insertions(+), 171 deletions(-)
create mode 100644 icons/PyHoca/22x22/application-exit.png
create mode 100644 icons/PyHoca/32x32/application-exit.png
create mode 100644 icons/PyHoca/scalable/application-exit.svg
create mode 120000 icons_symlinked/PyHoca/32x32/application-exit.png
create mode 120000 icons_symlinked/PyHoca/scalable/application-exit.svg
The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 12e28ff..8ef01f5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -63,6 +63,8 @@ pyhoca-gui (0.1.2.0-0~x2go1) UNRELEASED; urgency=low
- Published Applications on MS Windows: icon size is 16x16.
- Catch X2GoSessionRegistryException if used session uuid is not valid
anymore.
+ - Implement single session profile support (--single-session-profile
+ Boolean command line option).
* Depend on Python X2Go 0.1.2.0.
* Install GNOME icons via dh_links.
* Install X2Go icons with explicit install paths.
diff --git a/icons/PyHoca/22x22/application-exit.png b/icons/PyHoca/22x22/application-exit.png
new file mode 100644
index 0000000..ed77cff
Binary files /dev/null and b/icons/PyHoca/22x22/application-exit.png differ
diff --git a/icons/PyHoca/32x32/application-exit.png b/icons/PyHoca/32x32/application-exit.png
new file mode 100644
index 0000000..affe56b
Binary files /dev/null and b/icons/PyHoca/32x32/application-exit.png differ
diff --git a/icons/PyHoca/scalable/application-exit.svg b/icons/PyHoca/scalable/application-exit.svg
new file mode 100644
index 0000000..56eedfa
--- /dev/null
+++ b/icons/PyHoca/scalable/application-exit.svg
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg7212"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="drawing-3.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs7214">
+ <linearGradient
+ id="linearGradient9896">
+ <stop
+ id="stop9898"
+ offset="0"
+ style="stop-color:#cecece;stop-opacity:1;" />
+ <stop
+ id="stop9900"
+ offset="1.0000000"
+ style="stop-color:#9e9e9e;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="18.064039"
+ x2="33.710651"
+ y1="21.511185"
+ x1="31.078955"
+ id="linearGradient9902"
+ xlink:href="#linearGradient9896"
+ inkscape:collect="always"
+ gradientTransform="translate(-3.6735026e-4,-2.381e-4)" />
+ <linearGradient
+ id="linearGradient9880"
+ inkscape:collect="always">
+ <stop
+ id="stop9882"
+ offset="0"
+ style="stop-color:#525252;stop-opacity:1;" />
+ <stop
+ id="stop9884"
+ offset="1"
+ style="stop-color:#525252;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="translate(-1.1164876,-2.381e-4)"
+ gradientUnits="userSpaceOnUse"
+ y2="24.764584"
+ x2="34.007416"
+ y1="19.107729"
+ x1="31.852951"
+ id="linearGradient9886"
+ xlink:href="#linearGradient9880"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient9868">
+ <stop
+ style="stop-color:#4e4e4e;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop9870" />
+ <stop
+ style="stop-color:#616161;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop9872" />
+ </linearGradient>
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.565823,0,0,1.403262,-37.783598,-9.4835408)"
+ r="9.7227182"
+ fy="7.1396070"
+ fx="27.883883"
+ cy="7.1396070"
+ cx="27.883883"
+ id="radialGradient9876"
+ xlink:href="#linearGradient9868"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient9888"
+ inkscape:collect="always">
+ <stop
+ id="stop9890"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop9892"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="43.449947"
+ x2="19.755548"
+ y1="13.663074"
+ x1="8.7600641"
+ id="linearGradient9894"
+ xlink:href="#linearGradient9888"
+ inkscape:collect="always"
+ gradientTransform="translate(-3.6735026e-4,-2.381e-4)" />
+ <linearGradient
+ id="linearGradient3197">
+ <stop
+ style="stop-color:#da3f3f;stop-opacity:1;"
+ offset="0"
+ id="stop3199" />
+ <stop
+ style="stop-color:#c22f2f;stop-opacity:1;"
+ offset="1"
+ id="stop3201" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3197"
+ id="linearGradient3203"
+ x1="11.131293"
+ y1="15.165678"
+ x2="11.118231"
+ y2="32.401405"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-3.6735026e-4,-2.381e-4)" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8662">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop8664" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop8666" />
+ </linearGradient>
+ <radialGradient
+ r="15.644737"
+ fy="36.421127"
+ fx="24.837126"
+ cy="36.421127"
+ cx="24.837126"
+ gradientTransform="matrix(1,0,0,0.536723,0,16.87306)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient9826"
+ xlink:href="#linearGradient8662"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient9854">
+ <stop
+ id="stop9856"
+ offset="0.0000000"
+ style="stop-color:#4e4e4e;stop-opacity:1.0000000;" />
+ <stop
+ id="stop9858"
+ offset="1.0000000"
+ style="stop-color:#ababab;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="27.759069"
+ x2="18.031221"
+ y1="19.804117"
+ x1="46.845825"
+ id="linearGradient9864"
+ xlink:href="#linearGradient9854"
+ inkscape:collect="always"
+ gradientTransform="translate(-3.6735026e-4,-2.381e-4)" />
+ <linearGradient
+ id="linearGradient9842"
+ inkscape:collect="always">
+ <stop
+ id="stop9844"
+ offset="0"
+ style="stop-color:#727e0a;stop-opacity:1;" />
+ <stop
+ id="stop9846"
+ offset="1"
+ style="stop-color:#727e0a;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="matrix(1.025512,0,0,0.648342,-0.8658636,15.630022)"
+ gradientUnits="userSpaceOnUse"
+ y2="28.112619"
+ x2="30.935921"
+ y1="43.757359"
+ x1="30.935921"
+ id="linearGradient9848"
+ xlink:href="#linearGradient9842"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient9830">
+ <stop
+ id="stop9832"
+ offset="0.0000000"
+ style="stop-color:#505050;stop-opacity:1.0000000;" />
+ <stop
+ id="stop9834"
+ offset="1.0000000"
+ style="stop-color:#181818;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0182701,0,0,2.643808,-144.57335,-62.192134)"
+ r="16.321514"
+ fy="40.545052"
+ fx="93.780037"
+ cy="40.545052"
+ cx="93.780037"
+ id="radialGradient9836"
+ xlink:href="#linearGradient9830"
+ inkscape:collect="always" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="7"
+ inkscape:cx="24"
+ inkscape:cy="24"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="641"
+ inkscape:window-height="690"
+ inkscape:window-x="474"
+ inkscape:window-y="258" />
+ <metadata
+ id="metadata7217">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <rect
+ ry="1.0048841"
+ rx="0.99447322"
+ y="1"
+ x="12"
+ height="45"
+ width="35"
+ id="rect8242"
+ style="opacity:0.7;fill:#000000;fill-opacity:0.31372549;fill-rule:evenodd;stroke:none;stroke-width:1.00001979;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true" />
+ <rect
+ ry="0.70808184"
+ rx="0.70720309"
+ y="2.5000091"
+ x="13.50001"
+ height="41.999981"
+ width="31.999981"
+ id="rect9828"
+ style="opacity:1;fill:url(#radialGradient9836);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00001979;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true" />
+ <rect
+ y="31.736305"
+ x="13.999632"
+ height="12.263458"
+ width="30.999998"
+ id="rect9840"
+ style="opacity:1;fill:url(#linearGradient9848);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path9852"
+ d="M 14.037294,43.944621 L 13.998461,3.0542871 L 33.940757,3.0984813 L 33.984951,33.017937 L 14.037294,43.944621 z"
+ style="opacity:1;fill:url(#linearGradient9864);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="opacity:0.42222224;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ d="M 13.969433,43.944621 L 34.117535,33.062131 L 15.555981,41.989354 L 15.555981,3.0100925 L 13.985518,3.0100925 L 13.969433,43.944621 z"
+ id="path1360"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.29946522;fill:url(#radialGradient9826);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path8660"
+ sodipodi:cx="24.837126"
+ sodipodi:cy="36.421127"
+ sodipodi:rx="15.644737"
+ sodipodi:ry="8.3968935"
+ d="M 40.481863,36.421127 A 15.644737,8.3968935 0 1 1 9.1923885,36.421127 A 15.644737,8.3968935 0 1 1 40.481863,36.421127 z"
+ transform="matrix(0.77849,0,0,0.77849,-7.5801826,1.5979009)" />
+ <path
+ style="opacity:1;fill:url(#linearGradient3203);fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ d="M 1.7314304,17.593581 L 1.7314304,30.355126 L 9.663735,30.355126 L 9.663735,36.175909 L 21.887377,23.952265 L 9.590974,11.655863 L 9.590974,17.596829 L 1.7314304,17.593581 z"
+ id="path8643"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path8658"
+ d="M 2.7189574,18.399747 L 2.7189574,29.535791 L 10.552776,29.535791 L 10.552776,33.793741 L 20.404229,23.948168 L 10.488209,13.684476 L 10.488209,18.402629 L 2.7189574,18.399747 z"
+ style="opacity:0.48128339;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient9894);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="opacity:1;fill:url(#radialGradient9876);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ d="M 14.044443,43.757121 L 13.999632,3.0542871 L 33.940757,3.0542871 L 33.761511,33.68085 L 14.044443,43.757121 z"
+ id="path9866"
+ sodipodi:nodetypes="ccccc"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true" />
+ <path
+ sodipodi:nodetypes="cccsscc"
+ id="path9878"
+ d="M 29.642657,18.455957 L 31.565104,20.908733 L 30.106696,25.725898 C 30.106696,25.725898 30.371861,27.2285 31.145259,26.212034 C 31.918657,25.195568 34.117714,22.62998 33.730618,20.754053 C 33.443356,19.361937 32.647861,18.699025 32.647861,18.699025 L 29.642657,18.455957 z"
+ style="opacity:1;fill:url(#linearGradient9886);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="csccscs"
+ id="path9862"
+ d="M 31.476716,17.351102 C 31.476716,17.351102 33.639986,18.35282 33.708521,19.229355 C 33.810302,20.531077 29.46588,24.665238 29.46588,24.665238 C 28.957647,25.283956 28.117958,24.731529 28.581997,24.134908 C 28.581997,24.134908 32.048601,20.016935 31.830269,19.693393 C 31.556658,19.287936 29.863628,18.65483 29.863628,18.65483 C 28.847162,17.90353 30.131249,16.349367 31.476716,17.351102 z"
+ style="opacity:1;fill:url(#linearGradient9902);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+ </g>
+</svg>
diff --git a/icons_symlinked/PyHoca/32x32/application-exit.png b/icons_symlinked/PyHoca/32x32/application-exit.png
new file mode 120000
index 0000000..b89298d
--- /dev/null
+++ b/icons_symlinked/PyHoca/32x32/application-exit.png
@@ -0,0 +1 @@
+/usr/share/icons/gnome-colors-common/32x32/actions/application-exit.png
\ No newline at end of file
diff --git a/icons_symlinked/PyHoca/scalable/application-exit.svg b/icons_symlinked/PyHoca/scalable/application-exit.svg
new file mode 120000
index 0000000..14a727b
--- /dev/null
+++ b/icons_symlinked/PyHoca/scalable/application-exit.svg
@@ -0,0 +1 @@
+/usr/share/icons/gnome-colors-common/scalable/actions/application-exit.svg
\ No newline at end of file
diff --git a/pyhoca-gui b/pyhoca-gui
index 01e6ad2..7b8ccab 100755
--- a/pyhoca-gui
+++ b/pyhoca-gui
@@ -173,6 +173,7 @@ x2go_gui_options = [
{'args':['--non-interactive'], 'default': False, 'action': 'store_true', 'help': 'run the session manager in non-interactive mode, this option sets the following options to true: --restricted-trayicon, --start-on-connect, --resume-all-on-connect, --exit-on-disconnect, --disconnect-on-suspend and --disconnect-on-terminate', },
{'args':['--auto-connect'], 'default': False, 'action': 'store_true', 'help': 'connect sessions via SSH pubkey authentication if possible', },
{'args':['--show-profile-metatypes'], 'default': False, 'action': 'store_true', 'help': 'show descriptive meta information on session profiles in menus (NOTE: this makes menus appear a bit more sluggish, use it mostly for debugging)', },
+ {'args':['--single-session-profile'], 'default': False, 'action': 'store_true', 'help': 'disable support of handling multiple session profiles', },
{'args':['--restricted-trayicon'], 'default': False, 'action': 'store_true', 'help': 'restricts session manager\'s main icon functionality to information window and application exit', },
{'args':['--start-on-connect'], 'default': False, 'action': 'store_true', 'help': 'start a session directly after authentication if no session is currently running/suspended', },
{'args':['--exit-on-disconnect'], 'default': False, 'action': 'store_true', 'help': 'exit the session manager after a server connection has died', },
@@ -269,6 +270,9 @@ def parseargs():
if a.username is None:
a.username = _CURRENT_LOCAL_USER
+ if a.single_session_profile and a.session_profile is None:
+ runtime_error('The --single-session-profile option requires naming of a specific session profile!', parser=p)
+
if a.non_interactive:
if a.session_profile is None:
runtime_error('In non-interactive mode you have to use the --session-profile option (or -P) to specify a certain session profile name!', parser=p)
diff --git a/pyhoca/wxgui/frontend.py b/pyhoca/wxgui/frontend.py
index f028c23..e07fa11 100644
--- a/pyhoca/wxgui/frontend.py
+++ b/pyhoca/wxgui/frontend.py
@@ -84,6 +84,7 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
self.version = version
self.args = args
+
if x2go.defaults.X2GOCLIENT_OS == 'Windows':
if self.args.lang is not None:
self.lang = self.args.lang
@@ -103,6 +104,7 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
else:
self._pyhoca_liblogger = copy.deepcopy(liblogger)
+
_x2goclient_kwargs = {
'use_listsessions_cache': True,
'auto_update_listsessions_cache': True,
@@ -152,13 +154,11 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
self.logon_window_position_x = self.logon_window_position_y = None
x2go.X2goClient.__init__(self, **_x2goclient_kwargs)
- # We register one session per available session profile.
- # These registered sessions will be used to access the profile's
- # ,,control'' sessions at first. Later, any session can be used
- # to access the profile's control session.
- self.register_all_session_profiles(return_objects=True)
wx.App.__init__(self)
+ if not self.args.disable_splash:
+ splash.PyHocaGUI_SplashScreen()
+
self.Bind(wx.EVT_IDLE, self.OnIdle)
@@ -173,9 +173,6 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
self.SetVendorName(self.vendorname)
self.startGUI()
- if not self.args.disable_splash:
- splash.PyHocaGUI_SplashScreen()
-
wx.EndBusyCursor()
return True
@@ -255,7 +252,7 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
self._pyhoca_logger('the current release of %s does not support client configuration' % self.appname, loglevel=x2go.log.loglevel_WARN)
self.options_disabled = True
- if self.args.auto_connect:
+ if self.args.auto_connect or self.args.single_session_profile:
gevent.spawn(self._auto_connect)
if self.args.session_profile:
@@ -276,6 +273,10 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
# wait for splash to appear
if not self.args.disable_splash:
gevent.sleep(1)
+ if not self.args.single_session_profile:
+ self._X2goClient__register_all_session_profiles()
+ else:
+ self._X2goClient__register_session(profile_name=self.args.session_profile)
for session_uuid in self._X2goClient__client_registered_sessions(return_objects=False):
if self._X2goClient__session_can_auto_connect(session_uuid):
self._pyhoca_logger('auto-connecting to %s session profile' % self.get_session_profile_name(session_uuid), loglevel=x2go.log.loglevel_NOTICE)
@@ -293,12 +294,17 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
STILL UNDOCUMENTED
"""
+
# close open password dialogs (or other remaining windows)
for _win in self._sub_windows:
_win.Close()
_win.Destroy()
for session_obj in [ _s for _s in self._X2goClient__client_running_sessions(return_objects=True) if _s.is_associated() ]:
- session_obj.suspend()
+ profile_name = session_obj.get_profile_name()
+ if not self._hide_notifications_map.has_key(profile_name):
+ self._hide_notifications_map[profile_name] = []
+ self._hide_notifications_map[profile_name].append(session_obj.get_session_name())
+ gevent.spawn(session_obj.suspend)
x2go.x2go_cleanup()
self.about.Close()
self.about.Destroy()
@@ -312,6 +318,11 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
"""
self._pyhoca_logger('exit application', loglevel=x2go.log.loglevel_INFO, )
+ if self.args.single_session_profile:
+ if not x2go.defaults.X2GOCLIENT_OS == 'Windows':
+ self.notifier.send(self.args.session_profile, _('Suspending Sessions and Exiting...'), icon='application-exit', timeout=10000)
+ self._eventid_profilenames_map[evt.GetId()] = self.args.session_profile
+ self.OnServerDisconnect(evt)
self.Exit()
def _start_on_connect(self, evt, session_uuid):
@@ -399,7 +410,10 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
profile_name = self.get_session(session_uuid).get_profile_name()
if self._X2goClient__get_profile_config(profile_name)['published']:
- gevent.spawn(self._init_pubapp_session, session_uuid=session_uuid)
+ if self.args.single_session_profile:
+ self._init_pubapp_session(session_uuid=session_uuid)
+ else:
+ gevent.spawn(self._init_pubapp_session, session_uuid=session_uuid)
_resumed = False
@@ -676,7 +690,7 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
self.current_profile_name = self._eventid_profilenames_map[evt.GetId()]
session_uuid = self._X2goClient__client_registered_sessions_of_profile_name(self.current_profile_name)[0]
# disconnect all profile sessions
- if self._X2goClient__server_is_alive(session_uuid):
+ if self._X2goClient__server_is_alive(session_uuid) and not self.args.single_session_profile:
self._X2goClient__disconnect_profile(self.current_profile_name)
self.notifier.send(_(u'%s - disconnect') % self.current_profile_name, _(u'X2Go Profile is now disconnected.'), icon='auth_disconnect', timeout=4000)
if self.exit_on_disconnect:
@@ -971,7 +985,11 @@ class PyHocaGUI(wx.App, x2go.X2goClient):
def HOOK_on_session_has_been_suspended(self, session_uuid='UNKNOWN', profile_name='UNKNOWN', session_name='UNKNOWN'):
self._enable_session_name(profile_name, session_name)
- self.notifier.send(_(u'%s - suspend') % profile_name, _(u'X2Go Session has been suspended\n%s') % session_name, icon='session_suspend', timeout=5000)
+ if self._hide_notifications_map.has_key(profile_name) and session_name in self._hide_notifications_map[profile_name]:
+ if not self._hide_notifications_map[profile_name]:
+ del self._hide_notifications_map[profile_name]
+ else:
+ self.notifier.send(_(u'%s - suspend') % profile_name, _(u'X2Go Session has been suspended\n%s') % session_name, icon='session_suspend', timeout=5000)
if self.disconnect_on_suspend:
_dummy_id = wx.NewId()
self._eventid_profilenames_map[_dummy_id] = profile_name
diff --git a/pyhoca/wxgui/menus_taskbar.py b/pyhoca/wxgui/menus_taskbar.py
index 7731d61..d5ef21f 100644
--- a/pyhoca/wxgui/menus_taskbar.py
+++ b/pyhoca/wxgui/menus_taskbar.py
@@ -95,22 +95,31 @@ class PyHocaGUI_Menu_TaskbarOptionsManager(wx.Menu):
self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnAbout, id=ID_ABOUT)
if not self._PyHocaGUI.restricted_trayicon:
+
self.AppendSeparator()
- ID_PROFILEMANAGER = wx.NewId()
- _maintain_profiles_item = self.AppendMenu(id=ID_PROFILEMANAGER,
- text=_(u"Profile Manager"),
- submenu=PyHocaGUI_Menu_TaskbarProfileNames(self._PyHocaGUI,
- caller=self,
- filter_profiles=[],
- disabled_profiles=self._PyHocaGUI.client_connected_profiles(return_profile_names=True),
- submenu=PyHocaGUI_Menu_TaskbarManageProfile,
- group_menus=True,
- )
- )
- if self._PyHocaGUI.profilemanager_disabled:
- _maintain_profiles_item.Enable(False)
+ if not self._PyHocaGUI.args.single_session_profile:
+
+ ID_PROFILEMANAGER = wx.NewId()
+ _maintain_profiles_item = self.AppendMenu(id=ID_PROFILEMANAGER,
+ text=_(u"Profile Manager"),
+ submenu=PyHocaGUI_Menu_TaskbarProfileNames(self._PyHocaGUI,
+ caller=self,
+ filter_profiles=[],
+ disabled_profiles=self._PyHocaGUI.client_connected_profiles(return_profile_names=True),
+ submenu=PyHocaGUI_Menu_TaskbarManageProfile,
+ group_menus=True,
+ )
+ )
+ if self._PyHocaGUI.profilemanager_disabled:
+ _maintain_profiles_item.Enable(False)
+ else:
+ ID_SINGLEPROFILEMANAGER = wx.NewId()
+ _maintain_profile_item = self.AppendMenu(id=ID_SINGLEPROFILEMANAGER,
+ text=_(u'Manage Session Profile'),
+ submenu=PyHocaGUI_Menu_TaskbarManageProfile(self._PyHocaGUI, caller=self, profile_name=self._PyHocaGUI.args.session_profile),
+ )
self.AppendSeparator()
ID_PRINTINGPREFS = wx.NewId()
@@ -474,85 +483,38 @@ class PyHocaGUI_Menu_TaskbarSessionProfile(wx.Menu):
ID_EDITPROFILEWHILECONNECTED = wx.NewId()
ID_SHARELOCALFOLDER = wx.NewId()
ID_UNSHAREFOLDERS = wx.NewId()
- ID_DISCONNECT = wx.NewId()
current_profile_config = self._PyHocaGUI.get_profile_config(profile_name)
- self._PyHocaGUI._eventid_profilenames_map[ID_SESSIONSTART] = profile_name
-
- if current_profile_config['command'] in x2go.defaults.X2GO_DESKTOPSESSIONS:
- self.Append(id=ID_SESSIONSTART, text='%s (%s)' % (_(u"Start &new Desktop Session"), current_profile_config['command']))
- self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnSessionStart, id=ID_SESSIONSTART)
- elif current_profile_config['command'] == '' and current_profile_config['published']:
- if profile_name in self._PyHocaGUI._temp_launching_pubapp_profiles:
- _pub_app_start_item = self.Append(id=ID_PUBAPPSESSIONSTART, text=_(u"Retrieving Application Menu..."))
- _pub_app_start_item.Enable(False)
- else:
- _pub_app_start_item = self.Append(id=ID_PUBAPPSESSIONSTART, text=_(u"Retrieve Application Menu"))
- self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnPubAppSessionStart, id=ID_PUBAPPSESSIONSTART)
+ if profile_name in self._PyHocaGUI._temp_disabled_profile_names:
+ _connecting_info = self.Append(wx.NewId(), text=_(u'Currently connecting...'))
+ _connecting_info.Enable(False)
else:
- self.Append(id=ID_SESSIONSTART, text=_(u"Start &new Session"))
- self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnSessionStart, id=ID_SESSIONSTART)
-
- self.AppendSeparator()
- if current_profile_config['command'] == '' and current_profile_config['published']:
-
- _pub_app_sessions = self._PyHocaGUI.client_pubapp_sessions_of_profile_name(profile_name, return_objects=True)
- if _pub_app_sessions:
- _pub_app_session = _pub_app_sessions[0]
- _pub_app_start_item.Enable(False)
- _menu_items = _pub_app_session.get_published_applications()
- _session_name_disabled = self._PyHocaGUI.is_session_name_disabled(profile_name, _pub_app_session.get_session_name())
- _category_map = _generate_Menu_PublishedApplications(self._PyHocaGUI, caller=self, profile_name=profile_name, session_name=_pub_app_session.get_session_name(), menu_items = _menu_items)
- _category_names = _category_map.keys()
- _category_names.sort()
- for cat_name in _category_names:
- _submenu = self.AppendMenu(id=wx.NewId(), text=cat_name, submenu=_category_map[cat_name][0])
- _submenu.SetBitmap(wx.Bitmap(_category_map[cat_name][1]))
- if _session_name_disabled:
- _submenu.Enable(False)
- self.AppendSeparator()
-
- ID_RESUMESESSION = wx.NewId()
- ID_SUSPENDSESSION = wx.NewId()
- ID_TERMINATESESSION = wx.NewId()
- self._PyHocaGUI._eventid_profilenames_map[ID_RESUMESESSION] = \
- self._PyHocaGUI._eventid_profilenames_map[ID_SUSPENDSESSION] = \
- self._PyHocaGUI._eventid_profilenames_map[ID_TERMINATESESSION] = profile_name
- self._PyHocaGUI._eventid_sessionnames_map[ID_RESUMESESSION] = \
- self._PyHocaGUI._eventid_sessionnames_map[ID_SUSPENDSESSION] = \
- self._PyHocaGUI._eventid_sessionnames_map[ID_TERMINATESESSION] = _pub_app_session.get_session_name()
-
- if _pub_app_session.is_running():
- self.Append(text=_(u"Suspend Session"), id=ID_SUSPENDSESSION)
- elif _pub_app_session.is_suspended():
- self.Append(text=_(u"Resume Session"), id=ID_RESUMESESSION)
- self.Append(text=_(u"Terminate Session"), id=ID_TERMINATESESSION)
- self.AppendSeparator()
-
- self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnSessionResume, id=ID_RESUMESESSION)
- self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnSessionSuspend, id=ID_SUSPENDSESSION)
- self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnSessionTerminate, id=ID_TERMINATESESSION)
+ self._PyHocaGUI._eventid_profilenames_map[ID_SESSIONSTART] = profile_name
- else:
- # preparing profile_name information for the main PyHocaGUI instance
- self._PyHocaGUI._eventid_profilenames_map[ID_LAUNCHAPPLICATION] = \
- self._PyHocaGUI._eventid_profilenames_map[ID_CLEANSESSIONS] = profile_name
+ if current_profile_config['command'] in x2go.defaults.X2GO_DESKTOPSESSIONS:
+ self.Append(id=ID_SESSIONSTART, text='%s (%s)' % (_(u"Start &new Desktop Session"), current_profile_config['command']))
+ self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnSessionStart, id=ID_SESSIONSTART)
+ elif current_profile_config['command'] == '' and current_profile_config['published']:
+ if profile_name in self._PyHocaGUI._temp_launching_pubapp_profiles:
+ _pub_app_start_item = self.Append(id=ID_PUBAPPSESSIONSTART, text=_(u"Retrieving Application Menu..."))
+ _pub_app_start_item.Enable(False)
+ else:
+ _pub_app_start_item = self.Append(id=ID_PUBAPPSESSIONSTART, text=_(u"Retrieve Application Menu"))
+ self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnPubAppSessionStart, id=ID_PUBAPPSESSIONSTART)
+ else:
+ self.Append(id=ID_SESSIONSTART, text=_(u"Start &new Session"))
+ self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnSessionStart, id=ID_SESSIONSTART)
- if current_profile_config['applications'] and current_profile_config['command'] in x2go.defaults.X2GO_DESKTOPSESSIONS and not current_profile_config['published']:
- self.AppendMenu(id=ID_LAUNCHAPPLICATION, text=_(u"Launch Single Application"),
- submenu=PyHocaGUI_Menu_LaunchSingleApplication(self._PyHocaGUI, caller=self, profile_name=profile_name)
- )
- self.AppendSeparator()
+ self.AppendSeparator()
- if current_profile_config['published']:
+ if current_profile_config['command'] == '' and current_profile_config['published']:
- _pub_app_session = None
_pub_app_sessions = self._PyHocaGUI.client_pubapp_sessions_of_profile_name(profile_name, return_objects=True)
if _pub_app_sessions:
_pub_app_session = _pub_app_sessions[0]
- if _pub_app_session and _pub_app_session.is_running():
+ _pub_app_start_item.Enable(False)
_menu_items = _pub_app_session.get_published_applications()
_session_name_disabled = self._PyHocaGUI.is_session_name_disabled(profile_name, _pub_app_session.get_session_name())
_category_map = _generate_Menu_PublishedApplications(self._PyHocaGUI, caller=self, profile_name=profile_name, session_name=_pub_app_session.get_session_name(), menu_items = _menu_items)
@@ -563,95 +525,154 @@ class PyHocaGUI_Menu_TaskbarSessionProfile(wx.Menu):
_submenu.SetBitmap(wx.Bitmap(_category_map[cat_name][1]))
if _session_name_disabled:
_submenu.Enable(False)
+ self.AppendSeparator()
+ ID_RESUMESESSION = wx.NewId()
+ ID_SUSPENDSESSION = wx.NewId()
+ ID_TERMINATESESSION = wx.NewId()
+ self._PyHocaGUI._eventid_profilenames_map[ID_RESUMESESSION] = \
+ self._PyHocaGUI._eventid_profilenames_map[ID_SUSPENDSESSION] = \
+ self._PyHocaGUI._eventid_profilenames_map[ID_TERMINATESESSION] = profile_name
+ self._PyHocaGUI._eventid_sessionnames_map[ID_RESUMESESSION] = \
+ self._PyHocaGUI._eventid_sessionnames_map[ID_SUSPENDSESSION] = \
+ self._PyHocaGUI._eventid_sessionnames_map[ID_TERMINATESESSION] = _pub_app_session.get_session_name()
+
+ if _pub_app_session.is_running():
+ self.Append(text=_(u"Suspend Session"), id=ID_SUSPENDSESSION)
+ elif _pub_app_session.is_suspended():
+ self.Append(text=_(u"Resume Session"), id=ID_RESUMESESSION)
+ self.Append(text=_(u"Terminate Session"), id=ID_TERMINATESESSION)
self.AppendSeparator()
- _marker = ''
- _status = None
- if _pub_app_session.is_master_session(): _marker = '(*)'
- if _pub_app_session.is_running(): _status = 'R'
- elif _pub_app_session.is_suspended(): _status = 'S'
-
- if _status:
- _submenu = self.AppendMenu(id=wx.NewId(), text=_(u'Manage Application Menu')+' %s' % _marker,
- submenu=PyHocaGUI_Menu_TaskbarSessionActions(self._PyHocaGUI, caller=self,
- profile_name=profile_name,
- session_name=_pub_app_session.get_session_name(),
- status=_status,
- )
- )
- if _session_name_disabled:
- _submenu.Enable(False)
+ self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnSessionResume, id=ID_RESUMESESSION)
+ self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnSessionSuspend, id=ID_SUSPENDSESSION)
+ self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnSessionTerminate, id=ID_TERMINATESESSION)
+
+ else:
+ # preparing profile_name information for the main PyHocaGUI instance
+ self._PyHocaGUI._eventid_profilenames_map[ID_LAUNCHAPPLICATION] = \
+ self._PyHocaGUI._eventid_profilenames_map[ID_CLEANSESSIONS] = profile_name
+
+ if current_profile_config['applications'] and current_profile_config['command'] in x2go.defaults.X2GO_DESKTOPSESSIONS and not current_profile_config['published']:
+ self.AppendMenu(id=ID_LAUNCHAPPLICATION, text=_(u"Launch Single Application"),
+ submenu=PyHocaGUI_Menu_LaunchSingleApplication(self._PyHocaGUI, caller=self, profile_name=profile_name)
+ )
+ self.AppendSeparator()
+
+ if current_profile_config['published']:
+
+ _pub_app_session = None
+ _pub_app_sessions = self._PyHocaGUI.client_pubapp_sessions_of_profile_name(profile_name, return_objects=True)
+ if _pub_app_sessions:
+ _pub_app_session = _pub_app_sessions[0]
+ if _pub_app_session and _pub_app_session.is_running():
+ _menu_items = _pub_app_session.get_published_applications()
+ _session_name_disabled = self._PyHocaGUI.is_session_name_disabled(profile_name, _pub_app_session.get_session_name())
+ _category_map = _generate_Menu_PublishedApplications(self._PyHocaGUI, caller=self, profile_name=profile_name, session_name=_pub_app_session.get_session_name(), menu_items = _menu_items)
+ _category_names = _category_map.keys()
+ _category_names.sort()
+ for cat_name in _category_names:
+ _submenu = self.AppendMenu(id=wx.NewId(), text=cat_name, submenu=_category_map[cat_name][0])
+ _submenu.SetBitmap(wx.Bitmap(_category_map[cat_name][1]))
+ if _session_name_disabled:
+ _submenu.Enable(False)
+
self.AppendSeparator()
- else:
- self._PyHocaGUI._eventid_profilenames_map[ID_PUBAPPSESSIONSTART] = profile_name
- if profile_name in self._PyHocaGUI._temp_launching_pubapp_profiles:
- _ram = self.Append(id=ID_PUBAPPSESSIONSTART, text=_(u"Retrieving Application Menu..."))
- _ram.Enable(False)
+
+ _marker = ''
+ _status = None
+ if _pub_app_session.is_master_session(): _marker = '(*)'
+ if _pub_app_session.is_running(): _status = 'R'
+ elif _pub_app_session.is_suspended(): _status = 'S'
+
+ if _status:
+ _submenu = self.AppendMenu(id=wx.NewId(), text=_(u'Manage Application Menu')+' %s' % _marker,
+ submenu=PyHocaGUI_Menu_TaskbarSessionActions(self._PyHocaGUI, caller=self,
+ profile_name=profile_name,
+ session_name=_pub_app_session.get_session_name(),
+ status=_status,
+ )
+ )
+ if _session_name_disabled:
+ _submenu.Enable(False)
+ self.AppendSeparator()
else:
- self.Append(id=ID_PUBAPPSESSIONSTART, text=_(u"Retrieve Application Menu"))
- self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnPubAppSessionStart, id=ID_PUBAPPSESSIONSTART)
- self.AppendSeparator()
+ self._PyHocaGUI._eventid_profilenames_map[ID_PUBAPPSESSIONSTART] = profile_name
+ if profile_name in self._PyHocaGUI._temp_launching_pubapp_profiles:
+ _ram = self.Append(id=ID_PUBAPPSESSIONSTART, text=_(u"Retrieving Application Menu..."))
+ _ram.Enable(False)
+ else:
+ self.Append(id=ID_PUBAPPSESSIONSTART, text=_(u"Retrieve Application Menu"))
+ self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnPubAppSessionStart, id=ID_PUBAPPSESSIONSTART)
+ self.AppendSeparator()
- _query_session_uuid = self._PyHocaGUI.client_connected_sessions_of_profile_name(profile_name, return_objects=False)[0]
- _session_list = self._PyHocaGUI.list_sessions(_query_session_uuid)
-
- if _session_list:
-
- # newest sessions at the top
- _session_list_names = [ _s_name for _s_name in _session_list.keys() if not _session_list[_s_name].is_published_applications_provider() ]
- _session_list_names.reverse()
- for session_name in _session_list_names:
-
- session = self._PyHocaGUI.get_session_of_session_name(session_name, return_object=True)
-
- _s_id = wx.NewId()
-
- if _session_list[session_name].status == 'R':
- state = _(u'Running')
- elif _session_list[session_name].status == 'S':
- state = _(u'Suspended')
- _marker = ''
- if session and session.is_master_session():
- _marker = '(*)'
- if session:
- session_submenu = self.AppendMenu(id=_s_id, text=u'%s: »%s« %s' % (state, session_name, _marker),
- submenu=PyHocaGUI_Menu_TaskbarSessionActions(self._PyHocaGUI, caller=self,
- profile_name=profile_name,
- session_name=session_name,
- status=_session_list[session_name].status,
- )
- )
- if self._PyHocaGUI._temp_disabled_session_names.has_key(profile_name) and session_name in self._PyHocaGUI._temp_disabled_session_names[profile_name]:
- session_submenu.Enable(False)
-
- if _session_list_names:
- self.Append(id=ID_CLEANSESSIONS, text=_(u"&Clean all sessions"))
- self.AppendSeparator()
+ _query_session_uuid = self._PyHocaGUI.client_connected_sessions_of_profile_name(profile_name, return_objects=False)[0]
+ _session_list = self._PyHocaGUI.list_sessions(_query_session_uuid)
+
+ if _session_list:
+
+ # newest sessions at the top
+ _session_list_names = [ _s_name for _s_name in _session_list.keys() if not _session_list[_s_name].is_published_applications_provider() ]
+ _session_list_names.reverse()
+ for session_name in _session_list_names:
+
+ session = self._PyHocaGUI.get_session_of_session_name(session_name, return_object=True)
+
+ _s_id = wx.NewId()
+
+ if _session_list[session_name].status == 'R':
+ state = _(u'Running')
+ elif _session_list[session_name].status == 'S':
+ state = _(u'Suspended')
+ _marker = ''
+ if session and session.is_master_session():
+ _marker = '(*)'
+ if session:
+ session_submenu = self.AppendMenu(id=_s_id, text=u'%s: »%s« %s' % (state, session_name, _marker),
+ submenu=PyHocaGUI_Menu_TaskbarSessionActions(self._PyHocaGUI, caller=self,
+ profile_name=profile_name,
+ session_name=session_name,
+ status=_session_list[session_name].status,
+ )
+ )
+ if self._PyHocaGUI._temp_disabled_session_names.has_key(profile_name) and session_name in self._PyHocaGUI._temp_disabled_session_names[profile_name]:
+ session_submenu.Enable(False)
+
+ if _session_list_names:
+ self.Append(id=ID_CLEANSESSIONS, text=_(u"&Clean all sessions"))
+ self.AppendSeparator()
- self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnCleanSessions, id=ID_CLEANSESSIONS)
+ self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnCleanSessions, id=ID_CLEANSESSIONS)
- self._PyHocaGUI._eventid_profilenames_map[ID_EDITPROFILEWHILECONNECTED] = \
- self._PyHocaGUI._eventid_profilenames_map[ID_SHARELOCALFOLDER] = \
- self._PyHocaGUI._eventid_profilenames_map[ID_UNSHAREFOLDERS] = \
- self._PyHocaGUI._eventid_profilenames_map[ID_DISCONNECT] = profile_name
+ self._PyHocaGUI._eventid_profilenames_map[ID_EDITPROFILEWHILECONNECTED] = \
+ self._PyHocaGUI._eventid_profilenames_map[ID_SHARELOCALFOLDER] = \
+ self._PyHocaGUI._eventid_profilenames_map[ID_UNSHAREFOLDERS] = profile_name
- self.Append(id=ID_EDITPROFILEWHILECONNECTED, text=_(u"Customize &profile"))
- if current_profile_config['useexports'] and self._PyHocaGUI._X2goClient__profile_is_folder_sharing_available(profile_name=profile_name):
+ self.Append(id=ID_EDITPROFILEWHILECONNECTED, text=_(u"Customize &profile"))
+ self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnProfileEditWhileConnected, id=ID_EDITPROFILEWHILECONNECTED)
- _shared_folders = self.AppendMenu(id=ID_SHARELOCALFOLDER, text=_(u"Shared &folders"),
- submenu=PyHocaGUI_Menu_TaskbarProfileSharedFolders(self._PyHocaGUI, caller=self,
- profile_name=profile_name)
- )
- if not self._PyHocaGUI._X2goClient__client_associated_sessions_of_profile_name(profile_name=profile_name, return_objects=False):
- _shared_folders.Enable(False)
+ if current_profile_config['useexports'] and self._PyHocaGUI._X2goClient__profile_is_folder_sharing_available(profile_name=profile_name):
- self.AppendSeparator()
- self.Append(id=ID_DISCONNECT, text=_(u"&Disconnect from Server"))
+ _shared_folders = self.AppendMenu(id=ID_SHARELOCALFOLDER, text=_(u"Shared &folders"),
+ submenu=PyHocaGUI_Menu_TaskbarProfileSharedFolders(self._PyHocaGUI, caller=self,
+ profile_name=profile_name)
+ )
+ if not self._PyHocaGUI._X2goClient__client_associated_sessions_of_profile_name(profile_name=profile_name, return_objects=False):
+ _shared_folders.Enable(False)
+
+ self.AppendSeparator()
+
+ if not self._PyHocaGUI.args.single_session_profile:
+ ID_DISCONNECT = wx.NewId()
+ self._PyHocaGUI._eventid_profilenames_map[ID_DISCONNECT] = profile_name
+ self.Append(id=ID_DISCONNECT, text=_(u"&Disconnect from Server"))
+ self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnServerDisconnect, id=ID_DISCONNECT)
+ else:
+ ID_EXIT = wx.NewId()
+ self.Append(id=ID_EXIT, text=_(u"Disconnect and E&xit"))
+ self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnTaskbarExit, id=ID_EXIT)
- self._PyHocaGUI.current_profile_name = profile_name
- self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnProfileEditWhileConnected, id=ID_EDITPROFILEWHILECONNECTED)
- self._PyHocaGUI.Bind(wx.EVT_MENU, self._PyHocaGUI.OnServerDisconnect, id=ID_DISCONNECT)
+ self._PyHocaGUI.current_profile_name = profile_name
class PyHocaGUI_Menu_TaskbarProfileNames(wx.Menu):
diff --git a/pyhoca/wxgui/taskbar.py b/pyhoca/wxgui/taskbar.py
index 837399b..f75f47f 100644
--- a/pyhoca/wxgui/taskbar.py
+++ b/pyhoca/wxgui/taskbar.py
@@ -94,7 +94,10 @@ class PyHocaGUI_TaskBarIcon(wx.TaskBarIcon):
STILL UNDOCUMENTED
"""
- self.menu_sessionmanager = self.PopupMenu(menus_taskbar.PyHocaGUI_Menu_TaskbarSessionManager(self._PyHocaGUI, caller=self,))
+ if self._PyHocaGUI.args.single_session_profile:
+ self.menu_sessionmanager = self.PopupMenu(menus_taskbar.PyHocaGUI_Menu_TaskbarSessionProfile(self._PyHocaGUI, caller=self, profile_name=self._PyHocaGUI.args.session_profile))
+ else:
+ self.menu_sessionmanager = self.PopupMenu(menus_taskbar.PyHocaGUI_Menu_TaskbarSessionManager(self._PyHocaGUI, caller=self,))
return self.menu_sessionmanager
def CreatePopupMenu(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