[X2Go-Commits] pyhoca-gui.git - build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d (branch) updated: 0.4.0.1-14-g72a92e5
X2Go dev team
git-admin at x2go.org
Tue Aug 27 13:23:00 CEST 2013
The branch, build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d has been updated
via 72a92e5d645ef83875eb3556d92df669ace84580 (commit)
from 19fd6c12a12101f98d21b179d4d9b679ddee69a1 (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/frontend.py | 2 +-
pyhoca/wxgui/notify.py | 153 +++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 154 insertions(+), 4 deletions(-)
The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index dd6f5ff..584eaf8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -11,7 +11,8 @@ pyhoca-gui (0.4.0.2-0~x2go1) UNRELEASED; urgency=low
+ Provide icon2exe.py for adding .ico files to .exe files. Thanks
to the original authors: Giovanni Bajo and previously McMillan
Enterprises, Inc.
- + Explicitly set the tray icon for wx.NotificationMessage calls.
+ + Use TaskBarIcon.ShowBalloon() instead of wx.NotificationMessage for
+ notifications.
-- Mike Gabriel <mike.gabriel at das-netzwerkteam.de> Wed, 13 Feb 2013 12:51:24 +0100
diff --git a/pyhoca/wxgui/frontend.py b/pyhoca/wxgui/frontend.py
index 93cc9a9..4f49af5 100644
--- a/pyhoca/wxgui/frontend.py
+++ b/pyhoca/wxgui/frontend.py
@@ -310,7 +310,7 @@ class PyHocaGUI(wx.App, x2go.X2GoClient):
if x2go.X2GOCLIENT_OS in ('Linux', 'Mac'):
self.notifier = notify.libnotify_NotifierPopup(self)
if x2go.X2GOCLIENT_OS in ('Windows'):
- self.notifier = notify.notificationmessage_NotifierPopup(self.about)
+ self.notifier = notify.showballoon_NotifierPopup(self.about)
self._sub_windows = []
self._logon_windows = {}
diff --git a/pyhoca/wxgui/notify.py b/pyhoca/wxgui/notify.py
index 62c5b7b..2b27c6b 100644
--- a/pyhoca/wxgui/notify.py
+++ b/pyhoca/wxgui/notify.py
@@ -152,6 +152,157 @@ class libnotify_NotifierPopup(object):
pass
+class showballoon_NotifierPopup(object):
+ """\
+ L{PyHocaGUI} notification utilizing C{wx.TaskBarIcon.ShowBalloon()}, used on Windows OS.
+
+ """
+ title = {}
+ text = {}
+ icon = {}
+ timeout = {}
+
+ def __init__(self, _about):
+ """\
+ Notifier popup (constructor).
+
+ @param _about: main application window
+ @type _about: C{obj}
+
+ """
+ self._PyHocaGUI = _about._PyHocaGUI
+ self._pyhoca_logger = self._PyHocaGUI._pyhoca_logger
+
+ def prepare(self, context, title=None, text=None, icon=None, timeout=None):
+ """\
+ Prepare a notification that gets sent to C{libnotify} later (by the L{send()} method).
+
+ Use C{context} as a unique identifier. When sending the notification later, C{context}
+ will unequivocally map to the notification content that shall get sent.
+
+ @param context: a unique identifier for this notification preparation
+ @type context: C{str}
+ @param title: notification title
+ @type title: C{str}
+ @param text: notification text
+ @type text: C{str}
+ @param icon: icon name for an icon that appears with the notification
+ @type icon: C{str}
+ @param timeout: let notification disappear after C{<timeout>} milliseconds
+ @type timeout: C{int}
+
+ """
+ if title is not None:
+ self.title[context] = title
+ if text is not None:
+ self.text[context] = text
+ if icon is not None:
+ self.icon[context] = icon
+ if timeout is not None:
+ self.timeout[context] = timeout
+
+ def send(self, title=None, text=None, context=None, icon=None, timeout=8000):
+ """\
+ Send notifications directly (or use a prepared notification).
+
+ @param title: notification title
+ @type title: C{str}
+ @param text: notification text
+ @type text: C{str}
+ @param context: an identifier that refers to a prepared notification
+ @type context: C{str}
+ @param icon: icon name for an icon that appears with the notification
+ @type icon: C{str}
+ @param timeout: let notification disappear after C{<timeout>} milliseconds
+ @type timeout: C{int}
+
+ """
+ if context is not None:
+ try:
+ title = self.title[context]
+ del self.title[context]
+ except KeyError:
+ pass
+ try:
+ text = self.text[context]
+ del self.text[context]
+ except KeyError:
+ pass
+ try:
+ icon = self.icon[context]
+ del self.icon[context]
+ except KeyError:
+ pass
+ try:
+ timeout = self.timeout[context]
+ del self.timeout[context]
+ except KeyError:
+ pass
+
+ # libnotify timeouts are given in millisecs, on Windows we use seconds...
+ timeout = timeout / 1000
+
+ _icon_map_wx = {
+ 'audio_error': wx.ICON_ERROR,
+ 'auth_success': wx.ICON_INFORMATION,
+ 'auth_failed': wx.ICON_WARNING,
+ 'auth_error': wx.ICON_ERROR,
+ 'auth_disconnect': wx.ICON_INFORMATION,
+ 'profile_add': wx.ICON_INFORMATION,
+ 'profile_delete': wx.ICON_INFORMATION,
+ 'profile_edit': wx.ICON_INFORMATION,
+ 'profile_save': wx.ICON_INFORMATION,
+ 'profile_error': wx.ICON_ERROR,
+ 'session_cleanall': wx.ICON_INFORMATION,
+ 'session_error': wx.ICON_ERROR,
+ 'session_pause': wx.ICON_INFORMATION,
+ 'session_printing': wx.ICON_INFORMATION,
+ 'session_resume': wx.ICON_INFORMATION,
+ 'session_start': wx.ICON_INFORMATION,
+ 'session_terminate': wx.ICON_INFORMATION,
+ 'session_warning': wx.ICON_WARNING,
+ }
+ if icon in _icon_map_wx.keys():
+ icon = _icon_map_wx[icon]
+ else:
+ icon = wx.ICON_INFORMATION
+
+ try:
+ if not self._PyHocaGUI.disable_notifications:
+ # you will need wxPython >= 2.9 for this
+ self._PyHocaGUI.taskbar.ShowBalloon(
+ title,
+ text,
+ timeout*1000,
+ icon,
+ )
+ except:
+ pass
+
+ # on Windows some error messages are already encoded, some are not, depending from which module they come
+ try: _title = title.encode(utils.get_encoding())
+ except: _title = title
+ try: _text = text.encode(utils.get_encoding())
+ except: _text = text
+
+ try: self._pyhoca_logger('['+_title+'] '+_text, loglevel=log.loglevel_NOTICE)
+ except UnicodeDecodeError: self._pyhoca_logger('Unicode error occurred while rendering a log message...', loglevel=log.loglevel_WARN)
+
+ def Close(self):
+ """\
+ Provide a C{Close()} method which does nothing.
+
+ """
+ pass
+
+ def Destroy(self):
+ """\
+ Provide a C{Destroy()} method which does nothing.
+
+ """
+ pass
+
+
class notificationmessage_NotifierPopup(object):
"""\
L{PyHocaGUI} notification utilizing C{wx.NotificationMessage()}, used on Windows OS.
@@ -277,8 +428,6 @@ class notificationmessage_NotifierPopup(object):
_notification_msg.SetMessage(text)
_notification_msg.SetParent(self._PyHocaGUI.about)
_notification_msg.SetFlags(icon)
- notification_icon = MakeIcon('pyhoca-trayicon')
- _notification_msg.UseTaskBarIcon(notification_icon)
_notification_msg.Show(timeout=timeout)
except:
# if we are running wxPython 2.8, we ignore missing
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