separate buttons for resume/pause

This commit is contained in:
Marcos Pinto 2007-07-27 23:02:42 +00:00
parent 371b18d855
commit eaafe81a07
3 changed files with 66 additions and 36 deletions

View File

@ -66,14 +66,26 @@
</packing>
</child>
<child>
<widget class="GtkToolButton" id="toolbutton_pause">
<widget class="GtkToolButton" id="toolbutton_resume">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="tooltip" translatable="yes">Start or Pause torrent</property>
<property name="label" translatable="yes">Start</property>
<property name="label" translatable="yes">Resume</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-media-play</property>
<signal name="clicked" handler="start_pause"/>
<signal name="clicked" handler="tor_start"/>
</widget>
<packing>
<property name="expand">False</property>
</packing>
</child>
<child>
<widget class="GtkToolButton" id="toolbutton_pause">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Pause</property>
<property name="stock_id">gtk-media-pause</property>
<signal name="clicked" handler="tor_pause"/>
</widget>
<packing>
<property name="expand">False</property>

View File

@ -5,13 +5,35 @@
<widget class="GtkMenu" id="torrent_menu">
<property name="visible">True</property>
<child>
<widget class="GtkImageMenuItem" id="menu_pause">
<widget class="GtkImageMenuItem" id="menu_resume">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label">gtk-media-pause</property>
<property name="label" translatable="yes">Resume</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<signal name="activate" handler="start_pause"/>
<signal name="activate" handler="tor_start"/>
<child internal-child="image">
<widget class="GtkImage" id="menu-item-image13">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="stock">gtk-media-play</property>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="menu_resume">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Pause</property>
<property name="use_underline">True</property>
<signal name="activate" handler="tor_pause"/>
<child internal-child="image">
<widget class="GtkImage" id="menu-item-image14">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="stock">gtk-media-pause</property>
</widget>
</child>
</widget>
</child>
<child>

View File

@ -145,7 +145,8 @@ class DelugeGTK:
"show_about_dialog": self.show_about_dialog,
"launchpad": self.launchpad,
## Toolbar
"start_pause": self.start_pause,
"tor_start": self.tor_start,
"tor_pause": self.tor_pause,
"update_tracker": self.update_tracker,
"clear_finished": self.clear_finished,
"queue_up": self.q_torrent_up,
@ -435,7 +436,8 @@ class DelugeGTK:
self.torrent_glade.signal_autoconnect({
"remove_torrent": self.remove_torrent_clicked,
"edit_trackers": self.list_of_trackers,
"start_pause": self.start_pause,
"tor_start": self.tor_start,
"tor_pause": self.tor_pause,
"update_tracker": self.update_tracker,
"clear_finished": self.clear_finished,
"queue_up": self.q_torrent_up,
@ -565,12 +567,6 @@ class DelugeGTK:
# Get the torrent state so we can check if the torrent is paused.
torrent_state = self.manager.get_torrent_state(unique_id)
widget = self.torrent_glade.get_widget("menu_pause")
if torrent_state["is_paused"]:
widget.set_image(gtk.image_new_from_stock(gtk.STOCK_MEDIA_PLAY, gtk.ICON_SIZE_MENU))
widget.get_children()[0].set_text(_("Resume"))
else:
widget.set_image(gtk.image_new_from_stock(gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_MENU))
widget.get_children()[0].set_text(_("Pause"))
self.torrent_menu.popup(None, None, None, event.button,
event.time)
@ -579,13 +575,27 @@ class DelugeGTK:
else:
return False
def start_pause(self, widget):
def tor_start(self, widget):
unique_ids = self.get_selected_torrent_rows()
try:
for uid in unique_ids:
self.manager.set_user_pause(uid, not self.manager.is_user_paused(uid))
torrent_state = self.manager.get_torrent_state(uid)
if torrent_state["is_paused"]:
self.manager.set_user_pause(uid, False)
self.update()
except KeyError:
pass
def tor_pause(self, widget):
unique_ids = self.get_selected_torrent_rows()
try:
for uid in unique_ids:
torrent_state = self.manager.get_torrent_state(uid)
if torrent_state["is_paused"] == 0:
self.manager.set_user_pause(uid, True, True)
# We need to force an update so the GUI looks more responsive
self.update()
except KeyError:
@ -594,22 +604,7 @@ class DelugeGTK:
def torrent_menu_focus(self, widget, direction):
menuitem = self.torrent_glade.get_widget("menu_pause")
# Check if we are selecting multiple torrents
if len(self.get_selected_torrent_rows()) > 1:
menuitem.set_image(gtk.image_new_from_stock(gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_MENU))
menuitem.get_children()[0].set_text(_("Pause/Resume"))
return
# Get the selected torrent state so we can check if the torrent is paused.
unique_id = self.get_selected_torrent()
if unique_id is None:
return
torrent_state = self.manager.get_torrent_state(unique_id)
if torrent_state["is_paused"]:
menuitem.set_image(gtk.image_new_from_stock(gtk.STOCK_MEDIA_PLAY, gtk.ICON_SIZE_MENU))
menuitem.get_children()[0].set_text(_("Resume"))
else:
menuitem.set_image(gtk.image_new_from_stock(gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_MENU))
menuitem.get_children()[0].set_text(_("Pause"))
return
def build_peer_tab(self):
self.peer_view = self.wtree.get_widget("peer_view")
@ -841,6 +836,7 @@ class DelugeGTK:
# Disable torrent options if there are no torrents
self.wtree.get_widget("menu_torrent").set_sensitive(itr is not None)
self.wtree.get_widget("toolbutton_remove").set_sensitive(itr is not None)
self.wtree.get_widget("toolbutton_resume").set_sensitive(itr is not None)
self.wtree.get_widget("toolbutton_pause").set_sensitive(itr is not None)
self.wtree.get_widget("toolbutton_up").set_sensitive(itr is not None)
self.wtree.get_widget("toolbutton_down").set_sensitive(itr is not None)
@ -925,8 +921,8 @@ class DelugeGTK:
unique_id = self.torrent_model.get_value(self.torrent_model.get_iter(path), 0)
if self.manager.get_torrent_state(unique_id)["is_paused"]:
self.wtree.get_widget("toolbutton_pause").set_stock_id(gtk.STOCK_MEDIA_PLAY)
self.wtree.get_widget("toolbutton_pause").set_label(_("Resume"))
self.wtree.get_widget("toolbutton_resume").set_stock_id(gtk.STOCK_MEDIA_PLAY)
self.wtree.get_widget("toolbutton_resume").set_label(_("Resume"))
else:
self.wtree.get_widget("toolbutton_pause").set_stock_id(gtk.STOCK_MEDIA_PAUSE)
self.wtree.get_widget("toolbutton_pause").set_label(_("Pause"))