Author: colossus
Date: 2007-10-19 21:16:25 +0000 (Fri, 19 Oct 2007)
New Revision: 26147

Modified:
   xarchiver/trunk/src/archive.c
   xarchiver/trunk/src/archive.h
   xarchiver/trunk/src/deb.c
   xarchiver/trunk/src/interface.c
   xarchiver/trunk/src/rar.c
   xarchiver/trunk/src/rpm.c
Log:
Fixed wrong content of location bar when switching to another tab.
Fixed archive navigation for rar,rpm and deb.


Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c       2007-10-19 05:23:00 UTC (rev 26146)
+++ xarchiver/trunk/src/archive.c       2007-10-19 21:16:25 UTC (rev 26147)
@@ -379,26 +379,6 @@
   return xa_find_child_entry(entry->next, string);
 }
 
-/*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,gboolean encrypted,gpointer *items)
 {
        XEntry *new_entry= NULL;
@@ -423,6 +403,7 @@
                        }
                        new_entry->next = last_entry->child;
                        last_entry->child = new_entry;
+                       new_entry->prev = last_entry;
                }
                last_entry = new_entry;
                x++;
@@ -474,12 +455,17 @@
                return;
        else
        {
-               archive->location_entry_path = 
g_strconcat(gtk_entry_get_text(GTK_ENTRY(location_entry)),"/",entry->filename,NULL);
+               if (archive->location_entry_path != NULL)
+               {
+                       g_free(archive->location_entry_path);
+                       archive->location_entry_path = NULL;
+               }
+               archive->location_entry_path = 
xa_build_full_path_name_from_entry(entry);
                
gtk_entry_set_text(GTK_ENTRY(location_entry),archive->location_entry_path);
-               g_free(archive->location_entry_path);
                entry = entry->child;
        }
        gtk_list_store_clear(archive->liststore);
+
        while (entry)
        {
                current_column = entry->columns;
@@ -522,6 +508,23 @@
        }
 }
 
+gchar *xa_build_full_path_name_from_entry(XEntry *entry)
+{
+       GString *dummy = g_string_new('\0');
+       gchar *fullpathname = NULL;
+       
+       while (entry)
+       {
+               dummy = g_string_prepend_c(dummy,'/');
+               dummy = g_string_prepend(dummy,entry->filename);
+               entry = entry->prev;
+       }
+       fullpathname = g_strdup(dummy->str);
+       g_string_free(dummy,TRUE);
+       g_print ("%s\n",fullpathname);
+       return fullpathname;
+}
+
 void xa_entries_to_filelist(XEntry *entry,GSList **p_file_list,gchar 
*current_path)
 {
        gchar *full_path = NULL;

Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h       2007-10-19 05:23:00 UTC (rev 26146)
+++ xarchiver/trunk/src/archive.h       2007-10-19 21:16:25 UTC (rev 26147)
@@ -58,6 +58,7 @@
        gboolean is_dir;
        gboolean is_encrypted;
        XEntry *child;
+       XEntry *prev;
        XEntry *next;
 };
 
@@ -125,11 +126,11 @@
 gint xa_get_new_archive_idx();
 XEntry *xa_alloc_memory_for_each_row ( guint nc,GType column_types[]);
 void xa_free_entry (XArchive *archive,XEntry *entry);
-//XEntry *xa_find_archive_entry(XEntry *entry, gchar *string);
 XEntry *xa_find_child_entry(XEntry *entry, gchar *string);
 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);
+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);
 XArchive *archive[100];

Modified: xarchiver/trunk/src/deb.c
===================================================================
--- xarchiver/trunk/src/deb.c   2007-10-19 05:23:00 UTC (rev 26146)
+++ xarchiver/trunk/src/deb.c   2007-10-19 21:16:25 UTC (rev 26147)
@@ -79,7 +79,7 @@
        archive->dummy_size = 0;
        archive->nr_of_files = 0;
        archive->nr_of_dirs = 0;
-       archive->nc = 6;
+       archive->nc = 7;
        archive->format = "DEB";
        archive->parse_output = xa_get_tar_line_content;
        xa_spawn_async_process (archive,command,0);
@@ -88,10 +88,10 @@
        if (archive->child_pid == 0)
                return;
 
-       char *names[]= {(_("Points 
to")),(_("Permissions")),(_("Owner/Group")),(_("Size")),(_("Date")),(_("Time"))};
-       GType types[]= 
{GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING};
+       char *names[]= {(_("Points 
to")),(_("Permissions")),(_("Owner/Group")),(_("Size")),(_("Date")),(_("Time")),NULL};
+       GType types[]= 
{GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER};
        archive->column_types = g_malloc0(sizeof(types));
-       for (i = 0; i < 8; i++)
+       for (i = 0; i < 9; i++)
                archive->column_types[i] = types[i];
        xa_create_liststore (archive,names);
 }

Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c     2007-10-19 05:23:00 UTC (rev 26146)
+++ xarchiver/trunk/src/interface.c     2007-10-19 21:16:25 UTC (rev 26147)
@@ -515,10 +515,12 @@
                                gtk_widget_set_sensitive ( view_menu, TRUE );
                        }
                }
-               /* Let's set the location entry */
+               /* Let's set the location bar */
                if (archive[id]->location_entry_path != NULL)
                        
