[file-roller/gnome-3-8] do not allow to save as the original name
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [file-roller/gnome-3-8] do not allow to save as the original name
- Date: Tue, 4 Jun 2013 08:17:02 +0000 (UTC)
commit 919d713777843efb18ffad6139a31b4080d22fdc
Author: Paolo Bacchilega <paobac src gnome org>
Date: Mon May 27 21:50:48 2013 +0200
do not allow to save as the original name
[bug #700892]
src/dlg-batch-add.c | 3 ++-
src/fr-new-archive-dialog.c | 33 +++++++++++++++++++++++++++++----
src/fr-new-archive-dialog.h | 3 ++-
src/fr-window.c | 7 +++++--
4 files changed, 38 insertions(+), 8 deletions(-)
---
diff --git a/src/dlg-batch-add.c b/src/dlg-batch-add.c
index 640eb6a..dd93152 100644
--- a/src/dlg-batch-add.c
+++ b/src/dlg-batch-add.c
@@ -88,7 +88,8 @@ dlg_batch_add_files (FrWindow *window,
NULL,
((file_list->next == NULL) ?
FR_NEW_ARCHIVE_ACTION_NEW_SINGLE_FILE : FR_NEW_ARCHIVE_ACTION_NEW_MANY_FILES),
parent,
- filename);
+ filename,
+ NULL);
g_signal_connect (dialog,
"response",
G_CALLBACK (dialog_response_cb),
diff --git a/src/fr-new-archive-dialog.c b/src/fr-new-archive-dialog.c
index 9a27fc5..76f5a51 100644
--- a/src/fr-new-archive-dialog.c
+++ b/src/fr-new-archive-dialog.c
@@ -46,6 +46,7 @@ struct _FrNewArchiveDialogPrivate {
gboolean can_encrypt;
gboolean can_encrypt_header;
gboolean can_create_volumes;
+ GFile *original_file;
};
@@ -59,6 +60,7 @@ fr_new_archive_dialog_finalize (GObject *object)
self = FR_NEW_ARCHIVE_DIALOG (object);
+ _g_object_unref (self->priv->original_file);
g_object_unref (self->priv->settings);
g_object_unref (self->priv->builder);
g_hash_table_unref (self->priv->supported_ext);
@@ -102,7 +104,6 @@ fr_new_archive_dialog_class_init (FrNewArchiveDialogClass *klass)
object_class = G_OBJECT_CLASS (klass);
object_class->finalize = fr_new_archive_dialog_finalize;
- object_class->finalize = fr_new_archive_dialog_finalize;
widget_class = GTK_WIDGET_CLASS (klass);
widget_class->unmap = fr_new_archive_dialog_unmap;
@@ -116,6 +117,7 @@ fr_new_archive_dialog_init (FrNewArchiveDialog *self)
self->priv->settings = g_settings_new (FILE_ROLLER_SCHEMA_NEW);
self->priv->builder = NULL;
self->priv->supported_ext = g_hash_table_new (g_str_hash, g_str_equal);
+ self->priv->original_file = NULL;
}
@@ -200,7 +202,8 @@ _fr_new_archive_dialog_construct (FrNewArchiveDialog *self,
GtkWindow *parent,
FrNewArchiveAction action,
GFile *folder,
- const char *default_name)
+ const char *default_name,
+ GFile *original_file)
{
char *active_extension;
int active_extension_idx;
@@ -214,6 +217,9 @@ _fr_new_archive_dialog_construct (FrNewArchiveDialog *self,
if (self->priv->builder == NULL)
return;
+ _g_object_unref (self->priv->original_file);
+ self->priv->original_file = _g_object_ref (original_file);
+
gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (self))), GET_WIDGET
("content"));
gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
@@ -298,12 +304,13 @@ fr_new_archive_dialog_new (const char *title,
GtkWindow *parent,
FrNewArchiveAction action,
GFile *folder,
- const char *default_name)
+ const char *default_name,
+ GFile *original_file)
{
FrNewArchiveDialog *self;
self = g_object_new (FR_TYPE_NEW_ARCHIVE_DIALOG, "title", title, NULL);
- _fr_new_archive_dialog_construct (self, parent, action, folder, default_name);
+ _fr_new_archive_dialog_construct (self, parent, action, folder, default_name, original_file);
return (GtkWidget *) self;
}
@@ -427,6 +434,24 @@ fr_new_archive_dialog_get_file (FrNewArchiveDialog *self,
return NULL;
}
+ /* check whehter the file is equal to the original file */
+
+ if ((self->priv->original_file != NULL) && (g_file_equal (file, self->priv->original_file))) {
+ dialog = _gtk_error_dialog_new (GTK_WINDOW (self),
+ GTK_DIALOG_MODAL,
+ NULL,
+ _("Could not create the archive"),
+ "%s",
+ _("New name is the same as old one, please type other
name."));
+ gtk_dialog_run (GTK_DIALOG (dialog));
+
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+ g_object_unref (parent_info);
+ g_object_unref (file);
+
+ return NULL;
+ }
+
/* overwrite confirmation */
if (g_file_query_exists (file, NULL)) {
diff --git a/src/fr-new-archive-dialog.h b/src/fr-new-archive-dialog.h
index e9c12ac..4a6d3ee 100644
--- a/src/fr-new-archive-dialog.h
+++ b/src/fr-new-archive-dialog.h
@@ -55,7 +55,8 @@ GtkWidget * fr_new_archive_dialog_new (const char *
GtkWindow *parent,
FrNewArchiveAction action,
GFile *folder,
- const char *default_name);
+ const char *default_name,
+ GFile *original_file);
GFile * fr_new_archive_dialog_get_file (FrNewArchiveDialog *dialog,
const char **mime_type);
const char * fr_new_archive_dialog_get_password (FrNewArchiveDialog *dialog);
diff --git a/src/fr-window.c b/src/fr-window.c
index 6da6409..a0f13fb 100644
--- a/src/fr-window.c
+++ b/src/fr-window.c
@@ -4133,7 +4133,8 @@ fr_window_drag_data_received (GtkWidget *widget,
GTK_WINDOW (window),
FR_NEW_ARCHIVE_ACTION_SAVE_AS,
fr_window_get_open_default_dir (window),
- archive_name);
+ archive_name,
+ NULL);
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
g_signal_connect (G_OBJECT (dialog),
"response",
@@ -7212,6 +7213,7 @@ fr_window_action_new_archive (FrWindow *window)
GTK_WINDOW (window),
FR_NEW_ARCHIVE_ACTION_NEW_MANY_FILES,
fr_window_get_open_default_dir (window),
+ NULL,
NULL);
if ((fr_window_archive_is_present (window) && ! fr_window_is_batch_mode (window) ? NULL : GTK_WINDOW
(window)))
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
@@ -7521,7 +7523,8 @@ fr_window_action_save_as (FrWindow *window)
GTK_WINDOW (window),
FR_NEW_ARCHIVE_ACTION_SAVE_AS,
fr_window_get_open_default_dir (window),
- archive_name);
+ archive_name,
+ window->priv->archive_file);
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
g_signal_connect (G_OBJECT (dialog),
"response",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]