droped Preferences dialog, sidebar should replace it completely
authorVladimir Nadvornik <nadvornik@suse.cz>
Sat, 14 Feb 2009 20:26:30 +0000 (20:26 +0000)
committerVladimir Nadvornik <nadvornik@suse.cz>
Sat, 14 Feb 2009 20:26:30 +0000 (20:26 +0000)
20 files changed:
src/Makefile.am
src/bar.c
src/bar_info.c [deleted file]
src/bar_info.h [deleted file]
src/bar_keywords.c
src/bar_keywords.h
src/collect-table.c
src/collect.c
src/dupe.c
src/img-view.c
src/info.c [deleted file]
src/info.h [deleted file]
src/layout_image.c
src/layout_util.c
src/options.c
src/pan-view.c
src/search.c
src/view_file.c
src/view_file_icon.c
src/view_file_list.c

index f2edba3..0ffca1b 100644 (file)
@@ -80,8 +80,6 @@ geeqie_SOURCES = \
        bar.h           \
        bar_comment.c   \
        bar_comment.h   \
-       bar_info.c      \
-       bar_info.h      \
        bar_keywords.c  \
        bar_keywords.h  \
        bar_exif.c      \
@@ -154,8 +152,6 @@ geeqie_SOURCES = \
        image-overlay.h \
        img-view.c      \
        img-view.h      \
-       info.c          \
-       info.h          \
        layout.c        \
        layout.h        \
        layout_config.c \
index 0481fd4..dd7fe0f 100644 (file)
--- a/src/bar.c
+++ b/src/bar.c
@@ -16,7 +16,6 @@
 
 #include "filedata.h"
 #include "history_list.h"
-#include "info.h"
 #include "metadata.h"
 #include "misc.h"
 #include "ui_fileops.h"
