[Xfce4-commits] r25936 - in xarchiver/trunk: . src

Giuseppe Torelli colossus at xfce.org
Fri Jul 27 14:56:55 CEST 2007


Author: colossus
Date: 2007-07-27 12:56:55 +0000 (Fri, 27 Jul 2007)
New Revision: 25936

Modified:
   xarchiver/trunk/configure.in.in
   xarchiver/trunk/src/archive.c
   xarchiver/trunk/src/archive.h
   xarchiver/trunk/src/interface.c
   xarchiver/trunk/src/window.c
Log:
Get rid of g_hash_table with a code of mine, still to be polished.
GTK requirement version is now 2.10.x
Removed gtk_check_version in interface.c
Get rid of some browsers for displaying the HTML help; they were too many.


Modified: xarchiver/trunk/configure.in.in
===================================================================
--- xarchiver/trunk/configure.in.in	2007-07-24 10:29:04 UTC (rev 25935)
+++ xarchiver/trunk/configure.in.in	2007-07-27 12:56:55 UTC (rev 25936)
@@ -80,8 +80,8 @@
 dnl ***********************************
 dnl *** Check for required packages ***
 dnl ***********************************
-XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.6.0])
-XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.6.0])
+XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.10.0])
+XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.10.0])
 
 dnl ***********************************
 dnl *** Check for debugging support ***

Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c	2007-07-24 10:29:04 UTC (rev 25935)
+++ xarchiver/trunk/src/archive.c	2007-07-27 12:56:55 UTC (rev 25936)
@@ -78,10 +78,8 @@
 	g_io_channel_set_flags ( ioc , G_IO_FLAG_NONBLOCK , NULL );
 
 	if ( archive->parse_output )
-	{
-		filename_paths_buffer = g_hash_table_new (g_str_hash, g_str_equal);
 		g_io_add_watch (ioc, G_IO_IN|G_IO_PRI|G_IO_ERR|G_IO_HUP|G_IO_NVAL, xa_process_output, archive);
-	}
+
 	g_child_watch_add ( archive->child_pid, (GChildWatchFunc)xa_watch_child, archive);
 
 	err_ioc = g_io_channel_unix_new ( archive->error_fd );
@@ -104,7 +102,7 @@
 			if (line != NULL)
 			{
 				(*archive->parse_output) (line,archive);
-				archive->error_output = g_slist_prepend (archive->error_output,g_strdup(line) );
+				//archive->error_output = g_slist_prepend (archive->error_output,g_strdup(line) );
 				g_free (line);
 			}
 			while (gtk_events_pending())
@@ -120,7 +118,7 @@
 		g_io_channel_shutdown (ioc, TRUE, NULL);
 		g_io_channel_unref (ioc);
 
-		xa_update_window_with_archive_entries (archive,"/");
+		xa_update_window_with_archive_entries (archive,NULL);
 		gtk_tree_view_set_model (GTK_TREE_VIEW(archive->treeview), archive->model);
 		g_object_unref (archive->model);
 		return FALSE;
@@ -141,7 +139,7 @@
 			status = g_io_channel_read_line (ioc, &line, NULL, NULL, NULL);
 			if (line != NULL)
 			{
-				archive->error_output = g_slist_prepend (archive->error_output,g_strdup(line) );
+				//archive->error_output = g_slist_prepend (archive->error_output,g_strdup(line) );
 				g_free (line);
 			}
 		}
@@ -289,6 +287,26 @@
 	return entry;
 }
 
