+ def update_buttons(self):
+ log.debug("update_buttons")
+ # If all the selected torrents are paused, then disable the 'Pause' button.
+ # The same goes for the 'Resume' button.
+ pause = False
+ resume = False
+
+ # Disable the 'Clear Finished' button if there's no finished torrent
+ finished = False
+
+ selecteds = component.get('TorrentView').get_selected_torrents()
+ if not selecteds : selecteds = []
+
+ for torrent in selecteds :
+ status = client.get_torrent_status(torrent, ['state'])['state']
+ if status == self.STATE_PAUSED:
+ resume = True
+ elif status not in [self.STATE_FINISHED, self.STATE_SEEDING]:
+ pause = True
+ else:
+ finished = True
+ if pause and resume: break
+
+ # Enable the 'Remove Torrent' button only if there's some selected torrent.
+ remove = (len(selecteds ) > 0)
+
+ if not finished:
+ torrents = client.get_session_state()
+ for torrent in torrents:
+ if torrent in selecteds: continue
+ status = client.get_torrent_status(torrent, ['state'])['state']
+ if status in [self.STATE_FINISHED, self.STATE_SEEDING]:
+ finished = True
+ break
+
+ for name, sensitive in (("toolbutton_pause", pause),
+ ("toolbutton_resume", resume),
+ ("toolbutton_remove", remove),
+ ("toolbutton_clear", finished)):
+ self.window.main_glade.get_widget(name).set_sensitive(sensitive)
+
+ return False
+