diff --git a/src/bar_info.c b/src/bar_info.c
deleted file mode 100644 (file)
index 37a4152..0000000
+++ /dev/null
@@ -1,1047 +0,0 @@
-/*
- * Geeqie
- * (C) 2004 John Ellis
- * Copyright (C) 2008 - 2009 The Geeqie Team
- *
- * Author: John Ellis
- *
- * This software is released under the GNU General Public License (GNU GPL).
- * Please read the included file COPYING for more information.
- * This software comes with no warranty of any kind, use at your own risk!
- */
-
-
-#include "main.h"
-#include "bar_info.h"
-
-#include "filedata.h"
-#include "history_list.h"
-#include "info.h"
-#include "metadata.h"
-#include "misc.h"
-#include "ui_fileops.h"
-#include "ui_misc.h"
-#include "ui_utildlg.h"
-#include "utilops.h"
-
-static const gchar *keyword_favorite_defaults[] = {
-       N_("Favorite"),
-       N_("Todo"),
-       N_("People"),
-       N_("Places"),
-       N_("Art"),
-       N_("Nature"),
-       N_("Possessions"),
-       NULL
-};
-
-
-static void bar_info_keyword_update_all(void);
-static void bar_info_changed(GtkTextBuffer *buffer, gpointer data);
-
-/*
- *-------------------------------------------------------------------
- * keyword / comment utils
- *-------------------------------------------------------------------
- */
-
-
-static gchar *comment_pull(GtkWidget *textview)
-{
-       GtkTextBuffer *buffer;
-       GtkTextIter start, end;
-
-       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
-       gtk_text_buffer_get_bounds(buffer, &start, &end);
-
-       return gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
-}
-
-GList *keyword_list_pull(GtkWidget *text_widget)
-{
-       GList *list;
-       gchar *text;
-
-       if (GTK_IS_TEXT_VIEW(text_widget))
-               {
-               text = comment_pull(text_widget);
-               }
-       else if (GTK_IS_ENTRY(text_widget))
-               {
-               text = g_strdup(gtk_entry_get_text(GTK_ENTRY(text_widget)));
-               }
-       else
-               {
-               return NULL;
-               }
-       
-       list = string_to_keywords_list(text);
-
-       g_free(text);
-
-       return list;
-}
-
-void keyword_list_push(GtkWidget *textview, GList *list)
-{
-       GtkTextBuffer *buffer;
-       GtkTextIter start, end;
-
-       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
-       gtk_text_buffer_get_bounds(buffer, &start, &end);
-       gtk_text_buffer_delete(buffer, &start, &end);
-
-       while (list)
-               {
-               const gchar *word = list->data;
-               GtkTextIter iter;
-
-               gtk_text_buffer_get_end_iter(buffer, &iter);
-               if (word) gtk_text_buffer_insert(buffer, &iter, word, -1);
-               gtk_text_buffer_get_end_iter(buffer, &iter);
-               gtk_text_buffer_insert(buffer, &iter, "\n", -1);
-
-               list = list->next;
-               }
-}
-
-
-/*
- *-------------------------------------------------------------------
- * keyword list dialog
- *-------------------------------------------------------------------
- */
-
-#define KEYWORD_DIALOG_WIDTH  200
-#define KEYWORD_DIALOG_HEIGHT 250
-
-typedef struct _KeywordDlg KeywordDlg;
-struct _KeywordDlg
-{
-       GenericDialog *gd;
-       GtkWidget *treeview;
-};
-
-static KeywordDlg *keyword_dialog = NULL;
-
-
-static void keyword_dialog_cancel_cb(GenericDialog *gd, gpointer data)
-{
-       g_free(keyword_dialog);
-       keyword_dialog = NULL;
-}
-
-static void keyword_dialog_ok_cb(GenericDialog *gd, gpointer data)
-{
-       KeywordDlg *kd = data;
-       GtkTreeModel *store;
-       GtkTreeIter iter;
-       gint valid;
-
-       history_list_free_key("keywords");
-
-       store = gtk_tree_view_get_model(GTK_TREE_VIEW(kd->treeview));
-       valid = gtk_tree_model_get_iter_first(store, &iter);
-       while (valid)
-               {
-               gchar *key;
-
-               gtk_tree_model_get(store, &iter, 0, &key, -1);
-               valid = gtk_tree_model_iter_next(store, &iter);
-
-               history_list_add_to_key("keywords", key, 0);
-               }
-
-       keyword_dialog_cancel_cb(gd, data);
-
-       bar_info_keyword_update_all();
-}
-
-static void keyword_dialog_add_cb(GtkWidget *button, gpointer data)
-{
-       KeywordDlg *kd = data;
-       GtkTreeSelection *selection;
-       GtkTreeModel *store;
-       GtkTreeIter sibling;
-       GtkTreeIter iter;
-       GtkTreePath *tpath;
-
-       selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(kd->treeview));
-       if (gtk_tree_selection_get_selected(selection, &store, &sibling))
-               {
-               gtk_list_store_insert_before(GTK_LIST_STORE(store), &iter, &sibling);
-               }
-       else
-               {
-               store = gtk_tree_view_get_model(GTK_TREE_VIEW(kd->treeview));
-               gtk_list_store_append(GTK_LIST_STORE(store), &iter);
-               }
-
-       gtk_list_store_set(GTK_LIST_STORE(store), &iter, 1, TRUE, -1);
-
-       tpath = gtk_tree_model_get_path(store, &iter);
-       gtk_tree_view_set_cursor(GTK_TREE_VIEW(kd->treeview), tpath,
-                                gtk_tree_view_get_column(GTK_TREE_VIEW(kd->treeview), 0), TRUE);
-       gtk_tree_path_free(tpath);
-}
-
-static void keyword_dialog_remove_cb(GtkWidget *button, gpointer data)
-{
-       KeywordDlg *kd = data;
-       GtkTreeSelection *selection;
-       GtkTreeModel *store;
-       GtkTreeIter iter;
-       GtkTreeIter next;
-       GtkTreePath *tpath;
-
-       selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(kd->treeview));
-       if (!gtk_tree_selection_get_selected(selection, &store, &iter)) return;
-
-       tpath = NULL;
-       next = iter;
-       if (gtk_tree_model_iter_next(store, &next))
-               {
-               tpath = gtk_tree_model_get_path(store, &next);
-               }
-       else
-               {
-               tpath = gtk_tree_model_get_path(store, &iter);
-               if (!gtk_tree_path_prev(tpath))
-                       {
-                       gtk_tree_path_free(tpath);
-                       tpath = NULL;
-                       }
-               }
-       if (tpath)
-               {
-               gtk_tree_view_set_cursor(GTK_TREE_VIEW(kd->treeview), tpath,
-                                        gtk_tree_view_get_column(GTK_TREE_VIEW(kd->treeview), 0), FALSE);
-               gtk_tree_path_free(tpath);
-               }
-
-       gtk_list_store_remove(GTK_LIST_STORE(store), &iter);
-}
-
-static void keyword_dialog_edit_cb(GtkCellRendererText *renderer, const gchar *path,
-                                  const gchar *new_text, gpointer data)
-{
-       KeywordDlg *kd = data;
-       GtkTreeModel *store;
-       GtkTreeIter iter;
-       GtkTreePath *tpath;
-
-       if (!new_text || strlen(new_text) == 0) return;
-
-       store = gtk_tree_view_get_model(GTK_TREE_VIEW(kd->treeview));
-
-       tpath = gtk_tree_path_new_from_string(path);
-       gtk_tree_model_get_iter(store, &iter, tpath);
-       gtk_tree_path_free(tpath);
-
-       gtk_list_store_set(GTK_LIST_STORE(store), &iter, 0, new_text, -1);
-}
-
-static void keyword_dialog_populate(KeywordDlg *kd)
-{
-       GtkListStore *store;
-       GList *list;
-
-       store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(kd->treeview)));
-       gtk_list_store_clear(store);
-
-       list = history_list_get_by_key("keywords");
-       list = g_list_last(list);
-       while (list)
-               {
-               GtkTreeIter iter;
-
-               gtk_list_store_append(store, &iter);
-               gtk_list_store_set(store, &iter, 0, list->data,
-                                                1, TRUE, -1);
-
-               list = list->prev;
-               }
-}
-
-static void keyword_dialog_show(void)
-{
-       GtkWidget *scrolled;
-       GtkListStore *store;
-       GtkTreeViewColumn *column;
-       GtkCellRenderer *renderer;
-       GtkWidget *hbox;
-       GtkWidget *button;
-
-       if (keyword_dialog)
-               {
-               gtk_window_present(GTK_WINDOW(keyword_dialog->gd->dialog));
-               return;
-               }
-
-       keyword_dialog = g_new0(KeywordDlg, 1);
-
-       keyword_dialog->gd = generic_dialog_new(_("Keyword Presets"),
-                                               "keyword_presets", NULL, TRUE,
-                                               keyword_dialog_cancel_cb, keyword_dialog);
-       generic_dialog_add_message(keyword_dialog->gd, NULL, _("Favorite keywords list"), NULL);
-
-       generic_dialog_add_button(keyword_dialog->gd, GTK_STOCK_OK, NULL,
-                                keyword_dialog_ok_cb, TRUE);
-
-       scrolled = gtk_scrolled_window_new(NULL, NULL);
-       gtk_widget_set_size_request(scrolled, KEYWORD_DIALOG_WIDTH, KEYWORD_DIALOG_HEIGHT);
-       gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
-                                      GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-       gtk_box_pack_start(GTK_BOX(keyword_dialog->gd->vbox), scrolled, TRUE, TRUE, 5);
-       gtk_widget_show(scrolled);
-
-       store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_BOOLEAN);
-       keyword_dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
-       g_object_unref(store);
-
-       gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(keyword_dialog->treeview), FALSE);
-       gtk_tree_view_set_search_column(GTK_TREE_VIEW(keyword_dialog->treeview), 0);
-       gtk_tree_view_set_reorderable(GTK_TREE_VIEW(keyword_dialog->treeview), TRUE);
-
-       column = gtk_tree_view_column_new();
-       gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-       renderer = gtk_cell_renderer_text_new();
-       g_signal_connect(G_OBJECT(renderer), "edited",
-                        G_CALLBACK(keyword_dialog_edit_cb), keyword_dialog);
-       gtk_tree_view_column_pack_start(column, renderer, TRUE);
-       gtk_tree_view_column_add_attribute(column, renderer, "text", 0);
-       gtk_tree_view_column_add_attribute(column, renderer, "editable", 1);
-       gtk_tree_view_append_column(GTK_TREE_VIEW(keyword_dialog->treeview), column);
-
-       gtk_container_add(GTK_CONTAINER(scrolled), keyword_dialog->treeview);
-       gtk_widget_show(keyword_dialog->treeview);
-
-       hbox = gtk_hbox_new(FALSE, 5);
-       gtk_box_pack_start(GTK_BOX(keyword_dialog->gd->vbox), hbox, FALSE, FALSE, 0);
-       gtk_widget_show(hbox);
-
-       button = gtk_button_new_from_stock(GTK_STOCK_ADD);
-       g_signal_connect(G_OBJECT(button), "clicked",
-                        G_CALLBACK(keyword_dialog_add_cb), keyword_dialog);
-       gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
-       gtk_widget_show(button);
-
-       button = gtk_button_new_from_stock(GTK_STOCK_REMOVE);
-       g_signal_connect(G_OBJECT(button), "clicked",
-                        G_CALLBACK(keyword_dialog_remove_cb), keyword_dialog);
-       gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
-       gtk_widget_show(button);
-
-       keyword_dialog_populate(keyword_dialog);
-
-       gtk_widget_show(keyword_dialog->gd->dialog);
-}
-
-
-static void bar_keyword_edit_cb(GtkWidget *button, gpointer data)
-{
-       keyword_dialog_show();
-}
-
-
-/*
- *-------------------------------------------------------------------
- * info bar
- *-------------------------------------------------------------------
- */
-
-typedef enum {
-       BAR_SORT_COPY,
-       BAR_SORT_MOVE,
-       BAR_SORT_LINK
-} SortActionType;
-
-enum {
-       KEYWORD_COLUMN_TOGGLE = 0,
-       KEYWORD_COLUMN_TEXT,
-       KEYWORD_COLUMN_MARK
-};
-
-typedef struct _BarInfoData BarInfoData;
-struct _BarInfoData
-{
-       GtkWidget *vbox;
-       GtkWidget *group_box;
-       GtkWidget *label_file_name;
-       GtkWidget *label_file_time;
-
-       GtkWidget *keyword_view;
-       GtkWidget *keyword_treeview;
-
-       GtkWidget *comment_view;
-
-#if 0
-       GtkWidget *button_save;
-#endif
-       GtkWidget *button_set_keywords_add;
-       GtkWidget *button_set_keywords_replace;
-       GtkWidget *button_set_comment_add;
-       GtkWidget *button_set_comment_replace;
-
-       FileData *fd;
-
-       GList *(*list_func)(gpointer);
-       gpointer list_data;
-};
-
-
-static GList *bar_list = NULL;
-
-
-static void bar_info_write(BarInfoData *bd)
-{
-       GList *list;
-       gchar *comment;
-
-       if (!bd->fd) return;
-
-       list = keyword_list_pull(bd->keyword_view);
-       comment = comment_pull(bd->comment_view);
-
-       metadata_write_string(bd->fd, COMMENT_KEY, comment);
-       metadata_write_list(bd->fd, KEYWORD_KEY, list);
-
-       string_list_free(list);
-       g_free(comment);
-}
-
-static gchar *bar_info_get_mark_text(const gchar *key)
-{
-       gint i;
-       static gchar buf[10];
-       
-       for (i = 0; i < FILEDATA_MARKS_SIZE; i++)
-               {
-               FileDataGetMarkFunc get_mark_func;
-               FileDataSetMarkFunc set_mark_func;
-               gpointer data;
-               file_data_get_registered_mark_func(i, &get_mark_func, &set_mark_func, &data);
-               if (get_mark_func == meta_data_get_keyword_mark && strcmp(data, key) == 0) 
-                       {
-                       sprintf(buf, " %d ", i + 1);
-                       return buf;
-                       }
-               }
-       return " ... ";
-}
-
-static void bar_keyword_list_sync(BarInfoData *bd, GList *keywords)
-{
-       GList *list;
-       GtkListStore *store;
-       GtkTreeIter iter;
-
-       list = history_list_get_by_key("keywords");
-       if (!list)
-               {
-               /* blank? set up a few example defaults */
-
-               gint i = 0;
-
-               while (keyword_favorite_defaults[i] != NULL)
-                       {
-                       history_list_add_to_key("keywords", _(keyword_favorite_defaults[i]), 0);
-                       i++;
-                       }
-
-               list = history_list_get_by_key("keywords");
-               }
-
-       store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(bd->keyword_treeview)));
-
-       gtk_list_store_clear(store);
-
-       list = g_list_last(list);
-       while (list)
-               {
-               gchar *key = list->data;
-
-               gtk_list_store_append(store, &iter);
-               gtk_list_store_set(store, &iter, KEYWORD_COLUMN_TOGGLE, find_string_in_list(keywords, key),
-                                                KEYWORD_COLUMN_TEXT, key,
-                                                KEYWORD_COLUMN_MARK, bar_info_get_mark_text(key), -1);
-
-               list = list->prev;
-               }
-}
-
-static void bar_info_keyword_update_all(void)
-{
-       GList *work;
-
-       work = bar_list;
-       while (work)
-               {
-               BarInfoData *bd;
-               GList *keywords;
-
-               bd = work->data;
-               work = work->next;
-
-               keywords = keyword_list_pull(bd->keyword_view);
-               bar_keyword_list_sync(bd, keywords);
-               string_list_free(keywords);
-               }
-}
-
-static void bar_info_update(BarInfoData *bd)
-{
-       GList *keywords = NULL;
-       gchar *comment = NULL;
-       GtkTextBuffer *keyword_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bd->keyword_view));
-       GtkTextBuffer *comment_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bd->comment_view));
-
-       g_signal_handlers_block_by_func(keyword_buffer, bar_info_changed, bd);
-       g_signal_handlers_block_by_func(comment_buffer, bar_info_changed, bd);
-
-       if (bd->label_file_name)
-               {
-               gtk_label_set_text(GTK_LABEL(bd->label_file_name), (bd->fd) ? bd->fd->name : "");
-               }
-       if (bd->label_file_time)
-               {
-               gtk_label_set_text(GTK_LABEL(bd->label_file_time), (bd->fd) ? text_from_time(bd->fd->date) : "");
-               }
-
-       comment = metadata_read_string(bd->fd, COMMENT_KEY, METADATA_PLAIN);
-       gtk_text_buffer_set_text(comment_buffer,
-                                (comment) ? comment : "", -1);
-       g_free(comment);
-       
-       keywords = metadata_read_list(bd->fd, KEYWORD_KEY, METADATA_PLAIN);
-       keyword_list_push(bd->keyword_view, keywords);
-       bar_keyword_list_sync(bd, keywords);
-       string_list_free(keywords);
-       
-       g_signal_handlers_unblock_by_func(keyword_buffer, bar_info_changed, bd);
-       g_signal_handlers_unblock_by_func(comment_buffer, bar_info_changed, bd);
-
-       gtk_widget_set_sensitive(bd->group_box, (bd->fd != NULL));
-}
-
-void bar_info_set(GtkWidget *bar, FileData *fd)
-{
-       BarInfoData *bd;
-
-       bd = g_object_get_data(G_OBJECT(bar), "bar_info_data");
-       if (!bd) return;
-
-       file_data_unref(bd->fd);
-       bd->fd = file_data_ref(fd);
-
-       bar_info_update(bd);
-}
-
-void bar_info_maint_renamed(GtkWidget *bar, FileData *fd)
-{
-       BarInfoData *bd;
-
-       bd = g_object_get_data(G_OBJECT(bar), "bar_info_data");
-       if (!bd) return;
-
-       file_data_unref(bd->fd);
-       bd->fd = file_data_ref(fd);
-
-       if (bd->label_file_name)
-               {
-               gtk_label_set_text(GTK_LABEL(bd->label_file_name), (bd->fd) ? bd->fd->name : "");
-               }
-}
-
-gint bar_info_event(GtkWidget *bar, GdkEvent *event)
-{
-       BarInfoData *bd;
-
-       bd = g_object_get_data(G_OBJECT(bar), "bar_info_data");
-       if (!bd) return FALSE;
-
-       if (GTK_WIDGET_HAS_FOCUS(bd->keyword_view)) return gtk_widget_event(bd->keyword_view, event);
-       if (GTK_WIDGET_HAS_FOCUS(bd->comment_view)) return gtk_widget_event(bd->comment_view, event);
-
-       return FALSE;
-}
-
-static void bar_info_keyword_set(BarInfoData *bd, const gchar *keyword, gint active)
-{
-       GList *list;
-       gint found;
-
-       if (!keyword) return;
-
-       list = keyword_list_pull(bd->keyword_view);
-       found = find_string_in_list(list, keyword);
-
-       if (active != found)
-               {
-               if (found)
-                       {
-                       GList *work = list;
-
-                       while (work)
-                               {
-                               gchar *key = work->data;
-                               work = work->next;
-
-                               if (key && keyword && strcmp(key, keyword) == 0)
-                                       {
-                                       list = g_list_remove(list, key);
-                                       g_free(key);
-                                       }
-                               }
-                       }
-               else
-                       {
-                       list = g_list_append(list, g_strdup(keyword));
-                       }
-
-               keyword_list_push(bd->keyword_view, list);
-               }
-
-       string_list_free(list);
-}
-
-static void bar_info_keyword_toggle(GtkCellRendererToggle *toggle, const gchar *path, gpointer data)
-{
-       BarInfoData *bd = data;
-       GtkTreeModel *store;
-       GtkTreeIter iter;
-       GtkTreePath *tpath;
-       gchar *key = NULL;
-       gboolean active;
-
-       store = gtk_tree_view_get_model(GTK_TREE_VIEW(bd->keyword_treeview));
-
-       tpath = gtk_tree_path_new_from_string(path);
-       gtk_tree_model_get_iter(store, &iter, tpath);
-       gtk_tree_path_free(tpath);
-
-       gtk_tree_model_get(store, &iter, KEYWORD_COLUMN_TOGGLE, &active,
-                                        KEYWORD_COLUMN_TEXT, &key, -1);
-       active = (!active);
-       gtk_list_store_set(GTK_LIST_STORE(store), &iter, KEYWORD_COLUMN_TOGGLE, active, -1);
-
-       bar_info_keyword_set(bd, key, active);
-       g_free(key);
-}
-
-static void bar_info_set_selection(BarInfoData *bd, gboolean set_keywords, gboolean set_comment, gboolean append)
-{
-       GList *keywords = NULL;
-       GList *list = NULL;
-       GList *work;
-       gchar *comment = NULL;
-
-       if (!bd->list_func) return;
-
-       if (set_keywords)
-               {
-               keywords = keyword_list_pull(bd->keyword_view);
-               }
-
-       if (set_comment)
-               {
-               comment = comment_pull(bd->comment_view);
-               }
-
-       if (append && !keywords && !comment) return;
-
-       list = bd->list_func(bd->list_data);
-       work = list;
-       while (work)
-               {
-               FileData *fd = work->data;
-               work = work->next;
-
-               if (append)
-                       {
-                       if (comment) metadata_append_string(fd, COMMENT_KEY, comment);
-                       if (keywords) metadata_append_list(fd, KEYWORD_KEY, keywords);
-                       }
-               else
-                       {
-                       if (comment) metadata_write_string(fd, COMMENT_KEY, comment);
-                       if (keywords) metadata_write_list(fd, KEYWORD_KEY, keywords);
-                       }
-               }
-
-       filelist_free(list);
-       string_list_free(keywords);
-       g_free(comment);
-}
-
-static void bar_info_set_keywords_add(GtkWidget *button, gpointer data)
-{
-       BarInfoData *bd = data;
-
-       bar_info_set_selection(bd, TRUE, FALSE, TRUE);
-}
-
-static void bar_info_set_keywords_replace(GtkWidget *button, gpointer data)
-{
-       BarInfoData *bd = data;
-
-       bar_info_set_selection(bd, TRUE, FALSE, FALSE);
-}
-
-static void bar_info_set_comment_add(GtkWidget *button, gpointer data)
-{
-       BarInfoData *bd = data;
-
-       bar_info_set_selection(bd, FALSE, TRUE, TRUE);
-}
-
-static void bar_info_set_comment_replace(GtkWidget *button, gpointer data)
-{
-       BarInfoData *bd = data;
-
-       bar_info_set_selection(bd, FALSE, TRUE, FALSE);
-}
-
-static void bar_info_notify_cb(FileData *fd, NotifyType type, gpointer data)
-{
-       BarInfoData *bd = data;
-       if (fd == bd->fd) bar_info_update(bd);
-}
-
-static void bar_info_changed(GtkTextBuffer *buffer, gpointer data)
-{
-       BarInfoData *bd = data;
-
-       file_data_unregister_notify_func(bar_info_notify_cb, bd);
-       bar_info_write(bd);
-       file_data_register_notify_func(bar_info_notify_cb, bd, NOTIFY_PRIORITY_LOW);
-}
-
-static void bar_info_mark_edited (GtkCellRendererText *cell, const gchar *path, const gchar *text, gpointer data)
-{
-       BarInfoData *bd = data;
-       GtkTreeModel *store;
-       GtkTreeIter iter;
-       GtkTreePath *tpath;
-       gchar *key = NULL;
-       gint i;
-       FileDataGetMarkFunc get_mark_func;
-       FileDataSetMarkFunc set_mark_func;
-       gpointer mark_func_data;
-
-       file_data_unregister_notify_func(bar_info_notify_cb, bd);
-
-       store = gtk_tree_view_get_model(GTK_TREE_VIEW(bd->keyword_treeview));
-
-       tpath = gtk_tree_path_new_from_string(path);
-       gtk_tree_model_get_iter(store, &iter, tpath);
-       gtk_tree_path_free(tpath);
-
-       gtk_tree_model_get(store, &iter, KEYWORD_COLUMN_TEXT, &key, -1);
-
-       for (i = 0; i < FILEDATA_MARKS_SIZE; i++)
-               {
-               file_data_get_registered_mark_func(i, &get_mark_func, &set_mark_func, &mark_func_data);
-               if (get_mark_func == meta_data_get_keyword_mark && strcmp(mark_func_data, key) == 0) 
-                       {
-                       g_free(mark_func_data);
-                       file_data_register_mark_func(i, NULL, NULL, NULL);
-                       }
-               }
-
-       if (sscanf(text, " %d ", &i) &&i >=1 && i <= FILEDATA_MARKS_SIZE)
-               {
-               i--;
-               file_data_get_registered_mark_func(i, &get_mark_func, &set_mark_func, &mark_func_data);
-               if (get_mark_func == meta_data_get_keyword_mark && mark_func_data) g_free(mark_func_data); 
-               file_data_register_mark_func(i, meta_data_get_keyword_mark, meta_data_set_keyword_mark, g_strdup(key));
-               }
-
-       g_free(key);
-
-       file_data_register_notify_func(bar_info_notify_cb, bd, NOTIFY_PRIORITY_LOW);
-       bar_info_update(bd);
-}
-
-void bar_info_close(GtkWidget *bar)
-{
-       BarInfoData *bd;
-
-       bd = g_object_get_data(G_OBJECT(bar), "bar_info_data");
-       if (!bd) return;
-
-       gtk_widget_destroy(bd->vbox);
-}
-
-static void bar_info_destroy(GtkWidget *widget, gpointer data)
-{
-       BarInfoData *bd = data;
-
-       file_data_unregister_notify_func(bar_info_notify_cb, bd);
-       bar_list = g_list_remove(bar_list, bd);
-
-       file_data_unref(bd->fd);
-
-       g_free(bd);
-}
-
-static GtkTreeModel *create_marks_list(void)
-{
-       GtkListStore *model;
-       GtkTreeIter iter;
-       gint i;
-
-       /* create list store */
-       model = gtk_list_store_new (1, G_TYPE_STRING);
-       for (i = 0; i < FILEDATA_MARKS_SIZE; i++)
-               {
-               char str[10];
-               sprintf(str, " %d ", i + 1);
-               gtk_list_store_append (model, &iter);
-               gtk_list_store_set(model, &iter, 0, str, -1);
-               }
-       gtk_list_store_append (model, &iter);
-       gtk_list_store_set(model, &iter, 0, " ... ", -1);
-       return GTK_TREE_MODEL (model);
-}
-
-GtkWidget *bar_info_new(FileData *fd, gint metadata_only, GtkWidget *bounding_widget)
-{
-       BarInfoData *bd;
-       GtkWidget *box;
-       GtkWidget *hbox;
-       GtkWidget *table;
-       GtkWidget *scrolled;
-       GtkTextBuffer *buffer;
-       GtkWidget *label;
-       GtkWidget *tbar;
-       GtkListStore *store;
-       GtkTreeViewColumn *column;
-       GtkCellRenderer *renderer;
-
-       bd = g_new0(BarInfoData, 1);
-
-       bd->list_func = NULL;
-       bd->list_data = NULL;
-
-       bd->vbox = gtk_vbox_new(FALSE, PREF_PAD_GAP);
-       g_object_set_data(G_OBJECT(bd->vbox), "bar_info_data", bd);
-       g_signal_connect(G_OBJECT(bd->vbox), "destroy",
-                        G_CALLBACK(bar_info_destroy), bd);
-
-       if (!metadata_only)
-               {
-               hbox = pref_box_new(bd->vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_GAP);
-
-               label = sizer_new(bd->vbox, bounding_widget, SIZER_POS_LEFT);
-               gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-               gtk_widget_show(label);
-
-               label = gtk_label_new(_("Keywords"));
-               pref_label_bold(label, TRUE, FALSE);
-               gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
-               gtk_widget_show(label);
-               }
-
-       bd->group_box = pref_box_new(bd->vbox, TRUE, GTK_ORIENTATION_VERTICAL, PREF_PAD_GAP);
-
-       if (!metadata_only)
-               {
-               GtkWidget *table;
-
-               table = pref_table_new(bd->group_box, 2, 2, FALSE, FALSE);
-
-               bd->label_file_name = table_add_line(table, 0, 0, _("Filename:"), NULL);
-               bd->label_file_time = table_add_line(table, 0, 1, _("File date:"), NULL);
-               }
-       else
-               {
-               bd->label_file_name = NULL;
-               bd->label_file_time = NULL;
-               }
-
-       table = gtk_table_new(3, 1, TRUE);
-       gtk_table_set_row_spacings(GTK_TABLE(table), PREF_PAD_GAP);
-       gtk_box_pack_start(GTK_BOX(bd->group_box), table, TRUE, TRUE, 0);
-       gtk_widget_show(table);
-
-       /* keyword entry */
-
-       box = gtk_vbox_new(FALSE, 0);
-       gtk_table_attach(GTK_TABLE(table), box, 0, 1, 0, 2,
-                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-       gtk_widget_show(box);
-
-       label = pref_label_new(box, _("Keywords:"));
-       gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-       pref_label_bold(label, TRUE, FALSE);
-
-       hbox = pref_box_new(box, TRUE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_GAP);
-
-       scrolled = gtk_scrolled_window_new(NULL, NULL);
-       gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
-                                      GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-       gtk_box_pack_start(GTK_BOX(hbox), scrolled, TRUE, TRUE, 0);
-       gtk_widget_show(scrolled);
-
-       bd->keyword_view = gtk_text_view_new();
-       gtk_container_add(GTK_CONTAINER(scrolled), bd->keyword_view);
-       gtk_widget_show(bd->keyword_view);
-
-       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bd->keyword_view));
-       g_signal_connect(G_OBJECT(buffer), "changed",
-                        G_CALLBACK(bar_info_changed), bd);
-
-       scrolled = gtk_scrolled_window_new(NULL, NULL);
-       gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
-                                      GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-       gtk_box_pack_start(GTK_BOX(hbox), scrolled, TRUE, TRUE, 0);
-       gtk_widget_show(scrolled);
-
-       store = gtk_list_store_new(3, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING);
-       bd->keyword_treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
-       g_object_unref(store);
-
-       gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(bd->keyword_treeview), FALSE);
-
-       if (metadata_only)
-               {
-               gtk_tree_view_set_search_column(GTK_TREE_VIEW(bd->keyword_treeview), KEYWORD_COLUMN_TEXT);
-               }
-       else
-               {
-               gtk_tree_view_set_enable_search(GTK_TREE_VIEW(bd->keyword_treeview), FALSE);
-               }
-
-       column = gtk_tree_view_column_new();
-       gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-
-       renderer = gtk_cell_renderer_toggle_new();
-       gtk_tree_view_column_pack_start(column, renderer, FALSE);
-       gtk_tree_view_column_add_attribute(column, renderer, "active", KEYWORD_COLUMN_TOGGLE);
-       g_signal_connect(G_OBJECT(renderer), "toggled",
-                        G_CALLBACK(bar_info_keyword_toggle), bd);
-
-       renderer = gtk_cell_renderer_text_new();
-       gtk_tree_view_column_pack_start(column, renderer, TRUE);
-       gtk_tree_view_column_add_attribute(column, renderer, "text", KEYWORD_COLUMN_TEXT);
-
-       gtk_tree_view_append_column(GTK_TREE_VIEW(bd->keyword_treeview), column);
-
-       column = gtk_tree_view_column_new();
-       gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
-
-       renderer = gtk_cell_renderer_combo_new();
-       g_object_set(G_OBJECT(renderer), "editable", (gboolean)TRUE,
-                                        "model", create_marks_list(),
-                                        "text-column", 0,
-                                        "has-entry", FALSE,
-                                        NULL);
-
-       gtk_tree_view_column_pack_start(column, renderer, TRUE);
-       gtk_tree_view_column_add_attribute(column, renderer, "text", KEYWORD_COLUMN_MARK);
-       g_signal_connect (renderer, "edited",
-                         G_CALLBACK (bar_info_mark_edited), bd);
-       gtk_tree_view_append_column(GTK_TREE_VIEW(bd->keyword_treeview), column);
-
-
-       gtk_container_add(GTK_CONTAINER(scrolled), bd->keyword_treeview);
-       gtk_widget_show(bd->keyword_treeview);
-
-       /* comment entry */
-
-       box = gtk_vbox_new(FALSE, 0);
-       gtk_table_attach(GTK_TABLE(table), box, 0, 1, 2, 3,
-                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-       gtk_widget_show(box);
-
-       label = pref_label_new(box, _("Comment:"));
-       gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-       pref_label_bold(label, TRUE, FALSE);
-
-       scrolled = gtk_scrolled_window_new(NULL, NULL);
-       gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
-                                      GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-       gtk_box_pack_start(GTK_BOX(box), scrolled, TRUE, TRUE, 0);
-       gtk_widget_show(scrolled);
-
-       bd->comment_view = gtk_text_view_new();
-       gtk_container_add(GTK_CONTAINER(scrolled), bd->comment_view);
-       gtk_widget_show(bd->comment_view);
-
-       buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(bd->comment_view));
-       g_signal_connect(G_OBJECT(buffer), "changed",
-                        G_CALLBACK(bar_info_changed), bd);
-
-       /* toolbar */
-
-       tbar = pref_toolbar_new(bd->group_box, GTK_TOOLBAR_ICONS);
-
-       pref_toolbar_button(tbar, GTK_STOCK_INDEX, NULL, FALSE,
-                       _("Edit favorite keywords list."),
-                       G_CALLBACK(bar_keyword_edit_cb), bd);
-       pref_toolbar_spacer(tbar);
-       bd->button_set_keywords_add = pref_toolbar_button(tbar, GTK_STOCK_ADD, NULL, FALSE,
-                       _("Add keywords to selected files"),
-                       G_CALLBACK(bar_info_set_keywords_add), bd);
-       bd->button_set_keywords_replace = pref_toolbar_button(tbar, GTK_STOCK_CONVERT, NULL, FALSE,
-                       _("Add keywords to selected files, replacing existing ones"),
-                       G_CALLBACK(bar_info_set_keywords_replace), bd);
-       bd->button_set_comment_add = pref_toolbar_button(tbar, GTK_STOCK_DND_MULTIPLE, NULL, FALSE,
-                       _("Add comment to selected files"),
-                       G_CALLBACK(bar_info_set_comment_add), bd);
-       bd->button_set_comment_replace = pref_toolbar_button(tbar, GTK_STOCK_DND, NULL, FALSE,
-                       _("Add comment to selected files, replacing existing one"),
-                       G_CALLBACK(bar_info_set_comment_replace), bd);
-
-#if 0
-       pref_toolbar_spacer(tbar);
-       bd->button_save = pref_toolbar_button(tbar, GTK_STOCK_SAVE, NULL, FALSE,
-                       _("Save comment now"),
-                       G_CALLBACK(bar_info_save), bd);
-#endif
-
-       bd->fd = file_data_ref(fd);
-       bar_info_update(bd);
-
-       bar_info_selection(bd->vbox, 0);
-
-       bar_list = g_list_append(bar_list, bd);
-
-       file_data_register_notify_func(bar_info_notify_cb, bd, NOTIFY_PRIORITY_LOW);
-
-       return bd->vbox;
-}
-
-void bar_info_set_selection_func(GtkWidget *bar, GList *(*list_func)(gpointer data), gpointer data)
-{
-       BarInfoData *bd;
-
-       bd = g_object_get_data(G_OBJECT(bar), "bar_info_data");
-       if (!bd) return;
-
-       bd->list_func = list_func;
-       bd->list_data = data;
-}
-
-void bar_info_selection(GtkWidget *bar, gint count)
-{
-       BarInfoData *bd;
-       gint enable;
-
-       bd = g_object_get_data(G_OBJECT(bar), "bar_info_data");
-       if (!bd) return;
-
-       enable = (count > 0 && bd->list_func != NULL);
-
-       gtk_widget_set_sensitive(bd->button_set_keywords_add, enable);
-       gtk_widget_set_sensitive(bd->button_set_keywords_replace, enable);
-       gtk_widget_set_sensitive(bd->button_set_comment_add, enable);
-       gtk_widget_set_sensitive(bd->button_set_comment_replace, enable);
-
-}
-/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
diff --git a/src/bar_info.h b/src/bar_info.h
deleted file mode 100644 (file)
index 586ac93..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Geeqie
- * (C) 2004 John Ellis
- * Copyright (C) 2008 - 2009 The Geeqie Team
- *
- * Author: John Ellis
- *
- * This software is released under the GNU General Public License (GNU GPL).
- * Please read the included file COPYING for more information.
- * This software comes with no warranty of any kind, use at your own risk!
- */
-
-
-#ifndef BAR_INFO_H
-#define BAR_INFO_H
-
-
-GtkWidget *bar_info_new(FileData *fd, gint metadata_only, GtkWidget *bounding_widget);
-void bar_info_close(GtkWidget *bar);
-
-void bar_info_set(GtkWidget *bar, FileData *fd);
-gint bar_info_event(GtkWidget *bar, GdkEvent *event);
-
-void bar_info_set_selection_func(GtkWidget *bar, GList *(*list_func)(gpointer data), gpointer data);
-void bar_info_selection(GtkWidget *bar, gint count);
-
-void bar_info_maint_renamed(GtkWidget *bar, FileData *fd);
-
-GList *keyword_list_pull(GtkWidget *text_widget);
-void keyword_list_push(GtkWidget *textview, GList *list);
-
-
-#endif
-/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
index 18cbc85..87bb14d 100644 (file)
@@ -16,7 +16,6 @@
 
 #include "filedata.h"
 #include "history_list.h"
-#include "info.h"
 #include "metadata.h"
 #include "misc.h"
 #include "ui_fileops.h"
@@ -48,7 +47,7 @@ static void bar_pane_keywords_changed(GtkTextBuffer *buffer, gpointer data);
  */
 
 
-static GList *keyword_list_pull(GtkWidget *text_widget)
+GList *keyword_list_pull(GtkWidget *text_widget)
 {
        GList *list;
        gchar *text;
index 9a6ba59..c65d6c1 100644 (file)
@@ -16,5 +16,9 @@
 
 GtkWidget *bar_pane_keywords_new(const gchar *title, const gchar *key);
 
+
+/* used in search.c */
+GList *keyword_list_pull(GtkWidget *text_widget);
+
 #endif
 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
index 26b0641..37b769e 100644 (file)
@@ -22,7 +22,6 @@
 #include "editors.h"
 #include "filedata.h"
 #include "img-view.h"
-#include "info.h"
 #include "layout.h"
 #include "layout_image.h"
 #include "menu.h"
@@ -669,13 +668,6 @@ static void collection_table_popup_edit_cb(GtkWidget *widget, gpointer data)
                }
 }
 
-static void collection_table_popup_info_cb(GtkWidget *widget, gpointer data)
-{
-       CollectTable *ct = data;
-
-       info_window_new(NULL, collection_table_popup_file_list(ct), NULL);
-}
-
 static void collection_table_popup_copy_cb(GtkWidget *widget, gpointer data)
 {
        CollectTable *ct = data;
@@ -889,8 +881,6 @@ static GtkWidget *collection_table_popup_menu(CollectTable *ct, gint over_icon)
                        G_CALLBACK(collection_table_popup_edit_cb), ct);
        gtk_widget_set_sensitive(item, over_icon);
 
