diff --git a/source/libublsettingsui-gtk3.c b/source/libublsettingsui-gtk3.c index 85317b5..a750990 100644 --- a/source/libublsettingsui-gtk3.c +++ b/source/libublsettingsui-gtk3.c @@ -5,6 +5,13 @@ template_app_info template_app_information; static char *__yon_config_mode=NULL; +char *yon_char_get_localised_from_lib(char *string){ + textdomain(template_ui_LocaleName); + char *ret = _(string); + textdomain(template_app_information.app_locale); + return ret; +} + char *yon_ubl_save_mode_get_icon_name(SAVE_MODE_TYPE type){ switch (type){ case SAVE_MODE_FULL: @@ -555,19 +562,42 @@ void yon_on_path_check(GtkEntry *self,GdkEventFocus *event,GtkContainer *status) } +char *yon_gtk_entry_check_restricted(GtkEntry *target){ + GtkInputPurpose purpose = gtk_entry_get_input_purpose(target); + const char *text = gtk_entry_get_text(target); + char *error=NULL; + switch(purpose){ + case GTK_INPUT_PURPOSE_EMAIL:{ + if (!strstr(text,"@")){ + error = yon_char_get_localised_from_lib(EMAIL_INVALID_LABEL); + } + } + break; + case GTK_INPUT_PURPOSE_URL:{ + if (!strstr(text,"/")){ + error = yon_char_get_localised_from_lib(PATH_INVALID_LABEL); + } + } + break; + default: break; + } + return error; +} + void yon_entry_set_entry_type(GtkEntry *target,GtkBox *status){ GtkInputPurpose purpose = gtk_entry_get_input_purpose(target); switch(purpose){ case GTK_INPUT_PURPOSE_EMAIL: - g_signal_connect(G_OBJECT(target),"insert-text",G_CALLBACK(yon_on_digit_only_changed),NULL); + yon_gtk_entry_block_restricted_symbols(target); + break; case GTK_INPUT_PURPOSE_DIGITS: g_signal_connect(G_OBJECT(target),"insert-text",G_CALLBACK(yon_on_digit_only_changed),NULL); break; case GTK_INPUT_PURPOSE_URL: + yon_gtk_entry_block_restricted_symbols(target); - g_signal_connect(G_OBJECT(target),"insert-text",G_CALLBACK(yon_on_digit_only_changed),NULL); break; default: break; diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index 49b9aaf..a1b8fee 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -46,6 +46,8 @@ typedef enum SAVE_MODE_TYPE { SAVE_MODE_HDD_HOME, } SAVE_MODE_TYPE; +char *yon_char_get_localised_from_lib(char *string); + char *yon_ubl_save_mode_get_icon_name(SAVE_MODE_TYPE type); SAVE_MODE_TYPE yon_ubl_save_mode_get_type(char *type); @@ -265,6 +267,8 @@ void *yon_ubl_settings_window_get(char *id); void yon_configuration_window_add_boolean_parameter(enum CONFIGURATION_PARAMETER_TYPE type, char *id, char *label); void yon_configuration_window_add_combo_box_parameter(enum CONFIGURATION_PARAMETER_TYPE type, char *id, char *label, GCallback func, gpointer data, ...); +char *yon_gtk_entry_check_restricted(GtkEntry *target); + typedef struct { GtkWidget *window; GtkWidget *WorkZoneBox;