diff --git a/source/libublsettingsui-gtk3.c b/source/libublsettingsui-gtk3.c index 7463973..85317b5 100644 --- a/source/libublsettingsui-gtk3.c +++ b/source/libublsettingsui-gtk3.c @@ -508,3 +508,69 @@ template_main_window *yon_ubl_window_setup(){ return widgets; } + +void yon_on_email_check(GtkEntry *self,GdkEventFocus *event,GtkContainer *status){ + char *text = (char*)gtk_entry_get_text(self); + if (!strstr(text,"@")){ + yon_ubl_status_box_spawn_infinite(status,"invalid_email",EMAIL_INVALID_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } else { + yon_ubl_status_box_despawn_infinite(status); + } +} + +void yon_on_digit_only_changed(GtkEditable *editable, const gchar *text, gint length, gint *position){ + gchar *new_text = g_new(gchar, length + 1); + gint i, j = 0; + + for (i = 0; i < length; i++) { + if (text[i]>'0'&&text[i]<'9') { + new_text[j] = text[i]; + j++; + } + }if (j < length) { + g_signal_handlers_block_by_func(editable, G_CALLBACK(yon_on_digit_only_changed), NULL); + gtk_editable_insert_text(editable, new_text, j, position); + g_signal_handlers_unblock_by_func(editable, G_CALLBACK(yon_on_digit_only_changed), NULL); + g_signal_stop_emission_by_name(editable, "insert-text"); + } + + g_free(new_text); +} + +void yon_on_path_check(GtkEntry *self,GdkEventFocus *event,GtkContainer *status){ + char *text = (char*)gtk_entry_get_text(self); + if (text[0]=='~'){ + text = yon_char_new(text); + free(yon_char_divide(text,0)); + char *new_text = yon_char_unite(yon_ubl_user_get_home_directory(),"/",text,NULL); + free(text); + gtk_entry_set_text(GTK_ENTRY(self),new_text); + text = new_text; + } + if (!strstr(text,"/")){ + yon_ubl_status_box_spawn_infinite(status,"invalid_path",PATH_INVALID_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } else { + yon_ubl_status_box_despawn_infinite(status); + } + +} + +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); + 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: + + g_signal_connect(G_OBJECT(target),"insert-text",G_CALLBACK(yon_on_digit_only_changed),NULL); + break; + default: break; + + + } +} \ No newline at end of file diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index 76609a0..49b9aaf 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -215,6 +215,8 @@ void on_about(GtkWidget *self, char *version_application); */ void on_open_documentation_confirmation(GtkWidget *self, char *link); +void yon_entry_set_entry_type(GtkEntry *target,GtkBox *status); + int yon_ubl_setup_arguments(int argc, char *argv[],config_str *unfound_arguments, int *arguments_size, char *additional_options_output); void yon_gtk_scrolled_window_set_horizontal_at_desired_size(GtkWidget *window, GtkScrolledWindow *target); @@ -344,4 +346,8 @@ char *yon_settings_configuration_get(char *id); #define SETTINGS_TITLE_LABEL _("Settings") #define CONFIG_WINDOW_MENU_LABEL _("Application settigs") + + #define EMAIL_INVALID_LABEL _("Invalid email adress") + #define PATH_INVALID_LABEL _("Invalid path") + #endif \ No newline at end of file