Save bar pane histogram state to rc file.
authorLaurent Monin <geeqie@norz.org>
Wed, 25 Feb 2009 20:54:38 +0000 (20:54 +0000)
committerLaurent Monin <geeqie@norz.org>
Wed, 25 Feb 2009 20:54:38 +0000 (20:54 +0000)
src/bar_histogram.c

index c7cc591..39e75ac 100644 (file)
@@ -40,6 +40,8 @@ struct _PaneHistogramData
        Histogram *histogram;
        gint histogram_width;
        gint histogram_height;
+       gint histogram_channel;
+       gint histogram_logmode;
        GdkPixbuf *pixbuf;
        FileData *fd;
 };
@@ -89,6 +91,8 @@ static void bar_pane_histogram_write_config(GtkWidget *pane, GString *outstr, gi
        indent++;
        WRITE_CHAR(*phd, pane.title);
        WRITE_BOOL(*phd, pane.expanded);
+       WRITE_INT(*phd, histogram_channel);
+       WRITE_INT(*phd, histogram_logmode);
        indent--;
        WRITE_STRING("/>\n");
 }
@@ -163,6 +167,7 @@ static void bar_pane_histogram_popup_channels_cb(GtkWidget *widget, gpointer dat
        if (channel == histogram_get_channel(phd->histogram)) return;
 
        histogram_set_channel(phd->histogram, channel);
+       phd->histogram_channel = channel;
        bar_pane_histogram_update(phd);
 }
 
@@ -181,6 +186,7 @@ static void bar_pane_histogram_popup_logmode_cb(GtkWidget *widget, gpointer data
        if (logmode == histogram_get_mode(phd->histogram)) return;
 
        histogram_set_mode(phd->histogram, logmode);
+       phd->histogram_logmode = logmode;
        bar_pane_histogram_update(phd);
 }
 
@@ -288,7 +294,7 @@ static gboolean bar_pane_histogram_press_cb(GtkWidget *widget, GdkEventButton *b
 }
 
 
-GtkWidget *bar_pane_histogram_new(const gchar *title, gint height, gint expanded)
+GtkWidget *bar_pane_histogram_new(const gchar *title, gint height, gint expanded, gint histogram_channel, gint histogram_logmode)
 {
        PaneHistogramData *phd;
 
@@ -301,8 +307,8 @@ GtkWidget *bar_pane_histogram_new(const gchar *title, gint height, gint expanded
        
        phd->histogram = histogram_new();
 
-       histogram_set_channel(phd->histogram, HCHAN_RGB);
-       histogram_set_mode(phd->histogram, 0);
+       histogram_set_channel(phd->histogram, histogram_channel);
+       histogram_set_mode(phd->histogram, histogram_logmode);
 
        phd->widget = gtk_vbox_new(FALSE, PREF_PAD_GAP);
 
@@ -338,6 +344,8 @@ GtkWidget *bar_pane_histogram_new_from_config(const gchar **attribute_names, con
        gchar *title = g_strdup(_("NoName"));
        gboolean expanded = TRUE;
        gint height = 80;
+       gint histogram_channel = HCHAN_RGB;
+       gint histogram_logmode = 0;
 
        while (*attribute_names)
                {
@@ -346,12 +354,14 @@ GtkWidget *bar_pane_histogram_new_from_config(const gchar **attribute_names, con
 
                if (READ_CHAR_FULL("pane.title", title)) continue;
                if (READ_BOOL_FULL("pane.expanded", expanded)) continue;
-               
+               if (READ_INT_FULL("histogram_channel", histogram_channel)) continue;
+               if (READ_INT_FULL("histogram_logmode", histogram_logmode)) continue;
 
+               
                DEBUG_1("unknown attribute %s = %s", option, value);
                }
        
-       return bar_pane_histogram_new(title, height, expanded);
+       return bar_pane_histogram_new(title, height, expanded, histogram_channel, histogram_logmode);
 }