[Xfce4-commits] r26156 - xarchiver/trunk/src

Giuseppe Torelli colossus at xfce.org
Sat Oct 20 19:22:23 CEST 2007


Author: colossus
Date: 2007-10-20 17:22:23 +0000 (Sat, 20 Oct 2007)
New Revision: 26156

Modified:
   xarchiver/trunk/src/archive.c
   xarchiver/trunk/src/archive.h
   xarchiver/trunk/src/interface.c
   xarchiver/trunk/src/window.c
Log:
Fixed behaviour of up and home buttons.


Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c	2007-10-20 16:47:57 UTC (rev 26155)
+++ xarchiver/trunk/src/archive.c	2007-10-20 17:22:23 UTC (rev 26156)
@@ -450,6 +450,8 @@
 	{
 		entry = archive->root_entry->child;
 		gtk_entry_set_text(GTK_ENTRY(location_entry),"\0");
+		gtk_widget_set_sensitive(up_button,FALSE);
+		gtk_widget_set_sensitive(home_button,FALSE);
 	}
 	else if (entry->child == NULL)
 		return;
@@ -508,6 +510,23 @@
 	}
 }
 
+XEntry* xa_find_entry_from_path (XEntry *root_entry,const gchar *fullpathname)
+{
+	gchar **components = NULL;
+	unsigned short int x = 0;
+	XEntry *new_entry = NULL;
+
+	components = g_strsplit(fullpathname,"/",-1);
+	while (components[x] && strlen(components[x]) > 0)
+	{
+		new_entry = xa_find_child_entry(root_entry->child,components[x]);
+		root_entry = new_entry;
+		x++;
+	}
+	g_strfreev(components);
+	return new_entry;
+}
+
 gchar *xa_build_full_path_name_from_entry(XEntry *entry)
 {
 	GString *dummy = g_string_new('\0');

Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h	2007-10-20 16:47:57 UTC (rev 26155)
+++ xarchiver/trunk/src/archive.h	2007-10-20 17:22:23 UTC (rev 26156)
@@ -130,6 +130,7 @@
 XEntry *xa_set_archive_entries_for_each_row (XArchive *archive,gchar *filename,gboolean encrypted,gpointer *items);
 gpointer *xa_fill_archive_entry_columns_for_each_row (XArchive *archive,XEntry *entry,gpointer *items);
 void xa_update_window_with_archive_entries (XArchive *archive,XEntry *entry);
+XEntry* xa_find_entry_from_path (XEntry *root_entry,const gchar *fullpathname);
 gchar *xa_build_full_path_name_from_entry(XEntry *entry);
 void xa_entries_to_filelist(XEntry *, GSList **, gchar *);
 void xa_destroy_filelist(GSList *file_list);

Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c	2007-10-20 16:47:57 UTC (rev 26155)
+++ xarchiver/trunk/src/interface.c	2007-10-20 17:22:23 UTC (rev 26156)
@@ -296,7 +296,7 @@
 	tmp_image = gtk_image_new_from_stock ("gtk-go-up", tmp_toolbar_icon_size);
 	gtk_widget_show (tmp_image);
 	up_button = (GtkWidget*) gtk_tool_button_new (tmp_image, _("Up"));
-	gtk_widget_set_sensitive(up_button,TRUE);
+	gtk_widget_set_sensitive(up_button,FALSE);
 	gtk_widget_show (up_button);
 	gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (up_button), FALSE);
 	gtk_container_add (GTK_CONTAINER (toolbar1), up_button);
@@ -902,13 +902,10 @@
 	unsigned short int bp = GPOINTER_TO_UINT(user_data);
 	gint current_page;
 	gint idx;
-	gchar **components = NULL;
-	unsigned short int x = 0;
 	XEntry *new_entry = NULL;
 
 	current_page = gtk_notebook_get_current_page (notebook);
 	idx = xa_find_archive_index (current_page);
-	XEntry *last_entry = archive[idx]->root_entry;
 
 	switch (bp)
 	{
@@ -919,20 +916,12 @@
 				g_free(archive[idx]->location_entry_path);
 				archive[idx]->location_entry_path = NULL;
 			}
-			archive[idx]->location_entry_path = NULL;
 			xa_update_window_with_archive_entries(archive[idx],NULL);
 		break;
 
 		/* Up */
 		case 2:
-			components = g_strsplit(gtk_entry_get_text(GTK_ENTRY(location_entry)),"/",-1);
-			while (components[x] && strlen(components[x]) > 0)
-			{
-				new_entry = xa_find_child_entry(last_entry->child,components[x]);
-				last_entry = new_entry;
-				x++;
-			}
-			g_strfreev(components);
+			new_entry = xa_find_entry_from_path(archive[idx]->root_entry,gtk_entry_get_text(GTK_ENTRY(location_entry)));
 			if (new_entry->prev->prev == NULL)
 			{
 				xa_update_window_with_archive_entries(archive[idx],NULL);

Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c	2007-10-20 16:47:57 UTC (rev 26155)
+++ xarchiver/trunk/src/window.c	2007-10-20 17:22:23 UTC (rev 26156)
@@ -176,7 +176,6 @@
 			gtk_widget_set_sensitive ( password_entry , TRUE);
 	}
 	xa_set_button_state (1,1,1,archive->can_add,archive->can_extract,archive->has_sfx,archive->has_test,archive->has_properties);
-	gtk_widget_set_sensitive(home_button,TRUE);
 	Update_StatusBar ( _("Operation completed."));
 
 	if (archive->status == XA_ARCHIVESTATUS_TEST)
@@ -2021,16 +2020,19 @@
 
 void xa_location_entry_activated (GtkEntry *entry, gpointer  user_data)
 {
-	gchar *parent = NULL;
+	XEntry *new_entry = NULL;
 	gint current_page;
 	gint idx;
 
-	parent = xa_get_parent_dir (gtk_entry_get_text(entry));
-	current_page = gtk_notebook_get_current_page(notebook);
+	current_page = gtk_notebook_get_current_page (notebook);
 	idx = xa_find_archive_index (current_page);
-	g_print ("parent: %s\t loc.entry: %s\n",parent,archive[idx]->location_entry_path);
-	//xa_update_window_with_archive_entries(archive[idx],parent);
-	g_free (parent);
+	new_entry = xa_find_entry_from_path(archive[idx]->root_entry,gtk_entry_get_text(GTK_ENTRY(location_entry)));
+	xa_update_window_with_archive_entries(archive[idx],new_entry);
+	if (new_entry != NULL && new_entry->prev != NULL)
+	{
+		gtk_widget_set_sensitive(up_button,TRUE);
+		gtk_widget_set_sensitive(home_button,TRUE);
+	}
 }
 
 void xa_treeview_row_activated(GtkTreeView *tree_view,GtkTreePath *path,GtkTreeViewColumn *column,gpointer user_data)
@@ -2047,5 +2049,10 @@
 		return;
 
 	gtk_tree_model_get (GTK_TREE_MODEL (archive[idx]->liststore),&iter,archive[idx]->nc+1,&entry, -1);
+	if (entry->is_dir)
+	{
+		gtk_widget_set_sensitive(up_button,TRUE);
+		gtk_widget_set_sensitive(home_button,TRUE);
+	}
 	xa_update_window_with_archive_entries(archive[idx],entry);
 }



More information about the Xfce4-commits mailing list