Author: pcman
Date: 2008-07-07 19:40:15 +0000 (Mon, 07 Jul 2008)
New Revision: 27231

Modified:
   xarchiver/trunk/src/interface.c
   xarchiver/trunk/src/interface.h
Log:
Add xa_dir_tree_get_path() API to get the file path of an dir tree item.


Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c     2008-07-07 17:23:29 UTC (rev 27230)
+++ xarchiver/trunk/src/interface.c     2008-07-07 19:40:15 UTC (rev 27231)
@@ -64,7 +64,7 @@
        vbox1 = gtk_vbox_new (FALSE,2);
        gtk_widget_show (vbox1);
        gtk_container_add (GTK_CONTAINER (xa_main_window), vbox1);
-       
+
        /* Create the menus */
        menubar1 = gtk_menu_bar_new ();
        gtk_widget_show (menubar1);
@@ -192,7 +192,7 @@
        gtk_container_add (GTK_CONTAINER (menuitem2_menu), select_all);
        gtk_widget_set_sensitive (select_all, FALSE);
        gtk_widget_add_accelerator (select_all, "activate",accel_group,GDK_a, 
GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
-       
+
        tmp_image = gtk_image_new_from_stock ("gtk-select-all", 
GTK_ICON_SIZE_MENU);
        gtk_widget_show (tmp_image);
        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (select_all), 
tmp_image);
@@ -258,7 +258,7 @@
        gtk_widget_show (help1);
        gtk_container_add (GTK_CONTAINER (menuitem4_menu), help1);
        gtk_widget_add_accelerator (help1, "activate",accel_group,GDK_F1, 
GDK_MODE_DISABLED, GTK_ACCEL_VISIBLE);
-       
+
        tmp_image = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
        gtk_widget_show (tmp_image);
        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (help1), tmp_image);
@@ -389,7 +389,7 @@
        hpaned1 = gtk_hpaned_new ();
        gtk_widget_show (hpaned1);
        gtk_box_pack_start (GTK_BOX (vbox1),hpaned1,TRUE,TRUE,0);
-       
+
        scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
        if (show_sidebar)
                gtk_widget_show (scrolledwindow2);
@@ -419,7 +419,7 @@
        gtk_tree_view_column_pack_start(column,archive_dir_renderer,TRUE);
        
gtk_tree_view_column_set_attributes(column,archive_dir_renderer,"text",1,NULL);
        gtk_tree_view_append_column (GTK_TREE_VIEW 
(archive_dir_treeview),column);
-       
+
        /* Create the notebook widget */
        notebook = GTK_NOTEBOOK(gtk_notebook_new() );
        gtk_paned_pack2(GTK_PANED (hpaned1),GTK_WIDGET(notebook),TRUE,TRUE);
@@ -636,7 +636,7 @@
 {
        GtkWidget 
*password_dialog,*dialog_vbox1,*vbox1,*hbox2,*image2,*vbox2,*label_pwd_required,*label_filename,*hbox1,*label34,*pw_password_entry;
        gchar *password = NULL;
-       
+
        password_dialog = gtk_dialog_new_with_buttons ("Xarchiver " VERSION,
                                                                        
GTK_WINDOW (xa_main_window), GTK_DIALOG_DESTROY_WITH_PARENT,
                                                                        
GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,GTK_STOCK_OK,GTK_RESPONSE_OK,NULL);
@@ -685,7 +685,7 @@
                name = xa_remove_path_from_archive_name(archive_name);
                gtk_label_set_text(GTK_LABEL(label_filename),name);
                g_free (name);
-       }       
+       }
        hbox1 = gtk_hbox_new (FALSE, 5);
        gtk_widget_show (hbox1);
        gtk_box_pack_start (GTK_BOX (vbox2), hbox1, TRUE, TRUE, 0);
