From 1e93e2e80c43c936280a0bab0126a85241d9da0f Mon Sep 17 00:00:00 2001 From: kozec Date: Tue, 22 Sep 2015 11:57:15 +0200 Subject: [PATCH] v0.12: Added pause/resume option to device context menu --- app.glade | 30 ++++++++++++++++++++++++++++++ syncthing_gtk/app.py | 11 ++++++++++- syncthing_gtk/daemon.py | 18 ++++++++++++------ 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/app.glade b/app.glade index f348692c..ef5010ae 100644 --- a/app.glade +++ b/app.glade @@ -593,6 +593,29 @@ menu-popup-show-id-image + + + True + False + gtk-media-pause + True + True + True + + + + + + True + False + Resume + menu-popup-resume-image + True + True + True + + + True @@ -987,6 +1010,13 @@ False folder-open + + + True + False + gtk-media-play + + diff --git a/syncthing_gtk/app.py b/syncthing_gtk/app.py index 9c745352..88530d73 100644 --- a/syncthing_gtk/app.py +++ b/syncthing_gtk/app.py @@ -1643,6 +1643,8 @@ def cb_popup_menu_device(self, box, button, time): b = box["id"] != self.daemon.get_my_id() self["menu-popup-edit-device"].set_visible(b) self["menu-popup-delete-device"].set_visible(b) + self["menu-popup-pause-device"].set_visible(box.get_status() != _("Paused")) + self["menu-popup-resume-device"].set_visible(box.get_status() == _("Paused")) self["popup-menu-device"].popup(None, None, None, None, button, time) def cb_menu_popup(self, source, menu): @@ -1704,9 +1706,16 @@ def cb_menu_popup_override(self, *a): def cb_menu_popup_delete_device(self, *a): """ Handler for other 'edit' context menu item """ - # Editing device self.check_delete("device", self.rightclick_box["id"], self.rightclick_box.get_title()) + def cb_menu_popup_pause_device(self, *a): + """ Handler for 'resume device' context menu item """ + self.daemon.pause(self.rightclick_box["id"]) + + def cb_menu_popup_resume_device(self, *a): + """ Handler for 'resume device' context menu item """ + self.daemon.resume(self.rightclick_box["id"]) + def check_delete(self, mode, id, name): """ Asks user if he really wants to do what he just asked to do diff --git a/syncthing_gtk/daemon.py b/syncthing_gtk/daemon.py index d4f5f599..ec3c220a 100644 --- a/syncthing_gtk/daemon.py +++ b/syncthing_gtk/daemon.py @@ -1254,21 +1254,27 @@ def is_connected(self): """ Returns True if daemon is known to be alive """ return self._connected - def rescan(self, folder_id, path=None): - """ Asks daemon to rescan entire folder or specified path """ + def pause(self, device_id): + """ Pauses synchronization with specified device """ + self._rest_post("system/pause?device=%s" % (device_id,), {}, lambda *a: a, lambda *a: log.error(a), device_id) + + def resume(self, device_id): + """ Resumes synchronization with specified device """ def on_error(*a): log.error(a) + self._rest_post("system/resume?device=%s" % (device_id,), {}, lambda *a: a, lambda *a: log.error(a), device_id) + + def rescan(self, folder_id, path=None): + """ Asks daemon to rescan entire folder or specified path """ if path is None: - self._rest_post("db/scan?folder=%s" % (folder_id,), {}, lambda *a: a, on_error, folder_id) + self._rest_post("db/scan?folder=%s" % (folder_id,), {}, lambda *a: a, lambda *a: log.error(a), folder_id) else: path_enc = urllib.quote(path.encode('utf-8'), ''.encode('utf-8')) self._rest_post("db/scan?folder=%s&sub=%s" % (folder_id, path_enc), {}, lambda *a: a, on_error, folder_id) def override(self, folder_id): """ Asks daemon to override changes made in specified folder """ - def on_error(*a): - log.error(a) - self._rest_post("model/override?folder=%s" % (folder_id,), {}, lambda *a: a, on_error, folder_id) + self._rest_post("model/override?folder=%s" % (folder_id,), {}, lambda *a: a, lambda *a: log.error(a), folder_id) def request_events(self): """