Author: colossus
Date: 2007-09-21 12:44:49 +0000 (Fri, 21 Sep 2007)
New Revision: 26093

Modified:
   xarchiver/trunk/src/archive.h
   xarchiver/trunk/src/bzip2.c
   xarchiver/trunk/src/mime.c
   xarchiver/trunk/src/pref_dialog.c
   xarchiver/trunk/src/window.c
Log:
Xarchiver displays bzip2 content instead of asking where to extract it. 
The option "Size of the mimetype icons" works in real time.
The value of the option "Browser to use" is used when displaying the HTML docs.
Added mimetype icon for TTF fonts.


Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h       2007-09-20 22:14:39 UTC (rev 26092)
+++ xarchiver/trunk/src/archive.h       2007-09-21 12:44:49 UTC (rev 26093)
@@ -76,6 +76,7 @@
        gchar *passwd;
        gchar *location_entry_path;
        GtkTreeModel *model;
+       GtkCellRenderer *renderer;
        GtkListStore *liststore;
        GtkWidget *treeview;
        GtkWidget *scrollwindow;

Modified: xarchiver/trunk/src/bzip2.c
===================================================================
--- xarchiver/trunk/src/bzip2.c 2007-09-20 22:14:39 UTC (rev 26092)
+++ xarchiver/trunk/src/bzip2.c 2007-09-21 12:44:49 UTC (rev 26093)
@@ -22,6 +22,7 @@
 #include "extract_dialog.h"
 #include "string_utils.h"
 
+extern void xa_create_liststore ( XArchive *archive, gchar *columns_names[]);
 extern gboolean xa_tar_open (GIOChannel *ioc, GIOCondition cond, gpointer 
data);
 extern gboolean cli;
 