+XEntry *xa_find_archive_entry(XEntry *entry, gchar *string)
+{
+	if (entry == NULL)
+		return NULL;
+
+	if (strcmp(entry->filename, string) == 0)
+		return entry;
+
+    XEntry *found_entry;
+
+	found_entry = xa_find_archive_entry(entry->child, string);
+
+	if (found_entry != NULL)
+		return found_entry;
+
+	found_entry = xa_find_archive_entry(entry->next, string);
+
+	return found_entry;
+}
+
 XEntry *xa_set_archive_entries_for_each_row (XArchive *archive,gchar *filename,gpointer *items)
 {
 	XEntry *child_entry= NULL;
@@ -298,35 +316,39 @@
 	gchar *filename_only = NULL;
 	gchar *p = NULL;
 
-	if (strchr(filename,'/') != NULL)
+	p = strchr(filename,'/');
+	if (p != NULL)
 	{
-		p = strchr(filename,'/');
 		full_path_name = g_strndup(filename,(p-filename));
-		last_entry = g_hash_table_lookup(filename_paths_buffer,full_path_name);
+
+		if (archive->entries != NULL)
+			last_entry = xa_find_archive_entry(archive->entries->data,full_path_name);
+		else
+			last_entry = xa_find_archive_entry(NULL,full_path_name);
 		if (last_entry == NULL)
 		{
 			last_entry = xa_alloc_memory_for_each_row(archive->nc,archive->column_types);
 			last_entry->filename = full_path_name;
 			last_entry->columns = xa_fill_archive_entry_columns_for_each_row(archive,last_entry,items);
-			g_hash_table_insert (filename_paths_buffer,last_entry->filename,last_entry);
-			archive->entries = g_list_prepend (archive->entries,last_entry);
+			archive->entries = g_slist_prepend (archive->entries,last_entry);
 		}
 		p++;
 		while ( (p = strchr(p,'/')) )
 		{
 			full_path_name = g_strndup(filename,(p-filename));
-			//g_print ("%s\t%s\n",filename,full_path_name);
-			child_entry = g_hash_table_lookup(filename_paths_buffer,full_path_name);
+			child_entry = xa_find_archive_entry(last_entry,full_path_name);
 			if (child_entry == NULL)
 			{
+				//g_print ("child_entry è null per %s\n",full_path_name);
 				child_entry = xa_alloc_memory_for_each_row (archive->nc,archive->column_types);
 				child_entry->filename = full_path_name;
+				//g_print ("** %s\n",full_path_name);
 				child_entry->columns = xa_fill_archive_entry_columns_for_each_row(archive,child_entry,items);
 
-				g_hash_table_insert (filename_paths_buffer,child_entry->filename,child_entry);
-
 				child_entry->next = last_entry->child;
 				last_entry->child = child_entry;
+				//questa entry last_entry->child contiene tutte le dir
+				//g_message (child_entry->filename);
 			}
 			last_entry = child_entry;
 			p++;
@@ -337,6 +359,7 @@
 			filename_only = g_strndup(++p,strlen(p));
 			child_entry = xa_alloc_memory_for_each_row (archive->nc,archive->column_types);
 			child_entry->filename = filename_only;
+			//g_print ("%s\n",filename_only);
 			child_entry->columns = xa_fill_archive_entry_columns_for_each_row(archive,child_entry,items);
 
 			child_entry->next = last_entry->child;
@@ -349,13 +372,10 @@
 		last_entry = xa_alloc_memory_for_each_row (archive->nc,archive->column_types);
 		if (last_entry == NULL)
 			return NULL;
+
 		last_entry->filename = g_strdup(filename);
 		last_entry->columns = xa_fill_archive_entry_columns_for_each_row(archive,last_entry,items);
-		last_entry->child = NULL;
-
-		archive->entries = g_list_prepend (archive->entries,last_entry);
-		if (archive->entries->prev != NULL)
-			last_entry->next = archive->entries->prev->data;
+		archive->entries = g_slist_prepend (archive->entries,last_entry);
 	}
 	return last_entry;
 }
@@ -389,21 +409,22 @@
 
 void xa_update_window_with_archive_entries (XArchive *archive,gchar *path)
 {
-	GList *s = NULL;
+	GSList *s = NULL;
 	XEntry *entry = NULL;
 	GtkTreeIter iter;
 	unsigned short int i;
 	gpointer current_column;
 
-	if (*path == '/')
+	s = archive->entries;
+	if (path == NULL)
 	{
 		gtk_list_store_clear(archive->liststore);
-		s = archive->entries;
 		for (; s; s = s->next)
 		{
 			entry = s->data;
 			current_column = entry->columns;
 			gtk_list_store_append (archive->liststore, &iter);
+
 			//TODO: free the char in g_convert and also  at line 445
 			if(!g_utf8_validate(entry->filename, -1, NULL) )
 				gtk_list_store_set (archive->liststore,&iter,0,GTK_STOCK_DIRECTORY,1,g_convert(entry->filename, -1, "UTF-8", "WINDOWS-1252", NULL, NULL, NULL),-1);
@@ -434,7 +455,7 @@
 	}
 	else
 	{
-		entry = g_hash_table_lookup (filename_paths_buffer,path);
+		entry = xa_find_archive_entry(s->data,path);
 		if (entry == NULL || entry->child == NULL)
 			return;
 
@@ -447,13 +468,25 @@
 		archive->location_entry_path = NULL;
 
 		entry = entry->child;
+		//g_print ("entry->child = %s\n",entry->filename);
 	}
 	gtk_list_store_clear(archive->liststore);
-
+	
 	while (entry)
 	{
+		/* Remove the path from the filename */
+		gchar *slash = strrchr(entry->filename,'/');
+		if (slash != NULL)
+		{
+			slash++;
+			gchar *dummy = g_strdup(slash);
+			g_free (entry->filename);
+			entry->filename = dummy;
+		}
+
 		current_column = entry->columns;
 		gtk_list_store_append (archive->liststore, &iter);
+		
 		if(!g_utf8_validate(entry->filename, -1, NULL))
 			gtk_list_store_set (archive->liststore,&iter,0,GTK_STOCK_DIRECTORY,1,g_convert(entry->filename, -1, "UTF-8", "WINDOWS-1252", NULL, NULL, NULL),-1);
 		else
@@ -476,7 +509,9 @@
 				break;
 			}
 		}
-		entry=entry->next;
+		entry = entry->next;
+		/*if (entry != NULL)
+			g_print ("entry->next = %s\n",entry->filename);*/
 	}
 }
 

Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h	2007-07-24 10:29:04 UTC (rev 25935)
+++ xarchiver/trunk/src/archive.h	2007-07-27 12:56:55 UTC (rev 25936)
@@ -91,7 +91,7 @@
 	//TODO: remove this once you fix the various arj,rar,etc
 	GList *cmd_line_output;
 	GSList *error_output;
