gtk_widget_destroy(eb->vbox);
}
-static void bar_exif_size(ExifBar *eb, gint val)
+static void bar_exif_width(ExifBar *eb, gint val)
{
gint size;
size = CLAMP(size + val, EXIF_BAR_SIZE_INCREMENT * 2, EXIF_BAR_SIZE_INCREMENT * 16);
gtk_widget_set_size_request(eb->vbox, size, -1);
+ options->panels.exif.width = eb->vbox->allocation.width;
}
static void bar_exif_larger(GtkWidget *widget, gpointer data)
{
ExifBar *eb = data;
- bar_exif_size(eb, EXIF_BAR_SIZE_INCREMENT);
+ bar_exif_width(eb, EXIF_BAR_SIZE_INCREMENT);
}
static void bar_exif_smaller(GtkWidget *widget, gpointer data)
{
ExifBar *eb = data;
- bar_exif_size(eb, -EXIF_BAR_SIZE_INCREMENT);
+ bar_exif_width(eb, -EXIF_BAR_SIZE_INCREMENT);
}
static void bar_exif_destroy(GtkWidget *widget, gpointer data)
lw->utility_box = NULL;
lw->bar_sort = NULL;
- lw->bar_sort_enabled = FALSE;
+ lw->bar_sort_enabled = options->panels.sort.enabled;
+
lw->bar_exif = NULL;
- lw->bar_exif_enabled = FALSE;
- lw->bar_exif_size = -1;
+ lw->bar_exif_enabled = options->panels.exif.enabled;
lw->bar_exif_advanced = FALSE;
+
+ lw->bar_info = NULL;
+ lw->bar_info_enabled = options->panels.info.enabled;
/* default layout */
lw->div_h = options->layout.main_window.hdivider_pos;
lw->div_v = options->layout.main_window.vdivider_pos;
lw->div_float = options->layout.float_window.vdivider_pos;
+ lw->bar_exif_width = options->panels.exif.width;
+ lw->bar_info_width = options->panels.info.width;
}
else
{
lw->div_h = MAIN_WINDOW_DIV_HPOS;
lw->div_v = MAIN_WINDOW_DIV_VPOS;
lw->div_float = MAIN_WINDOW_DIV_VPOS;
+ lw->bar_exif_width = PANEL_DEFAULT_WIDTH;
+ lw->bar_info_width = PANEL_DEFAULT_WIDTH;
}
/* window */
*-----------------------------------------------------------------------------
*/
-#define SIDEBAR_WIDTH 288
-
static void layout_bar_info_destroyed(GtkWidget *widget, gpointer data)
{
LayoutWindow *lw = data;
return layout_selection_list(lw);
}
+static void layout_bar_info_sized(GtkWidget *widget, GtkAllocation *allocation, gpointer data)
+{
+ LayoutWindow *lw = data;
+
+ if (!lw->bar_info) return;
+
+ options->panels.info.width = lw->bar_info_width = allocation->width;
+}
+
static void layout_bar_info_new(LayoutWindow *lw)
{
if (!lw->utility_box) return;
lw->bar_info = bar_info_new(layout_image_get_fd(lw), FALSE, lw->utility_box);
bar_info_set_selection_func(lw->bar_info, layout_bar_info_list_cb, lw);
bar_info_selection(lw->bar_info, layout_selection_count(lw, NULL) - 1);
- bar_info_size_request(lw->bar_info, SIDEBAR_WIDTH * 3 / 4);
g_signal_connect(G_OBJECT(lw->bar_info), "destroy",
G_CALLBACK(layout_bar_info_destroyed), lw);
- lw->bar_info_enabled = TRUE;
+ g_signal_connect(G_OBJECT(lw->bar_info), "size_allocate",
+ G_CALLBACK(layout_bar_info_sized), lw);
+
+ options->panels.info.enabled = lw->bar_info_enabled = TRUE;
+ gtk_widget_set_size_request(lw->bar_info, lw->bar_info_width, -1);
gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar_info, FALSE, FALSE, 0);
gtk_widget_show(lw->bar_info);
bar_info_close(lw->bar_info);
lw->bar_info = NULL;
}
- lw->bar_info_enabled = FALSE;
+ options->panels.info.enabled = lw->bar_info_enabled = FALSE;
}
void layout_bar_info_toggle(LayoutWindow *lw)
{
LayoutWindow *lw = data;
- if (lw->bar_exif)
- {
- lw->bar_exif_size = allocation->width;
- }
+ if (!lw->bar_exif) return;
+
+ options->panels.exif.width = lw->bar_exif_width = allocation->width;
}
static void layout_bar_exif_new(LayoutWindow *lw)
G_CALLBACK(layout_bar_exif_destroyed), lw);
g_signal_connect(G_OBJECT(lw->bar_exif), "size_allocate",
G_CALLBACK(layout_bar_exif_sized), lw);
- lw->bar_exif_enabled = TRUE;
- if (lw->bar_exif_size < 1) lw->bar_exif_size = SIDEBAR_WIDTH;
- gtk_widget_set_size_request(lw->bar_exif, lw->bar_exif_size, -1);
+ options->panels.exif.enabled = lw->bar_exif_enabled = TRUE;
+ gtk_widget_set_size_request(lw->bar_exif, lw->bar_exif_width, -1);
+
gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar_exif, FALSE, FALSE, 0);
if (lw->bar_info) gtk_box_reorder_child(GTK_BOX(lw->utility_box), lw->bar_exif, 1);
gtk_widget_show(lw->bar_exif);
bar_exif_close(lw->bar_exif);
lw->bar_exif = NULL;
}
- lw->bar_exif_enabled = FALSE;
+ options->panels.exif.enabled = lw->bar_exif_enabled = FALSE;
}
void layout_bar_exif_toggle(LayoutWindow *lw)
lw->bar_sort = bar_sort_new(lw);
g_signal_connect(G_OBJECT(lw->bar_sort), "destroy",
G_CALLBACK(layout_bar_sort_destroyed), lw);
- lw->bar_sort_enabled = TRUE;
+ options->panels.sort.enabled = lw->bar_sort_enabled = TRUE;
gtk_box_pack_end(GTK_BOX(lw->utility_box), lw->bar_sort, FALSE, FALSE, 0);
gtk_widget_show(lw->bar_sort);
bar_sort_close(lw->bar_sort);
lw->bar_sort = NULL;
}
- lw->bar_sort_enabled = FALSE;
+ options->panels.sort.enabled = lw->bar_sort_enabled = FALSE;
}
void layout_bar_sort_toggle(LayoutWindow *lw)
WRITE_BOOL(layout.toolbar_hidden);
+ WRITE_SUBTITLE("Panels Options");
+
+ WRITE_BOOL(panels.exif.enabled);
+ WRITE_INT(panels.exif.width);
+ WRITE_BOOL(panels.info.enabled);
+ WRITE_INT(panels.info.width);
+ WRITE_BOOL(panels.sort.enabled);
WRITE_SUBTITLE("Image Options");
READ_BOOL(layout.tools_restore_state);
READ_BOOL(layout.toolbar_hidden);
+ /* panels */
+ READ_BOOL(panels.exif.enabled);
+ READ_INT_CLAMP(panels.exif.width, PANEL_MIN_WIDTH, PANEL_MAX_WIDTH);
+ READ_BOOL(panels.info.enabled);
+ READ_INT_CLAMP(panels.info.width, PANEL_MIN_WIDTH, PANEL_MAX_WIDTH);
+ READ_BOOL(panels.sort.enabled);
/* image options */
if (strcasecmp(option, "image.zoom_mode") == 0)