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
					
				
					 1 changed files with 68 additions and 33 deletions
				
			
		|  | @ -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['completed']: |  | ||||||
| 					status = _('completed') |  | ||||||
| 			else: |  | ||||||
| 			if file_props.has_key('stopped') and \ | 			if file_props.has_key('stopped') and \ | ||||||
| 				file_props['stopped'] == True: | 				file_props['stopped'] == True: | ||||||
| 				status = _('stopped') | 				status = _('stopped') | ||||||
| 				elif file_props.has_key('paused') and  \ | 			elif file_props['completed']: | ||||||
|  | 					status = _('completed') | ||||||
|  | 			elif file_props['connected'] == False: | ||||||
|  | 				if file_props['completed']: | ||||||
|  | 					status = _('completed') | ||||||
|  | 			else: | ||||||
|  | 				if 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,6 +2083,12 @@ _('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 | ||||||
|  | 		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) | 			path = self.model.get_path(iter) | ||||||
| 		self.set_buttons_sensitive(path, True) | 		self.set_buttons_sensitive(path, True) | ||||||
| 		 | 		 | ||||||
|  | @ -2087,13 +2109,13 @@ _('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) | ||||||
| 		 | 		 | ||||||
|  | @ -2105,28 +2127,32 @@ _('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.set_all_insensitive() | ||||||
|  | 		else: | ||||||
| 			self.select_func(path) | 			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 | ||||||
|  | 			if path is not None: | ||||||
| 				self.tree.get_selection().select_path(path) | 				self.tree.get_selection().select_path(path) | ||||||
| 			model = self.tree.get_model() | 				iter = self.model.get_iter(path) | ||||||
| 			iter = model.get_iter(path) |  | ||||||
| 			self.show_context_menu(event, iter) | 			self.show_context_menu(event, iter) | ||||||
|  | 			if path is not None: | ||||||
| 				return True | 				return True | ||||||
| 		 | 		 | ||||||
| 	 | 	 | ||||||
|  | @ -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…
	
	Add table
		
		Reference in a new issue