-	GList *entries;
+	GSList *entries;
 	GType *column_types;
 	gboolean add_recurse;
 	gboolean overwrite;
@@ -124,6 +124,7 @@
 gint xa_get_new_archive_idx();
 //gint xa_read_line (XArchive *archive, FILE *stream, gchar **return_string);
 XEntry *xa_alloc_memory_for_each_row ( guint nc,GType column_types[]);
+XEntry *xa_find_archive_entry(XEntry *entry, gchar *string);
 XEntry *xa_set_archive_entries_for_each_row (XArchive *archive,gchar *filename,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,gchar *path);

Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c	2007-07-24 10:29:04 UTC (rev 25935)
+++ xarchiver/trunk/src/interface.c	2007-07-27 12:56:55 UTC (rev 25936)
@@ -586,10 +586,7 @@
 	gtk_misc_set_alignment(GTK_MISC(tab_label), 0.0, 0);
 	gtk_notebook_append_page_menu (notebook, archive->scrollwindow, page_hbox, tab_label);
 	gtk_notebook_set_current_page(notebook, -1);
-	#if GTK_CHECK_VERSION(2, 10, 0)
-		if (gtk_check_version(2, 10, 0) == NULL)
-			gtk_notebook_set_tab_reorderable(notebook, archive->scrollwindow, TRUE);
-	#endif
+	gtk_notebook_set_tab_reorderable(notebook, archive->scrollwindow, TRUE);
 	archive->treeview = gtk_tree_view_new ();
 	gtk_container_add (GTK_CONTAINER (archive->scrollwindow), archive->treeview);
 	gtk_widget_show (archive->treeview);
@@ -928,7 +925,7 @@
 		/* Root */
 		case 0:
 			archive[idx]->location_entry_path = NULL;
-			xa_update_window_with_archive_entries(archive[idx],"/");
+			xa_update_window_with_archive_entries(archive[idx],NULL);
 		break;
 
 		/* Up */

Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c	2007-07-24 10:29:04 UTC (rev 25935)
+++ xarchiver/trunk/src/window.c	2007-07-27 12:56:55 UTC (rev 25936)
@@ -909,7 +909,7 @@
 {
     static GtkWidget *about = NULL;
     const char *authors[] = {"\nMain developer:\nGiuseppe Torelli <colossus73 at gmail.com>\n\nLHA and DEB support:\nŁukasz Zemczak <sil2100 at vexillium.org>\n\nLZMA support:\nThomas Dy <dysprosium66 at gmail.com>",NULL};
-    const char *documenters[] = {"\nVery special thanks to John Berthels for\nhelping me in fixing archive navigation code.\n\nSpecial thanks to Bjoern Martensen for\nbugs hunting and Xarchiver Tango logo.\n\nThanks to:\nBenedikt Meurer\nStephan Arts\nEnrico Tröger\nUracile for the stunning logo\nThe people of gtk-app-devel-list.", NULL};
+    const char *documenters[] = {"\nVery special thanks to John Berthels for\nhelping me in fixing archive navigation code.\n\nSpecial thanks to Bjoern Martensen for\nbugs hunting and Xarchiver Tango logo.\n\nThanks to:\nBenedikt Meurer\nStephan Arts\nEnrico Tröger\nUracile for the stunning logo\n", NULL};
 
 	if (about == NULL)
 	{
@@ -2120,28 +2120,11 @@
 	gchar *browser_path;
 
 	//TODO: retrieve the user set browser from prefs and use it
-	browser_path = g_find_program_in_path ("exo-open");
-	if ( browser_path == NULL)
-		browser_path = g_find_program_in_path ("htmlview");
+	browser_path = g_find_program_in_path ("xelp");
 
 	if ( browser_path == NULL)
 		browser_path = g_find_program_in_path ("firefox");
 
-	if ( browser_path == NULL)
-		browser_path = g_find_program_in_path ("opera");
-
-	if ( browser_path == NULL)
-		browser_path = g_find_program_in_path ("mozilla");
-
-	if ( browser_path == NULL)
-		browser_path = g_find_program_in_path ("epiphany");
-
-	if ( browser_path == NULL)
-		browser_path = g_find_program_in_path ("konqueror");
-
-	if ( browser_path == NULL)
-		browser_path = g_find_program_in_path ("seamonkey");
-
 	argv[0] = browser_path;
 	argv[1] = (gchar *) link;
 	argv[2] = NULL;



More information about the Xfce4-commits mailing list