[Xfce4-commits] r27209 - in xarchiver/trunk: . src
Giuseppe Torelli
colossus at xfce.org
Fri Jul 4 11:26:29 CEST 2008
Author: colossus
Date: 2008-07-04 09:26:29 +0000 (Fri, 04 Jul 2008)
New Revision: 27209
Modified:
xarchiver/trunk/TODO
xarchiver/trunk/src/add_dialog.c
xarchiver/trunk/src/archive.c
xarchiver/trunk/src/interface.c
xarchiver/trunk/src/interface.h
xarchiver/trunk/src/string_utils.c
xarchiver/trunk/src/window.c
xarchiver/trunk/src/window.h
Log:
Changed layout buttons of stop confirmation dialog to Ok/Cancel.
Now the statusbar shows the total size of the items in the archive.
Modified: xarchiver/trunk/TODO
===================================================================
--- xarchiver/trunk/TODO 2008-07-04 06:01:27 UTC (rev 27208)
+++ xarchiver/trunk/TODO 2008-07-04 09:26:29 UTC (rev 27209)
@@ -1,3 +1,4 @@
+- fix adding in the archive directories with dnd.
- fix the directories bug with 7z
- fix the remaining bugs in bugzilla.xfce.org
- enrich the status bar
Modified: xarchiver/trunk/src/add_dialog.c
===================================================================
--- xarchiver/trunk/src/add_dialog.c 2008-07-04 06:01:27 UTC (rev 27208)
+++ xarchiver/trunk/src/add_dialog.c 2008-07-04 09:26:29 UTC (rev 27209)
@@ -455,7 +455,7 @@
void xa_execute_add_commands (XArchive *archive,GString *names,gchar *compression_string)
{
if (xa_main_window)
- Update_StatusBar ( _("Adding files to the archive, please wait..."));
+ Update_StatusBar (_("Adding files to the archive, please wait..."));
archive->status = XA_ARCHIVESTATUS_ADD;
(*archive->add) (archive,names,compression_string);
}
Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c 2008-07-04 06:01:27 UTC (rev 27208)
+++ xarchiver/trunk/src/archive.c 2008-07-04 09:26:29 UTC (rev 27209)
@@ -361,7 +361,7 @@
break;
_commands = _commands->next;
}
- xa_archive_operation_finished(archive,result);
+ xa_archive_operation_finished(archive);
here:
g_slist_foreach (commands,(GFunc) g_free,NULL);
g_slist_free(commands);
@@ -612,6 +612,7 @@
entry = entry->next;
}
xa_fill_dir_sidebar(archive,FALSE);
+ xa_handle_selected_rows(NULL,archive);
}
XEntry* xa_find_entry_from_path (XEntry *root_entry,const gchar *fullpathname)
@@ -870,6 +871,7 @@
g_string_free(string,TRUE);
xa_update_window_with_archive_entries(archive[idx],entry);
+ xa_handle_selected_rows(NULL,archive[idx]);
}
}
Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c 2008-07-04 06:01:27 UTC (rev 27208)
+++ xarchiver/trunk/src/interface.c 2008-07-04 09:26:29 UTC (rev 27209)
@@ -402,7 +402,6 @@
archive_dir_treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(archive_dir_model));
gtk_container_add (GTK_CONTAINER (scrolledwindow2), archive_dir_treeview);
gtk_widget_show(archive_dir_treeview);
- //gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (archive_dir_treeview), FALSE);
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(archive_dir_model),1,GTK_SORT_ASCENDING);
GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW (archive_dir_treeview));
@@ -431,11 +430,12 @@
gtk_drag_dest_set (GTK_WIDGET(notebook),GTK_DEST_DEFAULT_ALL,drop_targets,1,GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK);
g_signal_connect (G_OBJECT (notebook), "drag-data-received",G_CALLBACK (on_drag_data_received), NULL);
- hbox_sb = gtk_hbox_new (FALSE, 0);
+ hbox_sb = gtk_hbox_new (FALSE,2);
gtk_widget_show (hbox_sb);
- gtk_box_pack_end (GTK_BOX (vbox1), hbox_sb, FALSE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX (vbox1), hbox_sb, FALSE, TRUE,0);
viewport1 = gtk_viewport_new (NULL, NULL);
+ gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport1),GTK_SHADOW_NONE);
gtk_widget_show (viewport1);
gtk_box_pack_start (GTK_BOX (hbox_sb), viewport1, TRUE, TRUE, 0);
@@ -445,11 +445,12 @@
gtk_container_add (GTK_CONTAINER (viewport1), info_label);
viewport2 = gtk_viewport_new (NULL, NULL);
+ gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport2),GTK_SHADOW_NONE);
gtk_box_pack_start (GTK_BOX (hbox_sb), viewport2, TRUE, TRUE, 0);
progressbar = gtk_progress_bar_new ();
gtk_widget_show (progressbar);
- gtk_widget_set_size_request(progressbar, 80, 1);
+ gtk_widget_set_size_request(progressbar,-1,10);
gtk_container_add (GTK_CONTAINER (viewport2), progressbar);
g_signal_connect ((gpointer) new1, "activate", G_CALLBACK (xa_new_archive), NULL);
@@ -616,7 +617,7 @@
gtk_tree_view_set_rubber_banding(GTK_TREE_VIEW(archive->treeview),TRUE);
gtk_drag_source_set (archive->treeview, GDK_BUTTON1_MASK, drag_targets, 1, GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK);
- g_signal_connect ((gpointer) sel, "changed", G_CALLBACK (xa_activate_delete_and_view),archive);
+ g_signal_connect ((gpointer) sel, "changed", G_CALLBACK (xa_handle_selected_rows),archive);
g_signal_connect (G_OBJECT (archive->treeview), "drag-begin", G_CALLBACK (drag_begin),archive);
g_signal_connect (G_OBJECT (archive->treeview), "drag-data-get",G_CALLBACK (drag_data_get),archive);
g_signal_connect (G_OBJECT (archive->treeview), "drag-end", G_CALLBACK (drag_end),NULL);
@@ -1167,6 +1168,9 @@
gint current_page;
gint idx;
XEntry *new_entry = NULL;
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
current_page = gtk_notebook_get_current_page (notebook);
idx = xa_find_archive_index (current_page);
@@ -1180,9 +1184,12 @@
g_free(archive[idx]->location_entry_path);
archive[idx]->location_entry_path = NULL;
}
+ /* Let's unselect the row in the sidepane */
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (archive_dir_treeview));
+ gtk_tree_selection_get_selected (selection,&model,&iter);
+ gtk_tree_selection_unselect_iter(selection,&iter);
xa_update_window_with_archive_entries(archive[idx],NULL);
-
xa_restore_navigation(idx);
break;
@@ -1192,7 +1199,6 @@
archive[idx]->forward = g_slist_prepend(archive[idx]->forward,archive[idx]->current_entry);
xa_update_window_with_archive_entries(archive[idx],archive[idx]->back->data);
archive[idx]->back = archive[idx]->back->next;
-
xa_restore_navigation(idx);
break;
Modified: xarchiver/trunk/src/interface.h
===================================================================
--- xarchiver/trunk/src/interface.h 2008-07-04 06:01:27 UTC (rev 27208)
+++ xarchiver/trunk/src/interface.h 2008-07-04 09:26:29 UTC (rev 27209)
@@ -122,21 +122,21 @@
GtkTextIter iter;
} widget_data;
-gchar *xa_create_password_dialog(gchar *archive_name);
-void set_label (GtkWidget *label,gchar *text);
-int xa_progressbar_pulse (gpointer data);
+gchar *xa_create_password_dialog(gchar *);
+void set_label (GtkWidget *label,gchar *);
+int xa_progressbar_pulse (gpointer );
void xa_create_popup_menu();
widget_data *xa_create_output_window(gchar *);
-void xa_create_main_window (GtkWidget *xa_main_window,gboolean,gboolean,gboolean);
+void xa_create_main_window (GtkWidget *,gboolean,gboolean,gboolean);
GtkWidget *create_archive_properties_window();
-gboolean select_matched_rows(GtkTreeModel *model,GtkTreePath *path,GtkTreeIter *iter,gpointer data);
-void xa_create_delete_dialog(GtkMenuItem *menuitem, gpointer user_data);
-void xa_handle_navigation_buttons (GtkMenuItem *menuitem, gpointer user_data);
-void xa_add_page (XArchive *archive);
-void xa_page_has_changed (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data);
-void xa_close_page (GtkWidget *widget, gpointer data);
+gboolean select_matched_rows(GtkTreeModel *,GtkTreePath *,GtkTreeIter *,gpointer );
+void xa_create_delete_dialog(GtkMenuItem *, gpointer );
+void xa_handle_navigation_buttons (GtkMenuItem *, gpointer );
+void xa_add_page (XArchive *);
+void xa_page_has_changed (GtkNotebook *, GtkNotebookPage *, guint , gpointer );
+void xa_close_page (GtkWidget *, gpointer );
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 value);
+void xa_disable_delete_buttons (gboolean );
#endif
Modified: xarchiver/trunk/src/string_utils.c
===================================================================
--- xarchiver/trunk/src/string_utils.c 2008-07-04 06:01:27 UTC (rev 27208)
+++ xarchiver/trunk/src/string_utils.c 2008-07-04 09:26:29 UTC (rev 27209)
@@ -246,15 +246,9 @@
{
gchar *quoted_filename = NULL;
gchar *esc_filename = NULL;
+
+ esc_filename = xa_escape_common_chars (filename , " '*?[]", '\\', 0);
- quoted_filename = g_shell_quote(filename);
- if (strstr(filename,"[") || strstr(filename,"]"))
- {
- esc_filename = xa_escape_common_chars (quoted_filename , "*?[]", '\\', 0);
- g_free(quoted_filename);
- quoted_filename = esc_filename;
- }
- g_string_prepend (data,quoted_filename);
+ g_string_prepend (data,esc_filename);
g_string_prepend_c (data,' ');
- g_free (quoted_filename);
}
Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c 2008-07-04 06:01:27 UTC (rev 27208)
+++ xarchiver/trunk/src/window.c 2008-07-04 09:26:29 UTC (rev 27209)
@@ -76,7 +76,7 @@
return TRUE;
}
-void xa_archive_operation_finished(XArchive *archive,gboolean error)
+void xa_archive_operation_finished(XArchive *archive)
{
if(xa_main_window)
{
@@ -89,10 +89,6 @@
gtk_widget_set_sensitive (comment_menu,FALSE);
xa_set_button_state (1,1,1,archive->can_add,archive->can_extract,archive->has_sfx,archive->has_test,archive->has_properties);
- if (error)
- Update_StatusBar ( _("Operation completed."));
- else
- Update_StatusBar ( _("Operation failed!"));
if (archive->has_comment && archive->status == XA_ARCHIVESTATUS_OPEN && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs_window->check_show_comment)))
xa_show_archive_comment (NULL, NULL);
@@ -201,14 +197,6 @@
return;
}
result = xa_check_child_for_error_on_exit (archive,status);
- if (result)
- {
- xa_archive_operation_finished(archive,result);
- return;
- }
- else
- xa_archive_operation_finished(archive,result);
-
if ( xa_main_window != NULL && archive != NULL)
{
if (archive->has_passwd == FALSE && archive->passwd == NULL)
@@ -216,6 +204,7 @@
else
gtk_widget_set_sensitive (password_entry_menu,TRUE);
}
+ xa_archive_operation_finished(archive);
}
void xa_new_archive (GtkMenuItem *menuitem, gpointer user_data)
@@ -1263,7 +1252,7 @@
if (archive[idx]->status != XA_ARCHIVESTATUS_ADD)
if (archive[idx]->has_passwd)
archive[idx]->has_passwd = FALSE;
- xa_archive_operation_finished(archive[idx],0);
+ xa_archive_operation_finished(archive[idx]);
}
void xa_archive_properties (GtkMenuItem *menuitem,gpointer user_data)
@@ -1377,16 +1366,58 @@
gtk_widget_show_all (archive_properties_window);
}
-void xa_activate_delete_and_view (GtkTreeSelection *treeselection,gpointer data)
+void xa_handle_selected_rows (GtkTreeSelection *selection,gpointer data)
{
XArchive *archive = data;
- GtkTreeSelection *selection;
+ GList *list = NULL;
+ gchar *measure = NULL;
+ gchar *info = NULL;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GtkTreePath *path;
+ gint selected,n_elem = 0,pos = 0;
+ unsigned long int total_size = 0;
+ unsigned int size = 0;
- if ( ! GTK_WIDGET_VISIBLE (Extract_button) )
- return;
+ /*if ( ! GTK_WIDGET_VISIBLE (Extract_button) )
+ return;*/
- selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (archive->treeview));
- gint selected = gtk_tree_selection_count_selected_rows (selection);
+ switch (archive->type)
+ {
+ case XARCHIVETYPE_GZIP:
+ case XARCHIVETYPE_BZIP2:
+ case XARCHIVETYPE_LZMA:
+ case XARCHIVETYPE_RPM:
+ pos = 3;
+ break;
+
+ case XARCHIVETYPE_RAR:
+ case XARCHIVETYPE_ARJ:
+ case XARCHIVETYPE_7ZIP:
+ pos = 2;
+ break;
+
+ case XARCHIVETYPE_LHA:
+ pos = 4;
+ break;
+
+ case XARCHIVETYPE_TAR_GZ:
+ case XARCHIVETYPE_TAR_BZ2:
+ case XARCHIVETYPE_TAR_LZMA:
+ case XARCHIVETYPE_TAR:
+ case XARCHIVETYPE_DEB:
+ case XARCHIVETYPE_ZIP:
+ pos = 5;
+ break;
+
+ default:
+ size = 0;
+ }
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(archive->treeview));
+ if (selection == NULL)
+ goto here;
+ selected = gtk_tree_selection_count_selected_rows (selection);
+
if (selected == 0 )
xa_disable_delete_buttons (FALSE);
else
@@ -1396,6 +1427,79 @@
else if ( archive->type != XARCHIVETYPE_RPM && archive->type != XARCHIVETYPE_DEB)
gtk_widget_set_sensitive (delete_menu,TRUE);
}
+ if (selected > 0)
+ {
+ list = gtk_tree_selection_get_selected_rows(selection,NULL);
+ while (list)
+ {
+ gtk_tree_model_get_iter(model,&iter,list->data);
+ gtk_tree_model_get (model,&iter,pos,&size,-1);
+ gtk_tree_path_free (list->data);
+ total_size += size;
+ list = list->next;
+ }
+ g_list_free(list);
+ if (total_size > 1024*1024*1024 )
+ {
+ content_size = (double)total_size / (1024*1024*1024);
+ measure = "GB";
+ }
+ else if (total_size > 1024*1024 )
+ {
+ content_size = (double)total_size / (1024*1024);
+ measure = "MB";
+ }
+ else if (total_size > 1024 )
+ {
+ content_size = (double)total_size / 1024;
+ measure = "KB";
+ }
+ else
+ {
+ measure = "Bytes";
+ content_size = total_size;
+ }
+ info = g_strdup_printf(ngettext ("%d item selected (%.1f %s)", "%d items selected (%.1f %s)", selected),selected,content_size,measure);
+ }
+ else
+ {
+here:
+ if (model == NULL)
+ return;
+ path = gtk_tree_path_new_first();
+ if (gtk_tree_model_get_iter (model, &iter, path) == FALSE)
+ return;
+ do
+ {
+ n_elem++;
+ gtk_tree_model_get (model,&iter,pos,&size,-1);
+ total_size += size;
+ }
+ while (gtk_tree_model_iter_next (model,&iter));
+ if (total_size > 1024*1024*1024 )
+ {
+ content_size = (double)total_size / (1024*1024*1024);
+ measure = "GB";
+ }
+ else if (total_size > 1024*1024 )
+ {
+ content_size = (double)total_size / (1024*1024);
+ measure = "MB";
+ }
+ else if (total_size > 1024 )
+ {
+ content_size = (double)total_size / 1024;
+ measure = "KB";
+ }
+ else
+ {
+ measure = "Bytes";
+ content_size = total_size;
+ }
+ info = g_strdup_printf(ngettext ("%d item (%.1f %s)", "%d items (%.1f %s)", n_elem),n_elem,content_size,measure);
+ }
+ Update_StatusBar(info);
+ g_free(info);
}
void xa_concat_filenames (GtkTreeModel *model, GtkTreePath *treepath, GtkTreeIter *iter, GString *data)
Modified: xarchiver/trunk/src/window.h
===================================================================
--- xarchiver/trunk/src/window.h 2008-07-04 06:01:27 UTC (rev 27208)
+++ xarchiver/trunk/src/window.h 2008-07-04 09:26:29 UTC (rev 27209)
@@ -82,7 +82,7 @@
void xa_cancel_archive ( GtkMenuItem * , gpointer);
void xa_add_files_archive ( GtkMenuItem *, gpointer);
void xa_show_prefs_dialog ( GtkMenuItem * , gpointer);
-void xa_activate_delete_and_view (GtkTreeSelection *treeselection,gpointer data);
+void xa_handle_selected_rows (GtkTreeSelection *treeselection,gpointer data);
void on_drag_data_received (GtkWidget *widget,GdkDragContext *context, int x,int y,GtkSelectionData *data, unsigned int info, unsigned int time, gpointer );
void drag_begin (GtkWidget *treeview1,GdkDragContext *context, gpointer data);
void drag_end (GtkWidget *treeview1, GdkDragContext *context, gpointer data);
@@ -94,7 +94,7 @@
gboolean key_press_function ( GtkWidget* widget, GdkEventKey* event,gpointer data);
gboolean treeview_select_search (GtkTreeModel *model,gint column,const gchar *key,GtkTreeIter *,gpointer );
gboolean xa_check_child_for_error_on_exit(XArchive *,gint status);
-void xa_archive_operation_finished(XArchive *,gboolean error);
+void xa_archive_operation_finished(XArchive *);
void xa_reload_archive_content(XArchive *);
void xa_watch_child ( GPid pid, gint status, gpointer data);
void xa_remove_columns();
@@ -102,7 +102,7 @@
void xa_concat_filenames (GtkTreeModel *, GtkTreePath *, GtkTreeIter *, GString *);
void xa_cat_filenames (XArchive *,GSList *,GString *,gchar *);
void xa_cat_filenames_basename (XArchive *,GSList *,GString *,gchar *);
-void Update_StatusBar (gchar *msg);
+void Update_StatusBar (gchar *);
gchar *xa_open_file_dialog ();
gchar *xa_open_sfx_file_selector ();
More information about the Xfce4-commits
mailing list