gtk_entry_set_text(GTK_ENTRY(location_entry),archive[id]->location_entry_path);
-               
+               else
+                       gtk_entry_set_text(GTK_ENTRY(location_entry),"\0");
+
                gtk_widget_grab_focus (GTK_WIDGET(archive[id]->treeview));
        }
 }
@@ -910,6 +912,11 @@
        {
                /* Root */
                case 0:
+                       if (archive[idx]->location_entry_path != NULL)
+                       {
+                               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;

Modified: xarchiver/trunk/src/rar.c
===================================================================
--- xarchiver/trunk/src/rar.c   2007-10-19 05:23:00 UTC (rev 26146)
+++ xarchiver/trunk/src/rar.c   2007-10-19 21:16:25 UTC (rev 26147)
@@ -60,7 +60,7 @@
        for (i = 0; i < 12; i++)
                archive->column_types[i] = types[i];
 
-       char *names[]= 
{(_("Original")),(_("Compressed")),(_("Ratio")),(_("Date")),(_("Time")),(_("Permissions")),(_("CRC")),(_("Method")),(_("Version"),NULL)};
+       char *names[]= 
{(_("Original")),(_("Compressed")),(_("Ratio")),(_("Date")),(_("Time")),(_("Permissions")),(_("CRC")),(_("Method")),(_("Version")),NULL};
        xa_create_liststore (archive,names);
 }
 

Modified: xarchiver/trunk/src/rpm.c
===================================================================
--- xarchiver/trunk/src/rpm.c   2007-10-19 05:23:00 UTC (rev 26146)
+++ xarchiver/trunk/src/rpm.c   2007-10-19 21:16:25 UTC (rev 26147)
@@ -51,13 +51,13 @@
     archive->dummy_size = 0;
     archive->nr_of_files = 0;
     archive->nr_of_dirs = 0;
-    archive->nc = 7;
+    archive->nc = 8;
        archive->format ="RPM";
 
-       char *names[]= {(_("Points 
to")),(_("Size")),(_("Permission")),(_("Date")),(_("Hard 
Link")),(_("Owner")),(_("Group"))};
-       GType types[]= 
{GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING};
+       char *names[]= {(_("Points 
to")),(_("Size")),(_("Permission")),(_("Date")),(_("Hard 
Link")),(_("Owner")),(_("Group")),NULL};
+       GType types[]= 
{GDK_TYPE_PIXBUF,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER};
        archive->column_types = g_malloc0(sizeof(types));
-       for (i = 0; i < 9; i++)
+       for (i = 0; i < 10; i++)
                archive->column_types[i] = types[i];
 
        xa_create_liststore (archive,names);

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to