@@ -29,18 +30,28 @@
 
 void xa_open_bzip2 (XArchive *archive)
 {
-       gchar *command;
+       XEntry *entry;
+       struct stat my_stat;
+       gchar tmp_dir[14] = "";
+       gchar *compressed = NULL;
+       gchar *size = NULL;
+       gchar *command = NULL;
+       gchar *filename = NULL;;
+       gchar *_filename;
        gchar *tar;
+       gpointer item[3];
        unsigned short int i;
+       gboolean result;
 
-    if ( g_str_has_suffix ( archive->escaped_path , ".tar.bz2") || 
g_str_has_suffix ( archive->escaped_path , ".tar.bz") || g_str_has_suffix ( 
archive->escaped_path , ".tbz") || g_str_has_suffix ( archive->escaped_path , 
".tbz2" ) )
+       if (g_str_has_suffix(archive->escaped_path,".tar.bz2") || 
g_str_has_suffix (archive->escaped_path,".tar.bz")
+       || g_str_has_suffix ( archive->escaped_path , ".tbz") || 
g_str_has_suffix (archive->escaped_path,".tbz2") )
        {
                archive->type = XARCHIVETYPE_TAR_BZ2;
                tar = g_find_program_in_path ("gtar");
                if (tar == NULL)
                        tar = g_strdup ("tar");
 
-               command = g_strconcat (tar, " tfjv " , archive->escaped_path, 
NULL );
+               command = g_strconcat (tar, " tfjv 
",archive->escaped_path,NULL);
                archive->has_properties = archive->can_add = 
archive->can_extract = TRUE;
                archive->has_test = archive->has_sfx = FALSE;
                archive->dummy_size = 0;
@@ -69,10 +80,67 @@
        {
                archive->has_properties = archive->can_add = archive->has_test 
= archive->has_sfx = FALSE;
                archive->can_extract = TRUE;
-               extract_window = xa_create_extract_dialog ( 0 , archive);
-               command = xa_parse_extract_dialog_options ( archive , 
extract_window, NULL );
-               gtk_widget_destroy ( extract_window->dialog1 );
-               g_free (extract_window);
+               archive->nc = 3;
+
+               GType types[]= 
{G_TYPE_STRING,G_TYPE_STRING,G_TYPE_UINT64,G_TYPE_UINT64,G_TYPE_STRING};
+               archive->column_types = g_malloc0(sizeof(types));
+               for (i = 0; i < 5; i++)
+                       archive->column_types[i] = types[i];
+
+               char *names[]= {(_("Compressed")),(_("Size")),(_("Modification 
Date"))};
+               xa_create_liststore (archive,names);
+               result = xa_create_temp_directory (tmp_dir);
+               if (result == 0)
+                       return;
+
+               archive->tmp = strdup(tmp_dir);
+               /* Let's copy the bzip2 file in the tmp dir */
+               command = g_strconcat("cp -f ",archive->escaped_path," 
",archive->tmp,NULL);
+               result = xa_run_command (archive,command,0);
+               g_free (command);
+               if (!result)
+               {
+                       xa_delete_temp_directory (archive,0);
+                       gtk_widget_hide (viewport2);
+                       Update_StatusBar (_("Operation canceled."));
+                       return;
+               }
+               /* Let's extract it */
+               chdir (archive->tmp);
+               _filename = g_strrstr (archive->escaped_path , "/");
+               command = g_strconcat("bzip2 -f -d 
",archive->tmp,_filename,NULL);
+               result = xa_run_command (archive,command,1);
+               g_free (command);
+               if (!result)
+               {
+                       xa_delete_temp_directory (archive,0);
+                       gtk_widget_hide (viewport2);
+                       Update_StatusBar (_("Operation canceled."));
+                       return;
+               }
+               /* Let's get its compressed file size */
+               stat (archive->escaped_path,&my_stat);
+               compressed = g_strdup_printf("%lld",(unsigned long long 
int)my_stat.st_size);
+               item[0] = compressed;
+               item[2] = ctime(&my_stat.st_mtime);
+
+               /* and its uncompressed file size */
+               _filename++;
+               filename = g_strndup(_filename,strlen(_filename)-4);
+               command = g_strconcat(archive->tmp,"/",filename,NULL);
+               stat (command,&my_stat);
+               g_free(command);
+               size = g_strdup_printf("%lld",(unsigned long long 
int)my_stat.st_size);
+               item[1] = size;
+
+               entry = xa_set_archive_entries_for_each_row 
(archive,filename,FALSE,item);
+               g_free(compressed);
+               g_free(size);
+               g_free(filename);
+               
+               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);
        }
 }
 

Modified: xarchiver/trunk/src/mime.c
===================================================================
--- xarchiver/trunk/src/mime.c  2007-09-20 22:14:39 UTC (rev 26092)
+++ xarchiver/trunk/src/mime.c  2007-09-21 12:44:49 UTC (rev 26093)
@@ -58,6 +58,8 @@
                icon_name = "gnome-mime-application-x-php";
        else if (strcmp(mime,"application/x-perl") == 0 || strcmp 
(mime,"application/x-csh") == 0 || strcmp (mime,"application/x-shellscript") == 
0)
                icon_name = "gnome-mime-application-x-perl";
+       else if (strcmp(mime,"application/x-font-ttf") == 0)
+               icon_name = "gnome-mime-application-x-font-ttf";
        return icon_name;               
 }
 

Modified: xarchiver/trunk/src/pref_dialog.c
===================================================================
--- xarchiver/trunk/src/pref_dialog.c   2007-09-20 22:14:39 UTC (rev 26092)
+++ xarchiver/trunk/src/pref_dialog.c   2007-09-21 12:44:49 UTC (rev 26093)
@@ -209,7 +209,7 @@
        gtk_table_set_row_spacings (GTK_TABLE (table2), 2);
        gtk_table_set_col_spacings (GTK_TABLE (table2), 4);
 
-       label6 = gtk_label_new (_("View HTML help with:"));
+       label6 = gtk_label_new (_("Browser to use:"));
        gtk_table_attach (GTK_TABLE (table2), label6, 0, 1, 0, 1,
                      (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (GTK_SHRINK), 0, 0);
@@ -517,11 +517,19 @@
 
 void xa_apply_prefs_option(Prefs_dialog_data *prefs_data)
 {
+       gint i,idx;
+
        if (gtk_toggle_button_get_active 
(GTK_TOGGLE_BUTTON(prefs_data->show_location_bar)))
                gtk_widget_show_all (toolbar2);
        else
                gtk_widget_hide (toolbar2);
+
+       for (i = 0; i < gtk_notebook_get_n_pages(notebook) ; i++)
+       {
+               idx = xa_find_archive_index (i);
+               if (archive[idx] != NULL)
+                       g_object_set(G_OBJECT(archive[idx]->renderer), 
"stock-size", (3 - 
gtk_combo_box_get_active(GTK_COMBO_BOX(prefs_data->combo_icon_size))), NULL);
+               gtk_widget_queue_draw(GTK_WIDGET(archive[idx]->treeview));
+       }
        
-       /*renderer = gtk_cell_renderer_pixbuf_new();
-       g_object_set(G_OBJECT(renderer), "stock-size", (3 - 
gtk_combo_box_get_active(GTK_COMBO_BOX(prefs_window->combo_icon_size))), 
NULL);*/
 }

Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c        2007-09-20 22:14:39 UTC (rev 26092)
+++ xarchiver/trunk/src/window.c        2007-09-21 12:44:49 UTC (rev 26093)
@@ -1128,11 +1128,10 @@
 
        /* First column: icon + text */
        column = gtk_tree_view_column_new();
-       renderer = gtk_cell_renderer_pixbuf_new();
-       //TODO; have this in real time according to the user set preferences
-       g_object_set(G_OBJECT(renderer), "stock-size", (3 - 
gtk_combo_box_get_active(GTK_COMBO_BOX(prefs_window->combo_icon_size))), NULL);
-       gtk_tree_view_column_pack_start(column, renderer, FALSE);
-       gtk_tree_view_column_set_attributes(column, renderer, 
"icon-name",0,NULL);
+       archive->renderer = gtk_cell_renderer_pixbuf_new();
+       g_object_set(G_OBJECT(archive->renderer), "stock-size", (3 - 
gtk_combo_box_get_active(GTK_COMBO_BOX(prefs_window->combo_icon_size))), NULL);
+       gtk_tree_view_column_pack_start(column, archive->renderer, FALSE);
+       gtk_tree_view_column_set_attributes(column, archive->renderer, 
"icon-name",0,NULL);
 
        renderer = gtk_cell_renderer_text_new ();
        gtk_tree_view_column_pack_start(column, renderer, TRUE);
@@ -1929,11 +1928,15 @@
        gchar *argv[3];
        gchar *browser_path;
 
-       //TODO: retrieve the user set browser from prefs and use it
-       browser_path = g_find_program_in_path ("xelp");
+       browser_path = 
gtk_combo_box_get_active_text(GTK_COMBO_BOX(prefs_window->combo_prefered_web_browser));
 
-       if ( browser_path == NULL)
-               browser_path = g_find_program_in_path ("firefox");
+       if (strlen(browser_path) == 0)
+       {
+               response = xa_show_message_dialog (GTK_WINDOW 
(MainWindow),GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,
+               _("You didn't set the browser to use!"),_("Please go to 
Preferences->Advanced and set it."));           
+               g_free (browser_path);
+               return; 
+       }
 
        argv[0] = browser_path;
        argv[1] = (gchar *) link;

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

Reply via email to