@ -103,7 +103,7 @@ void on_about(){
//functions
void yon_load_proceed ( YON_CONFIG_TYPE type ) {
if ( yon_config_load_register ( type , " config " , hostname_parameter , " config " , id_parameter , " locale " , console_font_parameter , " locale " , l anguage_parameter, NULL ) ) { }
if ( yon_config_load_register ( type , " config " , hostname_parameter , " config " , id_parameter , " locale " , console_font_parameter , " locale " , l ocale_parameter, " locale " , l anguage_parameter, NULL ) ) { }
else
yon_ubl_status_box_render ( LOAD_FAILED_LABEL , BACKGROUND_IMAGE_FAIL_TYPE ) ;
@ -112,7 +112,9 @@ void yon_load_proceed(YON_CONFIG_TYPE type){
void yon_config_local_load ( GtkWidget * self , main_window * widgets ) {
gtk_entry_set_text ( GTK_ENTRY ( widgets - > HostnameEntry ) , " " ) ;
gtk_entry_set_text ( GTK_ENTRY ( widgets - > IDEntry ) , " " ) ;
gtk_entry_set_text ( GTK_ENTRY ( widgets - > LocaleEntry ) , " " ) ;
int size ;
GtkTreeIter iter ;
config_str rtn = yon_config_load ( get_id_command , & size ) ;
rtn [ 0 ] = yon_char_divide_search ( rtn [ 0 ] , " \n " , - 1 ) ;
gtk_entry_set_text ( GTK_ENTRY ( widgets - > IDEntry ) , * rtn ) ;
@ -120,6 +122,9 @@ void yon_config_local_load(GtkWidget *self, main_window *widgets){
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > LanguageCombo ) , 0 ) ;
yon_load_proceed ( YON_CONFIG_LOCAL ) ;
gtk_entry_set_text ( GTK_ENTRY ( widgets - > HostnameEntry ) , yon_config_get_by_key ( hostname_parameter ) ) ;
for_iter ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter ) {
gtk_list_store_set ( widgets - > languagelist , & iter , 2 , 0 , - 1 ) ;
}
char * id = yon_config_get_by_key ( id_parameter ) ;
if ( ! strcmp ( id , " Random " ) )
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > IDCombo ) , 1 ) ;
@ -128,7 +133,6 @@ void yon_config_local_load(GtkWidget *self, main_window *widgets){
else
gtk_entry_set_text ( GTK_ENTRY ( widgets - > IDEntry ) , id ) ;
GtkTreeIter iter ;
char * code ;
char * cons_font = yon_config_get_by_key ( console_font_parameter ) ;
if ( cons_font ) {
@ -139,12 +143,26 @@ void yon_config_local_load(GtkWidget *self, main_window *widgets){
}
}
char * lang = yon_config_get_by_key ( language_parameter ) ;
char * avlocale = yon_config_get_by_key ( locale_parameter ) ;
int locsize ;
if ( avlocale ) ;
config_str locale_parsed = yon_char_parse ( avlocale , & locsize , " , " ) ;
gboolean is_active ;
char * locale_string = " " ;
char * loc_name ;
if ( lang ) {
int valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter ) ;
for ( ; valid ; valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter ) ) {
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter , 1 , & code , - 1 ) ;
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter , 0, & loc_name , 1, & cod e, 2 , & is_activ e, - 1 ) ;
if ( code & & ! strcmp ( code , lang ) ) gtk_combo_box_set_active_iter ( GTK_COMBO_BOX ( widgets - > LanguageCombo ) , & iter ) ;
if ( avlocale )
for ( int i = 0 ; i < locsize ; i + + )
if ( ! strcmp ( code , locale_parsed [ i ] ) ) {
gtk_list_store_set ( widgets - > languagelist , & iter , 2 , 1 , - 1 ) ;
locale_string = yon_char_unite ( strcmp ( locale_string , " " ) ? yon_char_append ( locale_string , " ; " ) : locale_string , loc_name , NULL ) ;
}
}
gtk_entry_set_text ( GTK_ENTRY ( widgets - > LocaleEntry ) , locale_string ) ;
}
yon_ubl_status_box_render ( LOCAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
}
@ -152,7 +170,9 @@ void yon_config_local_load(GtkWidget *self, main_window *widgets){
void yon_config_global_load ( GtkWidget * self , main_window * widgets ) {
gtk_entry_set_text ( GTK_ENTRY ( widgets - > HostnameEntry ) , " " ) ;
gtk_entry_set_text ( GTK_ENTRY ( widgets - > IDEntry ) , " " ) ;
gtk_entry_set_text ( GTK_ENTRY ( widgets - > LocaleEntry ) , " " ) ;
int size ;
GtkTreeIter iter ;
config_str rtn = yon_config_load ( get_id_command , & size ) ;
rtn [ 0 ] = yon_char_divide_search ( rtn [ 0 ] , " \n " , - 1 ) ;
gtk_entry_set_text ( GTK_ENTRY ( widgets - > IDEntry ) , * rtn ) ;
@ -160,51 +180,120 @@ void yon_config_global_load(GtkWidget *self, main_window *widgets){
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > LanguageCombo ) , 0 ) ;
yon_load_proceed ( YON_CONFIG_GLOBAL ) ;
gtk_entry_set_text ( GTK_ENTRY ( widgets - > HostnameEntry ) , yon_config_get_by_key ( hostname_parameter ) ) ;
for_iter ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter ) {
gtk_list_store_set ( widgets - > languagelist , & iter , 2 , 0 , - 1 ) ;
}
char * id = yon_config_get_by_key ( id_parameter ) ;
if ( ! strcmp ( id , " Random " ) )
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > IDCombo ) , 1 ) ;
else if ( ! strcmp ( id , " hardware " ) )
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > IDCombo ) , 2 ) ;
GtkTreeIter iter ;
else
gtk_entry_set_text ( GTK_ENTRY ( widgets - > IDEntry ) , id ) ;
char * code ;
char * cons_font = yon_config_get_by_key ( console_font_parameter ) ;
if ( cons_font ) {
int valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( widgets - > fontlist ) , & iter ) ;
for ( ; valid ; gtk_tree_model_iter_next ( GTK_TREE_MODEL ( widgets - > fontlist ) , & iter ) ) {
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > fontlist ) , & iter , 1 , & code , - 1 ) ;
if ( code & & ! strcmp ( code , cons_font ) ) { gtk_combo_box_set_active_iter ( GTK_COMBO_BOX ( widgets - > ConsoleFontCombo ) , & iter ) ; break ; }
else { gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > ConsoleFontCombo ) , 0 ) ; }
for ( ; valid ; valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( widgets - > fontlist ) , & iter ) ) {
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > fontlist ) , & iter , 0 , & code , - 1 ) ;
if ( code & & ! strcmp ( code , cons_font ) ) gtk_combo_box_set_active_iter ( GTK_COMBO_BOX ( widgets - > ConsoleFontCombo ) , & iter ) ;
}
}
char * lang = yon_config_get_by_key ( language_parameter ) ;
char * avlocale = yon_config_get_by_key ( locale_parameter ) ;
int locsize ;
if ( avlocale ) ;
config_str locale_parsed = yon_char_parse ( avlocale , & locsize , " , " ) ;
gboolean is_active ;
char * locale_string = " " ;
char * loc_name ;
if ( lang ) {
int valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter ) ;
for ( ; valid ; valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter ) ) {
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter , 1 , & code , - 1 ) ;
if ( ! strcmp ( code , lang ) ) { gtk_combo_box_set_active_iter ( GTK_COMBO_BOX ( widgets - > LanguageCombo ) , & iter ) ; break ; }
else { gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > LanguageCombo ) , 0 ) ; }
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter , 0 , & loc_name , 1 , & code , 2 , & is_active , - 1 ) ;
if ( code & & ! strcmp ( code , lang ) ) gtk_combo_box_set_active_iter ( GTK_COMBO_BOX ( widgets - > LanguageCombo ) , & iter ) ;
if ( avlocale )
for ( int i = 0 ; i < locsize ; i + + )
if ( ! strcmp ( code , locale_parsed [ i ] ) ) {
gtk_list_store_set ( widgets - > languagelist , & iter , 2 , 1 , - 1 ) ;
locale_string = yon_char_unite ( strcmp ( locale_string , " " ) ? yon_char_append ( locale_string , " ; " ) : locale_string , loc_name , NULL ) ;
}
}
gtk_entry_set_text ( GTK_ENTRY ( widgets - > LocaleEntry ) , locale_string ) ;
}
yon_ubl_status_box_render ( GLOBAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
}
void yon_config_global_local_save ( ) {
yon_config_save_registered ( NULL ," " );
yon_config_save_registered ( NULL );
yon_ubl_status_box_render ( yon_char_unite ( GLOBAL_LOCAL_SAVE_SUCCESS_LABEL , " \n " , SAVE_WARNING_LABEL , NULL ) , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
}
void yon_config_local_save ( ) {
yon_config_save_registered ( " system " ," config " );
yon_config_save_registered ( " system " );
yon_ubl_status_box_render ( yon_char_unite ( LOCAL_SAVE_SUCCESS_LABEL , " \n " , SAVE_WARNING_LABEL , NULL ) , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
}
void yon_config_global_save ( ) {
yon_config_save_registered ( " global " ," " );
yon_config_save_registered ( " global " );
yon_ubl_status_box_render ( yon_char_unite ( GLOBAL_SAVE_SUCCESS_LABEL , " \n " , SAVE_WARNING_LABEL , NULL ) , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
}
void on_locale_toggle ( GtkCellRendererToggle * self , GtkTreePath * path , GtkTreeViewColumn * column , locals_window * window ) {
GtkTreeIter iter ;
GtkTreeModel * model = gtk_tree_view_get_model ( GTK_TREE_VIEW ( window - > MainTree ) ) ;
gtk_tree_model_get_iter ( model , & iter , path ) ;
gboolean is_active ;
gtk_tree_model_get ( model , & iter , 2 , & is_active , - 1 ) ;
gtk_list_store_set ( GTK_LIST_STORE ( model ) , & iter , 2 , ! is_active , - 1 ) ;
}
void on_locale_accept ( GtkWidget * self , dictionary * dict ) {
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
locals_window * window = yon_dictionary_get_data ( dict - > first - > next , locals_window * ) ;
GtkTreeIter iter ;
gboolean is_active ;
char * final_string = " " ;
char * final_ids = " " ;
char * name , * id ;
int valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter ) ;
for ( ; valid ; valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter ) ) {
gtk_tree_model_get ( GTK_TREE_MODEL ( widgets - > languagelist ) , & iter , 0 , & name , 1 , & id , 2 , & is_active , - 1 ) ;
if ( is_active ) {
final_string = yon_char_unite ( strcmp ( final_string , " " ) ? yon_char_append ( final_string , " ; " ) : final_string , name , NULL ) ;
final_ids = yon_char_unite ( strcmp ( final_ids , " " ) ? yon_char_append ( final_ids , " , " ) : final_ids , id , NULL ) ;
}
}
gtk_entry_set_text ( GTK_ENTRY ( widgets - > LocaleEntry ) , final_string ) ;
if ( yon_config_get_by_key ( " LOCALE " ) ) yon_config_set ( " LOCALE " , final_ids ) ;
else yon_config_register ( " LOCALE " , " locale " , final_ids ) ;
on_close_subwindow ( self ) ;
}
void on_locale_open ( GtkWidget * self , main_window * widgets ) {
locals_window * window = malloc ( sizeof ( locals_window ) ) ;
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_locales_path ) ;
window - > Window = yon_gtk_builder_get_widget ( builder , " localesLayoutsWindow " ) ;
window - > MainTree = yon_gtk_builder_get_widget ( builder , " localesTree " ) ;
window - > CloseButton = yon_gtk_builder_get_widget ( builder , " localesCancelButton " ) ;
window - > AcceptButton = yon_gtk_builder_get_widget ( builder , " localesAcceptButton " ) ;
window - > ToggleCell = GTK_CELL_RENDERER ( gtk_builder_get_object ( builder , " toggleCell " ) ) ;
gtk_tree_view_set_model ( GTK_TREE_VIEW ( window - > MainTree ) , GTK_TREE_MODEL ( widgets - > languagelist ) ) ;
dictionary * dict = NULL ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " widgets " , widgets ) ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " window " , window ) ;
g_signal_connect ( G_OBJECT ( window - > CloseButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > AcceptButton ) , " clicked " , G_CALLBACK ( on_locale_accept ) , dict ) ;
g_signal_connect ( G_OBJECT ( window - > MainTree ) , " row-activated " , G_CALLBACK ( on_locale_toggle ) , window ) ;
gtk_dialog_run ( GTK_DIALOG ( window - > Window ) ) ;
}
void on_hostname_changed ( GtkEntry * self , main_window * widgets ) {
char * text = ( char * ) gtk_entry_get_text ( self ) ;
if ( yon_config_get_by_key ( hostname_parameter ) ) {
@ -349,6 +438,9 @@ main_window *setup_window(){
widgets - > ConsoleFontCombo = yon_gtk_builder_get_widget ( builder , " ConsoleFontCombo " ) ;
widgets - > LanguageCombo = yon_gtk_builder_get_widget ( builder , " LanguageCombo " ) ;
widgets - > LocaleButton = yon_gtk_builder_get_widget ( builder , " getLocalesButton " ) ;
widgets - > LocaleEntry = yon_gtk_builder_get_widget ( builder , " localeEntry " ) ;
widgets - > fontlist = GTK_LIST_STORE ( gtk_builder_get_object ( builder , " fontlist " ) ) ;
widgets - > languagelist = GTK_LIST_STORE ( gtk_builder_get_object ( builder , " languagelist " ) ) ;
@ -391,9 +483,11 @@ main_window *setup_window(){
g_signal_connect ( G_OBJECT ( widgets - > IDCombo ) , " changed " , G_CALLBACK ( on_id_combo_toggled ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > IDEntry ) , " changed " , G_CALLBACK ( on_id_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > IDCopyButton ) , " clicked " , G_CALLBACK ( on_id_copy ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > LocaleButton ) , " clicked " , G_CALLBACK ( on_locale_open ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ConsoleFontCombo ) , " changed " , G_CALLBACK ( on_console_font_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > LanguageCombo ) , " changed " , G_CALLBACK ( on_language_changed ) , widgets ) ;
main_config . localeslist = gtk_list_store_new ( 3 , G_TYPE_STRING , G_TYPE_STRING , G_TYPE_BOOLEAN ) ;
int size ;
config_str locales = yon_config_load ( get_locales_command , & size ) ;
GtkTreeIter iter ;
@ -402,7 +496,7 @@ main_window *setup_window(){
locales [ i ] = yon_char_divide_search ( locales [ i ] , " \n " , - 1 ) ;
config_str loc_parsed = yon_char_parse ( locales [ i ] , & locsize , " ; " ) ;
gtk_list_store_append ( widgets - > languagelist , & iter ) ;
gtk_list_store_set ( widgets - > languagelist , & iter , 0 , _ ( loc_parsed [ 1 ] ) , 1 , loc_parsed [ 0 ] , - 1 ) ;
gtk_list_store_set ( widgets - > languagelist , & iter , 0 , _ ( loc_parsed [ 1 ] ) , 1 , loc_parsed [ 0 ] , 2 , 0 , - 1 ) ;
}
config_str fonts = yon_config_load ( get_fonts_command , & size ) ;
for ( int i = 0 ; i < size ; i + + ) {