/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: matkor at laptop-hp
  • Date: 2008-08-05 13:56:46 UTC
  • mto: This revision was merged to the branch mainline in revision 601.
  • Revision ID: matkor@laptop-hp-20080805135646-7463836pvyp5dn01
Detection of error opening dbus when python-dbus-0.62 is used.

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)
16
19
 
17
20
import cgi
18
21
import dbus
19
22
import dbus.service
20
 
import gobject
21
23
import pynotify
22
24
from bzrlib.bzrdir import BzrDir
 
25
from bzrlib import errors
23
26
from bzrlib.osutils import format_date
24
27
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", appindicator.CATEGORY_APPLICATION_STATUS)
38
 
    indicator.set_status (appindicator.STATUS_PASSIVE)
39
 
    indicator.set_attention_icon("bzr-icon-64")
40
 
    indicator.set_menu(menu)
41
 
    hide_icon = lambda: indicator.set_status (appindicator.STATUS_PASSIVE)
42
 
    show_icon = lambda: indicator.set_status (appindicator.STATUS_ATTENTION)
43
 
 
44
28
if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
45
 
    import dbus.glib
 
29
        import dbus.glib
46
30
BROADCAST_INTERFACE = "org.bazaarvcs.plugins.dbus.Broadcast"
47
31
bus = dbus.SessionBus()
48
32
 
49
33
def catch_branch(revision_id, urls):
50
 
    # TODO: show all the urls, or perhaps choose the 'best'.
51
 
    url = urls[0]
52
 
    try:
53
 
        if isinstance(revision_id, unicode):
54
 
            revision_id = revision_id.encode('utf8')
55
 
        transport = get_transport(url)
56
 
        a_dir = BzrDir.open_from_transport(transport)
57
 
        branch = a_dir.open_branch()
58
 
        revno = branch.revision_id_to_revno(revision_id)
59
 
        revision = branch.repository.get_revision(revision_id)
60
 
        summary = 'New revision %d in %s' % (revno, url)
61
 
        body = 'Committer: %s\n' % revision.committer
62
 
        body += 'Date: %s\n' % format_date(revision.timestamp,
63
 
            revision.timezone)
64
 
        body += '\n'
65
 
        body += revision.message
66
 
        body = cgi.escape(body)
67
 
        nw = pynotify.Notification(summary, body)
68
 
        def start_viz(notification=None, action=None, data=None):
69
 
            """Start the viz program."""
70
 
            from bzrlib.plugins.gtk.commands import start_viz_window
71
 
            pp = start_viz_window(branch, revision_id)
72
 
            pp.show()
73
 
        def start_branch(notification=None, action=None, data=None):
74
 
            """Start a Branch dialog"""
75
 
            from bzrlib.plugins.gtk.branch import BranchDialog
76
 
            bd = BranchDialog(remote_path=url)
77
 
            bd.run()
78
 
        if "actions" in pynotify.get_server_caps():
79
 
            nw.add_action("inspect", "Inspect", start_viz, None)
80
 
            nw.add_action("branch", "Branch", start_branch, None)
81
 
        show_icon()
82
 
        gobject.timeout_add(5000, hide_icon)
83
 
        nw.set_timeout(5000)
84
 
        nw.show()
85
 
    except Exception, e:
86
 
        print e
87
 
        raise
 
34
        # TODO: show all the urls, or perhaps choose the 'best'.
 
35
        url = urls[0]
 
36
        try:
 
37
                if isinstance(revision_id, unicode):
 
38
                        revision_id = revision_id.encode('utf8')
 
39
                transport = get_transport(url)
 
40
                a_dir = BzrDir.open_from_transport(transport)
 
41
                branch = a_dir.open_branch()
 
42
                revno = branch.revision_id_to_revno(revision_id)
 
43
                revision = branch.repository.get_revision(revision_id)
 
44
                summary = 'New revision %d in %s' % (revno, url)
 
45
                body  = 'Committer: %s\n' % revision.committer
 
46
                body += 'Date: %s\n' % format_date(revision.timestamp,
 
47
                        revision.timezone)
 
48
                body += '\n'
 
49
                body += revision.message
 
50
                body = cgi.escape(body)
 
51
                nw = pynotify.Notification(summary, body)
 
52
                def start_viz(notification=None, action=None, data=None):
 
53
                        """Start the viz program."""
 
54
                        pp = start_viz_window(branch, revision_id)
 
55
                        pp.show()
 
56
                def start_branch(notification=None, action=None, data=None):
 
57
                        """Start a Branch dialog"""
 
58
                        from bzrlib.plugins.gtk.branch import BranchDialog
 
59
                        bd = BranchDialog(remote_path=url)
 
60
                        bd.run()
 
61
                nw.add_action("inspect", "Inspect", start_viz, None)
 
62
                nw.add_action("branch", "Branch", start_branch, None)
 
63
                nw.set_timeout(5000)
 
64
                nw.show()
 
65
        except Exception, e:
 
66
                print e
 
67
                raise
88
68
bus.add_signal_receiver(catch_branch,
89
 
                        dbus_interface=BROADCAST_INTERFACE,
90
 
                        signal_name="Revision")
 
69
                                                dbus_interface=BROADCAST_INTERFACE,
 
70
                                                signal_name="Revision")
91
71
pynotify.init("bzr-notify")
92
72
gtk.main()