diff --git a/plugins/MoveTorrent/__init__.py b/plugins/MoveTorrent/__init__.py index 714c0639a..7331afcfc 100644 --- a/plugins/MoveTorrent/__init__.py +++ b/plugins/MoveTorrent/__init__.py @@ -70,20 +70,27 @@ class movetorrentMenu: except IOError: pass - self.menuitem_image = gtk.Image() - self.menuitem_image.set_from_stock(gtk.STOCK_SAVE_AS, gtk.ICON_SIZE_MENU) - - self.menuitem = gtk.ImageMenuItem(_("_Move Torrent")) - self.menuitem.set_image(self.menuitem_image) - self.menuitem.connect("activate", self.movetorrent_clicked) - self.interface.torrent_menu.append(self.menuitem) - self.menuitem.show_all() + self.moveitem_image = gtk.Image() + self.moveitem_image.set_from_stock(gtk.STOCK_SAVE_AS, gtk.ICON_SIZE_MENU) + self.moveitem = gtk.ImageMenuItem(_("_Move Torrent")) + self.moveitem.set_image(self.moveitem_image) + self.moveitem.connect("activate", self.movetorrent_clicked) + self.interface.torrent_menu.append(self.moveitem) + self.moveitem.show_all() + self.switchitem_image = gtk.Image() + self.switchitem_image.set_from_stock(gtk.STOCK_CONVERT, gtk.ICON_SIZE_MENU) + self.switchitem = gtk.ImageMenuItem(_("_Switch Torrent Source")) + self.switchitem.set_image(self.switchitem_image) + self.switchitem.connect("activate", self.switchtorrent_clicked) + self.interface.torrent_menu.append(self.switchitem) + self.switchitem.show_all() def update(self): pass def unload(self): - self.interface.torrent_menu.remove(self.menuitem) + self.interface.torrent_menu.remove(self.moveitem) + self.interface.torrent_menu.remove(self.switchitem) self.core.disconnect_event(self.core.constants['EVENT_STORAGE_MOVED'], self.handle_event) self.core.disconnect_event(self.core.constants['EVENT_FINISHED'], self.handle_event) self.config.save(self.config_file) @@ -98,6 +105,9 @@ class movetorrentMenu: for unique_id in unique_ids: self.core.move_storage(unique_id, path) + def switchtorrent_clicked(self, widget): + self.interface.torrent_switch_recheck(switch=True) + def configure(self, window): try: self.glade.get_widget("chk_move_completed").set_active(self.config.get("enable_move_completed")) diff --git a/src/interface.py b/src/interface.py index 3bebc7e56..721117fb6 100644 --- a/src/interface.py +++ b/src/interface.py @@ -564,7 +564,7 @@ window, please enter your password")) "remove_torrent": self.remove_torrent_clicked, "edit_trackers": self.list_of_trackers, "tor_start": self.tor_start, - "torrent_recheck": self.torrent_recheck, + "torrent_switch_recheck": self.torrent_switch_recheck, "tor_pause": self.tor_pause, "update_tracker": self.update_tracker, "clear_finished": self.clear_finished, @@ -760,57 +760,72 @@ window, please enter your password")) except KeyError: pass - def torrent_recheck(self, widget): + def torrent_switch_recheck(self, widget=None, switch=False): unique_ids = self.get_selected_torrent_rows() for uid in unique_ids: torrent_state = self.manager.get_torrent_state(uid) order = torrent_state['queue_pos'] path = self.manager.unique_IDs[uid].filename - save_dir = self.manager.unique_IDs[uid].save_dir - trackerslist = self.manager.unique_IDs[uid].trackers - try: - trackers_changed = self.manager.unique_IDs[uid].trackers_changed - except AttributeError: - trackers_changed = 0 - self.manager.save_upmem() - uploaded_memory = self.manager.unique_IDs[uid].uploaded_memory - priorities = self.manager.get_priorities(uid) - save_info = [path, save_dir, order, trackerslist, \ - uploaded_memory, priorities, trackers_changed] - try: - os.remove(self.manager.unique_IDs[uid].filename + ".fastresume") - except: - pass - self.manager.remove_torrent(uid, False, False) - self.torrent_model_remove(uid) - self.update() - unique_ID = self.manager.add_torrent(save_info[0], save_info[1], \ - self.config.get("use_compact_storage")) - self.torrent_model_append(unique_ID) - self.update() - self.manager.prioritize_files(unique_ID, save_info[5], update_files_removed=False) - if save_info[4]: - self.manager.unique_IDs[unique_ID].initial_uploaded_memory = \ - save_info[4] - self.manager.save_upmem() - if save_info[6]: - try: - self.manager.replace_trackers(unique_ID, save_info[3]) - except: - pass - torrent_state = self.manager.get_torrent_state(unique_ID) - current_order = torrent_state['queue_pos'] - if current_order > save_info[2]: - diff = current_order - save_info[2] - for x in range(diff): - self.manager.queue_up(unique_ID) - self.update() + if not switch: + save_dir = self.manager.unique_IDs[uid].save_dir else: - diff = save_info[2] - current_order - for x in range(diff): - self.manager.queue_down(unique_ID) + save_dir = dialogs.show_directory_chooser_dialog(self.window, \ + _("Choose a directory to switch torrent source to" + " - %s" % \ + self.manager.get_torrent_state(uid)['name'])) + if save_dir: + delete_old = dialogs.show_popup_question(self.window, \ + _("Delete the old torrent source?")) + else: + delete_old = False + if save_dir: + trackerslist = self.manager.unique_IDs[uid].trackers + try: + trackers_changed = self.manager.unique_IDs[uid].trackers_changed + except AttributeError: + trackers_changed = 0 + self.manager.save_upmem() + uploaded_memory = self.manager.unique_IDs[uid].uploaded_memory + priorities = self.manager.get_priorities(uid) + save_info = [path, save_dir, order, trackerslist, \ + uploaded_memory, priorities, trackers_changed, \ + delete_old] + try: + os.remove(self.manager.unique_IDs[uid].filename + ".fastresume") + except: + pass + if save_info[7]: + self.manager.remove_torrent(uid, True, False) + else: + self.manager.remove_torrent(uid, False, False) + self.torrent_model_remove(uid) self.update() - + unique_ID = self.manager.add_torrent(save_info[0], save_info[1], \ + self.config.get("use_compact_storage")) + self.torrent_model_append(unique_ID) + self.update() + self.manager.prioritize_files(unique_ID, save_info[5], update_files_removed=False) + if save_info[4]: + self.manager.unique_IDs[unique_ID].initial_uploaded_memory = \ + save_info[4] + self.manager.save_upmem() + if save_info[6]: + try: + self.manager.replace_trackers(unique_ID, save_info[3]) + except: + pass + torrent_state = self.manager.get_torrent_state(unique_ID) + current_order = torrent_state['queue_pos'] + if current_order > save_info[2]: + diff = current_order - save_info[2] + for x in range(diff): + self.manager.queue_up(unique_ID) + self.update() + else: + diff = save_info[2] - current_order + for x in range(diff): + self.manager.queue_down(unique_ID) + self.update() + def tor_start(self, widget): unique_ids = self.get_selected_torrent_rows() try: