static void _ussd_on_operators_changed(gpointer data) { USSD * ussd = data; GtkTreeModel * model; GtkTreeIter iter; gchar * _operator; model = gtk_combo_box_get_model(GTK_COMBO_BOX(ussd->codes)); gtk_list_store_clear(GTK_LIST_STORE(model)); if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(ussd->operators), &iter) != TRUE) return; model = gtk_combo_box_get_model(GTK_COMBO_BOX(ussd->operators)); gtk_tree_model_get(model, &iter, UO_OPERATOR, &_operator, -1); if(ussd->config != NULL) config_foreach_section(ussd->config, _operator, _ussd_on_operators_changed_operator, ussd); g_free(_operator); gtk_combo_box_set_active(GTK_COMBO_BOX(ussd->codes), 0); }
int main(){ Config* conf = config_new("config.conf"); if(conf){ int i; for(i=0; i<conf->cnt; ++i){ printf("%s=%s\n",conf->keys[i],conf->values[i]); } } printf("section size:%d\n",config_section_size(conf)); config_foreach_section(conf,each_section_fn,NULL); config_delete(conf); conf = config_new_from_strbuf(" aa=bb vendor=AMD "); if(conf){ int i; for(i=0; i<conf->cnt; ++i){ printf("%s=%s\n",conf->keys[i],conf->values[i]); } } config_delete(conf); return 0; }