update statusbar after changing active image
[geeqie.git] / src / layout_image.c
index 0e17959..4449279 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Geeqie
  * (C) 2006 John Ellis
- * Copyright (C) 2008 - 2009 The Geeqie Team
+ * Copyright (C) 2008 - 2010 The Geeqie Team
  *
  * Author: John Ellis
  *
@@ -33,6 +33,7 @@
 #include "ui_menu.h"
 #include "uri_utils.h"
 #include "utilops.h"
+#include "view_file.h"
 
 #include <gdk/gdkkeysyms.h> /* for keyboard values */
 
@@ -449,11 +450,10 @@ static gboolean li_check_if_current_path(LayoutWindow *lw, const gchar *path)
 
 static void layout_image_popup_menu_destroy_cb(GtkWidget *widget, gpointer data)
 {
-       LayoutWindow *lw = data;
+       GList *editmenu_fd_list = data;
 
-       filelist_free(lw->editmenu_fd_list);
-       lw->editmenu_fd_list = NULL;
-}      
+       filelist_free(editmenu_fd_list);
+}
 
 static GList *layout_image_get_fd_list(LayoutWindow *lw)
 {
@@ -461,7 +461,13 @@ static GList *layout_image_get_fd_list(LayoutWindow *lw)
        FileData *fd = layout_image_get_fd(lw);
 
        if (fd)
-               list = g_list_append(NULL, file_data_ref(fd));
+               {
+               if (lw->vf)
+                       /* optionally include sidecars if the filelist entry is not expanded */
+                       list = vf_selection_get_one(lw->vf, fd);
+               else
+                       list = g_list_append(NULL, file_data_ref(fd));
+               }
        
        return list;
 }
@@ -473,13 +479,12 @@ static GtkWidget *layout_image_pop_menu(LayoutWindow *lw)
        GtkWidget *submenu;
        const gchar *path;
        gboolean fullscreen;
+       GList *editmenu_fd_list;
 
        path = layout_image_get_path(lw);
        fullscreen = layout_image_full_screen_active(lw);
 
        menu = popup_menu_short_lived();
-       g_signal_connect(G_OBJECT(menu), "destroy",
-                        G_CALLBACK(layout_image_popup_menu_destroy_cb), lw);
 
        menu_item_add_stock(menu, _("Zoom _in"), GTK_STOCK_ZOOM_IN, G_CALLBACK(li_pop_menu_zoom_in_cb), lw);
        menu_item_add_stock(menu, _("Zoom _out"), GTK_STOCK_ZOOM_OUT, G_CALLBACK(li_pop_menu_zoom_out_cb), lw);
@@ -487,8 +492,10 @@ static GtkWidget *layout_image_pop_menu(LayoutWindow *lw)
        menu_item_add_stock(menu, _("Fit image to _window"), GTK_STOCK_ZOOM_FIT, G_CALLBACK(li_pop_menu_zoom_fit_cb), lw);
        menu_item_add_divider(menu);
 
-       lw->editmenu_fd_list = layout_image_get_fd_list(lw);
-       submenu = submenu_add_edit(menu, &item, G_CALLBACK(li_pop_menu_edit_cb), lw, lw->editmenu_fd_list);
+       editmenu_fd_list = layout_image_get_fd_list(lw);
+       g_signal_connect(G_OBJECT(menu), "destroy",
+                        G_CALLBACK(layout_image_popup_menu_destroy_cb), editmenu_fd_list);
+       submenu = submenu_add_edit(menu, &item, G_CALLBACK(li_pop_menu_edit_cb), lw, editmenu_fd_list);
        if (!path) gtk_widget_set_sensitive(item, FALSE);
        menu_item_add_divider(submenu);
        menu_item_add(submenu, _("Set as _wallpaper"), G_CALLBACK(li_pop_menu_wallpaper_cb), lw);
@@ -627,7 +634,7 @@ static void layout_image_dnd_receive(GtkWidget *widget, GdkDragContext *context,
                                FileData *dir_fd;
 
                                base = remove_level_from_path(fd->path);
-                               dir_fd = file_data_new_simple(base);
+                               dir_fd = file_data_new_dir(base);
                                if (dir_fd != lw->dir_fd)
                                        {
                                        layout_set_fd(lw, dir_fd);
@@ -895,7 +902,42 @@ gboolean layout_image_get_desaturate(LayoutWindow *lw)
        return image_get_desaturate(lw->image);
 }
 
+/* stereo */
+/*
+gint layout_image_stereo_get(LayoutWindow *lw)
+{
+       if (!layout_valid(&lw)) return 0;
+
+       return image_stereo_get(lw->image);
+}
+
+void layout_image_stereo_set(LayoutWindow *lw, gint stereo_mode)
+{
+       if (!layout_valid(&lw)) return;
+
+       image_stereo_set(lw->image, stereo_mode);
+}
+void layout_image_stereo_swap(LayoutWindow *lw)
+{
+       if (!layout_valid(&lw)) return;
+
+       image_stereo_swap(lw->image);
+}
+*/
+
+gint layout_image_stereo_pixbuf_get(LayoutWindow *lw)
+{
+       if (!layout_valid(&lw)) return 0;
+
+       return image_stereo_pixbuf_get(lw->image);
+}
+
+void layout_image_stereo_pixbuf_set(LayoutWindow *lw, gint stereo_mode)
+{
+       if (!layout_valid(&lw)) return;
 
+       image_stereo_pixbuf_set(lw->image, stereo_mode);
+}
 
 const gchar *layout_image_get_path(LayoutWindow *lw)
 {
@@ -1667,6 +1709,7 @@ void layout_image_activate(LayoutWindow *lw, gint i, gboolean force)
 //             layout_list_sync_path(lw, path);
                layout_set_fd(lw, fd);
                }
+       layout_status_update_image(lw);
 }
 
 
@@ -1879,9 +1922,11 @@ static void layout_image_maint_removed(LayoutWindow *lw, FileData *fd)
                                layout_image_set_collection(lw, cd, new);
                                return;
                                }
+                       layout_image_set_fd(lw, NULL);
                        }
-
-               layout_image_set_fd(lw, NULL);
+                       
+               /* the image will be set to the next image from the list soon,  
+                  setting it to NULL here is not necessary*/
                }
 }