-       menu_item_add_sensitive(menu, _("_Properties"), over_icon,
-                       G_CALLBACK(collection_table_popup_info_cb), ct);
        menu_item_add_divider(menu);
        menu_item_add_stock_sensitive(menu, _("_Copy..."), GTK_STOCK_COPY, over_icon,
                        G_CALLBACK(collection_table_popup_copy_cb), ct);
index 7e579d7..3c13c09 100644 (file)
@@ -20,7 +20,6 @@
 #include "editors.h"
 #include "filedata.h"
 #include "img-view.h"
-#include "info.h"
 #include "layout.h"
 #include "layout_image.h"
 #include "misc.h"
@@ -861,9 +860,6 @@ static gint collection_window_keypress(GtkWidget *widget, GdkEventKey *event, gp
                        case 'D': case 'd':
                                file_util_delete(NULL, collection_table_selection_get_list(cw->table), cw->window);
                                break;
-                       case 'P': case 'p':
-                               info_window_new(NULL, collection_table_selection_get_list(cw->table), NULL);
-                               break;
                        case 'S': case 's':
                                collection_dialog_save_as(NULL, cw->cd);
                                break;
index e52df5e..8e9f651 100644 (file)
@@ -22,7 +22,6 @@
 #include "filedata.h"
 #include "image-load.h"
 #include "img-view.h"
-#include "info.h"
 #include "layout.h"
 #include "layout_image.h"
 #include "md5-util.h"
@@ -2147,13 +2146,6 @@ static void dupe_menu_edit_cb(GtkWidget *widget, gpointer data)
        dupe_window_edit_selected(dw, key);
 }
 