@@ -701,7 +701,7 @@
        gtk_entry_set_invisible_char (GTK_ENTRY (pw_password_entry), 9679);
        gtk_entry_set_activates_default (GTK_ENTRY (pw_password_entry), TRUE);
        gtk_dialog_set_default_response (GTK_DIALOG (password_dialog), 
GTK_RESPONSE_OK);
- 
+
        while (! done)
        {
                switch (gtk_dialog_run (GTK_DIALOG(password_dialog)) )
@@ -789,7 +789,7 @@
        extract = gtk_image_menu_item_new_with_mnemonic (_("Extract..."));
        gtk_widget_show (extract);
        gtk_container_add (GTK_CONTAINER (xa_popup_menu),extract);
-       
+
        image9 =  xa_main_window_find_image ("xarchiver-extract.png", 
GTK_ICON_SIZE_MENU);
        gtk_widget_show (image9);
        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (extract), image9);
@@ -798,7 +798,7 @@
        gtk_widget_show (separator);
        gtk_container_add (GTK_CONTAINER (xa_popup_menu), separator);
        gtk_widget_set_sensitive (separator,FALSE);
-       
+
        cut = gtk_image_menu_item_new_with_mnemonic (_("Cut"));
        gtk_widget_show (cut);
        gtk_container_add (GTK_CONTAINER (xa_popup_menu), cut);
@@ -920,7 +920,7 @@
        gtk_dialog_add_action_widget (GTK_DIALOG (ddialog1), 
okbutton1,GTK_RESPONSE_OK);
        GTK_WIDGET_SET_FLAGS (okbutton1,GTK_CAN_DEFAULT);
        gtk_dialog_set_default_response (GTK_DIALOG (ddialog1),GTK_RESPONSE_OK);
-       
+
        while (! done)
        {
                switch (gtk_dialog_run (GTK_DIALOG(ddialog1)))
@@ -962,7 +962,7 @@
        current_page = gtk_notebook_get_current_page(notebook);
        idx = xa_find_archive_index (current_page);
        patterns = g_strsplit(string,";",-1);
-       
+
        gtk_tree_model_get (model,iter,archive[idx]->nc+1,&entry,-1);
        utf8_name = g_filename_to_utf8 (entry->filename, -1, NULL, NULL, NULL);
 
@@ -1260,3 +1260,25 @@
     //TODO: disable the popupmenu entries
     //gtk_widget_set_sensitive (delete,value);
 }
+
+/*
+ * Get file path of an item in the archive dir tree.
+ * The returned allocated string should be freed when no longer needed.
+ * By Hong Jen Yee (PCMan) <[EMAIL PROTECTED]>
+ */
+char *xa_dir_tree_get_path( GtkTreeIter* it )
+{
+    GtkTreeIter parent_it;
+    char *path = NULL, *parent_path = NULL, *name = NULL;
+    gtk_tree_model_get( archive_dir_model, it, 1, &name, -1 );
+    if( gtk_tree_model_iter_parent( archive_dir_model, &parent_it, it ) )
+    {
+        parent_path = xa_dir_tree_get_path( &parent_it );
+        path = g_build_filename( parent_path, name, NULL );
+        g_free( parent_path );
+        g_free( name );
+    }
+    else
+        path = name;
+    return path;
+}

Modified: xarchiver/trunk/src/interface.h
===================================================================
--- xarchiver/trunk/src/interface.h     2008-07-07 17:23:29 UTC (rev 27230)
+++ xarchiver/trunk/src/interface.h     2008-07-07 19:40:15 UTC (rev 27231)
@@ -138,5 +138,7 @@
 void xa_set_button_state (gboolean,gboolean,gboolean,gboolean,gboolean, 
gboolean, gboolean,gboolean);
 void xa_restore_navigation(int idx);
 void xa_disable_delete_buttons (gboolean );
+char *xa_dir_tree_get_path( GtkTreeIter* it );
+
 #endif
 

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

Reply via email to