1 # Copyright (C) 2008, Thomas Leonard
2 # See the README file for details, or visit http://0install.net.
6 from zeroinstall
.injector
import handler
, download
11 class GUIHandler(handler
.Handler
):
12 dl_callbacks
= None # Download -> [ callback ]
16 def _reset_counters(self
):
17 if not self
.monitored_downloads
:
18 self
.n_completed_downloads
= 0
19 self
.total_bytes_downloaded
= 0
22 def abort_all_downloads(self
):
23 for dl
in self
.monitored_downloads
.values():
26 def downloads_changed(self
):
27 if self
.monitored_downloads
and self
.pulse
is None:
29 self
.mainwindow
.update_download_status()
32 self
.pulse
= gobject
.timeout_add(50, pulse
)
33 elif len(self
.monitored_downloads
) == 0:
34 # Delay before resetting, in case we start a new download quickly
35 gobject
.timeout_add(500, self
._reset
_counters
)
39 gobject
.source_remove(self
.pulse
)
41 self
.mainwindow
.update_download_status()
43 def impl_added_to_store(self
, impl
):
44 self
.mainwindow
.update_download_status()
46 def confirm_trust_keys(self
, interface
, sigs
, iface_xml
):
48 return trust_box
.confirm_trust(interface
, sigs
, iface_xml
, parent
= self
.mainwindow
.window
)
50 def report_error(self
, ex
, tb
= None):
51 if isinstance(ex
, download
.DownloadAborted
):
52 return # No need to tell the user about this, since they caused it
53 dialog
.alert(self
.mainwindow
.window
, str(ex
))