diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index 12c5c46..0a6a203 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -1481,12 +1481,23 @@ void* yon_interface_update(main_window *widgets){ int names_size; config_str names_parsed = yon_char_parse(parsed[0],&names_size," "); for (int j=0;jSystemList,&iter); - gtk_list_store_set(widgets->SystemList,&iter,3,enabled,4,active,5,names_parsed[j],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + int found=0; + for_iter(widgets->SystemList,&iter){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->SystemList),&iter,5,&target,-1); + if (!strcmp(target,names_parsed[j])){ + found = 1; + break; + } + } + if (!found) { + int enabled = !strcmp(parsed[5],"enabled"); + int loaded = !strcmp(parsed[1],"loaded"); + int active = !strcmp(parsed[2],"active"); + enum YON_UNIT_TYPE type = yon_get_unit_type(names_parsed[j]); + gtk_list_store_append(widgets->SystemList,&iter); + gtk_list_store_set(widgets->SystemList,&iter,3,enabled,4,active,5,names_parsed[j],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + } } yon_char_parsed_free(names_parsed,names_size); } @@ -1538,12 +1549,23 @@ void* yon_interface_update(main_window *widgets){ int names_size; config_str names_parsed = yon_char_parse(parsed[0],&names_size," "); for (int j=0;jUserList,&iter); - gtk_list_store_set(widgets->UserList,&iter,3,enabled,4,active,5,names_parsed[j],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + int found=0; + for_iter(widgets->UserList,&iter){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->UserList),&iter,5,&target,-1); + if (!strcmp(target,names_parsed[j])){ + found = 1; + break; + } + } + if (found) { + int enabled = !strcmp(parsed[5],"enabled"); + int loaded = !strcmp(parsed[1],"loaded"); + int active = !strcmp(parsed[2],"active"); + enum YON_UNIT_TYPE type = yon_get_unit_type(names_parsed[j]); + gtk_list_store_append(widgets->UserList,&iter); + gtk_list_store_set(widgets->UserList,&iter,3,enabled,4,active,5,names_parsed[j],6,parsed[4],7,type,8,active,9,loaded,11,_(parsed[3]),13,parsed[3],-1); + } } yon_char_parsed_free(names_parsed,names_size); }