/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: 2010-02-28 15:19:15 UTC
  • mfrom: (674.1.1 bzr-gtk)
  • Revision ID: jelmer@samba.org-20100228151915-bvwflj8ongj2fwqd
Merge qense's indicator application work, but don't require appindicator to be installed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
 
14
14
from bzrlib.plugins.gtk.notify import NotifyPopupMenu
15
15
gtk = open_display()
16
 
menu = NotifyPopupMenu()
17
 
icon = gtk.status_icon_new_from_file(icon_path("bzr-icon-64.png"))
18
 
icon.connect('popup-menu', menu.display)
19
 
icon.set_visible(False)
20
16
 
21
17
import cgi
22
18
import dbus
24
20
import gobject
25
21
import pynotify
26
22
from bzrlib.bzrdir import BzrDir
27
 
from bzrlib import errors
28
23
from bzrlib.osutils import format_date
29
24
from bzrlib.transport import get_transport
 
25
 
 
26
menu = NotifyPopupMenu()
 
27
try:
 
28
        import appindicator
 
29
except ImportError:
 
30
        icon = gtk.status_icon_new_from_file(icon_path("bzr-icon-64.png"))
 
31
        icon.connect('popup-menu', menu.display)
 
32
        icon.set_visible(False)
 
33
        hide_icon = lambda: icon.set_visible(False)
 
34
        show_icon = lambda: icon.set_visible(True)
 
35
else:
 
36
        indicator = appindicator.Indicator ("bzr-gtk-notify",
 
37
                                                          "bzr-icon-64",
 
38
                                                          appindicator.CATEGORY_APPLICATION_STATUS)
 
39
        indicator.set_status (appindicator.STATUS_PASSIVE)
 
40
        indicator.set_attention_icon("bzr-icon-64")
 
41
        indicator.set_menu(menu)
 
42
        hide_icon = lambda: indicator.set_status (appindicator.STATUS_PASSIVE)
 
43
        show_icon = lambda: indicator.set_status (appindicator.STATUS_ATTENTION)
 
44
 
30
45
if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
31
46
        import dbus.glib
32
47
BROADCAST_INTERFACE = "org.bazaarvcs.plugins.dbus.Broadcast"
33
48
bus = dbus.SessionBus()
34
49
 
35
 
def hide_icon():
36
 
        icon.set_visible(False)
37
 
 
38
50
def catch_branch(revision_id, urls):
39
51
        # TODO: show all the urls, or perhaps choose the 'best'.
40
52
        url = urls[0]
47
59
                revno = branch.revision_id_to_revno(revision_id)
48
60
                revision = branch.repository.get_revision(revision_id)
49
61
                summary = 'New revision %d in %s' % (revno, url)
50
 
                body  = 'Committer: %s\n' % revision.committer
 
62
                body = 'Committer: %s\n' % revision.committer
51
63
                body += 'Date: %s\n' % format_date(revision.timestamp,
52
64
                        revision.timezone)
53
65
                body += '\n'
56
68
                nw = pynotify.Notification(summary, body)
57
69
                def start_viz(notification=None, action=None, data=None):
58
70
                        """Start the viz program."""
 
71
                        from bzrlib.plugins.gtk.commands import start_viz_window
59
72
                        pp = start_viz_window(branch, revision_id)
60
73
                        pp.show()
61
74
                def start_branch(notification=None, action=None, data=None):
66
79
                if "actions" in pynotify.get_server_caps():
67
80
                        nw.add_action("inspect", "Inspect", start_viz, None)
68
81
                        nw.add_action("branch", "Branch", start_branch, None)
69
 
                icon.set_visible(True)
 
82
                show_icon()
70
83
                gobject.timeout_add(5000, hide_icon)
71
84
                nw.set_timeout(5000)
72
85
                nw.show()