Hello, I have worked on a patch. some ui improvements & fixes.
1. Improved name generation for new empty projects.
2. Enable overwrite confirmation in FileChooser dialog
Copied the code for (1) from the gedit codebase.
Cheers
Vincent
--
2006-03-15 Vincent Geddes <[EMAIL PROTECTED]>
* src/glade-project.c: Improved name generation for new empty projects.
* src/glade-utils.c: Enable overwrite confirmation in FileChooser
dialog
Index: src/glade-project.c
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-project.c,v
retrieving revision 1.89
diff -u -p -r1.89 glade-project.c
--- src/glade-project.c 21 Feb 2006 22:14:33 -0000 1.89
+++ src/glade-project.c 15 Mar 2006 17:34:34 -0000
@@ -62,6 +62,7 @@ enum
static guint glade_project_signals[LAST_SIGNAL] = {0};
static GObjectClass *parent_class = NULL;
+static GHashTable *allocated_untitled_numbers = NULL;
GType
glade_project_get_type (void)
@@ -244,6 +245,7 @@ glade_project_init (GladeProject *projec
project->path = NULL;
project->name = NULL;
project->instance = 0;
+ project->untitled_number = 0;
project->objects = NULL;
project->selection = NULL;
project->undo_stack = NULL;
@@ -261,6 +263,39 @@ glade_project_init (GladeProject *projec
NULL, g_free);
}
+static gint
+glade_project_get_untitled_number (void)
+{
+ gint i = 1;
+
+ if (allocated_untitled_numbers == NULL)
+ allocated_untitled_numbers = g_hash_table_new (NULL, NULL);
+
+ g_return_val_if_fail (allocated_untitled_numbers != NULL, -1);
+
+ while (TRUE)
+ {
+ if (g_hash_table_lookup (allocated_untitled_numbers, GINT_TO_POINTER (i)) == NULL)
+ {
+ g_hash_table_insert (allocated_untitled_numbers,
+ GINT_TO_POINTER (i),
+ GINT_TO_POINTER (i));
+
+ return i;
+ }
+
+ ++i;
+ }
+}
+
+static void
+glade_project_release_untitled_number (gint n)
+{
+ g_return_if_fail (allocated_untitled_numbers != NULL);
+
+ g_hash_table_remove (allocated_untitled_numbers, GINT_TO_POINTER (n));
+}
+
/**
* glade_project_new:
* @untitled: Whether or not this project is untitled
@@ -275,12 +310,14 @@ GladeProject *
glade_project_new (gboolean untitled)
{
GladeProject *project;
- static gint i = 1;
project = g_object_new (GLADE_TYPE_PROJECT, NULL);
if (untitled)
- project->name = g_strdup_printf ("Untitled %i", i++);
+ {
+ project->untitled_number = glade_project_get_untitled_number ();
+ project->name = g_strdup_printf ("Untitled %d", project->untitled_number);
+ }
return project;
}
@@ -335,6 +372,9 @@ glade_project_finalize (GObject *object)
g_free (project->name);
g_free (project->path);
+ if (project->untitled_number > 0)
+ glade_project_release_untitled_number (project->untitled_number);
+
g_hash_table_destroy (project->widget_names_allocator);
g_hash_table_destroy (project->widget_old_names);
g_hash_table_destroy (project->resources);
@@ -1215,6 +1255,12 @@ glade_project_save (GladeProject *projec
project->name = (g_free (project->name),
g_path_get_basename (project->path));
+ }
+
+ if (project->untitled_number > 0)
+ {
+ glade_project_release_untitled_number (project->untitled_number);
+ project->untitled_number = 0;
}
g_free (canonical_path);
Index: src/glade-project.h
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-project.h,v
retrieving revision 1.46
diff -u -p -r1.46 glade-project.h
--- src/glade-project.h 21 Feb 2006 22:14:33 -0000 1.46
+++ src/glade-project.h 15 Mar 2006 17:34:34 -0000
@@ -28,6 +28,8 @@ struct _GladeProject
gint instance; /* How many projects with this name */
+ gint untitled_number; /* A unique number for this project if it is untitled */
+
gboolean loading;/* A flags that is set when the project is loading */
gboolean changed; /* A flag that is set when a project has changes
Index: src/glade-utils.c
===================================================================
RCS file: /cvs/gnome/glade3/src/glade-utils.c,v
retrieving revision 1.67
diff -u -p -r1.67 glade-utils.c
--- src/glade-utils.c 28 Feb 2006 01:09:49 -0000 1.67
+++ src/glade-utils.c 15 Mar 2006 17:34:39 -0000
@@ -526,6 +526,8 @@ glade_util_file_dialog_new (const gchar
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (file_dialog), file_filter);
+ gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (file_dialog), TRUE);
+
gtk_window_set_position (GTK_WINDOW (file_dialog), GTK_WIN_POS_CENTER);
return file_dialog;
_______________________________________________
Glade-devel maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/glade-devel