[Xfce4-commits] r27200 - xarchiver/trunk/src
Giuseppe Torelli
colossus at xfce.org
Thu Jul 3 13:23:06 CEST 2008
Author: colossus
Date: 2008-07-03 11:23:06 +0000 (Thu, 03 Jul 2008)
New Revision: 27200
Modified:
xarchiver/trunk/src/7zip.c
xarchiver/trunk/src/add_dialog.c
xarchiver/trunk/src/add_dialog.h
xarchiver/trunk/src/archive.c
xarchiver/trunk/src/archive.h
xarchiver/trunk/src/arj.c
xarchiver/trunk/src/interface.c
xarchiver/trunk/src/lha.c
xarchiver/trunk/src/rar.c
xarchiver/trunk/src/string_utils.c
xarchiver/trunk/src/string_utils.h
xarchiver/trunk/src/tar.c
xarchiver/trunk/src/window.c
xarchiver/trunk/src/window.h
xarchiver/trunk/src/zip.c
Log:
Now files and directories can be added inside an archive directory, I'm close to the finish line with this!!!!!!
Changed label for Help menu subitem to Contents and changed accelerator to F1 key.
Changed accelerator of Delete menu entry to DELETE so to use CTRL+D for Add menu and leave CTRL+C for copy.
Empty directories in the archive now show an empty window.
Fixed crash when clicking on the sidepane after closing all archives.
Changed the shadow property of the sidepane to GTK_SHADOW_IN.
Made location bar to update the sidepane.
Modified: xarchiver/trunk/src/7zip.c
===================================================================
--- xarchiver/trunk/src/7zip.c 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/7zip.c 2008-07-03 11:23:06 UTC (rev 27200)
@@ -18,6 +18,7 @@
#include "config.h"
#include <string.h>
+#include <unistd.h>
#include "7zip.h"
extern gboolean sevenzr;
@@ -189,7 +190,10 @@
exe = "7zr ";
if (sevenza)
exe = "7za ";
-
+
+ if (archive->location_entry_path != NULL)
+ chdir (archive->tmp);
+
if (compression_string == NULL)
compression_string = "5";
if (archive->passwd != NULL)
Modified: xarchiver/trunk/src/add_dialog.c
===================================================================
--- xarchiver/trunk/src/add_dialog.c 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/add_dialog.c 2008-07-03 11:23:06 UTC (rev 27200)
@@ -341,9 +341,16 @@
{
gchar *temp_password = NULL;
gchar *compression_string = NULL;
+ gchar *command = NULL;
+ gchar *new_path = NULL;
+ gchar tmp_dir[14];
gboolean done = FALSE;
+ gboolean result = FALSE;
GSList *files = NULL;
+ GSList *slist = NULL;
+ GSList *list = NULL;
GString *names;
+ GString *items;
names = g_string_new (" ");
while ( ! done )
@@ -375,7 +382,30 @@
archive->passwd = temp_password;
}
done = TRUE;
+ /* This in case the user wants to add files not in the archive root directory */
+ if (archive->location_entry_path != NULL)
+ {
+ result = xa_create_temp_directory(archive,tmp_dir);
+ if (result == FALSE)
+ return;
+ items = g_string_new("");
+ new_path = g_strconcat (archive->tmp,"/",archive->location_entry_path,NULL);
+ command = g_strconcat ("mkdir -p ",new_path,NULL);
+ list = g_slist_append(list,command);
+ slist = files;
+ while (slist)
+ {
+ g_string_append(items,slist->data);
+ g_string_append_c(items,' ');
+ slist = slist->next;
+ }
+ command = g_strconcat ("cp -r ",items->str," ",new_path,NULL);
+ g_string_free(items,FALSE);
+ list = g_slist_append(list,command);
+ xa_run_command (archive,list);
+ }
+
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_dialog->store_path)))
archive->full_path = TRUE;
else
@@ -405,18 +435,21 @@
gchar *current_dir = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1));
chdir (current_dir);
g_free (current_dir);
- xa_cat_filenames_basename(archive,files,names);
+ xa_cat_filenames_basename(archive,files,names,archive->location_entry_path);
}
else
- xa_cat_filenames(archive,files,names);
+ xa_cat_filenames(archive,files,names,archive->location_entry_path);
gtk_widget_hide(add_dialog->dialog1);
+
xa_execute_add_commands (archive,names,compression_string);
g_slist_free(files);
if (compression_string != NULL)
g_free (compression_string);
}
}
+ if (new_path != NULL)
+ g_free(new_path);
}
void xa_execute_add_commands (XArchive *archive,GString *names,gchar *compression_string)
@@ -426,4 +459,3 @@
archive->status = XA_ARCHIVESTATUS_ADD;
(*archive->add) (archive,names,compression_string);
}
-
Modified: xarchiver/trunk/src/add_dialog.h
===================================================================
--- xarchiver/trunk/src/add_dialog.h 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/add_dialog.h 2008-07-03 11:23:06 UTC (rev 27200)
@@ -50,14 +50,13 @@
GtkObject *compression_value;
} Add_dialog_data;
-Add_dialog_data *xa_create_add_dialog (XArchive *archive);
-void add_fresh_update_toggled_cb (GtkToggleButton *button, Add_dialog_data *data);
-void add_update_fresh_toggled_cb (GtkToggleButton *button, Add_dialog_data *data);
-void password_toggled_cb ( GtkButton* button , gpointer _add_dialog );
-void xa_parse_add_dialog_options ( XArchive *archive, Add_dialog_data *dialog_data );
-void xa_select_files_to_add ( GtkButton* button , gpointer _add_dialog );
-void xa_execute_add_commands ( XArchive *archive , GString *names, gchar *compression_string);
-void fix_adjustment_value (GtkAdjustment *adjustment, gpointer user_data);
-
+Add_dialog_data *xa_create_add_dialog (XArchive *);
+void add_fresh_update_toggled_cb (GtkToggleButton *, Add_dialog_data *);
+void add_update_fresh_toggled_cb (GtkToggleButton *, Add_dialog_data *);
+void password_toggled_cb ( GtkButton* ,gpointer);
+void xa_parse_add_dialog_options ( XArchive *, Add_dialog_data *);
+void xa_select_files_to_add ( GtkButton* ,gpointer );
+void xa_execute_add_commands ( XArchive *,GString *, gchar *);
+void fix_adjustment_value (GtkAdjustment *,gpointer );
#endif
Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/archive.c 2008-07-03 11:23:06 UTC (rev 27200)
@@ -32,8 +32,6 @@
extern gboolean batch_mode;
static gboolean xa_process_output (GIOChannel *ioc, GIOCondition cond, gpointer data);
-void xa_sidepane_select_row(XEntry *entry);
-gboolean _xa_sidepane_select_row(GtkTreeModel *model,GtkTreePath *path,GtkTreeIter *iter,gpointer data);
XArchive *xa_init_archive_structure(gint type)
{
@@ -552,8 +550,6 @@
gtk_widget_set_sensitive(up_button,FALSE);
gtk_widget_set_sensitive(home_button,FALSE);
}
- else if (entry->child == NULL)
- return;
else
{
if (archive->location_entry_path != NULL)
Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/archive.h 2008-07-03 11:23:06 UTC (rev 27200)
@@ -145,5 +145,7 @@
void xa_browse_dir_sidebar (XEntry *, GtkTreeStore *,gchar *,GtkTreeIter *);
void xa_fill_dir_sidebar(XArchive *,gboolean);
void xa_sidepane_row_selected(GtkTreeSelection *selection, gpointer data);
+void xa_sidepane_select_row(XEntry *entry);
+gboolean _xa_sidepane_select_row(GtkTreeModel *model,GtkTreePath *path,GtkTreeIter *iter,gpointer data);
XArchive *archive[100];
#endif
Modified: xarchiver/trunk/src/arj.c
===================================================================
--- xarchiver/trunk/src/arj.c 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/arj.c 2008-07-03 11:23:06 UTC (rev 27200)
@@ -18,6 +18,7 @@
#include "config.h"
#include "arj.h"
+#include <unistd.h>
extern void xa_create_liststore (XArchive *archive, gchar *columns_names[]);
@@ -165,7 +166,10 @@
{
GSList *list = NULL;
gchar *command = NULL;
-
+
+ if (archive->location_entry_path != NULL)
+ chdir (archive->tmp);
+
if (compression_string == NULL)
compression_string = "1";
if (archive->passwd != NULL)
Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/interface.c 2008-07-03 11:23:06 UTC (rev 27200)
@@ -131,11 +131,11 @@
menuitem2_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem2), menuitem2_menu);
- addfile = gtk_image_menu_item_new_with_mnemonic (_("Add"));
+ addfile = gtk_image_menu_item_new_with_mnemonic (_("A_dd"));
gtk_widget_set_sensitive (addfile,FALSE);
gtk_widget_show (addfile);
gtk_container_add (GTK_CONTAINER (menuitem2_menu), addfile);
- gtk_widget_add_accelerator (addfile, "activate",accel_group,GDK_c, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+ gtk_widget_add_accelerator (addfile, "activate",accel_group,GDK_d, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
image2 = xa_main_window_find_image ("xarchiver-add.png", GTK_ICON_SIZE_MENU);
gtk_widget_show (image2);
@@ -151,11 +151,11 @@
gtk_widget_show (image2);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (extract_menu), image2);
- delete_menu = gtk_image_menu_item_new_from_stock ("gtk-delete", accel_group);
+ delete_menu = gtk_image_menu_item_new_from_stock ("gtk-delete",accel_group);
gtk_widget_set_sensitive (delete_menu,FALSE);
gtk_widget_show (delete_menu);
- gtk_container_add (GTK_CONTAINER (menuitem2_menu), delete_menu);
- gtk_widget_add_accelerator (delete_menu, "activate",accel_group,GDK_d, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
+ gtk_container_add (GTK_CONTAINER (menuitem2_menu),delete_menu);
+ gtk_widget_add_accelerator (delete_menu, "activate",accel_group,GDK_Delete, GDK_MODE_DISABLED, GTK_ACCEL_VISIBLE);
separatormenuitem3 = gtk_separator_menu_item_new ();
gtk_widget_show (separatormenuitem3);
@@ -247,16 +247,21 @@
gtk_widget_show (tmp_image);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (prefs_menu), tmp_image);
- menuitem4 = gtk_menu_item_new_with_mnemonic (_("_Help"));
+ menuitem4 = gtk_image_menu_item_new_with_mnemonic (_("_Help"));
gtk_widget_show (menuitem4);
gtk_container_add (GTK_CONTAINER (menubar1), menuitem4);
menuitem4_menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menuitem4_menu);
- help1 = gtk_image_menu_item_new_from_stock ("gtk-help", accel_group);
+ help1 = gtk_image_menu_item_new_with_mnemonic ("_Contents");
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);
about1 = gtk_image_menu_item_new_from_stock ("gtk-about", accel_group);
gtk_widget_show (about1);
@@ -391,13 +396,13 @@
else
gtk_widget_hide (scrolledwindow2);
gtk_paned_pack1 (GTK_PANED (hpaned1), scrolledwindow2, FALSE, TRUE);
- g_object_set (G_OBJECT (scrolledwindow2),"hscrollbar-policy", GTK_POLICY_AUTOMATIC,"vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL);
+ g_object_set (G_OBJECT (scrolledwindow2),"hscrollbar-policy", GTK_POLICY_AUTOMATIC,"shadow-type", GTK_SHADOW_IN,"vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL);
archive_dir_model = gtk_tree_store_new (3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER);
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_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));
@@ -407,6 +412,7 @@
archive_dir_renderer = gtk_cell_renderer_pixbuf_new();
gtk_tree_view_column_pack_start(column,archive_dir_renderer,FALSE);
gtk_tree_view_column_set_attributes(column,archive_dir_renderer, "stock-id",0,NULL);
+ gtk_tree_view_column_set_title(column, _("Archive tree"));
archive_dir_renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(column,archive_dir_renderer,TRUE);
Modified: xarchiver/trunk/src/lha.c
===================================================================
--- xarchiver/trunk/src/lha.c 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/lha.c 2008-07-03 11:23:06 UTC (rev 27200)
@@ -19,6 +19,7 @@
#include "config.h"
#include "lha.h"
+#include <unistd.h>
extern void xa_create_liststore ( XArchive *archive, gchar *columns_names[]);
@@ -151,7 +152,10 @@
{
GSList *list = NULL;
gchar *command = NULL;
-
+
+ if (archive->location_entry_path != NULL)
+ chdir (archive->tmp);
+
if (compression_string == NULL)
compression_string = "5";
command = g_strconcat( "lha ",
Modified: xarchiver/trunk/src/rar.c
===================================================================
--- xarchiver/trunk/src/rar.c 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/rar.c 2008-07-03 11:23:06 UTC (rev 27200)
@@ -18,6 +18,7 @@
#include "config.h"
#include "rar.h"
+#include <unistd.h>
extern gboolean unrar;
extern void xa_create_liststore ( XArchive *archive, gchar *columns_names[]);
@@ -207,10 +208,13 @@
{
gchar *command = NULL;
GSList *list = NULL;
+ GString *e_filenames = g_string_new("");
archive->status = XA_ARCHIVESTATUS_DELETE;
- command = g_strconcat ("rar d ",archive->escaped_path," ",files->str,NULL);
+ xa_shell_quote_filename(files->str,e_filenames,archive);
+ command = g_strconcat ("rar d ",archive->escaped_path," ",e_filenames->str,NULL);
g_string_free(files,TRUE);
+ g_string_free(e_filenames,TRUE);
list = g_slist_append(list,command);
xa_run_command (archive,list);
@@ -221,6 +225,8 @@
GSList *list = NULL;
gchar *command = NULL;
+ if (archive->location_entry_path != NULL)
+ chdir (archive->tmp);
if (compression_string == NULL)
compression_string = "3";
Modified: xarchiver/trunk/src/string_utils.c
===================================================================
--- xarchiver/trunk/src/string_utils.c 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/string_utils.c 2008-07-03 11:23:06 UTC (rev 27200)
@@ -241,3 +241,20 @@
return utf8_string;
}
+
+void xa_shell_quote_filename (gchar *filename,GString *data,XArchive *archive)
+{
+ gchar *quoted_filename = NULL;
+ gchar *esc_filename = NULL;
+
+ 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_c (data,' ');
+ g_free (quoted_filename);
+}
Modified: xarchiver/trunk/src/string_utils.h
===================================================================
--- xarchiver/trunk/src/string_utils.h 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/string_utils.h 2008-07-03 11:23:06 UTC (rev 27200)
@@ -23,6 +23,7 @@
#include "config.h"
#endif
+#include "archive.h"
#ifndef HAVE_STRCASESTR
const char *strcasestr(const char *haystack, const char *needle);
#endif
@@ -37,5 +38,6 @@
void xa_set_window_title ( GtkWidget *window , gchar *title);
gboolean match_patterns (char **patterns,const char *string,int flags);
gchar *xa_remove_path_from_archive_name(gchar *name);
+void xa_shell_quote_filename (gchar *,GString *data,XArchive *);
#endif
Modified: xarchiver/trunk/src/tar.c
===================================================================
--- xarchiver/trunk/src/tar.c 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/tar.c 2008-07-03 11:23:06 UTC (rev 27200)
@@ -174,6 +174,9 @@
GSList *list = NULL;
gchar *command = NULL;
+ if (archive->location_entry_path != NULL)
+ chdir (archive->tmp);
+
switch (archive->type)
{
case XARCHIVETYPE_TAR:
Modified: xarchiver/trunk/src/window.c
===================================================================
--- xarchiver/trunk/src/window.c 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/window.c 2008-07-03 11:23:06 UTC (rev 27200)
@@ -456,6 +456,7 @@
xa_disable_delete_buttons (FALSE);
xa_set_button_state (1,1,0,0,0,0,0,0);
xa_set_window_title (xa_main_window,NULL);
+ gtk_tree_store_clear(GTK_TREE_STORE(archive_dir_model));
gtk_entry_set_text(GTK_ENTRY(location_entry),"");
}
else if ( current_page == 1)
@@ -841,8 +842,8 @@
void xa_about (GtkMenuItem *menuitem, gpointer user_data)
{
static GtkWidget *about = NULL;
- const char *authors[] = {"\nMain developer:\nGiuseppe Torelli <colossus73 at gmail.com>\n\nArchive navigation code:\nJohn Berthels\n\nCode fixing:\nBruno Jesus <00cpxxx at gmail.com>\n\nLHA and DEB support:\nŁukasz Zemczak <sil2100 at vexillium.org>\n\nLZMA support:\nThomas Dy <dysprosium66 at gmail.com>\n",NULL};
- const char *documenters[] = {"\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};
+ const char *authors[] = {"\nMain developer:\nGiuseppe Torelli <colossus73 at gmail.com>\n\nArchive navigation code:\nJohn Berthels\n\nCode fixing:\nEnrico Tröger\n\nLHA and DEB support:\nŁukasz Zemczak <sil2100 at vexillium.org>\n\nLZMA support:\nThomas Dy <dysprosium66 at gmail.com>\n",NULL};
+ const char *documenters[] = {"\nSpecial thanks to Bjoern Martensen for\nbugs hunting and Xarchiver Tango logo.\n\nThanks to:\nBenedikt Meurer\nStephan Arts\nBruno Jesus <00cpxxx at gmail.com>\nUracile for the stunning logo\n", NULL};
if (about == NULL)
{
@@ -854,7 +855,7 @@
"name", "xarchiver",
"version", PACKAGE_VERSION,
"copyright", "Copyright \xC2\xA9 2005-2008 Giuseppe Torelli",
- "comments", "The best GUI for handling archivers on Linux",
+ "comments", "The best GUI for handling archives on Linux",
"authors", authors,
"documenters",documenters,
"translator_credits", _("translator-credits"),
@@ -1265,100 +1266,6 @@
xa_archive_operation_finished(archive[idx],0);
}
-void xa_view_file_inside_archive (GtkMenuItem *menuitem,gpointer user_data)
-{
- gchar *command = NULL;
- gchar tmp_dir[14] = "";
- GtkTreeSelection *selection;
- GtkTreeModel *model;
- GtkTreeIter iter;
- XEntry *entry = NULL;
- gchar *full_pathname;
- gchar *editor_path;
- GString *names = g_string_new("");
- GList *row_list = NULL;
- GSList *list = NULL;
- gboolean result = FALSE;
- gint current_page;
- gint idx;
-
- current_page = gtk_notebook_get_current_page (notebook);
- idx = xa_find_archive_index (current_page);
-
- selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (archive[idx]->treeview) );
- if (gtk_tree_selection_count_selected_rows (selection) != 1)
- return;
-
- row_list = gtk_tree_selection_get_selected_rows (selection, &model);
- if (row_list == NULL)
- return;
-
- gtk_tree_model_get_iter(model, &iter, row_list->data);
- gtk_tree_path_free(row_list->data);
- g_list_free (row_list);
-
- gtk_tree_model_get (GTK_TREE_MODEL (archive[idx]->liststore),&iter,archive[idx]->nc+1,&entry, -1);
- if (entry == NULL || entry->is_dir)
- return;
-
- editor_path = gtk_combo_box_get_active_text (GTK_COMBO_BOX(prefs_window->combo_prefered_editor));
- if (strlen(editor_path) == 0)
- {
- response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,
- _("You didn't set which editor to use!"),_("Please go to Preferences->Advanced and set it."));
- g_free (editor_path);
- return;
- }
-
- if (entry->is_encrypted)
- {
- if (archive[idx]->passwd == NULL)
- {
- archive[idx]->passwd = xa_create_password_dialog(NULL);
- if (archive[idx]->passwd == NULL)
- return;
- }
- }
-
- full_pathname = xa_build_full_path_name_from_entry(entry);
- xa_shell_quote_filename(full_pathname,names,archive[idx]);
- g_free(full_pathname);
-
- result = xa_create_temp_directory(archive[idx],tmp_dir);
- if (result == FALSE)
- return;
-
- full_path = archive[idx]->full_path;
- overwrite = archive[idx]->overwrite;
-
- archive[idx]->full_path = 0;
- archive[idx]->overwrite = 1;
-
- //TODO: check for memleak here in extraction_path
- archive[idx]->extraction_path = archive[idx]->tmp;
- (*archive[idx]->extract) (archive[idx],names);
- g_string_free (names,TRUE);
-
- archive[idx]->full_path = full_path;
- archive[idx]->overwrite = overwrite;
- if (command != NULL)
- {
- list = g_slist_append(list,command);
- result = xa_run_command (archive[idx],list);
- if (result == 0)
- return;
- }
- command = g_strconcat(archive[idx]->tmp,"/",entry->filename,NULL);
-
- if (xa_launch_external_program(editor_path,command))
- xa_archive_operation_finished(archive[idx],1);
- else
- xa_archive_operation_finished(archive[idx],0);
-
- g_free(editor_path);
- g_free(command);
-}
-
void xa_archive_properties (GtkMenuItem *menuitem,gpointer user_data)
{
struct stat my_stat;
@@ -1373,7 +1280,7 @@
idx = xa_find_archive_index (current_page);
stat (archive[idx]->path , &my_stat );
file_size = my_stat.st_size;
- archive_properties_win = create_archive_properties_window();
+ archive_properties_window = create_archive_properties_window();
utf8_string = xa_remove_path_from_archive_name(archive[idx]->escaped_path);
gtk_entry_set_text ( GTK_ENTRY (name_data), utf8_string );
g_free (utf8_string);
@@ -1467,7 +1374,7 @@
t = g_strdup_printf ( "%d", archive[idx]->nr_of_dirs);
gtk_entry_set_text ( GTK_ENTRY (number_of_dirs_data), t );
g_free (t);
- gtk_widget_show_all ( archive_properties_win );
+ gtk_widget_show_all (archive_properties_window);
}
void xa_activate_delete_and_view (GtkTreeSelection *treeselection,gpointer data)
@@ -1491,28 +1398,6 @@
}
}
-void xa_shell_quote_filename (gchar *filename,GString *data,XArchive *archive)
-{
- gchar *quoted_filename = NULL;
- gchar *esc_filename = NULL;
-
- quoted_filename = g_shell_quote(filename);
- if (archive->status != XA_ARCHIVESTATUS_ADD && archive->type != XARCHIVETYPE_TAR
- && archive->type != XARCHIVETYPE_TAR_BZ2 && archive->type != XARCHIVETYPE_TAR_GZ
- && archive->type != XARCHIVETYPE_RAR)
- {
- 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_c (data,' ');
- g_free (quoted_filename);
-}
-
void xa_concat_filenames (GtkTreeModel *model, GtkTreePath *treepath, GtkTreeIter *iter, GString *data)
{
XEntry *entry = NULL;
@@ -1529,27 +1414,46 @@
g_free (filename);
}
-void xa_cat_filenames (XArchive *archive,GSList *list,GString *data)
+void xa_cat_filenames (XArchive *archive,GSList *list,GString *data,gchar *new_path)
{
GSList *slist = list;
+ gchar *name = NULL;
while (slist)
{
- xa_shell_quote_filename(slist->data,data,archive);
+ if (new_path != NULL)
+ {
+ name = g_strconcat(new_path,slist->data,NULL);
+ xa_shell_quote_filename(name,data,archive);
+ g_free(name);
+ }
+ else
+ xa_shell_quote_filename(slist->data,data,archive);
slist = slist->next;
}
}
-void xa_cat_filenames_basename (XArchive *archive,GSList *list,GString *data)
+void xa_cat_filenames_basename (XArchive *archive,GSList *list,GString *data,gchar *new_path)
{
gchar *basename;
GSList *slist = list;
while (slist)
{
- basename = g_path_get_basename (slist->data);
- xa_shell_quote_filename(basename,data,archive);
- g_free (basename);
+ if (new_path != NULL)
+ {
+ basename = g_path_get_basename (slist->data);
+ name = g_strconcat(new_path,basename,NULL);
+ g_free(basename);
+ xa_shell_quote_filename(name,data,archive);
+ g_free(name);
+ }
+ else
+ {
+ basename = g_path_get_basename (slist->data);
+ xa_shell_quote_filename(basename,data,archive);
+ g_free (basename);
+ }
slist = slist->next;
}
}
@@ -1775,7 +1679,6 @@
archive[idx]->add_recurse = add_recurse;
g_strfreev (array);
-
}
gboolean key_press_function (GtkWidget *widget, GdkEventKey *event, gpointer data)
@@ -1789,10 +1692,6 @@
xa_cancel_archive (NULL, NULL);
break;
- case GDK_Delete:
- if (GTK_WIDGET_STATE (delete_menu) != GTK_STATE_INSENSITIVE)
- xa_delete_archive (NULL,NULL);
- break;
}
return FALSE;
}
@@ -1960,6 +1859,7 @@
else
archive[idx]->back = g_slist_prepend(archive[idx]->back,NULL);
+ xa_sidepane_select_row(new_entry);
xa_update_window_with_archive_entries(archive[idx],new_entry);
}
Modified: xarchiver/trunk/src/window.h
===================================================================
--- xarchiver/trunk/src/window.h 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/window.h 2008-07-03 11:23:06 UTC (rev 27200)
@@ -58,58 +58,57 @@
gboolean done,full_path,overwrite,add_recurse;
Extract_dialog_data *extract_window;
Add_dialog_data *add_window;
-GtkWidget *dialog, *scrollwin, *view_window, *archive_properties_win;
+GtkWidget *dialog, *scrollwin, *view_window, *_properties_win;
-void xa_new_archive (GtkMenuItem *menuitem, gpointer user_data);
-void xa_open_archive (GtkMenuItem *menuitem, gpointer user_data );
-void xa_test_archive (GtkMenuItem *menuitem, gpointer user_data);
-void xa_close_archive (GtkMenuItem *menuitem, gpointer user_data);
-void xa_quit_application (GtkMenuItem *menuitem, gpointer user_data);
-void xa_delete_archive (GtkMenuItem *menuitem, gpointer user_data);
+void xa_new_archive (GtkMenuItem *, gpointer);
+void xa_open_archive (GtkMenuItem *, gpointer);
+void xa_test_archive (GtkMenuItem *, gpointer);
+void xa_close_archive (GtkMenuItem *, gpointer);
+void xa_quit_application (GtkMenuItem *, gpointer);
+void xa_delete_archive (GtkMenuItem *, gpointer);
gboolean xa_launch_external_program(gchar *program,gchar *arg);
-void xa_show_help (GtkMenuItem *menuitem, gpointer user_data);
-void xa_reset_password (GtkMenuItem *menuitem, gpointer user_data );
-void xa_about (GtkMenuItem *menuitem, gpointer user_data);
-void on_options1_activate (GtkMenuItem *menuitem, gpointer user_data);
-void xa_extract_archive ( GtkMenuItem *menuitem, gpointer user_data);
-void xa_convert_sfx ( GtkMenuItem *menuitem, gpointer user_data);
-void xa_select_all ( GtkMenuItem *menuitem, gpointer user_data);
-void xa_deselect_all ( GtkMenuItem *menuitem, gpointer user_data);
-void xa_show_archive_comment ( GtkMenuItem *menuitem, gpointer user_data);
-void xa_show_cmd_line_output( GtkMenuItem *menuitem );
-void xa_archive_properties ( GtkMenuItem *menuitem , gpointer user_data );
-void xa_view_file_inside_archive ( GtkMenuItem *menuitem , gpointer user_data );
-void xa_cancel_archive ( GtkMenuItem *menuitem , gpointer user_data);
-void xa_add_files_archive ( GtkMenuItem *menuitem, gpointer user_data );
-void xa_show_prefs_dialog ( GtkMenuItem *menuitem , gpointer user_data );
+void xa_show_help (GtkMenuItem *, gpointer);
+void xa_reset_password (GtkMenuItem *, gpointer);
+void xa_about (GtkMenuItem *, gpointer);
+void on_options1_activate (GtkMenuItem *, gpointer);
+void xa_extract_archive ( GtkMenuItem *, gpointer);
+void xa_convert_sfx ( GtkMenuItem *, gpointer);
+void xa_select_all ( GtkMenuItem *, gpointer);
+void xa_deselect_all ( GtkMenuItem *, gpointer);
+void xa_show_archive_comment ( GtkMenuItem *, gpointer);
+void xa_show_cmd_line_output( GtkMenuItem * );
+void xa_archive_properties ( GtkMenuItem * , gpointer);
+void xa_view_file_inside_archive ( GtkMenuItem * , gpointer);
+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 on_drag_data_received (GtkWidget *widget,GdkDragContext *context, int x,int y,GtkSelectionData *data, unsigned int info, unsigned int time, gpointer user_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);
void drag_data_get (GtkWidget *widget, GdkDragContext *dc, GtkSelectionData *selection_data, guint info, guint t, gpointer data);
-int xa_show_message_dialog ( GtkWindow *window, int mode,int type,int button, const gchar *message1,const gchar *message2);
+int xa_show_message_dialog ( GtkWindow *window, int mode,int type,int button, const gchar *,const gchar *);
int xa_detect_archive_type ( gchar *filename );
-gboolean xa_detect_archive_comment ( int type, gchar *filename, XArchive *archive );
+gboolean xa_detect_archive_comment ( int type, gchar *, XArchive * );
gboolean key_press_function ( GtkWidget* widget, GdkEventKey* event,gpointer data);
-gboolean treeview_select_search (GtkTreeModel *model,gint column,const gchar *key,GtkTreeIter *iter,gpointer search_data);
-gboolean xa_check_child_for_error_on_exit(XArchive *archive,gint status);
-void xa_archive_operation_finished(XArchive *archive,gboolean error);
-void xa_reload_archive_content(XArchive *archive);
+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_reload_archive_content(XArchive *);
void xa_watch_child ( GPid pid, gint status, gpointer data);
void xa_remove_columns();
-void xa_create_liststore ( XArchive *archive, gchar *columns_names[]);
-void xa_concat_filenames (GtkTreeModel *model, GtkTreePath *treepath, GtkTreeIter *iter, GString *data);
-void xa_shell_quote_filename (gchar *filename,GString *data,XArchive *archive);
-void xa_cat_filenames (XArchive *archive,GSList *list,GString *data);
-void xa_cat_filenames_basename (XArchive *archive,GSList *list,GString *data);
+void xa_create_liststore ( XArchive *, gchar *columns_names[]);
+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);
gchar *xa_open_file_dialog ();
gchar *xa_open_sfx_file_selector ();
void xa_activate_link (GtkAboutDialog *about,const gchar *link,gpointer data);
-void xa_location_entry_activated (GtkEntry *entry,gpointer user_data);
-void xa_treeview_row_activated(GtkTreeView *tree_view,GtkTreePath *path,GtkTreeViewColumn *column,gpointer user_data);
+void xa_location_entry_activated (GtkEntry *entry,gpointer );
+void xa_treeview_row_activated(GtkTreeView *tree_view,GtkTreePath *path,GtkTreeViewColumn *column,gpointer );
int xa_mouse_button_event(GtkWidget *widget,GdkEventButton *event,gpointer data);
gchar *name;
gchar *permissions;
Modified: xarchiver/trunk/src/zip.c
===================================================================
--- xarchiver/trunk/src/zip.c 2008-07-03 06:37:28 UTC (rev 27199)
+++ xarchiver/trunk/src/zip.c 2008-07-03 11:23:06 UTC (rev 27200)
@@ -18,6 +18,7 @@
#include "config.h"
#include <string.h>
+#include <unistd.h>
#include "zip.h"
@@ -193,6 +194,9 @@
GSList *list = NULL;
gchar *command = NULL;
+ if (archive->location_entry_path != NULL)
+ chdir (archive->tmp);
+
if (compression_string == NULL)
compression_string = "6";
if (archive->passwd != NULL)
More information about the Xfce4-commits
mailing list