change sensitive on all context menus,
open in current folder, context menu even if not over row
This commit is contained in:
parent
5d3f81a9c3
commit
5bb3148d8f
101
src/dialogs.py
101
src/dialogs.py
|
@ -770,25 +770,25 @@ class FileTransfersTooltip(BaseTooltip):
|
||||||
if not file_props.has_key('started') or not file_props['started']:
|
if not file_props.has_key('started') or not file_props['started']:
|
||||||
status = _('not started')
|
status = _('not started')
|
||||||
elif file_props.has_key('connected'):
|
elif file_props.has_key('connected'):
|
||||||
if file_props['connected'] == False:
|
if file_props.has_key('stopped') and \
|
||||||
|
file_props['stopped'] == True:
|
||||||
|
status = _('stopped')
|
||||||
|
elif file_props['completed']:
|
||||||
|
status = _('completed')
|
||||||
|
elif file_props['connected'] == False:
|
||||||
if file_props['completed']:
|
if file_props['completed']:
|
||||||
status = _('completed')
|
status = _('completed')
|
||||||
else:
|
else:
|
||||||
if file_props.has_key('stopped') and \
|
if file_props.has_key('paused') and \
|
||||||
file_props['stopped'] == True:
|
|
||||||
status = _('stopped')
|
|
||||||
elif file_props.has_key('paused') and \
|
|
||||||
file_props['paused'] == True:
|
file_props['paused'] == True:
|
||||||
status = _('paused')
|
status = _('paused')
|
||||||
elif file_props.has_key('stalled') and \
|
elif file_props.has_key('stalled') and \
|
||||||
file_props['stalled'] == True:
|
file_props['stalled'] == True:
|
||||||
status = _('stalled')
|
status = _('stalled')
|
||||||
elif file_props['completed']:
|
|
||||||
status = _('completed')
|
|
||||||
else:
|
else:
|
||||||
status = _('transferring')
|
status = _('transferring')
|
||||||
else:
|
else:
|
||||||
status = _('stopped')
|
status = _('not started')
|
||||||
|
|
||||||
text += status
|
text += status
|
||||||
self.text_lable.set_markup(text)
|
self.text_lable.set_markup(text)
|
||||||
|
@ -1274,6 +1274,10 @@ class PopupNotificationWindow:
|
||||||
elif self.msg_type == 'file-error': # file transfer ended unexpectedly
|
elif self.msg_type == 'file-error': # file transfer ended unexpectedly
|
||||||
self.plugin.windows['file_transfers'].show_stopped(self.jid,
|
self.plugin.windows['file_transfers'].show_stopped(self.jid,
|
||||||
self.file_props)
|
self.file_props)
|
||||||
|
elif self.msg_type == 'file-request-error': # file transfer ended unexpectedly
|
||||||
|
self.plugin.windows['file_transfers'].show_send_error(self.file_props)
|
||||||
|
elif self.msg_type == 'file-send-error': # file transfer ended unexpectedly
|
||||||
|
self.plugin.windows['file_transfers'].show_send_error(self.file_props)
|
||||||
else: # 'chat'
|
else: # 'chat'
|
||||||
self.plugin.roster.new_chat(contact, self.account)
|
self.plugin.roster.new_chat(contact, self.account)
|
||||||
chats_window = self.plugin.windows[self.account]['chats'][self.jid]
|
chats_window = self.plugin.windows[self.account]['chats'][self.jid]
|
||||||
|
@ -1584,6 +1588,7 @@ class FileTransfersWindow:
|
||||||
renderer.set_property('xalign', 0.)
|
renderer.set_property('xalign', 0.)
|
||||||
renderer.set_property('yalign', 0.)
|
renderer.set_property('yalign', 0.)
|
||||||
col.set_resizable(True)
|
col.set_resizable(True)
|
||||||
|
|
||||||
self.tree.append_column(col)
|
self.tree.append_column(col)
|
||||||
|
|
||||||
col = gtk.TreeViewColumn(_('Progress'))
|
col = gtk.TreeViewColumn(_('Progress'))
|
||||||
|
@ -1630,7 +1635,7 @@ class FileTransfersWindow:
|
||||||
InformationDialog(_('File transfer canceled'), _('Connection with peer cannot be established.')).get_response()
|
InformationDialog(_('File transfer canceled'), _('Connection with peer cannot be established.')).get_response()
|
||||||
self.tree.get_selection().unselect_all()
|
self.tree.get_selection().unselect_all()
|
||||||
|
|
||||||
def show_send_error(self, jid, file_props):
|
def show_send_error(self, file_props):
|
||||||
self.window.present()
|
self.window.present()
|
||||||
self.window.window.focus()
|
self.window.window.focus()
|
||||||
InformationDialog(_('File transfer canceled'),
|
InformationDialog(_('File transfer canceled'),
|
||||||
|
@ -1886,7 +1891,7 @@ _('Connection with peer cannot be established.')).get_response()
|
||||||
def is_transfer_paused(self, file_props):
|
def is_transfer_paused(self, file_props):
|
||||||
if file_props.has_key('stopped') and file_props['stopped']:
|
if file_props.has_key('stopped') and file_props['stopped']:
|
||||||
return False
|
return False
|
||||||
if file_props['completed']:
|
if file_props.has_key('completed') and file_props['completed']:
|
||||||
return False
|
return False
|
||||||
if not file_props.has_key('disconnect_cb'):
|
if not file_props.has_key('disconnect_cb'):
|
||||||
return False
|
return False
|
||||||
|
@ -1895,10 +1900,12 @@ _('Connection with peer cannot be established.')).get_response()
|
||||||
def is_transfer_active(self, file_props):
|
def is_transfer_active(self, file_props):
|
||||||
if file_props.has_key('stopped') and file_props['stopped']:
|
if file_props.has_key('stopped') and file_props['stopped']:
|
||||||
return False
|
return False
|
||||||
|
if file_props.has_key('completed') and file_props['completed']:
|
||||||
if file_props['completed']:
|
return False
|
||||||
pass
|
if not file_props.has_key('started') or not file_props['started']:
|
||||||
|
return False
|
||||||
|
if not file_props.has_key('paused'):
|
||||||
|
return True
|
||||||
return not file_props['paused']
|
return not file_props['paused']
|
||||||
|
|
||||||
def is_transfer_stoped(self, file_props):
|
def is_transfer_stoped(self, file_props):
|
||||||
|
@ -1919,13 +1926,18 @@ _('Connection with peer cannot be established.')).get_response()
|
||||||
self.remove_menuitem.set_sensitive(False)
|
self.remove_menuitem.set_sensitive(False)
|
||||||
self.cancel_button.set_sensitive(False)
|
self.cancel_button.set_sensitive(False)
|
||||||
self.cancel_menuitem.set_sensitive(False)
|
self.cancel_menuitem.set_sensitive(False)
|
||||||
|
self.open_folder_menuitem.set_sensitive(False)
|
||||||
|
|
||||||
def set_buttons_sensitive(self, path, is_row_selected):
|
def set_buttons_sensitive(self, path, is_row_selected):
|
||||||
|
if path is None:
|
||||||
|
self.set_all_insensitive()
|
||||||
|
return
|
||||||
current_iter = self.model.get_iter(path)
|
current_iter = self.model.get_iter(path)
|
||||||
sid = self.model[current_iter][4]
|
sid = self.model[current_iter][4]
|
||||||
file_props = self.files_props[sid[0]][sid[1:]]
|
file_props = self.files_props[sid[0]][sid[1:]]
|
||||||
self.remove_button.set_sensitive(is_row_selected)
|
self.remove_button.set_sensitive(is_row_selected)
|
||||||
self.remove_menuitem.set_sensitive(is_row_selected)
|
self.remove_menuitem.set_sensitive(is_row_selected)
|
||||||
|
self.open_folder_menuitem.set_sensitive(is_row_selected)
|
||||||
is_stopped = False
|
is_stopped = False
|
||||||
if self.is_transfer_stoped(file_props):
|
if self.is_transfer_stoped(file_props):
|
||||||
is_stopped = True
|
is_stopped = True
|
||||||
|
@ -1947,6 +1959,10 @@ _('Connection with peer cannot be established.')).get_response()
|
||||||
self.pause_button.set_sensitive(False)
|
self.pause_button.set_sensitive(False)
|
||||||
self.pause_menuitem.set_sensitive(False)
|
self.pause_menuitem.set_sensitive(False)
|
||||||
self.continue_menuitem.set_sensitive(False)
|
self.continue_menuitem.set_sensitive(False)
|
||||||
|
else:
|
||||||
|
self.pause_button.set_sensitive(False)
|
||||||
|
self.pause_menuitem.set_sensitive(False)
|
||||||
|
self.continue_menuitem.set_sensitive(False)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def select_func(self, path):
|
def select_func(self, path):
|
||||||
|
@ -2067,7 +2083,13 @@ _('Connection with peer cannot be established.')).get_response()
|
||||||
|
|
||||||
def show_context_menu(self, event, iter):
|
def show_context_menu(self, event, iter):
|
||||||
# change the sensitive propery of the buttons and menuitems
|
# change the sensitive propery of the buttons and menuitems
|
||||||
path = self.model.get_path(iter)
|
if len(self.model) == 0:
|
||||||
|
self.clean_up_menuitem.set_sensitive(False)
|
||||||
|
else:
|
||||||
|
self.clean_up_menuitem.set_sensitive(True)
|
||||||
|
path = None
|
||||||
|
if iter is not None:
|
||||||
|
path = self.model.get_path(iter)
|
||||||
self.set_buttons_sensitive(path, True)
|
self.set_buttons_sensitive(path, True)
|
||||||
|
|
||||||
event_button = self.get_possible_button_event(event)
|
event_button = self.get_possible_button_event(event)
|
||||||
|
@ -2087,16 +2109,16 @@ _('Connection with peer cannot be established.')).get_response()
|
||||||
def on_transfers_list_key_press_event(self, widget, event):
|
def on_transfers_list_key_press_event(self, widget, event):
|
||||||
'''when a key is pressed in the treeviews'''
|
'''when a key is pressed in the treeviews'''
|
||||||
self.tooltip.hide_tooltip()
|
self.tooltip.hide_tooltip()
|
||||||
|
iter = None
|
||||||
try:
|
try:
|
||||||
store, iter = self.tree.get_selection().get_selected()
|
store, iter = self.tree.get_selection().get_selected()
|
||||||
except TypeError:
|
except TypeError:
|
||||||
self.tree.get_selection().unselect_all()
|
self.tree.get_selection().unselect_all()
|
||||||
return
|
|
||||||
if iter is None:
|
if iter is not None:
|
||||||
return
|
path = self.model.get_path(iter)
|
||||||
path = self.model.get_path(iter)
|
self.tree.get_selection().select_path(path)
|
||||||
self.tree.get_selection().select_path(path)
|
|
||||||
|
|
||||||
if event.keyval == gtk.keysyms.Menu:
|
if event.keyval == gtk.keysyms.Menu:
|
||||||
self.show_context_menu(event, iter)
|
self.show_context_menu(event, iter)
|
||||||
return True
|
return True
|
||||||
|
@ -2105,29 +2127,33 @@ _('Connection with peer cannot be established.')).get_response()
|
||||||
def on_transfers_list_button_release_event(self, widget, event):
|
def on_transfers_list_button_release_event(self, widget, event):
|
||||||
# hide tooltip, no matter the button is pressed
|
# hide tooltip, no matter the button is pressed
|
||||||
self.tooltip.hide_tooltip()
|
self.tooltip.hide_tooltip()
|
||||||
|
path = None
|
||||||
try:
|
try:
|
||||||
path, column, x, y = self.tree.get_path_at_pos(int(event.x),
|
path, column, x, y = self.tree.get_path_at_pos(int(event.x),
|
||||||
int(event.y))
|
int(event.y))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
self.tree.get_selection().unselect_all()
|
self.tree.get_selection().unselect_all()
|
||||||
return
|
if path is None:
|
||||||
self.select_func(path)
|
self.set_all_insensitive()
|
||||||
|
else:
|
||||||
|
self.select_func(path)
|
||||||
|
|
||||||
def on_transfers_list_button_press_event(self, widget, event):
|
def on_transfers_list_button_press_event(self, widget, event):
|
||||||
# hide tooltip, no matter the button is pressed
|
# hide tooltip, no matter the button is pressed
|
||||||
self.tooltip.hide_tooltip()
|
self.tooltip.hide_tooltip()
|
||||||
|
path, iter = None, None
|
||||||
try:
|
try:
|
||||||
path, column, x, y = self.tree.get_path_at_pos(int(event.x),
|
path, column, x, y = self.tree.get_path_at_pos(int(event.x),
|
||||||
int(event.y))
|
int(event.y))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
self.tree.get_selection().unselect_all()
|
self.tree.get_selection().unselect_all()
|
||||||
return
|
|
||||||
if event.button == 3: # Right click
|
if event.button == 3: # Right click
|
||||||
self.tree.get_selection().select_path(path)
|
if path is not None:
|
||||||
model = self.tree.get_model()
|
self.tree.get_selection().select_path(path)
|
||||||
iter = model.get_iter(path)
|
iter = self.model.get_iter(path)
|
||||||
self.show_context_menu(event, iter)
|
self.show_context_menu(event, iter)
|
||||||
return True
|
if path is not None:
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def on_clean_up_menuitem_activate(self, widget):
|
def on_clean_up_menuitem_activate(self, widget):
|
||||||
|
@ -2141,14 +2167,23 @@ _('Connection with peer cannot be established.')).get_response()
|
||||||
elif file_props.has_key('stopped') and file_props['stopped']:
|
elif file_props.has_key('stopped') and file_props['stopped']:
|
||||||
self.model.remove(iter)
|
self.model.remove(iter)
|
||||||
i -= 1
|
i -= 1
|
||||||
|
self.tree.get_selection().unselect_all()
|
||||||
self.remove_button.set_sensitive(False)
|
self.set_all_insensitive()
|
||||||
self.remove_menuitem.set_sensitive(False)
|
|
||||||
|
|
||||||
def on_open_folder_menuitem_activate(self, widget):
|
def on_open_folder_menuitem_activate(self, widget):
|
||||||
pass
|
selected = self.tree.get_selection().get_selected()
|
||||||
|
if selected is None or selected[1] is None:
|
||||||
|
return
|
||||||
|
s_iter = selected[1]
|
||||||
|
sid = self.model[s_iter][4]
|
||||||
|
file_props = self.files_props[sid[0]][sid[1:]]
|
||||||
|
if not file_props.has_key('file-name'):
|
||||||
|
return
|
||||||
|
(path, file) = os.path.split(file_props['file-name'])
|
||||||
|
if os.path.exists(path) and os.path.isdir(path):
|
||||||
|
helpers.launch_file_manager(path)
|
||||||
|
|
||||||
def on_cancel_menuitem_activate(self, widget):
|
def on_stop_menuitem_activate(self, widget):
|
||||||
self.on_cancel_button_clicked(widget)
|
self.on_cancel_button_clicked(widget)
|
||||||
|
|
||||||
def on_continue_menuitem_activate(self, widget):
|
def on_continue_menuitem_activate(self, widget):
|
||||||
|
|
Loading…
Reference in New Issue