diff --git a/source/libublsettings-gtk3-misc.c b/source/libublsettings-gtk3-misc.c index 206c6bc..6fa51b0 100644 --- a/source/libublsettings-gtk3-misc.c +++ b/source/libublsettings-gtk3-misc.c @@ -500,6 +500,11 @@ void yon_on_entry_set_allowed_symbols(GtkEntry *target, char *symbols){ g_signal_connect(G_OBJECT(target),"insert-text",G_CALLBACK(yon_on_insert_allowed_check),symbols); } +void yon_gtk_entry_allow_password_symbols(GtkEntry *target){ + g_return_if_fail(GTK_IS_ENTRY(target)); + g_signal_connect(G_OBJECT(target),"insert-text",G_CALLBACK(yon_on_insert_allowed_check),yon_char_new("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&\'()*+,-./;<=>?@[\\]^_`{|}~")); +} + int yon_ip_check(char *ip){ if (!strstr(ip,".")){ int pixmask = atoi(ip); diff --git a/source/libublsettings-gtk3-vte.c b/source/libublsettings-gtk3-vte.c index 769a9e9..37c5408 100644 --- a/source/libublsettings-gtk3-vte.c +++ b/source/libublsettings-gtk3-vte.c @@ -46,7 +46,7 @@ void yon_terminal_integrated_start_shell(GtkWidget *terminal, char* command, voi vte_terminal_set_size(VTE_TERMINAL(terminal),10,15); VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL); vte_terminal_set_pty(VTE_TERMINAL(terminal),pty); - char *install_command=yon_char_unite("tput reset; tput cup 0 0; tput ed; ",command,"; STATUS=$?; stty -echo; unset PS1; exit ${STATUS}","\n",NULL); + char *install_command=yon_char_unite("PS1=\"\";tput reset; tput cup 0 0; tput ed; ",command,"; STATUS=$?; stty -echo; unset PS1; exit ${STATUS}","\n",NULL); if(endwork_function) g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument); printf("%s\n",install_command); diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index c1206f9..c4d5336 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -338,6 +338,44 @@ void yon_combo_box_set_default(GtkComboBoxText *target, char *command, char*(res g_thread_new("combo_get_default",(GThreadFunc)__yon_combo_set_default,target_struct); } +void on_widget_changed(GObject* target, GdkEvent*, gpointer user_data){ + char *config_parameter = g_object_get_data(target,"config_parameter"); + char *get_command = g_object_get_data(target,"get_command"); + char *object_property = g_object_get_data(target,"object_property"); + GValue value = G_VALUE_INIT; + g_object_get_property(target,object_property,&value); + char *value_str = g_strdup_value_contents(&value); + if (!yon_char_is_empty(value_str)||strcmp(value_str,"[invalid GValue]")){ + yon_config_register(config_parameter,get_command,value_str); + } + if (!yon_char_is_empty(value_str)) free(value_str); +} + +void yon_gtk_widget_register_parameter(GtkWidget *target, char *config_parameter, char *get_command, char *object_property){ + g_return_if_fail(G_IS_OBJECT(target)); + char *signal_name = yon_char_unite("notify::",object_property,NULL); + g_object_set_data(G_OBJECT(target),"config_parameter",yon_char_new(config_parameter)); + g_object_set_data(G_OBJECT(target),"get_command",yon_char_new(get_command)); + g_object_set_data(G_OBJECT(target),"object_property",yon_char_new(object_property)); + g_signal_connect(G_OBJECT(target),signal_name,G_CALLBACK(on_widget_changed),NULL); +} + +dictionary *__register_widgets = NULL; + +void yon_gtk_widget_register_parameter_manual(GtkWidget *target, char *config_parameter, char *get_command, char *object_property){ + yon_dictionary_add_or_create_if_exists_with_data(__register_widgets,NULL,target); + g_object_set_data(G_OBJECT(target),"config_parameter",yon_char_new(config_parameter)); + g_object_set_data(G_OBJECT(target),"get_command",yon_char_new(get_command)); + g_object_set_data(G_OBJECT(target),"object_property",yon_char_new(object_property)); +} + +void yon_gtk_widget_register_parameter_activate(){ + dictionary *cur; + for_dictionaries(cur,__register_widgets){ + on_widget_changed(yon_dictionary_get_data(cur,GObject*),NULL,NULL); + } +} + // dictionary *__yon_config_listeners = NULL; // typedef struct { // GtkWidget *target; diff --git a/source/libublsettings-gtk3.h b/source/libublsettings-gtk3.h index c25d819..3ce1117 100644 --- a/source/libublsettings-gtk3.h +++ b/source/libublsettings-gtk3.h @@ -531,6 +531,8 @@ void yon_on_text_insert_only_digits(GtkEditable *editable, const gchar *text, gi void yon_gtk_entry_block_restricted_symbols(GtkEntry *target); +void yon_gtk_entry_allow_password_symbols(GtkEntry *target); + void yon_gtk_entry_block_languages(GtkEntry *target); void yon_gtk_entry_block_symbols(GtkEntry *target, char *symbols); @@ -608,4 +610,7 @@ void yon_combo_box_set_default(GtkComboBoxText *target, char *command, char*(res int yon_ip_mask_get_bits(char *mask); int yon_ip_check(char *ip); +void yon_gtk_widget_register_parameter(GtkWidget *target, char *config_parameter, char *get_command, char *object_property); +void yon_gtk_widget_register_parameter_manual(GtkWidget *target, char *config_parameter, char *get_command, char *object_property); +void yon_gtk_widget_register_parameter_activate(); #endif \ No newline at end of file