[Goodies-commits] r6409 - in sion/trunk: . src

Enrico Troeger enrico at xfce.org
Tue Jan 6 21:21:11 CET 2009


Author: enrico
Date: 2009-01-06 20:21:11 +0000 (Tue, 06 Jan 2009)
New Revision: 6409

Modified:
   sion/trunk/ChangeLog
   sion/trunk/src/bookmarkdialog.c
   sion/trunk/src/bookmarkeditdialog.c
   sion/trunk/src/bookmarkeditdialog.h
   sion/trunk/src/window.c
Log:
Don't allow entering duplicate bookmark names.
When any input was missing or wrong in the Bookmark Edit dialog, put the input focus back to the text entry which failed.

Modified: sion/trunk/ChangeLog
===================================================================
--- sion/trunk/ChangeLog	2009-01-06 09:59:05 UTC (rev 6408)
+++ sion/trunk/ChangeLog	2009-01-06 20:21:11 UTC (rev 6409)
@@ -1,3 +1,12 @@
+2009-01-06  Enrico Tröger  <enrico(at)xfce(dot)org>
+
+ * src/bookmarkdialog.c, src/bookmarkeditdialog.c,
+   src/bookmarkeditdialog.h, src/window.c:
+   Don't allow entering duplicate bookmark names.
+   When any input was missing or wrong in the Bookmark Edit dialog, put
+   the input focus back to the text entry which failed.
+
+
 2009-01-02  Enrico Tröger  <enrico(at)xfce(dot)org>
 
  * src/compath.c, src/compat.h:

Modified: sion/trunk/src/bookmarkdialog.c
===================================================================
--- sion/trunk/src/bookmarkdialog.c	2009-01-06 09:59:05 UTC (rev 6408)
+++ sion/trunk/src/bookmarkdialog.c	2009-01-06 20:21:11 UTC (rev 6409)
@@ -141,8 +141,8 @@
 
 static void add_button_click_cb(G_GNUC_UNUSED GtkButton *button, GtkWidget *dialog)
 {
-	GtkWidget *edit_dialog = sion_bookmark_edit_dialog_new(dialog, SION_BE_MODE_CREATE);
 	SionBookmarkDialogPrivate *priv = SION_BOOKMARK_DIALOG_GET_PRIVATE(dialog);
+	GtkWidget *edit_dialog = sion_bookmark_edit_dialog_new(dialog, priv->settings, SION_BE_MODE_CREATE);
 	SionBookmark *bm = NULL;
 
 	if (sion_bookmark_edit_dialog_run(SION_BOOKMARK_EDIT_DIALOG(edit_dialog)) == GTK_RESPONSE_OK)
@@ -180,7 +180,8 @@
 
 	gtk_tree_model_get(GTK_TREE_MODEL(priv->store), &iter, COL_BMREF, &bm, -1);
 
-	edit_dialog = sion_bookmark_edit_dialog_new_with_bookmark(dialog, SION_BE_MODE_EDIT, bm);
+	edit_dialog = sion_bookmark_edit_dialog_new_with_bookmark(dialog,
+		priv->settings, SION_BE_MODE_EDIT, bm);
 	if (sion_bookmark_edit_dialog_run(SION_BOOKMARK_EDIT_DIALOG(edit_dialog)) == GTK_RESPONSE_OK)
 	{
 		/* this fills the values of the dialog into 'bm' */

Modified: sion/trunk/src/bookmarkeditdialog.c
===================================================================
--- sion/trunk/src/bookmarkeditdialog.c	2009-01-06 09:59:05 UTC (rev 6408)
+++ sion/trunk/src/bookmarkeditdialog.c	2009-01-06 20:21:11 UTC (rev 6409)
@@ -27,6 +27,7 @@
 
 #include "common.h"
 #include "compat.h"
+#include "settings.h"
 #include "bookmark.h"
 #include "bookmarkeditdialog.h"
 
@@ -37,6 +38,8 @@
 
 struct _SionBookmarkEditDialogPrivate
 {
+	SionSettings *settings;
+
 	GtkWidget *table;
 
 	GtkWidget *type_combo;
@@ -62,11 +65,7 @@
 
 	GtkWidget *share_label;
 	GtkWidget *share_entry;
-/*
-	GtkWidget *share_entry;
-	GtkWidget *domain_entry;
-	GtkWidget *folder_entry;
-*/
+
 	SionBookmark *bookmark_init;
 	SionBookmark *bookmark_update;
 };
@@ -192,7 +191,26 @@
 					error = TRUE;
 					sion_error_dialog((gpointer)dialog,
 						_("You must enter a name for the bookmark."), NULL);
+					gtk_widget_grab_focus(priv->name_entry);
 				}
+				else
+				{	// check for duplicate bookmark names
+					SionBookmarkList *bml = sion_settings_get_bookmarks(priv->settings);
+					SionBookmark *bm;
+					guint i;
+
+					for (i = 0; i < bml->len && ! error; i++)
+					{
+						bm = g_ptr_array_index(bml, i);
+						if (sion_str_equal(tmp, sion_bookmark_get_name(bm)))
+						{
+							error = TRUE;
+							sion_error_dialog((gpointer)dialog,
+			_("The entered bookmark name is already in use. Please choose another one."), NULL);
+							gtk_widget_grab_focus(priv->name_entry);
+						}
+					}
+				}
 			}
 			if (! error && gtk_widget_get_parent(priv->server_entry) != NULL)
 			{
@@ -202,6 +220,7 @@
 					error = TRUE;
 					sion_error_dialog((gpointer)dialog,
 						_("You must enter a server address or name."), NULL);
+					gtk_widget_grab_focus(priv->server_entry);
 				}
 			}
 			if (! error && gtk_widget_get_parent(priv->share_entry) != NULL)
