Mercurial > geeqie.yaz
diff src/bar.c @ 1309:55ea4962887a
config file format changed to XML
save and restore all layout windows
save and restore sidebar configuration
author | nadvornik |
---|---|
date | Sun, 22 Feb 2009 15:35:37 +0000 |
parents | c37f36b97173 |
children | 8cca18bce950 |
line wrap: on
line diff
--- a/src/bar.c Sun Feb 22 13:29:49 2009 +0000 +++ b/src/bar.c Sun Feb 22 15:35:37 2009 +0000 @@ -27,6 +27,7 @@ #include "bar_keywords.h" #include "bar_exif.h" #include "bar_histogram.h" +#include "rcfile.h" #define BAR_SIZE_INCREMENT 48 #define BAR_ARROW_SIZE 7 @@ -147,6 +148,40 @@ return ret; } +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_indent(outstr, indent); + g_string_append_printf(outstr, "<bar>\n"); + + 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 + 1); + + work = work->next; + } + g_list_free(list); + + write_indent(outstr, indent); + g_string_append_printf(outstr, "</bar>\n"); +} + + void bar_pane_set_selection_func(GtkWidget *pane, GList *(*list_func)(gpointer data), gpointer data) { PaneData *pd; @@ -187,7 +222,7 @@ -static void bar_add(GtkWidget *bar, GtkWidget *pane) +void bar_add(GtkWidget *bar, GtkWidget *pane) { GtkWidget *expander; GtkWidget *label; @@ -208,7 +243,7 @@ gtk_container_add(GTK_CONTAINER(expander), pane); - gtk_expander_set_expanded(GTK_EXPANDER(expander), TRUE); + gtk_expander_set_expanded(GTK_EXPANDER(expander), pd->expanded); gtk_widget_show(expander); @@ -217,6 +252,25 @@ } +void bar_populate_default(GtkWidget *bar) +{ + GtkWidget *widget; + widget = bar_pane_histogram_new(_("Histogram"), 80, TRUE); + bar_add(bar, widget); + + widget = bar_pane_comment_new(_("Title"), "Xmp.dc.title", TRUE, 40); + bar_add(bar, widget); + + widget = bar_pane_keywords_new(_("Keywords"), KEYWORD_KEY, TRUE); + bar_add(bar, widget); + + widget = bar_pane_comment_new(_("Comment"), "Xmp.dc.description", TRUE, 150); + bar_add(bar, widget); + + widget = bar_pane_exif_new(_("Exif"), TRUE); + bar_add(bar, widget); +} + static void bar_width(BarData *bd, gint val) { gint size; @@ -225,7 +279,7 @@ size = CLAMP(size + val, BAR_SIZE_INCREMENT * 2, BAR_SIZE_INCREMENT * 16); gtk_widget_set_size_request(bd->widget, size, -1); - options->panels.info.width = bd->widget->allocation.width; + options->layout.panels.info.width = bd->widget->allocation.width; } static void bar_larger(GtkWidget *widget, gpointer data) @@ -269,7 +323,6 @@ GtkWidget *button; GtkWidget *arrow; GtkWidget *scrolled; - GtkWidget *widget; bd = g_new0(BarData, 1); @@ -334,25 +387,8 @@ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_NONE); gtk_widget_show(bd->vbox); - - widget = bar_pane_histogram_new(_("Histogram"), 80); - bar_add(bd->widget, widget); - - widget = bar_pane_comment_new(_("Title"), "Xmp.dc.title", 40); - bar_add(bd->widget, widget); - - widget = bar_pane_keywords_new(_("Keywords"), KEYWORD_KEY); - bar_add(bd->widget, widget); - - widget = bar_pane_comment_new(_("Comment"), "Xmp.dc.description", 150); - bar_add(bd->widget, widget); - - widget = bar_pane_exif_new(_("Exif")); - bar_add(bd->widget, widget); - return bd->widget; } - /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */