Revision: 4892 http://geany.svn.sourceforge.net/geany/?rev=4892&view=rev Author: eht16 Date: 2010-05-09 15:48:29 +0000 (Sun, 09 May 2010)
Log Message: ----------- Add public, generic callback ui_editable_insert_text_callback() to restrict GtkEntry text inputs to +/- and numeric values only.
Modified Paths: -------------- trunk/ChangeLog trunk/src/ui_utils.c trunk/src/ui_utils.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2010-05-09 15:48:18 UTC (rev 4891) +++ trunk/ChangeLog 2010-05-09 15:48:29 UTC (rev 4892) @@ -2,6 +2,9 @@
* THANKS, src/about.c, plugins/classbuilder.c: Add support for creating PHP classes (patch by Ondrej Donek, thanks). + * src/ui_utils.h, src/ui_utils.c: + Add public, generic callback ui_editable_insert_text_callback() + to restrict GtkEntry text inputs to +/- and numeric values only.
2010-05-08 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/src/ui_utils.c =================================================================== --- trunk/src/ui_utils.c 2010-05-09 15:48:18 UTC (rev 4891) +++ trunk/src/ui_utils.c 2010-05-09 15:48:29 UTC (rev 4892) @@ -2267,3 +2267,25 @@ else return default_value; } + + +void ui_editable_insert_text_callback(GtkEditable *editable, gchar *new_text, + gint new_text_len, gint *position, gpointer data) +{ + gboolean stop_signal = FALSE; + const gchar c = *new_text; + + /* allow inserting '+' and '-' as the first character */ + if (position != NULL && *position == 0) + { + if (c != '+' && c != '-' && ! isdigit(c)) + stop_signal = TRUE; + } + /* don't insert any text when it is not a digit */ + else if (! isdigit(c)) + stop_signal = TRUE; + + if (stop_signal) + g_signal_stop_emission_by_name(editable, "insert-text"); +} +
Modified: trunk/src/ui_utils.h =================================================================== --- trunk/src/ui_utils.h 2010-05-09 15:48:18 UTC (rev 4891) +++ trunk/src/ui_utils.h 2010-05-09 15:48:29 UTC (rev 4892) @@ -203,6 +203,8 @@
void ui_entry_add_clear_icon(GtkEntry *entry);
+void ui_editable_insert_text_callback(GtkEditable *editable, gchar *new_text, + gint new_text_len, gint *position, gpointer data);
#define ui_label_new_bold(text)\ ui_label_set_markup(GTK_LABEL(gtk_label_new(NULL)), "<b>%s</b>", text);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.