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

Reply via email to