~ps-jenkins/indicator-transfer/ubuntu-vivid-proposed

« back to all changes in this revision

Viewing changes to tests/simple-download.py

  • Committer: Ted Gould
  • Author(s): Charles Kerr
  • Date: 2014-06-18 19:26:56 UTC
  • mfrom: (1.2.20 indicator-transfer)
  • Revision ID: ted@gould.cx-20140618192656-ufycr3k7g5w0en4u
This sets up the code layout, menu, indicator, unit tests, code coverage rules, etc... what you'd expect from an indicator.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python3
 
2
# source: https://wiki.ubuntu.com/DownloadService/DownloadManager#Code_Examples
 
3
 
 
4
from gi.repository import GLib
 
5
import dbus
 
6
from dbus.mainloop.glib import DBusGMainLoop
 
7
 
 
8
DBusGMainLoop(set_as_default=True)
 
9
 
 
10
MANAGER_PATH = '/'
 
11
MANAGER_IFACE = 'com.canonical.applications.DownloadManager'
 
12
DOWNLOAD_IFACE = 'com.canonical.applications.Download'
 
13
IMAGE_FILE = 'http://i.imgur.com/y51njgu.jpg'
 
14
 
 
15
 
 
16
def download_created(path):
 
17
    """Deal with the download created signal."""
 
18
    print('Download created in %s' % path)
 
19
 
 
20
 
 
21
def finished_callback(path, loop):
 
22
    """Deal with the finis signal."""
 
23
    print('Download performed in "%s"' % path)
 
24
    loop.quit()
 
25
 
 
26
 
 
27
def progress_callback(total, progress):
 
28
    """Deal with the progress signals."""
 
29
    print('Progress is %s/%s' % (progress, total))
 
30
 
 
31
if __name__ == '__main__':
 
32
 
 
33
    bus = dbus.SessionBus()
 
34
    loop = GLib.MainLoop()
 
35
    manager = bus.get_object('com.canonical.applications.Downloader',
 
36
            MANAGER_PATH)
 
37
    manager_dev_iface = dbus.Interface(manager, dbus_interface=MANAGER_IFACE)
 
38
 
 
39
    # ensure that download created works
 
40
    manager_dev_iface.connect_to_signal('downloadCreated', download_created)
 
41
 
 
42
    down_path1 = manager_dev_iface.createDownload((IMAGE_FILE, "", "",
 
43
        dbus.Dictionary({}, signature="sv"),
 
44
        dbus.Dictionary({}, signature="ss")))
 
45
    down_path2 = manager_dev_iface.createDownload((IMAGE_FILE, "", "",
 
46
        dbus.Dictionary({}, signature="sv"),
 
47
        dbus.Dictionary({}, signature="ss")))
 
48
    down_path3 = manager_dev_iface.createDownload((IMAGE_FILE, "", "",
 
49
        dbus.Dictionary({}, signature="sv"),
 
50
        dbus.Dictionary({}, signature="ss")))
 
51
 
 
52
    download1 = bus.get_object('com.canonical.applications.Downloader',
 
53
            down_path1)
 
54
    download2 = bus.get_object('com.canonical.applications.Downloader',
 
55
            down_path2)
 
56
    download3 = bus.get_object('com.canonical.applications.Downloader',
 
57
            down_path3)
 
58
 
 
59
    download_dev_iface1 = dbus.Interface(download1, dbus_interface=DOWNLOAD_IFACE)
 
60
    download_dev_iface2 = dbus.Interface(download2, dbus_interface=DOWNLOAD_IFACE)
 
61
    download_dev_iface3 = dbus.Interface(download3, dbus_interface=DOWNLOAD_IFACE)
 
62
 
 
63
    # connect to signals
 
64
    download_dev_iface1.connect_to_signal('progress', progress_callback)
 
65
    download_dev_iface2.connect_to_signal('progress', progress_callback)
 
66
    download_dev_iface3.connect_to_signal('progress', progress_callback)
 
67
    download_dev_iface3.connect_to_signal('finished',
 
68
            lambda path: finished_callback(path, loop))
 
69
 
 
70
    download_dev_iface1.start()
 
71
    download_dev_iface2.start()
 
72
    download_dev_iface3.start()
 
73
 
 
74
    loop.run()
 
75