return FALSE;
}
-void show_menu_scrollbar_cb(GtkWidget *widget, GdkRectangle *allocation, gpointer data)
-{
- GtkRequisition requisition;
-
- gtk_widget_size_request(widget, &requisition);
-
- if (allocation->width <= requisition.width)
- {
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(data), GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
- }
- else
- {
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(data), GTK_POLICY_NEVER, GTK_POLICY_NEVER);
- }
-}
-
static GtkWidget *layout_tool_setup(LayoutWindow *lw)
{
GtkWidget *box;
toolbar = layout_actions_toolbar(lw, TOOLBAR_MAIN);
scroll_window = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), GTK_POLICY_AUTOMATIC,GTK_POLICY_NEVER);
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll_window), menu_bar);
- g_signal_connect(G_OBJECT(menu_bar), "size-allocate", G_CALLBACK(show_menu_scrollbar_cb), scroll_window);
gtk_widget_show(scroll_window);
gtk_widget_show(menu_bar);
gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, etime);
}
-static GtkWidget *layout_sort_button(LayoutWindow *lw)
+static GtkWidget *layout_sort_button(LayoutWindow *lw, GtkWidget *box)
{
GtkWidget *button;
+ GtkWidget *frame;
+ GtkWidget *image;
+
+ frame = gtk_frame_new(NULL);
+ DEBUG_NAME(frame);
+ gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
+ gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 0);
+ gtk_widget_show(frame);
+ image = gtk_image_new_from_icon_name("pan-down", GTK_ICON_SIZE_BUTTON);
button = gtk_button_new_with_label(sort_type_get_text(lw->sort_method));
- DEBUG_NAME(button);
+ gtk_button_set_image(GTK_BUTTON(button), image);
g_signal_connect(G_OBJECT(button), "clicked",
G_CALLBACK(layout_sort_button_press_cb), lw);
gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
+ gtk_button_set_image_position(GTK_BUTTON(button), GTK_POS_RIGHT);
+
+ gtk_container_add(GTK_CONTAINER(frame), button);
+ gtk_widget_show(button);
return button;
}
{
GtkWidget *button;
GtkWidget *frame;
-
+ GtkWidget *image;
frame = gtk_frame_new(NULL);
DEBUG_NAME(frame);
gtk_widget_show(frame);
+ image = gtk_image_new_from_icon_name("pan-down", GTK_ICON_SIZE_BUTTON);
button = gtk_button_new_with_label("1:1");
+ gtk_button_set_image(GTK_BUTTON(button), image);
g_signal_connect(G_OBJECT(button), "clicked",
G_CALLBACK(layout_zoom_button_press_cb), lw);
gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
+ gtk_button_set_image_position(GTK_BUTTON(button), GTK_POS_RIGHT);
gtk_container_add(GTK_CONTAINER(frame), button);
gtk_widget_show(button);
gtk_widget_show(frame);
label = gtk_label_new(text ? text : "");
+ gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END);
gtk_container_add(GTK_CONTAINER(frame), label);
gtk_widget_show(label);
gtk_box_pack_start(GTK_BOX(hbox), lw->info_progress_bar, FALSE, FALSE, 0);
gtk_widget_show(lw->info_progress_bar);
- lw->info_sort = layout_sort_button(lw);
+ lw->info_sort = layout_sort_button(lw, hbox);
gtk_widget_set_tooltip_text(GTK_WIDGET(lw->info_sort), _("Select sort order"));
- gtk_box_pack_start(GTK_BOX(hbox), lw->info_sort, FALSE, FALSE, 0);
gtk_widget_show(lw->info_sort);
lw->info_status = layout_status_label(NULL, lw->info_box, TRUE, 0, (!small_format));
{
gboolean have_file = FALSE;
gboolean dir_changed = TRUE;
+ gchar *last_image;
if (!layout_valid(&lw)) return FALSE;
}
lw->dir_fd = file_data_ref(fd);
file_data_register_real_time_monitor(fd);
+
+ last_image = get_recent_viewed_folder_image(fd->path);
+ if (last_image)
+ {
+ fd = file_data_new_group(last_image);
+ g_free(last_image);
+
+ if (isfile(fd->path)) have_file = TRUE;
+ }
+
}
else
{
lw->sort_method = type;
lw->sort_ascend = ascend;
- if (lw->info_sort) gtk_label_set_text(GTK_LABEL(gtk_bin_get_child(GTK_BIN(lw->info_sort))),
- sort_type_get_text(type));
+ if (lw->info_sort) gtk_button_set_label(GTK_BUTTON(lw->info_sort), sort_type_get_text(type));
layout_list_sync_sort(lw);
}
void layout_close(LayoutWindow *lw)
{
- GList *list;
- LayoutWindow *tmp_lw;
-
if (layout_window_list && layout_window_list->next)
{
save_layout(lw);
GdkGeometry hint;
GdkWindowHints hint_mask;
Histogram *histogram;
+ gchar *default_path;
DEBUG_1("%s layout_new: start", get_exec_time());
lw = g_new0(LayoutWindow, 1);
/* divider positions */
+ default_path = g_build_filename(get_rc_dir(), DEFAULT_WINDOW_LAYOUT, NULL);
+
if (!options->save_window_positions)
{
- lw->options.main_window.hdivider_pos = MAIN_WINDOW_DIV_HPOS;
- lw->options.main_window.vdivider_pos = MAIN_WINDOW_DIV_VPOS;
- lw->options.float_window.vdivider_pos = MAIN_WINDOW_DIV_VPOS;
+ if (!isfile(default_path))
+ {
+ lw->options.main_window.hdivider_pos = MAIN_WINDOW_DIV_HPOS;
+ lw->options.main_window.vdivider_pos = MAIN_WINDOW_DIV_VPOS;
+ lw->options.float_window.vdivider_pos = MAIN_WINDOW_DIV_VPOS;
+ }
}
/* window */
gtk_window_set_geometry_hints(GTK_WINDOW(lw->window), NULL, &hint,
GDK_HINT_MIN_SIZE | GDK_HINT_BASE_SIZE | hint_mask);
- if (options->save_window_positions)
+ if (options->save_window_positions || isfile(default_path))
{
gtk_window_set_default_size(GTK_WINDOW(lw->window), lw->options.main_window.w, lw->options.main_window.h);
// if (!layout_window_list)
gtk_window_set_default_size(GTK_WINDOW(lw->window), MAINWINDOW_DEF_WIDTH, MAINWINDOW_DEF_HEIGHT);
}
+ g_free(default_path);
g_signal_connect(G_OBJECT(lw->window), "delete_event",
G_CALLBACK(layout_delete_cb), lw);
WRITE_NL(); WRITE_INT(*layout, dupe_window.y);
WRITE_NL(); WRITE_INT(*layout, dupe_window.w);
WRITE_NL(); WRITE_INT(*layout, dupe_window.h);
+
+ WRITE_NL(); WRITE_INT(*layout, advanced_exif_window.x);
+ WRITE_NL(); WRITE_INT(*layout, advanced_exif_window.y);
+ WRITE_NL(); WRITE_INT(*layout, advanced_exif_window.w);
+ WRITE_NL(); WRITE_INT(*layout, advanced_exif_window.h);
WRITE_SEPARATOR();
WRITE_NL(); WRITE_BOOL(*layout, animate);
if (READ_INT(*layout, dupe_window.w)) continue;
if (READ_INT(*layout, dupe_window.h)) continue;
+ if (READ_INT(*layout, advanced_exif_window.x)) continue;
+ if (READ_INT(*layout, advanced_exif_window.y)) continue;
+ if (READ_INT(*layout, advanced_exif_window.w)) continue;
+ if (READ_INT(*layout, advanced_exif_window.h)) continue;
+
if (READ_BOOL(*layout, animate)) continue;
if (READ_INT(*layout, workspace)) continue;
static void layout_config_commandline(LayoutOptions *lop, gchar **path)
{
+ gchar *last_image;
+
if (command_line->startup_blank)
{
*path = NULL;
}
else layout_config_startup_path(lop, path);
+ if (isdir(*path))
+ {
+ last_image = get_recent_viewed_folder_image(*path);
+ if (last_image)
+ {
+ g_free(*path);
+ *path = last_image;
+ }
+ }
+
if (command_line->tools_show)
{
lop->tools_float = FALSE;
free_layout_options_content(&lop);
}
+LayoutWindow *layout_new_from_default()
+{
+ LayoutWindow *lw;
+ GList *work;
+ gboolean success;
+ gchar *default_path;
+
+ default_path = g_build_filename(get_rc_dir(), DEFAULT_WINDOW_LAYOUT, NULL);
+ success = load_config_from_file(default_path, TRUE);
+ g_free(default_path);
+
+ if (success)
+ {
+ work = g_list_last(layout_window_list);
+ lw = work->data;
+ g_free(lw->options.id);
+ lw->options.id = g_strdup(layout_get_unique_id());
+ }
+ else
+ {
+ lw = layout_new_from_config(NULL, NULL, TRUE);
+ }
+ return lw;
+}
+
/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */