bound contextmenu to the file list
This commit is contained in:
parent
41706acc51
commit
637351b3b6
107
src/dialogs.py
107
src/dialogs.py
|
@ -1598,6 +1598,15 @@ class FileTransfersWindow:
|
|||
self.tree.get_selection().set_select_function(self.select_func)
|
||||
self.tooltip = FileTransfersTooltip()
|
||||
self.xml.signal_autoconnect(self)
|
||||
popup_xml = gtk.glade.XML(GTKGUI_GLADE, 'file_transfers_menu',
|
||||
APP)
|
||||
self.file_transfers_menu = popup_xml.get_widget('file_transfers_menu')
|
||||
self.open_folder_menuitem = popup_xml.get_widget('open_folder_menuitem')
|
||||
self.stop_menuitem = popup_xml.get_widget('stop_menuitem')
|
||||
self.pause_menuitem = popup_xml.get_widget('pause_menuitem')
|
||||
self.remove_menuitem = popup_xml.get_widget('remove_menuitem')
|
||||
self.clean_up_menuitem = popup_xml.get_widget('clean_up_menuitem')
|
||||
popup_xml.signal_autoconnect(self)
|
||||
|
||||
def show_completed(self, jid, file_props):
|
||||
self.window.present()
|
||||
|
@ -1871,7 +1880,10 @@ _('Connection with peer cannot be established.')).get_response()
|
|||
def is_transfer_paused(self, file_props):
|
||||
if file_props.has_key('error') and file_props['error'] != 0:
|
||||
return False
|
||||
if file_props['completed'] or file_props['disconnect_cb'] is None:
|
||||
if file_props['completed']:
|
||||
return False
|
||||
if file_props.has_key('disconnect_cb') or \
|
||||
file_props['disconnect_cb'] is None:
|
||||
return False
|
||||
return file_props['paused']
|
||||
|
||||
|
@ -1903,20 +1915,29 @@ _('Connection with peer cannot be established.')).get_response()
|
|||
sid = self.model[current_iter][4]
|
||||
file_props = self.files_props[sid[0]][sid[1:]]
|
||||
self.remove_button.set_sensitive(not is_selected)
|
||||
self.remove_menuitem.set_sensitive(not is_selected)
|
||||
if self.is_transfer_stoped(file_props):
|
||||
is_selected = True
|
||||
self.cancel_button.set_sensitive(not is_selected)
|
||||
self.stop_menuitem.set_sensitive(not is_selected)
|
||||
if is_selected:
|
||||
self.pause_button.set_sensitive(False)
|
||||
self.pause_menuitem.set_sensitive(False)
|
||||
else:
|
||||
if self.is_transfer_active(file_props):
|
||||
self.pause_button.set_sensitive(True)
|
||||
self.pause_button.set_label(_('_Pause'))
|
||||
self.pause_menuitem.set_sensitive(True)
|
||||
label = _('_Pause')
|
||||
self.pause_button.set_label(label)
|
||||
self.pause_menuitem.set_label(label)
|
||||
elif self.is_transfer_paused(file_props):
|
||||
self.pause_button.set_sensitive(True)
|
||||
self.pause_button.set_label(_('_Continue'))
|
||||
label = _('_Continue')
|
||||
self.pause_button.set_label(label)
|
||||
self.pause_menuitem.set_label(label)
|
||||
else:
|
||||
self.pause_button.set_sensitive(False)
|
||||
self.pause_menuitem.set_sensitive(False)
|
||||
return True
|
||||
|
||||
def on_remove_button_clicked(self, widget):
|
||||
|
@ -1930,7 +1951,8 @@ _('Connection with peer cannot be established.')).get_response()
|
|||
file_props['disconnect_cb']()
|
||||
self.model.remove(s_iter)
|
||||
self.remove_button.set_sensitive(False)
|
||||
|
||||
self.remove_menuitem.set_sensitive(False)
|
||||
|
||||
def on_pause_restore_button_clicked(self, widget):
|
||||
selected = self.tree.get_selection().get_selected()
|
||||
if selected is None or selected[1] is None:
|
||||
|
@ -1961,6 +1983,9 @@ _('Connection with peer cannot be established.')).get_response()
|
|||
self.set_status(file_props['type'], file_props['sid'], 'stop')
|
||||
|
||||
def show_tooltip(self, widget):
|
||||
if self.height_diff == 0:
|
||||
self.tooltip.hide_tooltip()
|
||||
return
|
||||
pointer = self.tree.get_pointer()
|
||||
props = self.tree.get_path_at_pos(pointer[0],
|
||||
pointer[1] - self.height_diff)
|
||||
|
@ -1988,3 +2013,77 @@ _('Connection with peer cannot be established.')).get_response()
|
|||
|
||||
def on_close_button_clicked(self, widget):
|
||||
self.window.hide()
|
||||
|
||||
def show_context_menu(self, event, iter):
|
||||
event_button = self.get_possible_button_event(event)
|
||||
self.file_transfers_menu.popup(None, self.tree, None,
|
||||
event_button, event.time)
|
||||
self.file_transfers_menu.show_all()
|
||||
|
||||
def get_possible_button_event(self, event):
|
||||
'''mouse or keyboard caused the event?'''
|
||||
if event.type == gtk.gdk.KEY_PRESS:
|
||||
event_button = 0 # no event.button so pass 0
|
||||
else: # BUTTON_PRESS event, so pass event.button
|
||||
event_button = event.button
|
||||
|
||||
return event_button
|
||||
|
||||
def on_transfers_list_key_press_event(self, widget, event):
|
||||
'''when a key is pressed in the treeviews'''
|
||||
self.tooltip.hide_tooltip()
|
||||
try:
|
||||
store, iter = self.tree.get_selection().get_selected()
|
||||
except TypeError:
|
||||
self.tree.get_selection().unselect_all()
|
||||
return
|
||||
if iter is None:
|
||||
return
|
||||
path = self.model.get_path(iter)
|
||||
self.tree.get_selection().select_path(path)
|
||||
|
||||
if event.keyval == gtk.keysyms.Menu:
|
||||
self.show_context_menu(event, iter)
|
||||
return True
|
||||
|
||||
def on_transfers_list_button_press_event(self, widget, event):
|
||||
# hide tooltip, no matter the button is pressed
|
||||
self.tooltip.hide_tooltip()
|
||||
if event.button == 3: # Right click
|
||||
try:
|
||||
path, column, x, y = self.tree.get_path_at_pos(int(event.x),
|
||||
int(event.y))
|
||||
except TypeError:
|
||||
self.tree.get_selection().unselect_all()
|
||||
return
|
||||
self.tree.get_selection().select_path(path)
|
||||
model = self.tree.get_model()
|
||||
iter = model.get_iter(path)
|
||||
self.show_context_menu(event, iter)
|
||||
return True
|
||||
|
||||
def on_clean_up_menuitem_activate(self, widget):
|
||||
i = len(self.model) - 1
|
||||
while i >= 0:
|
||||
iter = self.model.get_iter((i))
|
||||
sid = self.model[iter][4]
|
||||
file_props = self.files_props[sid[0]][sid[1:]]
|
||||
if file_props.has_key('completed') and file_props['completed']:
|
||||
self.model.remove(iter)
|
||||
i -= 1
|
||||
|
||||
self.remove_button.set_sensitive(False)
|
||||
self.remove_menuitem.set_sensitive(False)
|
||||
|
||||
def on_open_folder_menuitem_activate(self, widget):
|
||||
pass
|
||||
|
||||
def on_stop_menuitem_activate(self, widget):
|
||||
self.on_cancel_button_clicked(widget)
|
||||
|
||||
def on_pause_menuitem_activate(self, widget):
|
||||
self.on_pause_restore_button_clicked(widget)
|
||||
# TODO change the stock
|
||||
|
||||
def on_remove_menuitem_activate(self, widget):
|
||||
self.on_remove_button_clicked(widget)
|
||||
|
|
|
@ -17541,6 +17541,8 @@ Maybe I'll refactor later</property>
|
|||
<signal name="row_activated" handler="on_transfers_list_row_activated" last_modification_time="Wed, 31 Aug 2005 22:32:25 GMT"/>
|
||||
<signal name="motion_notify_event" handler="on_transfers_list_motion_notify_event" last_modification_time="Wed, 31 Aug 2005 22:33:10 GMT"/>
|
||||
<signal name="leave_notify_event" handler="on_transfers_list_leave_notify_event" last_modification_time="Wed, 31 Aug 2005 22:33:23 GMT"/>
|
||||
<signal name="button_press_event" handler="on_transfers_list_button_press_event" last_modification_time="Wed, 31 Aug 2005 22:33:23 GMT"/>
|
||||
<signal name="key_press_event" handler="on_transfers_list_key_press_event" last_modification_time="Wed, 31 Aug 2005 22:33:23 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
|
@ -17663,6 +17665,7 @@ Maybe I'll refactor later</property>
|
|||
<widget class="GtkImageMenuItem" id="remove_menuitem">
|
||||
<property name="label">gtk-remove</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="activate" handler="on_remove_menuitem_activate" last_modification_time="Fri, 09 Sep 2005 22:48:03 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
|
@ -17670,9 +17673,10 @@ Maybe I'll refactor later</property>
|
|||
<widget class="GtkImageMenuItem" id="pause_menuitem">
|
||||
<property name="label" translatable="yes">_Pause</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_pause_menuitem_activate" last_modification_time="Fri, 09 Sep 2005 22:48:03 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1118">
|
||||
<widget class="GtkImage" id="image1122">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-media-pause</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
@ -17689,6 +17693,7 @@ Maybe I'll refactor later</property>
|
|||
<widget class="GtkImageMenuItem" id="stop_menuitem">
|
||||
<property name="label">gtk-cancel</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="activate" handler="on_stop_menuitem_activate" last_modification_time="Fri, 09 Sep 2005 22:48:03 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
|
@ -17702,9 +17707,10 @@ Maybe I'll refactor later</property>
|
|||
<widget class="GtkImageMenuItem" id="open_folder_menuitem">
|
||||
<property name="label" translatable="yes">_Open containing folder</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_open_folder_menuitem_activate" last_modification_time="Fri, 09 Sep 2005 22:48:03 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1119">
|
||||
<widget class="GtkImage" id="image1123">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-directory</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
@ -17722,9 +17728,10 @@ Maybe I'll refactor later</property>
|
|||
<property name="tooltip" translatable="yes">Removes completed, canceled and failed file transfers from the list</property>
|
||||
<property name="label" translatable="yes">Clean u_p</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_clean_up_menuitem_activate" last_modification_time="Fri, 09 Sep 2005 22:48:03 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image1120">
|
||||
<widget class="GtkImage" id="image1124">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-clear</property>
|
||||
<property name="icon_size">1</property>
|
||||
|
|
Loading…
Reference in New Issue