/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to bzr-notify

  • Committer: Jelmer Vernooij
  • Date: 2012-07-09 15:23:26 UTC
  • mto: This revision was merged to the branch mainline in revision 794.
  • Revision ID: jelmer@samba.org-20120709152326-dzxb8zoz0btull7n
Remove bzr-notify.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python
2
 
 
3
 
"""Run the bzr tray icon.
4
 
 
5
 
This is a background program which will pop up a notification on the users
6
 
screen when a commit occurs.
7
 
"""
8
 
 
9
 
from bzrlib.plugin import load_plugins
10
 
load_plugins()
11
 
 
12
 
from bzrlib.plugins.gtk.commands import open_display
13
 
 
14
 
from bzrlib.plugins.gtk.notify import NotifyPopupMenu
15
 
Gtk = open_display()
16
 
 
17
 
import cgi
18
 
import sys
19
 
 
20
 
import dbus
21
 
import dbus.service
22
 
from gi.repository import GObject
23
 
from gi.repository import Notify
24
 
 
25
 
from bzrlib.bzrdir import BzrDir
26
 
from bzrlib.osutils import format_date
27
 
from bzrlib.transport import get_transport
28
 
 
29
 
menu = NotifyPopupMenu()
30
 
try:
31
 
    from gi.repository import AppIndicator3
32
 
except ImportError:
33
 
    icon = Gtk.StatusIcon.new_from_icon_name("bzr-panel")
34
 
    icon.connect('popup-menu', menu.display)
35
 
    icon.set_visible(False)
36
 
    hide_icon = lambda: icon.set_visible(False)
37
 
    show_icon = lambda: icon.set_visible(True)
38
 
else:
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")
43
 
    indicator.set_menu(menu)
44
 
    hide_icon = lambda: indicator.set_status (
45
 
        AppIndicator3.IndicatorStatus.PASSIVE)
46
 
    show_icon = lambda: indicator.set_status (
47
 
        AppIndicator3.IndicatorStatus.ATTENTION)
48
 
 
49
 
if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
50
 
    import dbus.glib
51
 
BROADCAST_INTERFACE = "org.bazaarvcs.plugins.dbus.Broadcast"
52
 
bus = dbus.SessionBus()
53
 
 
54
 
def catch_branch(revision_id, urls):
55
 
    # TODO: show all the urls, or perhaps choose the 'best'.
56
 
    url = urls[0]
57
 
    try:
58
 
        if isinstance(revision_id, unicode):
59
 
            revision_id = revision_id.encode('utf8')
60
 
        transport = get_transport(url)
61
 
        a_dir = BzrDir.open_from_transport(transport)
62
 
        branch = a_dir.open_branch()
63
 
        revno = branch.revision_id_to_revno(revision_id)
64
 
        revision = branch.repository.get_revision(revision_id)
65
 
        summary = 'New revision %d in %s' % (revno, url)
66
 
        body = 'Committer: %s\n' % revision.committer
67
 
        body += 'Date: %s\n' % format_date(revision.timestamp,
68
 
            revision.timezone)
69
 
        body += '\n'
70
 
        body += revision.message
71
 
        body = cgi.escape(body)
72
 
        nw = Notify.Notification.new(summary, body, None)
73
 
        def start_viz(notification=None, action=None, data=None):
74
 
            """Start the viz program."""
75
 
            from bzrlib.plugins.gtk.commands import start_viz_window
76
 
            pp = start_viz_window(branch, revision_id)
77
 
            pp.show()
78
 
        def start_branch(notification=None, action=None, data=None):
79
 
            """Start a Branch dialog"""
80
 
            from bzrlib.plugins.gtk.branch import BranchDialog
81
 
            bd = BranchDialog(remote_path=url)
82
 
            bd.run()
83
 
        if "actions" in Notify.get_server_caps():
84
 
            nw.add_action("inspect", "Inspect", start_viz, None)
85
 
            nw.add_action("branch", "Branch", start_branch, None)
86
 
        show_icon()
87
 
        GObject.timeout_add(5000, hide_icon)
88
 
        nw.set_timeout(5000)
89
 
        nw.show()
90
 
    except Exception, e:
91
 
        print e
92
 
        raise
93
 
bus.add_signal_receiver(catch_branch,
94
 
                        dbus_interface=BROADCAST_INTERFACE,
95
 
                        signal_name="Revision")
96
 
Notify.init("bzr-notify")
97
 
 
98
 
if sys.argv[-1] == 'test':
99
 
    # Exit before main loop.
100
 
    sys.exit(0)
101
 
 
102
 
Gtk.main()