static void keyword_tree_node_write_config(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr, GString *outstr, gint indent) { GtkTreeIter iter = *iter_ptr; while (TRUE) { GtkTreeIter children; gchar *name; gchar *mark_str; WRITE_NL(); WRITE_STRING("<keyword "); name = keyword_get_name(keyword_tree, &iter); write_char_option(outstr, indent, "name", name); g_free(name); write_bool_option(outstr, indent, "kw", keyword_get_is_keyword(keyword_tree, &iter)); mark_str = keyword_get_mark(keyword_tree, &iter); if (mark_str && mark_str[0]) { write_char_option(outstr, indent, "mark", mark_str); } if (gtk_tree_model_iter_children(keyword_tree, &children, &iter)) { WRITE_STRING(">"); indent++; keyword_tree_node_write_config(keyword_tree, &children, outstr, indent); indent--; WRITE_NL(); WRITE_STRING("</keyword>"); } else { WRITE_STRING("/>"); } if (!gtk_tree_model_iter_next(keyword_tree, &iter)) return; } }
static int vc_write_config_data(struct vpn_provider *provider, int fd) { const char *opt_s; int i; for (i = 0; i < (int)ARRAY_SIZE(vpnc_options); i++) { opt_s = vpn_provider_get_string(provider, vpnc_options[i].cm_opt); if (!opt_s) opt_s = vpnc_options[i].vpnc_default; if (!opt_s) continue; if (vpnc_options[i].type == OPT_STRING) { if (write_option(fd, vpnc_options[i].vpnc_opt, opt_s) < 0) return -EIO; } else if (vpnc_options[i].type == OPT_BOOLEAN) { if (write_bool_option(fd, vpnc_options[i].vpnc_opt, opt_s) < 0) return -EIO; } } return 0; }
void bar_write_config(GtkWidget *bar, GString *outstr, gint indent) { BarData *bd; GList *list, *work; if (!bar) return; bd = g_object_get_data(G_OBJECT(bar), "bar_data"); if (!bd) return; WRITE_NL(); WRITE_STRING("<bar "); write_bool_option(outstr, indent, "enabled", gtk_widget_get_visible(bar)); write_uint_option(outstr, indent, "width", bd->width); WRITE_STRING(">"); indent++; WRITE_NL(); WRITE_STRING("<clear/>"); list = gtk_container_get_children(GTK_CONTAINER(bd->vbox)); work = list; while (work) { GtkWidget *expander = work->data; GtkWidget *widget = gtk_bin_get_child(GTK_BIN(expander)); PaneData *pd = g_object_get_data(G_OBJECT(widget), "pane_data"); if (!pd) continue; pd->expanded = gtk_expander_get_expanded(GTK_EXPANDER(expander)); if (pd->pane_write_config) pd->pane_write_config(widget, outstr, indent); work = work->next; } g_list_free(list); indent--; WRITE_NL(); WRITE_STRING("</bar>"); }