[Goodies-commits] r6383 - in sion/trunk: . src
Enrico Troeger
enrico at xfce.org
Mon Dec 29 19:16:45 CET 2008
Author: enrico
Date: 2008-12-29 18:16:45 +0000 (Mon, 29 Dec 2008)
New Revision: 6383
Modified:
sion/trunk/ChangeLog
sion/trunk/src/bookmarkdialog.c
sion/trunk/src/bookmarkeditdialog.c
sion/trunk/src/bookmarkeditdialog.h
sion/trunk/src/common.c
sion/trunk/src/common.h
sion/trunk/src/window.c
sion/trunk/src/window.h
Log:
Move sion_error_dialog() into common.c.
Implement basic input validation for the Bookmark Edit dialog.
Modified: sion/trunk/ChangeLog
===================================================================
--- sion/trunk/ChangeLog 2008-12-29 18:16:17 UTC (rev 6382)
+++ sion/trunk/ChangeLog 2008-12-29 18:16:45 UTC (rev 6383)
@@ -5,6 +5,10 @@
Fix 'Create Bookmark' sensitiveness.
When using 'Create Bookmark' show a dialog to edit the new bookmark
before saving it.
+ * src/bookmarkdialog.c, src/bookmarkeditdialog.c, src/window.c,
+ src/bookmarkeditdialog.h, src/common.c, src/common.h, src/window.h:
+ Move sion_error_dialog() into common.c.
+ Implement basic input validation for the Bookmark Edit dialog.
2008-12-28 Enrico Tröger <enrico(at)xfce(dot)org>
Modified: sion/trunk/src/bookmarkdialog.c
===================================================================
--- sion/trunk/src/bookmarkdialog.c 2008-12-29 18:16:17 UTC (rev 6382)
+++ sion/trunk/src/bookmarkdialog.c 2008-12-29 18:16:45 UTC (rev 6383)
@@ -145,7 +145,7 @@
SionBookmarkDialogPrivate *priv = SION_BOOKMARK_DIALOG_GET_PRIVATE(dialog);
SionBookmark *bm = NULL;
- if (gtk_dialog_run(GTK_DIALOG(edit_dialog)) == GTK_RESPONSE_OK)
+ if (sion_bookmark_edit_dialog_run(SION_BOOKMARK_EDIT_DIALOG(edit_dialog)) == GTK_RESPONSE_OK)
{
GtkTreeIter iter;
@@ -181,7 +181,7 @@
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);
- if (gtk_dialog_run(GTK_DIALOG(edit_dialog)) == GTK_RESPONSE_OK)
+ if (sion_bookmark_edit_dialog_run(SION_BOOKMARK_EDIT_DIALOG(edit_dialog)) == GTK_RESPONSE_OK)
{
/* this fills the values of the dialog into 'bm' */
g_object_set(edit_dialog, "bookmark-update", bm, NULL);
Modified: sion/trunk/src/bookmarkeditdialog.c
===================================================================
--- sion/trunk/src/bookmarkeditdialog.c 2008-12-29 18:16:17 UTC (rev 6382)
+++ sion/trunk/src/bookmarkeditdialog.c 2008-12-29 18:16:45 UTC (rev 6383)
@@ -167,6 +167,72 @@
}
+gint sion_bookmark_edit_dialog_run(SionBookmarkEditDialog *dialog)
+{
+ gint res;
+ gboolean error = FALSE;
+ SionBookmarkEditDialogPrivate *priv = SION_BOOKMARK_EDIT_DIALOG_GET_PRIVATE(dialog);
+ const gchar *tmp;
+
+ while (TRUE)
+ {
+ error = FALSE;
+ res = gtk_dialog_run(GTK_DIALOG(dialog));
+
+ if (res != GTK_RESPONSE_OK)
+ break;
+ // perform some error checking and don't return until entered values are sane
+ else
+ {
+ if (GTK_WIDGET_VISIBLE(priv->name_entry))
+ { // check the name only if we are creating/editing a bookmark
+ tmp = gtk_entry_get_text(GTK_ENTRY(priv->name_entry));
+ if (! *tmp)
+ {
+ error = TRUE;
+ sion_error_dialog((gpointer)dialog,
+ _("You must enter a name for the bookmark."), NULL);
+ }
+ }
+ if (! error && gtk_widget_get_parent(priv->server_entry) != NULL)
+ {
+ tmp = gtk_entry_get_text(GTK_ENTRY(priv->server_entry));
+ if (! *tmp)
+ {
+ error = TRUE;
+ sion_error_dialog((gpointer)dialog,
+ _("You must enter a server address or name."), NULL);
+ }
+ }
+ if (! error && gtk_widget_get_parent(priv->share_entry) != NULL)
+ {
+ tmp = gtk_entry_get_text(GTK_ENTRY(priv->share_entry));
+ if (! *tmp)
+ {
+ error = TRUE;
+ sion_error_dialog((gpointer)dialog,
+ _("You must enter a share name."), NULL);
+ }
+ }
+ if (! error && gtk_widget_get_parent(priv->uri_entry) != NULL)
+ {
+ tmp = gtk_entry_get_text(GTK_ENTRY(priv->uri_entry));
+ if (! *tmp)
+ {
+ error = TRUE;
+ sion_error_dialog((gpointer)dialog,
+ _("You must enter a valid URI for the service."), NULL);
+ }
+ }
+ if (! error)
+ break;
+ }
+ }
+
+ return res;
+}
+
+
static void sion_bookmark_edit_dialog_class_init(SionBookmarkEditDialogClass *klass)
{
GtkObjectClass *gtk_object_class = (GtkObjectClass *)klass;
@@ -502,7 +568,7 @@
/* Update the contents of the bookmark with the values from the dialog. */
-void update_bookmark(SionBookmarkEditDialog *dialog)
+static void update_bookmark(SionBookmarkEditDialog *dialog)
{
SionBookmarkEditDialogPrivate *priv;
const gchar *tmp;
@@ -511,32 +577,33 @@
g_return_if_fail(dialog != NULL);
- /// TODO do error checking, at the very least, don't allow empty bookmark names
-
priv = SION_BOOKMARK_EDIT_DIALOG_GET_PRIVATE(dialog);
g_return_if_fail(priv->bookmark_update != NULL);
+ g_return_if_fail(sion_bookmark_is_valid(priv->bookmark_update));
- tmp = gtk_entry_get_text(GTK_ENTRY(priv->name_entry));
- if (*tmp)
- sion_bookmark_set_name(priv->bookmark_update, tmp);
-
if (! gtk_combo_box_get_active_iter(GTK_COMBO_BOX(priv->type_combo), &iter))
return;
gtk_tree_model_get(gtk_combo_box_get_model(GTK_COMBO_BOX(priv->type_combo)),
&iter, COLUMN_INDEX, &idx, -1);
+ tmp = gtk_entry_get_text(GTK_ENTRY(priv->name_entry));
+ if (*tmp) // the name might be empty if the dialog is used as a Connect dialog
+ sion_bookmark_set_name(priv->bookmark_update, tmp);
+
if (idx == -1)
idx = 0;
if (methods[idx].scheme == NULL)
+ {
+ sion_bookmark_set_name(priv->bookmark_update, "Custom");
sion_bookmark_set_uri(priv->bookmark_update, gtk_entry_get_text(GTK_ENTRY(priv->uri_entry)));
+ }
else
{
sion_bookmark_set_scheme(priv->bookmark_update, methods[idx].scheme);
tmp = gtk_entry_get_text(GTK_ENTRY(priv->server_entry));
- if (*tmp)
- sion_bookmark_set_host(priv->bookmark_update, tmp);
+ sion_bookmark_set_host(priv->bookmark_update, tmp);
tmp = gtk_entry_get_text(GTK_ENTRY(priv->user_entry));
sion_bookmark_set_user(priv->bookmark_update, tmp);
tmp = gtk_entry_get_text(GTK_ENTRY(priv->domain_entry));
@@ -673,8 +740,8 @@
priv->uri_entry = gtk_entry_new();
priv->server_entry = gtk_entry_new();
- priv->port_spin = gtk_spin_button_new_with_range(0, 65536, 1);
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(priv->port_spin), 0);
+ priv->port_spin = gtk_spin_button_new_with_range(0, 65535, 1);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(priv->port_spin), 0.0);
gtk_widget_set_tooltip_text(priv->port_spin, _("Set the port to 0 to use the default port."));
priv->user_entry = gtk_entry_new();
priv->domain_entry = gtk_entry_new();
@@ -688,6 +755,7 @@
priv->domain_label = gtk_label_new_with_mnemonic(_("_Domain:"));
priv->share_label = gtk_label_new_with_mnemonic(_("_Share:"));
+ gtk_entry_set_activates_default(GTK_ENTRY(priv->name_entry), TRUE);
gtk_entry_set_activates_default(GTK_ENTRY(priv->uri_entry), TRUE);
gtk_entry_set_activates_default(GTK_ENTRY(priv->server_entry), TRUE);
gtk_entry_set_activates_default(GTK_ENTRY(priv->port_spin), TRUE);
@@ -712,19 +780,18 @@
}
-GtkWidget* sion_bookmark_edit_dialog_new(GtkWidget *parent, SionBookmarkEditDialogMode mode)
+GtkWidget *sion_bookmark_edit_dialog_new(GtkWidget *parent, SionBookmarkEditDialogMode mode)
{
SionBookmarkEditDialog *dialog = g_object_new(SION_BOOKMARK_EDIT_DIALOG_TYPE,
"transient-for", parent,
"mode", mode,
NULL);
-
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, SionBookmarkEditDialogMode mode, SionBookmark *bookmark)
{
SionBookmarkEditDialog *dialog = g_object_new(SION_BOOKMARK_EDIT_DIALOG_TYPE,
"transient-for", parent,
@@ -732,7 +799,6 @@
"mode", mode,
NULL);
-
return GTK_WIDGET(dialog);
}
Modified: sion/trunk/src/bookmarkeditdialog.h
===================================================================
--- sion/trunk/src/bookmarkeditdialog.h 2008-12-29 18:16:17 UTC (rev 6382)
+++ sion/trunk/src/bookmarkeditdialog.h 2008-12-29 18:16:45 UTC (rev 6383)
@@ -57,6 +57,7 @@
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);
+gint sion_bookmark_edit_dialog_run (SionBookmarkEditDialog *dialog);
G_END_DECLS
Modified: sion/trunk/src/common.c
===================================================================
--- sion/trunk/src/common.c 2008-12-29 18:16:17 UTC (rev 6382)
+++ sion/trunk/src/common.c 2008-12-29 18:16:45 UTC (rev 6383)
@@ -26,6 +26,8 @@
#include "common.h"
#include "main.h"
+#include "settings.h"
+#include "window.h"
const gchar *sion_find_icon_name(const gchar *request, const gchar *fallback)
@@ -122,6 +124,21 @@
}
+void sion_error_dialog(gpointer *parent, const gchar *text, const gchar *secondary)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_message_dialog_new(GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", text);
+ if (secondary != NULL)
+ gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s", secondary);
+ gtk_window_set_title(GTK_WINDOW(dialog), _("Error"));
+ gtk_window_set_icon_name(GTK_WINDOW(dialog), sion_window_get_icon_name());
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+}
+
+
/* Can open URLs and email addresses using xdg/exo/gnome-open */
void sion_show_uri(const gchar *uri)
{
Modified: sion/trunk/src/common.h
===================================================================
--- sion/trunk/src/common.h 2008-12-29 18:16:17 UTC (rev 6382)
+++ sion/trunk/src/common.h 2008-12-29 18:16:45 UTC (rev 6383)
@@ -60,4 +60,6 @@
guint sion_get_default_port(const gchar *scheme);
+void sion_error_dialog(gpointer *parent, const gchar *text, const gchar *secondary);
+
#endif /* __COMMON_H__ */
Modified: sion/trunk/src/window.c
===================================================================
--- sion/trunk/src/window.c 2008-12-29 18:16:17 UTC (rev 6382)
+++ sion/trunk/src/window.c 2008-12-29 18:16:45 UTC (rev 6383)
@@ -177,20 +177,6 @@
}
-void sion_window_error_dialog(GtkWindow *parent, const gchar *text, const gchar *secondary)
-{
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new(parent, GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", text);
- gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s", secondary);
- gtk_window_set_title(GTK_WINDOW(dialog), _("Error"));
- gtk_window_set_icon_name(GTK_WINDOW(dialog), sion_window_get_icon_name());
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
-}
-
-
const gchar *sion_window_get_icon_name(void)
{
static const gchar *icon_name = NULL;
@@ -296,20 +282,20 @@
if (! handled)
{
SionBookmark *bm = NULL;
- GtkWidget *edit_dialog;
+ GtkWidget *dialog;
- edit_dialog = sion_bookmark_edit_dialog_new(GTK_WIDGET(window), SION_BE_MODE_CONNECT);
- if (gtk_dialog_run(GTK_DIALOG(edit_dialog)) == GTK_RESPONSE_OK)
+ dialog = sion_bookmark_edit_dialog_new(GTK_WIDGET(window), SION_BE_MODE_CONNECT);
+ if (sion_bookmark_edit_dialog_run(SION_BOOKMARK_EDIT_DIALOG(dialog)) == GTK_RESPONSE_OK)
{
bm = sion_bookmark_new();
/* this fills the values of the dialog into 'bm' */
- g_object_set(edit_dialog, "bookmark-update", bm, NULL);
+ g_object_set(dialog, "bookmark-update", bm, NULL);
mount_from_bookmark(window, bm);
g_object_unref(bm);
}
- gtk_widget_destroy(edit_dialog);
+ gtk_widget_destroy(dialog);
}
}
@@ -591,7 +577,7 @@
static void mount_operation_failed(SionBackendGVFS *backend, const gchar *message,
const gchar *error_message, SionWindow *window)
{
- sion_window_error_dialog(GTK_WINDOW(window), message, error_message);
+ sion_error_dialog((gpointer) window, message, error_message);
}
@@ -757,7 +743,8 @@
// not cancelled
edit_dialog = sion_bookmark_edit_dialog_new_with_bookmark(
GTK_WIDGET(window), SION_BE_MODE_EDIT, bm);
- if (gtk_dialog_run(GTK_DIALOG(edit_dialog)) == GTK_RESPONSE_OK)
+ if (sion_bookmark_edit_dialog_run(SION_BOOKMARK_EDIT_DIALOG(edit_dialog)) ==
+ GTK_RESPONSE_OK)
{
// this fills the values of the dialog into 'bm'
g_object_set(edit_dialog, "bookmark-update", bm, NULL);
Modified: sion/trunk/src/window.h
===================================================================
--- sion/trunk/src/window.h 2008-12-29 18:16:17 UTC (rev 6382)
+++ sion/trunk/src/window.h 2008-12-29 18:16:45 UTC (rev 6383)
@@ -48,7 +48,6 @@
GType sion_window_get_type (void);
GtkWidget* sion_window_new (SionSettings *settings);
-void sion_window_error_dialog (GtkWindow *parent, const gchar *text, const gchar *secondary);
void sion_window_update_bookmarks (SionWindow *window);
More information about the Goodies-commits
mailing list