@@ -212,6 +231,7 @@
 					error = TRUE;
 					sion_error_dialog((gpointer)dialog,
 						_("You must enter a share name."), NULL);
+					gtk_widget_grab_focus(priv->share_entry);
 				}
 			}
 			if (! error && gtk_widget_get_parent(priv->uri_entry) != NULL)
@@ -222,6 +242,7 @@
 					error = TRUE;
 					sion_error_dialog((gpointer)dialog,
 						_("You must enter a valid URI for the connection."), NULL);
+					gtk_widget_grab_focus(priv->uri_entry);
 				}
 			}
 			if (! error)
@@ -783,24 +804,28 @@
 }
 
 
-GtkWidget *sion_bookmark_edit_dialog_new(GtkWidget *parent, SionBookmarkEditDialogMode mode)
+GtkWidget *sion_bookmark_edit_dialog_new(GtkWidget *parent, SionSettings *settings, SionBookmarkEditDialogMode mode)
 {
 	SionBookmarkEditDialog *dialog = g_object_new(SION_BOOKMARK_EDIT_DIALOG_TYPE,
 		"transient-for", parent,
 		"mode", mode,
 		NULL);
+	SionBookmarkEditDialogPrivate *priv = SION_BOOKMARK_EDIT_DIALOG_GET_PRIVATE(dialog);
+	priv->settings = settings;
 
 	return GTK_WIDGET(dialog);
 }
 
 
-GtkWidget *sion_bookmark_edit_dialog_new_with_bookmark(GtkWidget *parent, SionBookmarkEditDialogMode mode, SionBookmark *bookmark)
+GtkWidget *sion_bookmark_edit_dialog_new_with_bookmark(GtkWidget *parent, SionSettings *settings, SionBookmarkEditDialogMode mode, SionBookmark *bookmark)
 {
 	SionBookmarkEditDialog *dialog = g_object_new(SION_BOOKMARK_EDIT_DIALOG_TYPE,
 		"transient-for", parent,
 		"bookmark-init", bookmark,
 		"mode", mode,
 		NULL);
+	SionBookmarkEditDialogPrivate *priv = SION_BOOKMARK_EDIT_DIALOG_GET_PRIVATE(dialog);
+	priv->settings = settings;
 
 	return GTK_WIDGET(dialog);
 }

Modified: sion/trunk/src/bookmarkeditdialog.h
===================================================================
--- sion/trunk/src/bookmarkeditdialog.h	2009-01-06 09:59:05 UTC (rev 6408)
+++ sion/trunk/src/bookmarkeditdialog.h	2009-01-06 20:21:11 UTC (rev 6409)
@@ -55,8 +55,8 @@
 };
 
 GType		sion_bookmark_edit_dialog_get_type			(void);
-GtkWidget*	sion_bookmark_edit_dialog_new				(GtkWidget *parent, SionBookmarkEditDialogMode mode);
-GtkWidget*	sion_bookmark_edit_dialog_new_with_bookmark	(GtkWidget *parent, SionBookmarkEditDialogMode, SionBookmark *bookmark);
+GtkWidget*	sion_bookmark_edit_dialog_new				(GtkWidget *parent, SionSettings *settings, SionBookmarkEditDialogMode mode);
+GtkWidget*	sion_bookmark_edit_dialog_new_with_bookmark	(GtkWidget *parent, SionSettings *settings, SionBookmarkEditDialogMode, SionBookmark *bookmark);
 gint		sion_bookmark_edit_dialog_run				(SionBookmarkEditDialog *dialog);
 
 G_END_DECLS

Modified: sion/trunk/src/window.c
===================================================================
--- sion/trunk/src/window.c	2009-01-06 09:59:05 UTC (rev 6408)
+++ sion/trunk/src/window.c	2009-01-06 20:21:11 UTC (rev 6409)
@@ -284,7 +284,8 @@
 		SionBookmark *bm = NULL;
 		GtkWidget *dialog;
 
-		dialog = sion_bookmark_edit_dialog_new(GTK_WIDGET(window), SION_BE_MODE_CONNECT);
+		dialog = sion_bookmark_edit_dialog_new(GTK_WIDGET(window),
+			priv->settings, SION_BE_MODE_CONNECT);
 		if (sion_bookmark_edit_dialog_run(SION_BOOKMARK_EDIT_DIALOG(dialog)) == GTK_RESPONSE_OK)
 		{
 			bm = sion_bookmark_new();
@@ -750,7 +751,7 @@
 					// show the bookmark edit dialog and add the bookmark only if it was
 					// not cancelled
 					edit_dialog = sion_bookmark_edit_dialog_new_with_bookmark(
-						GTK_WIDGET(window), SION_BE_MODE_EDIT, bm);
+						GTK_WIDGET(window), priv->settings, SION_BE_MODE_EDIT, bm);
 					if (sion_bookmark_edit_dialog_run(SION_BOOKMARK_EDIT_DIALOG(edit_dialog)) ==
 						GTK_RESPONSE_OK)
 					{




More information about the Goodies-commits mailing list