-static void dupe_menu_info_cb(GtkWidget *widget, gpointer data)
-{
-       DupeWindow *dw = data;
-
-       info_window_new(NULL, dupe_listview_get_selection(dw, dw->listview), NULL);
-}
-
 static void dupe_menu_collection_cb(GtkWidget *widget, gpointer data)
 {
        DupeWindow *dw = data;
@@ -2254,8 +2246,6 @@ static GtkWidget *dupe_menu_popup_main(DupeWindow *dw, DupeItem *di)
        menu_item_add_divider(menu);
        submenu_add_edit(menu, &item, G_CALLBACK(dupe_menu_edit_cb), dw);
        if (!on_row) gtk_widget_set_sensitive(item, FALSE);
-       menu_item_add_stock_sensitive(menu, _("_Properties"), GTK_STOCK_PROPERTIES, on_row,
-                               G_CALLBACK(dupe_menu_info_cb), dw);
        menu_item_add_stock_sensitive(menu, _("Add to new collection"), GTK_STOCK_INDEX, on_row,
                                G_CALLBACK(dupe_menu_collection_cb), dw);
        menu_item_add_stock_sensitive(menu, _("Print..."), GTK_STOCK_PRINT, on_row,
@@ -2939,9 +2929,6 @@ static gint dupe_window_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                                case 'D': case 'd':
                                        file_util_delete(NULL, dupe_listview_get_selection(dw, listview), dw->window);
                                        break;
-                               case 'P': case 'p':
-                                       info_window_new(NULL, dupe_listview_get_selection(dw, listview), NULL);
-                                       break;
                                default:
                                        stop_signal = FALSE;
                                        break;
index 2743994..a2fbec5 100644 (file)
@@ -22,7 +22,6 @@
 #include "fullscreen.h"
 #include "image.h"
 #include "image-overlay.h"
-#include "info.h"
 #include "layout.h"
 #include "layout_image.h"
 #include "menu.h"
@@ -421,9 +420,6 @@ static gint view_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoi
                        case 'D': case 'd':
                                file_util_delete(image_get_fd(imd), NULL, imd->widget);
                                break;
-                       case 'P': case 'p':
-                               info_window_new(image_get_fd(imd), NULL, vw->fs ? vw->fs->window : NULL);
-                               break;
                        case 'W': case 'w':
                                view_window_close(vw);
                                break;
@@ -1102,15 +1098,6 @@ static void view_alter_cb(GtkWidget *widget, gpointer data)
        image_alter(vw->imd, type);
 }
 
-static void view_info_cb(GtkWidget *widget, gpointer data)
-{
-       ViewWindow *vw = data;
-       ImageWindow *imd;
-
-       imd = view_window_active_image(vw);
-       info_window_new(image_get_fd(imd), NULL, vw->fs ? vw->fs->window : NULL);
-}
-
 static void view_wallpaper_cb(GtkWidget *widget, gpointer data)
 {
        ViewWindow *vw = data;
@@ -1276,8 +1263,6 @@ static GtkWidget *view_popup_menu(ViewWindow *vw)
 
        submenu_add_alter(menu, G_CALLBACK(view_alter_cb), vw);
 
-       menu_item_add_stock(menu, _("_Properties"), GTK_STOCK_PROPERTIES, G_CALLBACK(view_info_cb), vw);
-
        menu_item_add_stock(menu, _("View in _new window"), GTK_STOCK_NEW, G_CALLBACK(view_new_window_cb), vw);
        item = menu_item_add(menu, _("_Go to directory view"), G_CALLBACK(view_set_layout_path_cb), vw);
 
diff --git a/src/info.c b/src/info.c
deleted file mode 100644 (file)
index 9e71c7b..0000000
+++ /dev/null
@@ -1,953 +0,0 @@
-/*
- * Geeqie
- * (C) 2004 John Ellis
- * Copyright (C) 2008 - 2009 The Geeqie Team
- *
- * Author: John Ellis
- *
- * This software is released under the GNU General Public License (GNU GPL).
- * Please read the included file COPYING for more information.
- * This software comes with no warranty of any kind, use at your own risk!
- */
-
-
-#include "main.h"
-#include "info.h"
-
-#include "bar_info.h"
-#include "bar_exif.h"
-#include "dnd.h"
-#include "filedata.h"
-#include "image.h"
-#include "image-load.h"
-#include "pixbuf-renderer.h"
-#include "ui_fileops.h"
-#include "ui_misc.h"
-#include "uri_utils.h"
-#include "window.h"
-
-#include <pwd.h>
-#include <grp.h>
-
-
-#define IMAGE_SIZE_W 200
-#define IMAGE_SIZE_H 200
-
-
-typedef struct _TabData TabData;
-struct _TabData
-{
-       void (*func_free)(gpointer data);
-       void (*func_sync)(InfoData *id, gpointer data);
-       void (*func_image)(InfoData *id, gpointer data);
-       gpointer data;
-       TabData *(*func_new)(InfoData *id);
-       GtkWidget *child;
-};
-
-typedef struct _InfoTabsPos InfoTabsPos;
-struct _InfoTabsPos
-{
-       TabData *(*func)(InfoData *id);
-       guint pos;
-};
-
-static GList *info_tabs_pos_list = NULL;
-
-static void notebook_set_tab_reorderable(GtkNotebook *notebook, GtkWidget *child, gboolean reorderable)
-{
-#if GTK_CHECK_VERSION(2,10,0)
-       gtk_notebook_set_tab_reorderable(notebook, child, reorderable);
-#endif
-}
-
-/*
- *-------------------------------------------------------------------
- * table utils
- *-------------------------------------------------------------------
- */
-
-GtkWidget *table_add_line(GtkWidget *table, gint x, gint y,
-                         const gchar *description, const gchar *text)
-{
-       GtkWidget *label;
-
-       if (!text) text = "";
-
-       label = pref_table_label(table, x, y, description, 1.0);
-       pref_label_bold(label, TRUE, FALSE);
-
-       label = pref_table_label(table, x + 1, y, text, 0.0);
-       return label;
-}
-
-/*
- *-------------------------------------------------------------------
- * EXIF tab
- *-------------------------------------------------------------------
- */
-
-static void info_tab_exif_image(InfoData *id, gpointer data)
-{
-       GtkWidget *bar = data;
-       FileData *fd;
-
-       if (id->image->unknown)
-               {
-               fd = NULL;
-               }
-       else
-               {
-               fd = id->image->image_fd;
-               }
-
-       bar_exif_set(bar, fd);
-}
-
-static void info_tab_exif_sync(InfoData *id, gpointer data)
-{
-       GtkWidget *bar = data;
-
-       bar_exif_set(bar, NULL);
-}
-
-static TabData *info_tab_exif_new(InfoData *id)
-{
-       TabData *td;
-       GtkWidget *bar;
-       GtkWidget *label;
-
-       bar = bar_exif_new(FALSE, NULL, FALSE, NULL);
-       gtk_container_set_border_width(GTK_CONTAINER(bar), PREF_PAD_BORDER);
-
-       label = gtk_label_new(_("Exif"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(id->notebook), bar, label);
-       notebook_set_tab_reorderable(GTK_NOTEBOOK(id->notebook), bar, TRUE);
-       gtk_widget_show(bar);
-
-       /* register */
-       td = g_new0(TabData, 1);
-       td->func_free = NULL;
-       td->func_sync = info_tab_exif_sync;
-       td->func_image = info_tab_exif_image;
-       td->data = bar;
-       td->func_new = info_tab_exif_new;
-       td->child = bar;
-
-       return td;
-}
-
-/*
- *-------------------------------------------------------------------
- * file attributes tab
- *-------------------------------------------------------------------
- */
-
-typedef struct _InfoTabMeta InfoTabMeta;
-struct _InfoTabMeta
-{
-       GtkWidget *bar_info;
-};
-
-static void info_tab_meta_free(gpointer data)
-{
-       InfoTabMeta *tab = data;
-
-       g_free(tab);
-}
-
-static void info_tab_meta_sync(InfoData *id, gpointer data)
-{
-       InfoTabMeta *tab = data;
-
-       bar_info_set(tab->bar_info, id->fd);
-}
-
-static GList *info_tab_meta_list_cb(gpointer data)
-{
-       InfoData *id = data;
-
-       return filelist_copy(id->list);
-}
-
-static TabData *info_tab_meta_new(InfoData *id)
-{
-       TabData *td;
-       InfoTabMeta *tab;
-       GtkWidget *label;
-
-       tab = g_new0(InfoTabMeta, 1);
-
-       tab->bar_info = bar_info_new(NULL, TRUE, NULL);
-       bar_info_set_selection_func(tab->bar_info, info_tab_meta_list_cb, id);
-       bar_info_selection(tab->bar_info, g_list_length(id->list) - 1);
-
-       gtk_container_set_border_width(GTK_CONTAINER(tab->bar_info), PREF_PAD_BORDER);
-
-       label = gtk_label_new(_("Keywords"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(id->notebook), tab->bar_info, label);
-       notebook_set_tab_reorderable(GTK_NOTEBOOK(id->notebook), tab->bar_info, TRUE);
-       gtk_widget_show(tab->bar_info);
-
-       /* register */
-       td = g_new0(TabData, 1);
-       td->func_free = info_tab_meta_free;
-       td->func_sync = info_tab_meta_sync;
-       td->func_image = NULL;
-       td->data = tab;
-       td->func_new = info_tab_meta_new;
-       td->child = tab->bar_info;
-
-       return td;
-}
-
-/*
- *-------------------------------------------------------------------
- * general tab
- *-------------------------------------------------------------------
- */
-
-typedef struct _InfoTabGeneral InfoTabGeneral;
-struct _InfoTabGeneral
-{
-       GtkWidget *label_file_time;
-       GtkWidget *label_file_size;
-       GtkWidget *label_dimensions;
-       GtkWidget *label_transparent;
-       GtkWidget *label_image_size;
-       GtkWidget *label_compression;
-       GtkWidget *label_mime_type;
-
-       GtkWidget *label_user;
-       GtkWidget *label_group;
-       GtkWidget *label_perms;
-
-       gint compression_done;
-       gint64 byte_size;
-};
-
-static void info_tab_general_image(InfoData *id, gpointer data)
-{
-       InfoTabGeneral *tab = data;
-       gchar *buf;
-       guint mem_size;
-       gint has_alpha;
-       GdkPixbuf *pixbuf;
-       gint width, height;
-
-       if (id->image->unknown) return;
-
-       image_get_image_size(id->image, &width, &height);
-
-       buf = g_strdup_printf("%d x %d", width, height);
-       gtk_label_set_text(GTK_LABEL(tab->label_dimensions), buf);
-       g_free(buf);
-
-       pixbuf = image_get_pixbuf(id->image);
-       if (pixbuf)
-               {
-               has_alpha = gdk_pixbuf_get_has_alpha(pixbuf);
-               }
-       else
-               {
-               has_alpha = FALSE;
-               }
-       gtk_label_set_text(GTK_LABEL(tab->label_transparent), has_alpha ? _("yes") : _("no"));
-
-       mem_size = width * height * ((has_alpha) ? 4 : 3);
-       buf = text_from_size_abrev(mem_size);
-       gtk_label_set_text(GTK_LABEL(tab->label_image_size), buf);
-       g_free(buf);
-
-       if (!tab->compression_done && mem_size > 0)
-               {
-               buf = g_strdup_printf("%.1f%%", (gdouble)tab->byte_size / mem_size * 100.0);
-               gtk_label_set_text(GTK_LABEL(tab->label_compression), buf);
-               g_free(buf);
-
-               tab->compression_done = TRUE;
-               }
-
-       buf = image_loader_get_format(id->image->il);
-       if (buf)
-       gtk_label_set_text(GTK_LABEL(tab->label_mime_type), buf);
-       g_free(buf);
-}
-
-static gchar *mode_number(mode_t m)
-{
-       gint mb, mu, mg, mo;
-
-       mb = mu = mg = mo = 0;
-
-       if (m & S_ISUID) mb |= 4;
-       if (m & S_ISGID) mb |= 2;
-       if (m & S_ISVTX) mb |= 1;
-
-       if (m & S_IRUSR) mu |= 4;
-       if (m & S_IWUSR) mu |= 2;
-       if (m & S_IXUSR) mu |= 1;
-
-       if (m & S_IRGRP) mg |= 4;
-       if (m & S_IWGRP) mg |= 2;
-       if (m & S_IXGRP) mg |= 1;
-
-       if (m & S_IROTH) mo |= 4;
-       if (m & S_IWOTH) mo |= 2;
-       if (m & S_IXOTH) mo |= 1;
-
-       return g_strdup_printf("%d%d%d%d", mb, mu, mg, mo);
-}
-
-static void info_tab_general_sync_perm(InfoTabGeneral *tab, InfoData *id)
-{
-       struct stat st;
-
-       if (!stat_utf8(id->fd->path, &st))
-               {
-               gtk_label_set_text(GTK_LABEL(tab->label_user), "");
-               gtk_label_set_text(GTK_LABEL(tab->label_group), "");
-               gtk_label_set_text(GTK_LABEL(tab->label_perms), "");
-               }
-       else
-               {
-               struct passwd *user;
-               struct group *grp;
-               gchar pbuf[12];
-               gchar *pmod;
-               gchar *buf;
-
-               user = getpwuid(st.st_uid);
-               gtk_label_set_text(GTK_LABEL(tab->label_user), (user) ? user->pw_name : "");
-
-               grp = getgrgid(st.st_gid);
-               gtk_label_set_text(GTK_LABEL(tab->label_group), (grp) ? grp->gr_name : "");
-
-               pbuf[0] = (st.st_mode & S_IRUSR) ? 'r' : '-';
-               pbuf[1] = (st.st_mode & S_IWUSR) ? 'w' : '-';
-               pbuf[2] = (st.st_mode & S_IXUSR) ? 'x' : '-';
-               pbuf[3] = (st.st_mode & S_IRGRP) ? 'r' : '-';
-               pbuf[4] = (st.st_mode & S_IWGRP) ? 'w' : '-';
-               pbuf[5] = (st.st_mode & S_IXGRP) ? 'x' : '-';
-               pbuf[6] = (st.st_mode & S_IROTH) ? 'r' : '-';
-               pbuf[7] = (st.st_mode & S_IWOTH) ? 'w' : '-';
-               pbuf[8] = (st.st_mode & S_IXOTH) ? 'x' : '-';
-               pbuf[9] = '\0';
-
-               pmod = mode_number(st.st_mode);
-               buf = g_strdup_printf("%s (%s)", pbuf, pmod);
-               gtk_label_set_text(GTK_LABEL(tab->label_perms), buf);
-               g_free(buf);
-               g_free(pmod);
-               }
-}
-
-static void info_tab_general_sync(InfoData *id, gpointer data)
-{
-       InfoTabGeneral *tab = data;
-       gchar *buf;
-
-       gtk_label_set_text(GTK_LABEL(tab->label_file_time), text_from_time(id->fd->date));
-
-       tab->byte_size = id->fd->size;
-
-       buf = text_from_size(tab->byte_size);
-       gtk_label_set_text(GTK_LABEL(tab->label_file_size), buf);
-       g_free(buf);
-
-       gtk_label_set_text(GTK_LABEL(tab->label_dimensions), "");
-       gtk_label_set_text(GTK_LABEL(tab->label_transparent), "");
-       gtk_label_set_text(GTK_LABEL(tab->label_image_size), "");
-
-       gtk_label_set_text(GTK_LABEL(tab->label_compression), "");
-       gtk_label_set_text(GTK_LABEL(tab->label_mime_type), "");
-
-       info_tab_general_sync_perm(tab, id);
-
-       tab->compression_done = FALSE;
-}
-
-static void info_tab_general_free(gpointer data)
-{
-       InfoTabGeneral *tab = data;
-
-       g_free(tab);
-}
-
-static TabData *info_tab_general_new(InfoData *id)
-{
-       TabData *td;
-       InfoTabGeneral *tab;
-       GtkWidget *table;
-       GtkWidget *label;
-
-       tab = g_new0(InfoTabGeneral, 1);
-
-       table = pref_table_new(NULL, 2, 11, FALSE, FALSE);
-       gtk_container_set_border_width(GTK_CONTAINER(table), PREF_PAD_BORDER);
-
-       tab->label_file_time = table_add_line(table, 0, 0, _("File date:"), NULL);
-       tab->label_file_size = table_add_line(table, 0, 1, _("File size:"), NULL);
-
-       tab->label_dimensions = table_add_line(table, 0, 2, _("Dimensions:"), NULL);
-       tab->label_transparent = table_add_line(table, 0, 3, _("Transparent:"), NULL);
-       tab->label_image_size = table_add_line(table, 0, 4, _("Image size:"), NULL);
-
-       tab->label_compression = table_add_line(table, 0, 5, _("Compress ratio:"), NULL);
-       tab->label_mime_type = table_add_line(table, 0, 6, _("File type:"), NULL);
-
-       tab->label_user = table_add_line(table, 0, 7, _("Owner:"), NULL);
-       tab->label_group = table_add_line(table, 0, 8, _("Group:"), NULL);
-       tab->label_perms = table_add_line(table, 0, 9, "", NULL);
-
-       label = gtk_label_new(_("General"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(id->notebook), table, label);
-       notebook_set_tab_reorderable(GTK_NOTEBOOK(id->notebook), table, TRUE);
-       gtk_widget_show(table);
-
-       /* register */
-       td = g_new0(TabData, 1);
-       td->func_free = info_tab_general_free;
-       td->func_sync = info_tab_general_sync;
-       td->func_image = info_tab_general_image;
-       td->data = tab;
-       td->func_new = info_tab_general_new;
-       td->child = table;
-
-       return td;
-}
-
-/*
- *-------------------------------------------------------------------
- * tabs
- *-------------------------------------------------------------------
- */
-
-static void info_tabs_sync(InfoData *id, gint image)
-{
-       GList *work;
-
-       work = id->tab_list;
-       while (work)
-               {
-               TabData *td = work->data;
-               work = work->next;
-
-               if (image)
-                       {
-                       if (td->func_image) td->func_image(id, td->data);
-                       }
-               else
-                       {
-                       if (td->func_sync) td->func_sync(id, td->data);
-                       }
-               }
-}
-
-static void info_tabs_free(InfoData *id)
-{
-       GList *work;
-
-       work = id->tab_list;
-       while (work)
-               {
-               TabData *td = work->data;
-               work = work->next;
-
-               if (td->func_free) td->func_free(td->data);
-               g_free(td);
-               }
-       g_list_free(id->tab_list);
-       id->tab_list = NULL;
-}
-
-static InfoTabsPos *info_tabs_pos_new(gpointer func, gint pos)
-{
-       InfoTabsPos *t = g_new0(InfoTabsPos, 1);
-       t->func = func;
-       t->pos = pos;
-
-       return t;
-}
-
-static void info_tabs_pos_list_append(gpointer func)
-{
-       static gint pos = 0;
-
-       info_tabs_pos_list = g_list_append(info_tabs_pos_list, info_tabs_pos_new(func, pos++));
-}
-
-static gint compare_info_tabs_pos(gconstpointer a, gconstpointer b)
-{
-       InfoTabsPos *ta = (InfoTabsPos *) a;
-       InfoTabsPos *tb = (InfoTabsPos *) b;
-
-       if (ta->pos > tb->pos) return 1;
-       return -1;
-}
-
-static gpointer info_tab_new_funcs[] = {
-       info_tab_general_new,
-       info_tab_meta_new,
-       info_tab_exif_new,
-};
-
-gchar *info_tab_default_order(void)
-{
-       guint i;
-       static gchar str[G_N_ELEMENTS(info_tab_new_funcs) + 1];
-
-       for (i = 0; i < G_N_ELEMENTS(info_tab_new_funcs); i++)
-               str[i] = i + '1';
-       str[i] = '\0';
-
-       return str;
-}
-
-static void info_tab_get_order_string(gchar **dest)
-{
-       GList *work;
-       gchar str[G_N_ELEMENTS(info_tab_new_funcs) + 1];
-
-       g_assert(dest);
-
-       if (!info_tabs_pos_list)
-               return;
-       
-       memset(str, 0, G_N_ELEMENTS(info_tab_new_funcs) + 1);
-
-       work = info_tabs_pos_list;
-       while (work)
-               {
-               guint i;
-               InfoTabsPos *t = work->data;
-               work = work->next;
-
-               for (i = 0; i < G_N_ELEMENTS(info_tab_new_funcs); i++)
-                       {
-                       if (t->func == info_tab_new_funcs[i])
-                               {
-                               g_assert(t->pos < G_N_ELEMENTS(info_tab_new_funcs));
-                               str[t->pos] = i + '1';
-                               }
-                       }
-               }
-       
-       if (strlen(str) != G_N_ELEMENTS(info_tab_new_funcs)) return;
-
-       g_free(*dest);
-       *dest = g_strdup(str);
-}
-
-static void info_tabs_init(InfoData *id)
-{
-       GList *work;
-
-       if (!info_tabs_pos_list)
-               {
-               guint count = 0;
-               guint i;
-               gchar *order = options->properties.tabs_order;
-               
-               for (i = 0; i < strlen(order); i++)
-                       {
-                       guint n = order[i] - '1';
-
-                       if (n >= G_N_ELEMENTS(info_tab_new_funcs)) break;
-                       count++;
-                       }
-
-               if (count != G_N_ELEMENTS(info_tab_new_funcs))
-                       order = info_tab_default_order();
-
-               for (i = 0; i < strlen(order); i++)
-                       {
-                       guint n = order[i] - '1';
-
-                       if (n >= G_N_ELEMENTS(info_tab_new_funcs)) continue;
-                       if (g_list_find(info_tabs_pos_list, info_tab_new_funcs[n])) continue;
-                       info_tabs_pos_list_append(info_tab_new_funcs[n]);
-                       }
-               }
-       else
-               info_tabs_pos_list = g_list_sort(info_tabs_pos_list, compare_info_tabs_pos);
-
-       info_tab_get_order_string(&options->properties.tabs_order);
-
-       work = info_tabs_pos_list;
-       while (work)
-               {
-               InfoTabsPos *t = work->data;
-               work = work->next;
-
-               id->tab_list = g_list_append(id->tab_list, t->func(id));
-               }
-}
-
-/*
- *-------------------------------------------------------------------
- * sync
- *-------------------------------------------------------------------
- */
-
-static void info_window_sync(InfoData *id, FileData *fd)
-{
-
-       if (!fd) return;
-
-       gtk_entry_set_text(GTK_ENTRY(id->name_entry), fd->name);
-
-       if (id->label_count)
-               {
-               gchar *buf;
-               buf = g_strdup_printf(_("Image %d of %d"),
-                                     g_list_index(id->list, (gpointer)fd) + 1,
-                                     g_list_length(id->list));
-               gtk_label_set_text(GTK_LABEL(id->label_count), buf);
-               g_free(buf);
-               }
-
-       info_tabs_sync(id, FALSE);
-
-       id->updated = FALSE;
-       image_change_fd(id->image, fd, 0.0);
-}
-
-static void info_notebook_reordered_cb(GtkNotebook *notebook, GtkWidget *child, guint page_num, gpointer data)
-{
-       InfoData *id = data;
-       GList *work;
-
-       /* Save current tabs position to be able to restore them later. */
-       work = id->tab_list;
-       while (work)
-               {
-               GList *tabpos;
-               TabData *td = work->data;
-               gint pos = gtk_notebook_page_num(GTK_NOTEBOOK(id->notebook), GTK_WIDGET(td->child));
-               work = work->next;
-
-               tabpos = info_tabs_pos_list;
-               while (tabpos)
-                       {
-                       InfoTabsPos *t = tabpos->data;
-                       tabpos = tabpos->next;
-
-                       if (t->func == td->func_new)
-                               {
-                               t->pos = pos;
-                               break;
-                               }
-                       }
-               }
-       
-       info_tabs_pos_list = g_list_sort(info_tabs_pos_list, compare_info_tabs_pos);
-       info_tab_get_order_string(&options->properties.tabs_order);
-}
-
-/*
- *-------------------------------------------------------------------
- * drag n drop (dropping not supported!)
- *-------------------------------------------------------------------
- */
-
-static void info_window_dnd_data_set(GtkWidget *widget, GdkDragContext *context,
-                                    GtkSelectionData *selection_data, guint info,
-                                    guint time, gpointer data)
-{
-       InfoData *id = data;
-       FileData *fd;
-
-       fd = image_get_fd(id->image);
-       if (fd)
-               {
-               gchar *text;
-               gint len;
-               GList *list;
-               gint plain_text;
-
-               switch (info)
-                       {
-                       case TARGET_URI_LIST:
-                               plain_text = FALSE;
-                               break;
-                       case TARGET_TEXT_PLAIN:
-                       default:
-                               plain_text = TRUE;
-                               break;
-                       }
-               list = g_list_append(NULL, fd);
-               text = uri_text_from_filelist(list, &len, plain_text);
-               g_list_free(list);
-
-               gtk_selection_data_set(selection_data, selection_data->target,
-                                      8, (guchar *)text, len);
-               g_free(text);
-               }
-}
-
-static void info_window_dnd_init(InfoData *id)
-{
-       ImageWindow *imd;
-
-       imd = id->image;
-
-       gtk_drag_source_set(imd->pr, GDK_BUTTON2_MASK,
-                           dnd_file_drag_types, dnd_file_drag_types_count,
-                           GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
-       g_signal_connect(G_OBJECT(imd->pr), "drag_data_get",
-                        G_CALLBACK(info_window_dnd_data_set), id);
-
-#if 0
-       gtk_drag_dest_set(imd->pr,
-                         GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP,
-                         dnd_file_drop_types, dnd_file_drop_types_count,
-                         GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
-       g_signal_connect(G_OBJECT(imd->pr), "drag_data_received",
-                        G_CALLBACK(info_window_dnd_data_get), id);
-#endif
-}
-
-/*
- *-------------------------------------------------------------------
- * base window
- *-------------------------------------------------------------------
- */
-
-static void info_window_image_update_cb(ImageWindow *imd, gpointer data)
-{
-       InfoData *id = data;
-
-       /* only do this once after when loading a new image,
-        * for tabs that depend on image data (exif)
-        * Subsequent updates are ignored, as the image
-        * should not really changed if id->updated is TRUE.
-        */
-
-       if (id->updated) return;
-       if (imd->unknown) return;
-
-       info_tabs_sync(id, TRUE);
-       id->updated = TRUE;
-}
-
-static void info_window_back_cb(GtkWidget *widget, gpointer data)
-{
-       InfoData *id = data;
-       GList *work;
-
-       work = g_list_find(id->list, (gpointer)id->fd);
-       if (!work || !work->prev) return;
-
-       work = work->prev;
-       id->fd = work->data;
-
-       info_window_sync(id, id->fd);
-
-       gtk_widget_set_sensitive(id->button_back, (work->prev != NULL));
-       gtk_widget_set_sensitive(id->button_next, TRUE);
-}
-
-static void info_window_next_cb(GtkWidget *widget, gpointer data)
-{
-       InfoData *id = data;
-       GList *work;
-
-       work = g_list_find(id->list, (gpointer)id->fd);
-       if (!work || !work->next) return;
-
-       work = work->next;
-       id->fd = work->data;
-
-       info_window_sync(id, id->fd);
-
-       gtk_widget_set_sensitive(id->button_next, (work->next != NULL));
-       gtk_widget_set_sensitive(id->button_back, TRUE);
-}
-
-static void info_window_image_button_cb(ImageWindow *imd, GdkEventButton *event, gpointer data)
-{
-       if (event->button == MOUSE_BUTTON_LEFT)
-               {
-               info_window_next_cb(NULL, data);
-               }
-       else if (event->button == MOUSE_BUTTON_MIDDLE || event->button == MOUSE_BUTTON_RIGHT)
-               {
-               info_window_back_cb(NULL, data);
-               }
-}
-
-static void info_window_image_scroll_cb(ImageWindow *imd, GdkEventScroll *event, gpointer data)
-{
-       if (event->direction == GDK_SCROLL_UP)
-               {
-               info_window_back_cb(NULL, data);
-               }
-       else if (event->direction == GDK_SCROLL_DOWN)
-               {
-               info_window_next_cb(NULL, data);
-               }
-}
-
-static void info_window_close(InfoData *id)
-{
-       gdk_drawable_get_size(id->window->window, &options->layout.properties_window.w, &options->layout.properties_window.h);
-       options->layout.properties_window.w = MAX(options->layout.properties_window.w, DEF_PROPERTY_WIDTH);
-       options->layout.properties_window.h = MAX(options->layout.properties_window.h, DEF_PROPERTY_HEIGHT);
-
-       gtk_widget_destroy(id->window);
-}
-
-static void info_window_close_cb(GtkWidget *widget, gpointer data)
-{
-       InfoData *id = data;
-
-       info_window_close(id);
-}
-
-static gint info_window_delete_cb(GtkWidget *widget, GdkEventAny *event, gpointer data)
-{
-       InfoData *id = data;
-
-       info_window_close(id);
-       return TRUE;
-}
-
-static void info_window_destroy_cb(GtkWidget *widget, gpointer data)
-{
-       InfoData *id = data;
-
-       info_tabs_free(id);
-       filelist_free(id->list);
-       g_free(id);
-}
-
-void info_window_new(FileData *fd, GList *list, GtkWidget *parent)
-{
-       InfoData *id;
-       GtkWidget *main_vbox;
-       GtkWidget *paned;
-       GtkWidget *hbox;
-       GtkWidget *button;
-       GtkWidget *label;
-       GdkGeometry geometry;
-       static gboolean run_once = FALSE;
-
-       if (!fd && !list) return;
-
-       run_once = TRUE;
-
-       if (!list)
-               {
-               list = g_list_append(NULL, file_data_ref(fd));
-               }
-
-       id = g_new0(InfoData, 1);
-
-       id->list = list;
-       id->fd = (FileData *)id->list->data;
-       id->updated = FALSE;
-
-       id->window = window_new(GTK_WINDOW_TOPLEVEL, "properties", NULL, NULL, _("Image properties"));
-       gtk_window_set_type_hint(GTK_WINDOW(id->window), GDK_WINDOW_TYPE_HINT_DIALOG);
-       id->parent = parent;
-       if (GTK_IS_WINDOW(id->parent)) {
-               gtk_window_set_keep_above(GTK_WINDOW(id->window), TRUE);
-#if 0
-               /* work, but behavior is not that great */
-               gtk_window_set_transient_for(GTK_WINDOW(id->window), GTK_WINDOW(id->parent));
-#endif
-       }
-       gtk_window_set_resizable(GTK_WINDOW(id->window), TRUE);
-
-       geometry.min_width = DEFAULT_MINIMAL_WINDOW_SIZE;
-       geometry.min_height = DEFAULT_MINIMAL_WINDOW_SIZE;
-       geometry.base_width = DEF_PROPERTY_WIDTH;
-       geometry.base_height = DEF_PROPERTY_HEIGHT;
-       gtk_window_set_geometry_hints(GTK_WINDOW(id->window), NULL, &geometry,
-                                     GDK_HINT_MIN_SIZE | GDK_HINT_BASE_SIZE);
-
-       if (options->layout.save_window_positions || run_once)
-               gtk_window_set_default_size(GTK_WINDOW(id->window), options->layout.properties_window.w, options->layout.properties_window.h);
-       else
-               gtk_window_set_default_size(GTK_WINDOW(id->window), DEF_PROPERTY_WIDTH, DEF_PROPERTY_HEIGHT);
-
-       gtk_container_set_border_width(GTK_CONTAINER(id->window), PREF_PAD_BORDER);
-
-       g_signal_connect(G_OBJECT(id->window), "delete_event",
-                        G_CALLBACK(info_window_delete_cb), id);
-       g_signal_connect(G_OBJECT(id->window), "destroy",
-                        G_CALLBACK(info_window_destroy_cb), id);
-
-       paned = gtk_hpaned_new();
-       gtk_container_add(GTK_CONTAINER(id->window), paned);
-       gtk_widget_show(paned);
-
-       id->image = image_new(FALSE);
-       image_set_update_func(id->image, info_window_image_update_cb, id);
-
-       image_set_button_func(id->image, info_window_image_button_cb, id);
-       image_set_scroll_func(id->image, info_window_image_scroll_cb, id);
-
-       gtk_widget_set_size_request(id->image->widget, IMAGE_SIZE_W, IMAGE_SIZE_H);
-       gtk_paned_pack1(GTK_PANED(paned), id->image->widget, FALSE, TRUE);
-       gtk_widget_show(id->image->widget);
-
-       main_vbox = gtk_vbox_new(FALSE, 0);
-       gtk_paned_pack2(GTK_PANED(paned), main_vbox, TRUE, TRUE);
-       gtk_widget_show(main_vbox);
-
-       hbox = pref_box_new(main_vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
-       label = pref_label_new(hbox, _("Filename:"));
-       pref_label_bold(label, TRUE, FALSE);
-
-       id->name_entry = gtk_entry_new();
-       gtk_editable_set_editable(GTK_EDITABLE(id->name_entry), FALSE);
-       gtk_box_pack_start(GTK_BOX(hbox), id->name_entry, TRUE, TRUE, 0);
-       gtk_widget_show(id->name_entry);
-
-       id->notebook = gtk_notebook_new();
-       gtk_notebook_set_tab_pos(GTK_NOTEBOOK(id->notebook), GTK_POS_TOP);
-       gtk_box_pack_start(GTK_BOX(main_vbox), id->notebook, TRUE, TRUE, 5);
-       g_signal_connect(G_OBJECT(id->notebook), "page-reordered",
-                        G_CALLBACK(info_notebook_reordered_cb), id);
-
-       gtk_widget_show(id->notebook);
-
-       pref_spacer(main_vbox, PREF_PAD_GAP);
-
-       hbox = pref_box_new(main_vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_GAP);
-
-       id->button_back = pref_button_new(hbox, GTK_STOCK_GO_BACK, NULL, TRUE,
-                                         G_CALLBACK(info_window_back_cb), id);
-       gtk_widget_set_sensitive(id->button_back, FALSE);
-
-       id->button_next = pref_button_new(hbox, GTK_STOCK_GO_FORWARD, NULL, TRUE,
-                                         G_CALLBACK(info_window_next_cb), id);
-       gtk_widget_set_sensitive(id->button_next, (id->list->next != NULL));
-
-       if (id->list->next)
-               {
-               id->label_count = pref_label_new(hbox, "");
-               }
-
-       button = pref_button_new(NULL, GTK_STOCK_CLOSE, NULL, FALSE,
-                                G_CALLBACK(info_window_close_cb), id);
-       gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
-       gtk_widget_show(button);
-
-       /* set up tabs */
-
-       info_tabs_init(id);
-
-       /* fill it */
-
-       info_window_sync(id, id->fd);
-
-       /* finish */
-
-       info_window_dnd_init(id);
-
-       gtk_widget_show(id->window);
-}
-/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
diff --git a/src/info.h b/src/info.h
deleted file mode 100644 (file)
index 2a14a4e..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Geeqie
- * (C) 2004 John Ellis
- * Copyright (C) 2008 - 2009 The Geeqie Team
- *
- * Author: John Ellis
- *
- * This software is released under the GNU General Public License (GNU GPL).
- * Please read the included file COPYING for more information.
- * This software comes with no warranty of any kind, use at your own risk!
- */
-
-
-#ifndef INFO_H
-#define INFO_H
-
-#define DEF_PROPERTY_WIDTH  600
-#define DEF_PROPERTY_HEIGHT 400
-
-
-typedef struct _InfoData InfoData;
-struct _InfoData
-{
-       GtkWidget *window;
-       GtkWidget *parent;
-
-       ImageWindow *image;
-
-       GList *list;
-
-       FileData *fd;
-
-       GtkWidget *notebook;
-       GtkWidget *name_entry;
-
-       GtkWidget *button_next;
-       GtkWidget *button_back;
-       GtkWidget *label_count;
-
-       GList *tab_list;
-
-       gint updated;
-};
-
-
-void info_window_new(FileData *fd, GList *list, GtkWidget *parent);
-
-GtkWidget *table_add_line(GtkWidget *table, gint x, gint y,
-                         const gchar *description, const gchar *text);
-
-gchar *info_tab_default_order(void);
-
-#endif
-/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
index 9bd1a44..f9cde1c 100644 (file)
@@ -21,7 +21,6 @@
 #include "image.h"
 #include "image-overlay.h"
 #include "img-view.h"
-#include "info.h"
 #include "layout.h"
 #include "layout_util.h"
 #include "menu.h"
@@ -338,13 +337,6 @@ static void li_pop_menu_alter_cb(GtkWidget *widget, gpointer data)
        image_alter(lw->image, type);
 }
 
-static void li_pop_menu_info_cb(GtkWidget *widget, gpointer data)
-{
-       LayoutWindow *lw = data;
-
-       info_window_new(layout_image_get_fd(lw), NULL, lw->full_screen ? lw->full_screen->window : NULL);
-}
-
 static void li_pop_menu_new_cb(GtkWidget *widget, gpointer data)
 {
        LayoutWindow *lw = data;
@@ -494,9 +486,6 @@ static GtkWidget *layout_image_pop_menu(LayoutWindow *lw)
 
        item = submenu_add_alter(menu, G_CALLBACK(li_pop_menu_alter_cb), lw);
 
-       item = menu_item_add_stock(menu, _("_Properties"), GTK_STOCK_PROPERTIES, G_CALLBACK(li_pop_menu_info_cb), lw);
-       if (!path) gtk_widget_set_sensitive(item, FALSE);
-
        item = menu_item_add_stock(menu, _("View in _new window"), GTK_STOCK_NEW, G_CALLBACK(li_pop_menu_new_cb), lw);
        if (!path || fullscreen) gtk_widget_set_sensitive(item, FALSE);
 
index b112f03..72caedf 100644 (file)
@@ -27,7 +27,6 @@
 #include "history_list.h"
 #include "image-overlay.h"
 #include "img-view.h"
-#include "info.h"
 #include "layout_image.h"
 #include "logwindow.h"
 #include "misc.h"
@@ -351,19 +350,6 @@ static void layout_menu_alter_none_cb(GtkAction *action, gpointer data)
        layout_image_alter(lw, ALTER_NONE);
 }
 
-static void layout_menu_info_cb(GtkAction *action, gpointer data)
-{
-       LayoutWindow *lw = data;
-       GList *list;
-       FileData *fd = NULL;
-
-       list = layout_selection_list(lw);
-       if (!list) fd = layout_image_get_fd(lw);
-
-       info_window_new(fd, list, NULL);
-}
-
-
 static void layout_menu_config_cb(GtkAction *action, gpointer data)
 {
        LayoutWindow *lw = data;
@@ -1155,7 +1141,6 @@ static GtkActionEntry menu_entries[] = {
   { "Grayscale",       NULL,           N_("Toggle _grayscale"),"<shift>G",     NULL,   CB(layout_menu_alter_desaturate_cb) },
   { "AlterNone",       NULL,           N_("_Original state"),  "<shift>O",     NULL,   CB(layout_menu_alter_none_cb) },
 
-  { "Properties",GTK_STOCK_PROPERTIES, N_("_Properties"),      "<control>P",   NULL,   CB(layout_menu_info_cb) },
   { "SelectAll",       NULL,           N_("Select _all"),      "<control>A",   NULL,   CB(layout_menu_select_all_cb) },
   { "SelectNone",      NULL,           N_("Select _none"), "<control><shift>A",NULL,   CB(layout_menu_unselect_all_cb) },
   { "SelectInvert",    NULL,           N_("_Invert Selection"), "<control><shift>I",   NULL,   CB(layout_menu_invert_selection_cb) },
@@ -1309,7 +1294,6 @@ static const gchar *menu_ui_description =
 "        <menuitem action='Grayscale'/>"
 "        <menuitem action='AlterNone'/>"
 "      </menu>"
-"      <menuitem action='Properties'/>"
 "      <placeholder name='PropertiesSection'/>"
 "      <separator/>"
 "      <menuitem action='Preferences'/>"
index 6952872..7170a00 100644 (file)
@@ -17,7 +17,6 @@
 #include "filefilter.h"
 #include "histogram.h" /* HCHAN_RGB */
 #include "image-overlay.h" /* OSD_SHOW_NOTHING */
-#include "info.h"
 #include "layout.h"
 #include "layout_image.h"
 #include "rcfile.h"
@@ -106,8 +105,6 @@ ConfOptions *init_options(ConfOptions *options)
        options->layout.main_window.x = 0;
        options->layout.main_window.y = 0;
        options->layout.order = NULL;
-       options->layout.properties_window.w = DEF_PROPERTY_WIDTH;
-       options->layout.properties_window.h = DEF_PROPERTY_HEIGHT;
        options->layout.save_window_positions = TRUE;
        options->layout.show_directory_date = FALSE;
        options->layout.show_marks = FALSE;
@@ -197,7 +194,6 @@ void setup_default_options(ConfOptions *options)
        set_default_image_overlay_template_string(&options->image_overlay.common.template_string);
        options->sidecar.ext = g_strdup(".jpg;%raw;.xmp");
        options->layout.order = g_strdup("123");
-       options->properties.tabs_order = g_strdup(info_tab_default_order());
 
        options->shell.path = g_strdup(GQ_DEFAULT_SHELL_PATH);
        options->shell.options = g_strdup(GQ_DEFAULT_SHELL_OPTIONS);
index 15fba2f..a64726d 100644 (file)
@@ -22,7 +22,6 @@
 #include "fullscreen.h"
 #include "history_list.h"
 #include "img-view.h"
-#include "info.h"
 #include "menu.h"
 #include "misc.h"
 #include "pan-types.h"
@@ -1315,9 +1314,6 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                        case 'D': case 'd':
                                if (fd) file_util_delete(fd, NULL, GTK_WIDGET(pr));
                                break;
-                       case 'P': case 'p':
-                               if (fd) info_window_new(fd, NULL, NULL);
-                               break;
                        case 'F': case 'f':
                                pan_search_toggle_visible(pw, TRUE);
                                break;
@@ -2677,15 +2673,6 @@ static void pan_edit_cb(GtkWidget *widget, gpointer data)
                }
 }
 
-static void pan_info_cb(GtkWidget *widget, gpointer data)
-{
-       PanWindow *pw = data;
-       FileData *fd;
-
-       fd = pan_menu_click_fd(pw);
-       if (fd) info_window_new(fd, NULL, NULL);
-}
-
 static void pan_zoom_in_cb(GtkWidget *widget, gpointer data)
 {
        PanWindow *pw = data;
@@ -2812,9 +2799,6 @@ static GtkWidget *pan_popup_menu(PanWindow *pw)
        submenu_add_edit(menu, &item, G_CALLBACK(pan_edit_cb), pw);
        gtk_widget_set_sensitive(item, active);
 
-       menu_item_add_stock_sensitive(menu, _("_Properties"), GTK_STOCK_PROPERTIES, active,
-                                     G_CALLBACK(pan_info_cb), pw);
-
        menu_item_add_stock_sensitive(menu, _("View in _new window"), GTK_STOCK_NEW, active,
                                      G_CALLBACK(pan_new_window_cb), pw);
 
index db7ed89..7291771 100644 (file)
@@ -14,7 +14,6 @@
 #include "main.h"
 #include "search.h"
 
-#include "bar_info.h"
 #include "cache.h"
 #include "collect.h"
 #include "collect-table.h"
@@ -24,7 +23,6 @@
 #include "filedata.h"
 #include "image-load.h"
 #include "img-view.h"
-#include "info.h"
 #include "layout_image.h"
 #include "menu.h"
 #include "metadata.h"
@@ -41,6 +39,7 @@
 #include "uri_utils.h"
 #include "utilops.h"
 #include "window.h"
+#include "bar_keywords.h"
 
 #include <gdk/gdkkeysyms.h> /* for keyboard values */
 
@@ -916,13 +915,6 @@ static void sr_menu_edit_cb(GtkWidget *widget, gpointer data)
        search_result_edit_selected(sd, key);
 }
 
-static void sr_menu_info_cb(GtkWidget *widget, gpointer data)
-{
-       SearchData *sd = data;
-
-       info_window_new(NULL, search_result_selection_list(sd), NULL);
-}
-
 static void sr_menu_collection_cb(GtkWidget *widget, gpointer data)
 {
        SearchData *sd = data;
@@ -1005,8 +997,6 @@ static GtkWidget *search_result_menu(SearchData *sd, gint on_row, gint empty)
        menu_item_add_divider(menu);
        submenu_add_edit(menu, &item, G_CALLBACK(sr_menu_edit_cb), sd);
        if (!on_row) gtk_widget_set_sensitive(item, FALSE);
-       menu_item_add_stock_sensitive(menu, _("_Properties"), GTK_STOCK_PROPERTIES, on_row,
-                                     G_CALLBACK(sr_menu_info_cb), sd);
        menu_item_add_stock_sensitive(menu, _("Add to new collection"), GTK_STOCK_INDEX, on_row,
                                      G_CALLBACK(sr_menu_collection_cb), sd);
        menu_item_add_stock_sensitive(menu, _("Print..."), GTK_STOCK_PRINT, on_row,
@@ -1261,9 +1251,6 @@ static gint search_result_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpo
                        case 'D': case 'd':
                                file_util_delete(NULL, search_result_selection_list(sd), widget);
                                break;
-                       case 'P': case 'p':
-                               info_window_new(NULL,  search_result_selection_list(sd), NULL);
-                               break;
                        case 'A': case 'a':
                                if (event->state & GDK_SHIFT_MASK)
                                        {
index 3ccd07e..51310cb 100644 (file)
@@ -13,7 +13,6 @@
 #include "view_file.h"
 
 #include "editors.h"
-#include "info.h"
 #include "layout.h"
 #include "menu.h"
 #include "ui_menu.h"
@@ -311,13 +310,6 @@ static void vf_pop_menu_edit_cb(GtkWidget *widget, gpointer data)
        filelist_free(list);
 }
 
-static void vf_pop_menu_info_cb(GtkWidget *widget, gpointer data)
-{
-       ViewFile *vf = data;
-
-       info_window_new(NULL, vf_pop_menu_file_list(vf), NULL);
-}
-
 static void vf_pop_menu_view_cb(GtkWidget *widget, gpointer data)
 {
        ViewFile *vf = data;
@@ -558,8 +550,6 @@ GtkWidget *vf_pop_menu(ViewFile *vf)
        submenu_add_edit(menu, &item, G_CALLBACK(vf_pop_menu_edit_cb), vf);
        gtk_widget_set_sensitive(item, active);
 
-       menu_item_add_stock_sensitive(menu, _("_Properties"), GTK_STOCK_PROPERTIES, active,
-                                     G_CALLBACK(vf_pop_menu_info_cb), vf);
        menu_item_add_stock_sensitive(menu, _("View in _new window"), GTK_STOCK_NEW, active,
                                      G_CALLBACK(vf_pop_menu_view_cb), vf);
 
index 4a51c23..40d39e2 100644 (file)
@@ -13,7 +13,6 @@
 #include "main.h"
 #include "view_file_icon.h"
 
-#include "bar_info.h"
 #include "bar.h"
 #include "cellrenderericon.h"
 #include "collect.h"
@@ -22,7 +21,6 @@
 #include "dnd.h"
 #include "editors.h"
 #include "img-view.h"
-#include "info.h"
 #include "filedata.h"
 #include "layout.h"
 #include "layout_image.h"
index cb94a1b..2ec3323 100644 (file)
 #include "main.h"
 #include "view_file_list.h"
 
-#include "bar_info.h"
 #include "bar.h"
 #include "cache_maint.h"
 #include "dnd.h"
 #include "editors.h"
 #include "img-view.h"
-#include "info.h"
 #include "layout.h"
 #include "layout_image.h"
 #include "menu.h"