[Xfce4-commits] r26551 - xarchiver/trunk/src
Giuseppe Torelli
colossus at xfce.org
Mon Jan 7 14:20:33 CET 2008
Author: colossus
Date: 2008-01-07 13:20:33 +0000 (Mon, 07 Jan 2008)
New Revision: 26551
Modified:
xarchiver/trunk/src/extract_dialog.c
xarchiver/trunk/src/extract_dialog.h
Log:
The new directory is now created through the extract dialog.
Modified: xarchiver/trunk/src/extract_dialog.c
===================================================================
--- xarchiver/trunk/src/extract_dialog.c 2008-01-07 00:17:32 UTC (rev 26550)
+++ xarchiver/trunk/src/extract_dialog.c 2008-01-07 13:20:33 UTC (rev 26551)
@@ -189,7 +189,7 @@
g_signal_connect (G_OBJECT (dialog_data->treeview3),"row-expanded",G_CALLBACK(xa_expand_dir),dialog_data->destination_path_entry);
g_signal_connect (G_OBJECT (dialog_data->treeview3),"row-activated",G_CALLBACK(xa_row_activated),dialog_data->destination_path_entry);
GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW (dialog_data->treeview3));
- g_signal_connect ((gpointer) sel,"changed",G_CALLBACK (xa_tree_view_row_selected),dialog_data->destination_path_entry);
+ g_signal_connect (sel,"changed",G_CALLBACK (xa_tree_view_row_selected),dialog_data->destination_path_entry);
column = gtk_tree_view_column_new();
dialog_data->renderer = gtk_cell_renderer_pixbuf_new();
@@ -200,7 +200,8 @@
gtk_tree_view_column_pack_start(column,dialog_data->renderer,TRUE);
gtk_tree_view_column_set_attributes( column,dialog_data->renderer,"text",1,NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (dialog_data->treeview3),column);
- g_signal_connect (dialog_data->renderer, "edited",G_CALLBACK (xa_cell_edited),model);
+ g_signal_connect (dialog_data->renderer, "editing-canceled",G_CALLBACK (xa_cell_edited_canceled),dialog_data);
+ g_signal_connect (dialog_data->renderer, "edited",G_CALLBACK (xa_cell_edited),dialog_data);
hbox4 = gtk_hbox_new (FALSE, 0);
gtk_box_pack_end (GTK_BOX (vbox1), hbox4, FALSE, FALSE, 0);
@@ -285,30 +286,62 @@
}
}
+void xa_cell_edited_canceled(GtkCellRenderer *renderer,gpointer data)
+{
+ Extract_dialog_data *dialog = data;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(dialog->treeview3));
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview3));
+ if (selection)
+ {
+ gtk_tree_selection_get_selected(selection,&model,&iter);
+ gtk_tree_store_remove(GTK_TREE_STORE(model),&iter);
+ gtk_widget_set_sensitive(dialog->create_dir,TRUE);
+ g_object_set(dialog->renderer,"editable",FALSE,NULL);
+ }
+}
+
void xa_cell_edited (GtkCellRendererText *cell,const gchar *path_string,const gchar *new_text,gpointer data)
{
- GtkTreeModel *model = data;
+ Extract_dialog_data *dialog = data;
+ GtkTreeModel *model;
GtkTreeIter iter;
GtkTreeIter prev_iter;
gchar *previous_dir;
gchar *fullname;
gint result;
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW(dialog->treeview3));
GtkTreePath *path = gtk_tree_path_new_from_string (path_string);
gtk_tree_model_get_iter (model, &iter,path);
gtk_tree_path_up(path);
gtk_tree_model_get_iter (model, &prev_iter,path);
gtk_tree_model_get(model,&prev_iter,2,&previous_dir,-1);
-
+
fullname = g_strconcat(previous_dir,"/",new_text,NULL);
g_free(previous_dir);
gtk_tree_store_set(GTK_TREE_STORE(model),&iter,0,"gtk-directory",1,new_text,2,fullname,-1);
- gtk_tree_path_free(path);
- if (g_mkdir_with_parents(fullname,0700) < 0)
- g_print ("%s\n",strerror(errno));
+ result = mkdir (fullname,S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXGRP);
+ if (result == -1)
+ {
+ gchar *msg = g_strdup_printf(_("Can't create directory \"%s\""),fullname);
+ response = xa_show_message_dialog (GTK_WINDOW (MainWindow),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,msg,g_strerror(errno ));
+ g_free (msg);
+ gtk_tree_store_remove(GTK_TREE_STORE(model),&iter);
+ }
+ else
+ {
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(dialog->treeview3),path,NULL,FALSE,0,0);
+ gtk_entry_set_text(GTK_ENTRY(dialog->destination_path_entry),fullname);
+ }
g_free(fullname);
- //gtk_widget_set_sensitive(dialog->create_dir,TRUE);
+ gtk_tree_path_free(path);
+ gtk_widget_set_sensitive(dialog->create_dir,TRUE);
+ g_object_set(dialog->renderer,"editable",FALSE,NULL);
}
@@ -394,17 +427,7 @@
response = xa_show_message_dialog (GTK_WINDOW (MainWindow),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK, _("This archive is encrypted!"),_("Please enter the password.") );
break;
}
- if (g_file_test (destination_path,G_FILE_TEST_EXISTS) == FALSE)
- {
- int result = mkdir (destination_path , S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXGRP);
- if (result == -1)
- {
- gchar *msg = g_strdup_printf(_("Can't create directory \"%s\""), destination_path);
- response = xa_show_message_dialog (GTK_WINDOW (MainWindow),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK, msg, g_strerror(errno ) );
- g_free (msg);
- break;
- }
- }
+
if ( g_file_test (destination_path,G_FILE_TEST_IS_DIR) && access (destination_path, R_OK | W_OK | X_OK ) )
{
gchar *utf8_path;
Modified: xarchiver/trunk/src/extract_dialog.h
===================================================================
--- xarchiver/trunk/src/extract_dialog.h 2008-01-07 00:17:32 UTC (rev 26550)
+++ xarchiver/trunk/src/extract_dialog.h 2008-01-07 13:20:33 UTC (rev 26551)
@@ -54,6 +54,7 @@
Extract_dialog_data *xa_create_extract_dialog (gint selected ,XArchive *archive);
void xa_create_dir_button_pressed (GtkButton *button, gpointer data);
+void xa_cell_edited_canceled(GtkCellRenderer *renderer,gpointer user_data);
void xa_cell_edited (GtkCellRendererText *cell,const gchar *path_string,const gchar *new_text,gpointer data);
void xa_activate_entry(GtkToggleButton *button,gpointer data);
void fresh_update_toggled_cb (GtkToggleButton *button, Extract_dialog_data *data);
More information about the Xfce4-commits
mailing list