Added file-exists.glade.

2001-08-01  Christopher James Lahey  <clahey@ximian.com>

	* gui/contact-editor/Makefile.am: Added file-exists.glade.

	* gui/contact-editor/e-contact-save-as.c (file_exists),
	gui/contact-editor/file-exists.glade: Added a dialog to ask the
	user whether to replace an already existing file.  Mostly from a
	patch by Jos Dehaes.  Fixes Ximian bug #2231.

svn path=/trunk/; revision=11540
This commit is contained in:
Christopher James Lahey
2001-08-01 07:16:40 +00:00
committed by Chris Lahey
parent e567bc692a
commit 0d176ec109
4 changed files with 158 additions and 1 deletions

View File

@ -1,3 +1,12 @@
2001-08-01 Christopher James Lahey <clahey@ximian.com>
* gui/contact-editor/Makefile.am: Added file-exists.glade.
* gui/contact-editor/e-contact-save-as.c (file_exists),
gui/contact-editor/file-exists.glade: Added a dialog to ask the
user whether to replace an already existing file. Mostly from a
patch by Jos Dehaes. Fixes Ximian bug #2231.
2001-08-01 Christopher James Lahey <clahey@ximian.com>
* backend/ebook/e-book-view-listener.c

View File

@ -58,6 +58,7 @@ glade_DATA = \
contact-editor.glade \
fulladdr.glade \
fullname.glade \
file-exists.glade \
e-contact-editor-confirm-delete.glade
EXTRA_DIST = $(evolution_DATA) \

View File

@ -24,8 +24,14 @@
#include <fcntl.h>
#include <gtk/gtkfilesel.h>
#include <gtk/gtksignal.h>
#include <gtk/gtk.h>
#include <libgnomeui/gnome-dialog.h>
#include <gal/util/e-util.h>
#include <libgnome/gnome-i18n.h>
#include "e-contact-save-as.h"
#include <errno.h>
static int file_exists(GtkFileSelection *filesel, const char *filename);
typedef struct {
GtkFileSelection *filesel;
@ -35,10 +41,24 @@ typedef struct {
static void
save_it(GtkWidget *widget, SaveAsInfo *info)
{
gint error = 0;
gint response = 0;
const char *filename = gtk_file_selection_get_filename (info->filesel);
e_write_file (filename, info->vcard, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC);
error = e_write_file (filename, info->vcard, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC);
if (error == EEXIST) {
response = file_exists(info->filesel, filename);
switch (response) {
case 0 : /* Overwrite */
e_write_file(filename, info->vcard, O_WRONLY | O_CREAT | O_TRUNC);
break;
case 1 : /* cancel */
break;
}
}
g_free (info->vcard);
gtk_widget_destroy(GTK_WIDGET(info->filesel));
g_free(info);
@ -98,3 +118,35 @@ e_contact_list_save_as(char *title, GList *list)
delete_it, info);
gtk_widget_show(GTK_WIDGET(filesel));
}
static int
file_exists(GtkFileSelection *filesel, const char *filename)
{
GnomeDialog *dialog = NULL;
GtkWidget *label;
GladeXML *gui = NULL;
int result = 0;
char *string;
gui = glade_xml_new (EVOLUTION_GLADEDIR "/file-exists.glade", NULL);
dialog = GNOME_DIALOG(glade_xml_get_widget(gui, "dialog-exists"));
gtk_widget_ref(GTK_WIDGET(dialog));
label = glade_xml_get_widget (gui, "label-exists");
if (GTK_IS_LABEL (label)) {
string = g_strdup_printf (_("%s already exists\nDo you want to overwrite it?"), filename);
gtk_label_set_text (GTK_LABEL (label), string);
g_free (string);
}
gnome_dialog_set_parent(dialog, GTK_WINDOW(filesel));
gtk_widget_show (GTK_WIDGET (dialog));
result = gnome_dialog_run_and_close(dialog);
gtk_widget_unref(GTK_WIDGET(dialog));
gtk_widget_destroy(GTK_WIDGET(dialog));
g_free(gui);
return result;
}

View File

@ -0,0 +1,95 @@
<?xml version="1.0"?>
<GTK-Interface>
<project>
<name>File_exists.glade</name>
<program_name>file_exists.glade</program_name>
<directory></directory>
<source_directory>src</source_directory>
<pixmaps_directory>pixmaps</pixmaps_directory>
<language>C</language>
<gnome_support>True</gnome_support>
<gettext_support>True</gettext_support>
</project>
<widget>
<class>GnomeDialog</class>
<name>dialog-exists</name>
<visible>False</visible>
<title>Confirm Overwrite</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
<modal>False</modal>
<allow_shrink>False</allow_shrink>
<allow_grow>False</allow_grow>
<auto_shrink>False</auto_shrink>
<auto_close>False</auto_close>
<hide_on_close>False</hide_on_close>
<widget>
<class>GtkVBox</class>
<child_name>GnomeDialog:vbox</child_name>
<name>dialog-vbox1</name>
<homogeneous>False</homogeneous>
<spacing>8</spacing>
<child>
<padding>4</padding>
<expand>True</expand>
<fill>True</fill>
</child>
<widget>
<class>GtkHButtonBox</class>
<child_name>GnomeDialog:action_area</child_name>
<name>dialog-action_area1</name>
<layout_style>GTK_BUTTONBOX_END</layout_style>
<spacing>8</spacing>
<child_min_width>85</child_min_width>
<child_min_height>27</child_min_height>
<child_ipad_x>7</child_ipad_x>
<child_ipad_y>0</child_ipad_y>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>True</fill>
<pack>GTK_PACK_END</pack>
</child>
<widget>
<class>GtkButton</class>
<name>button1</name>
<can_default>True</can_default>
<can_focus>True</can_focus>
<label>Overwrite</label>
</widget>
<widget>
<class>GtkButton</class>
<name>button3</name>
<can_default>True</can_default>
<has_default>True</has_default>
<can_focus>True</can_focus>
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
</widget>
</widget>
<widget>
<class>GtkLabel</class>
<name>label-exists</name>
<label>Don't bother translating this string. It's not used.</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0.5</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>0</ypad>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
</widget>
</widget>
</GTK-Interface>