[gthumb] use a dialog to rename folders and catalogs
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] use a dialog to rename folders and catalogs
- Date: Tue, 22 Apr 2014 13:27:28 +0000 (UTC)
commit ee15641d3aed48797dbb864970c217fbe0465eec
Author: Paolo Bacchilega <paobac src gnome org>
Date: Tue Apr 22 15:17:39 2014 +0200
use a dialog to rename folders and catalogs
gthumb/gth-folder-tree.c | 105 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 105 insertions(+), 0 deletions(-)
---
diff --git a/gthumb/gth-folder-tree.c b/gthumb/gth-folder-tree.c
index 6c9fa4e..7a0463e 100644
--- a/gthumb/gth-folder-tree.c
+++ b/gthumb/gth-folder-tree.c
@@ -31,6 +31,7 @@
#include "gth-icon-cache.h"
#include "gth-main.h"
#include "gth-marshal.h"
+#include "gth-request-dialog.h"
#define EMPTY_URI "..."
@@ -1790,10 +1791,113 @@ gth_folder_tree_delete_children (GthFolderTree *folder_tree,
}
+/* -- gth_folder_tree_start_editing -- */
+
+
+typedef struct {
+ GthFolderTree *folder_tree;
+ GFile *file;
+} RenameData;
+
+
+static void
+rename_data_free (RenameData *data)
+{
+ g_object_unref (data->folder_tree);
+ g_object_unref (data->file);
+ g_free (data);
+}
+
+
+static void
+rename_dialog_response_cb (GtkWidget *dialog,
+ int response_id,
+ gpointer user_data)
+{
+ RenameData *data = user_data;
+ char *name;
+
+ if (response_id != GTK_RESPONSE_OK) {
+ rename_data_free (data);
+ gtk_widget_destroy (dialog);
+ return;
+ }
+
+ name = gth_request_dialog_get_normalized_text (GTH_REQUEST_DIALOG (dialog));
+ if (_g_utf8_all_spaces (name)) {
+ g_free (name);
+ gth_request_dialog_set_info_text (GTH_REQUEST_DIALOG (dialog), GTK_MESSAGE_ERROR, _("No name
specified"));
+ return;
+ }
+
+ if (g_regex_match_simple ("/", name, 0, 0)) {
+ char *message;
+
+ message = g_strdup_printf (_("Invalid name. The following characters are not allowed: %s"),
"/");
+ gth_request_dialog_set_info_text (GTH_REQUEST_DIALOG (dialog), GTK_MESSAGE_ERROR, message);
+
+ g_free (message);
+ g_free (name);
+
+ return;
+ }
+
+ g_signal_emit (data->folder_tree,
+ gth_folder_tree_signals[RENAME],
+ 0,
+ data->file,
+ name);
+
+ g_free (name);
+ rename_data_free (data);
+ gtk_widget_destroy (dialog);
+}
+
+
void
gth_folder_tree_start_editing (GthFolderTree *folder_tree,
GFile *file)
{
+ GtkTreeIter iter;
+ GthFileData *file_data;
+ RenameData *data;
+ GtkWidget *toplevel;
+ GtkWidget *dialog;
+
+ if (! gth_folder_tree_get_iter (folder_tree, file, &iter, NULL))
+ return;
+
+ data = g_new0 (RenameData, 1);
+ data->folder_tree = g_object_ref (folder_tree);
+ data->file = g_object_ref (file);
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (folder_tree));
+ if (! gtk_widget_is_toplevel (toplevel))
+ toplevel = NULL;
+
+ dialog = gth_request_dialog_new (GTK_WINDOW (toplevel),
+ GTK_DIALOG_MODAL,
+ _("Rename"),
+ _("Enter the new name:"),
+ _GTK_LABEL_CANCEL,
+ _("_Rename"));
+ g_signal_connect (dialog,
+ "response",
+ G_CALLBACK (rename_dialog_response_cb),
+ data);
+
+ gtk_tree_model_get (GTK_TREE_MODEL (folder_tree->priv->tree_store),
+ &iter,
+ COLUMN_FILE_DATA, &file_data,
+ -1);
+ gtk_entry_set_text (GTK_ENTRY (gth_request_dialog_get_entry (GTH_REQUEST_DIALOG (dialog))),
+ g_file_info_get_edit_name (file_data->info));
+
+ gtk_widget_show (dialog);
+
+ _g_object_unref (file_data);
+
+#if 0
GtkTreeIter iter;
GtkTreePath *tree_path;
GtkTreeViewColumn *tree_column;
@@ -1813,6 +1917,7 @@ gth_folder_tree_start_editing (GthFolderTree *folder_tree,
TRUE);
gtk_tree_path_free (tree_path);
+#endif
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]