9
9
from bzrlib.plugin import load_plugins
12
from bzrlib.plugins.gtk import open_display, icon_path
12
from bzrlib.plugins.gtk.commands import open_display
14
14
from bzrlib.plugins.gtk.notify import NotifyPopupMenu
19
21
import dbus.service
22
from gi.repository import GObject
23
from gi.repository import Notify
22
25
from bzrlib.bzrdir import BzrDir
23
26
from bzrlib.osutils import format_date
24
27
from bzrlib.transport import get_transport
26
29
menu = NotifyPopupMenu()
31
from gi.repository import AppIndicator3
29
32
except ImportError:
30
icon = gtk.status_icon_new_from_file(icon_path("bzr-icon-64.png"))
33
icon = Gtk.StatusIcon.new_from_icon_name("bzr-panel")
31
34
icon.connect('popup-menu', menu.display)
32
35
icon.set_visible(False)
33
36
hide_icon = lambda: icon.set_visible(False)
34
37
show_icon = lambda: icon.set_visible(True)
36
indicator = appindicator.Indicator ("bzr-gtk-notify",
37
"bzr-icon-64", appindicator.CATEGORY_APPLICATION_STATUS)
38
indicator.set_status (appindicator.STATUS_PASSIVE)
39
indicator.set_attention_icon("bzr-icon-64")
39
indicator = AppIndicator3.Indicator.new(
40
"bzr-gtk-notify", "bzr-panel", AppIndicator3.IndicatorCategory.OTHER)
41
indicator.set_status (AppIndicator3.IndicatorStatus.PASSIVE)
42
indicator.set_attention_icon("bzr-panel")
40
43
indicator.set_menu(menu)
41
hide_icon = lambda: indicator.set_status (appindicator.STATUS_PASSIVE)
42
show_icon = lambda: indicator.set_status (appindicator.STATUS_ATTENTION)
44
hide_icon = lambda: indicator.set_status (
45
AppIndicator3.IndicatorStatus.PASSIVE)
46
show_icon = lambda: indicator.set_status (
47
AppIndicator3.IndicatorStatus.ATTENTION)
44
49
if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
65
70
body += revision.message
66
71
body = cgi.escape(body)
67
nw = pynotify.Notification(summary, body)
72
nw = Notify.Notification.new(summary, body, None)
68
73
def start_viz(notification=None, action=None, data=None):
69
74
"""Start the viz program."""
70
75
from bzrlib.plugins.gtk.commands import start_viz_window
75
80
from bzrlib.plugins.gtk.branch import BranchDialog
76
81
bd = BranchDialog(remote_path=url)
78
if "actions" in pynotify.get_server_caps():
83
if "actions" in Notify.get_server_caps():
79
84
nw.add_action("inspect", "Inspect", start_viz, None)
80
85
nw.add_action("branch", "Branch", start_branch, None)
82
gobject.timeout_add(5000, hide_icon)
87
GObject.timeout_add(5000, hide_icon)
83
88
nw.set_timeout(5000)
85
90
except Exception, e:
88
93
bus.add_signal_receiver(catch_branch,
89
94
dbus_interface=BROADCAST_INTERFACE,
90
95
signal_name="Revision")
91
pynotify.init("bzr-notify")
96
Notify.init("bzr-notify")
98
if sys.argv[-1] == 'test':
99
# Exit before main loop.