Include a Other Software section in Help file
[geeqie.git] / src / toolbar.c
index 2a6d913..932e7f5 100644 (file)
@@ -55,7 +55,7 @@ struct _ToolbarButtonData
        gchar *stock_id;
 };
 
-static         ToolbarData *toolbarlist;
+static ToolbarData *toolbarlist[2];
 
 typedef struct _UseableToolbarItems UseableToolbarItems;
 struct _UseableToolbarItems
@@ -65,7 +65,7 @@ struct _UseableToolbarItems
        gchar *stock_id;
 };
 
-/* FIXME Should be created by program from menu_entries[]
+/** @FIXME Should be created by program from menu_entries[]
  * in layout_util.c */
  /** The user is limited to selecting from this list of menu items
   * plus any desktop files
@@ -79,7 +79,13 @@ static const UseableToolbarItems useable_toolbar_items[] = {
        {"Forward",     N_("Forward"), GTK_STOCK_GO_FORWARD},
        {"Home",        N_("Home"), GTK_STOCK_HOME},
        {"Up",  N_("Up"), GTK_STOCK_GO_UP},
-       {"NewWindow",   N_("New _window"), GTK_STOCK_NEW},
+       {"FirstPage",   N_("First page"), GTK_STOCK_MEDIA_PREVIOUS},
+       {"LastPage",    N_("Last Page"), GTK_STOCK_MEDIA_NEXT},
+       {"NextPage",    N_("Next page"), GTK_STOCK_MEDIA_FORWARD},
+       {"PrevPage",    N_("Previous Page"), GTK_STOCK_MEDIA_REWIND},
+       {"ImageForward",        N_("Image Forward"), GTK_STOCK_GOTO_LAST},
+       {"ImageBack",   N_("Image Back"), GTK_STOCK_GOTO_FIRST},
+       {"NewWindow",   N_("New window"), GTK_STOCK_NEW},
        {"NewCollection",       N_("New collection"), GTK_STOCK_INDEX},
        {"OpenCollection",      N_("Open collection"), GTK_STOCK_OPEN},
        {"Search",      N_("Search"), GTK_STOCK_FIND},
@@ -94,11 +100,18 @@ static const UseableToolbarItems useable_toolbar_items[] = {
        {"SelectAll",   N_("Select all"), PIXBUF_INLINE_ICON_SELECT_ALL},
        {"SelectNone",  N_("Select none"), PIXBUF_INLINE_ICON_SELECT_NONE},
        {"SelectInvert",        N_("Select invert"), PIXBUF_INLINE_ICON_SELECT_INVERT},
+       {"ShowFileFilter",      N_("Show file filter"), PIXBUF_INLINE_ICON_FILE_FILTER},
        {"RectangularSelection",        N_("Select rectangle"), PIXBUF_INLINE_ICON_SELECT_RECTANGLE},
        {"Print",       N_("Print"), GTK_STOCK_PRINT},
        {"Preferences", N_("Preferences"), GTK_STOCK_PREFERENCES},
        {"LayoutConfig",        N_("Configure this window"), GTK_STOCK_PREFERENCES},
        {"Maintenance", N_("Cache maintenance"), PIXBUF_INLINE_ICON_MAINTENANCE},
+       {"RotateCW",    N_("Rotate clockwise 90°"), PIXBUF_INLINE_ICON_CW},
+       {"RotateCCW",   N_("Rotate counterclockwise 90°"), PIXBUF_INLINE_ICON_CCW},
+       {"Rotate180",   N_("Rotate 180°"), PIXBUF_INLINE_ICON_180},
+       {"Mirror",      N_("Mirror"), PIXBUF_INLINE_ICON_MIRROR},
+       {"Flip",        N_("Flip"), PIXBUF_INLINE_ICON_FLIP},
+       {"AlterNone",   N_("Original state"), PIXBUF_INLINE_ICON_ORIGINAL},
        {"ZoomIn",      N_("Zoom in"), GTK_STOCK_ZOOM_IN},
        {"ZoomOut",     N_("Zoom out"), GTK_STOCK_ZOOM_OUT},
        {"Zoom100",     N_("Zoom 1:1"), GTK_STOCK_ZOOM_100},
@@ -112,6 +125,14 @@ static const UseableToolbarItems useable_toolbar_items[] = {
        {"Zoom33",      N_("Zoom1:3"), GTK_STOCK_FILE},
        {"Zoom25",      N_("Zoom 1:4"), GTK_STOCK_FILE},
        {"ConnectZoomIn",       N_("Connected Zoom in"), GTK_STOCK_ZOOM_IN},
+       {"SplitPaneSync",       N_("Split Pane Sync"), PIXBUF_INLINE_SPLIT_PANE_SYNC},
+       {"Grayscale",   N_("Grayscale"), PIXBUF_INLINE_ICON_GRAYSCALE},
+       {"OverUnderExposed",    N_("Over Under Exposed"), PIXBUF_INLINE_ICON_EXPOSURE},
+       {"ShowInfoPixel",       N_("Pixel Info"),       GTK_STOCK_COLOR_PICKER},
+       {"IgnoreAlpha", N_("Ignore Alpha"),     GTK_STOCK_STRIKETHROUGH},
+       {"ExifRotate",  N_("Exif rotate"),      GTK_STOCK_ORIENTATION_PORTRAIT},
+       {"UseColorProfiles",    N_("Use color profiles"),       GTK_STOCK_SELECT_COLOR},
+       {"SaveMetadata",        N_("Save metadata"),    GTK_STOCK_SAVE},
        {"HideTools",   N_("Hide file list"), PIXBUF_INLINE_ICON_HIDETOOLS},
        {"SlideShowPause",      N_("Pause slideshow"), GTK_STOCK_MEDIA_PAUSE},
        {"SlideShowFaster",     N_("Slideshow Faster"), GTK_STOCK_FILE},
@@ -234,7 +255,7 @@ static void get_toolbar_item(const gchar *name, gchar **label, gchar **stock_id)
                {
                if (g_strcmp0(list->name, name) == 0)
                        {
-                       *label = g_strdup(list->label);
+                       *label = g_strdup(gettext(list->label));
                        *stock_id = g_strdup(list->stock_id);
                        break;
                        }
@@ -371,10 +392,10 @@ static void toolbar_menu_add_popup(GtkWidget *widget, gpointer data)
        while (list->name)
                {
                GtkWidget *item;
-               item = menu_item_add_stock(menu, list->label, list->stock_id,
+               item = menu_item_add_stock(menu, gettext(list->label), list->stock_id,
                                                                                G_CALLBACK(toolbarlist_add_cb), toolbarlist);
                g_object_set_data(G_OBJECT(item), "toolbar_add_name", g_strdup(list->name));
-               g_object_set_data(G_OBJECT(item), "toolbar_add_label", g_strdup(list->label));
+               g_object_set_data(G_OBJECT(item), "toolbar_add_label", g_strdup(gettext(list->label)));
                g_object_set_data(G_OBJECT(item), "toolbar_add_stock_id", g_strdup(list->stock_id));
                g_signal_connect(G_OBJECT(item), "destroy", G_CALLBACK(toolbar_button_free), item);
                list++;
@@ -413,9 +434,10 @@ static gboolean toolbar_menu_add_cb(GtkWidget *widget, gpointer data)
 
 /**
  * @brief For each layoutwindow, clear toolbar and reload with current selection
+ * @param bar Main or Status toolbar
  * 
  */
-void toolbar_apply()
+void toolbar_apply(ToolbarType bar)
 {
        LayoutWindow *lw;
        GList *work_windows;
@@ -426,16 +448,16 @@ void toolbar_apply()
                {
                lw = work_windows->data;
 
-               layout_toolbar_clear(lw, TOOLBAR_MAIN);
+               layout_toolbar_clear(lw, bar);
 
-               work_toolbar = gtk_container_get_children(GTK_CONTAINER(toolbarlist->vbox));
+               work_toolbar = gtk_container_get_children(GTK_CONTAINER(toolbarlist[bar]->vbox));
                while (work_toolbar)
                        {
                        GtkButton *button = work_toolbar->data;
                        ToolbarButtonData *tbbd;
 
                        tbbd = g_object_get_data(G_OBJECT(button),"toolbarbuttondata");
-                       layout_toolbar_add(lw, TOOLBAR_MAIN, tbbd->name);
+                       layout_toolbar_add(lw, bar, tbbd->name);
 
                        work_toolbar = work_toolbar->next;
                        }
@@ -450,13 +472,14 @@ void toolbar_apply()
  * @brief Load the current toolbar items into the vbox
  * @param lw 
  * @param box The vbox displayed in the preferences Toolbar tab
+ * @param bar Main or Status toolbar
  * 
  * Get the current contents of the toolbar, both menu items
  * and desktop items, and load them into the vbox
  */
-static void toolbarlist_populate(LayoutWindow *lw, GtkBox *box)
+static void toolbarlist_populate(LayoutWindow *lw, GtkBox *box, ToolbarType bar)
 {
-       GList *work = g_list_first(lw->toolbar_actions[TOOLBAR_MAIN]);
+       GList *work = g_list_first(lw->toolbar_actions[bar]);
 
        while (work)
                {
@@ -477,7 +500,7 @@ static void toolbarlist_populate(LayoutWindow *lw, GtkBox *box)
                }
 }
 
-GtkWidget *toolbar_select_new(LayoutWindow *lw)
+GtkWidget *toolbar_select_new(LayoutWindow *lw, ToolbarType bar)
 {
        GtkWidget *scrolled;
        GtkWidget *tbar;
@@ -485,40 +508,40 @@ GtkWidget *toolbar_select_new(LayoutWindow *lw)
 
        if (!lw) return NULL;
 
-       if (!toolbarlist)
+       if (!toolbarlist[bar])
                {
-               toolbarlist = g_new0(ToolbarData, 1);
+               toolbarlist[bar] = g_new0(ToolbarData, 1);
                }
-       toolbarlist->lw = lw;
+       toolbarlist[bar]->lw = lw;
 
-       toolbarlist->widget = gtk_vbox_new(FALSE, PREF_PAD_GAP);
-       gtk_widget_show(toolbarlist->widget);
+       toolbarlist[bar]->widget = gtk_vbox_new(FALSE, PREF_PAD_GAP);
+       gtk_widget_show(toolbarlist[bar]->widget);
 
        scrolled = gtk_scrolled_window_new(NULL, NULL);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
                                                        GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
        gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_NONE);
-       gtk_box_pack_start(GTK_BOX(toolbarlist->widget), scrolled, TRUE, TRUE, 0);
+       gtk_box_pack_start(GTK_BOX(toolbarlist[bar]->widget), scrolled, TRUE, TRUE, 0);
        gtk_widget_show(scrolled);
 
-       toolbarlist->vbox = gtk_vbox_new(FALSE, 0);
-       gtk_widget_show(toolbarlist->vbox);
-       gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled), toolbarlist->vbox);
+       toolbarlist[bar]->vbox = gtk_vbox_new(FALSE, 0);
+       gtk_widget_show(toolbarlist[bar]->vbox);
+       gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled), toolbarlist[bar]->vbox);
        gtk_viewport_set_shadow_type(GTK_VIEWPORT(gtk_bin_get_child(GTK_BIN(scrolled))),
                                                                                                                                GTK_SHADOW_NONE);
 
        add_box = gtk_vbox_new(FALSE, 0);
        gtk_widget_show(add_box);
-       gtk_box_pack_end(GTK_BOX(toolbarlist->widget), add_box, FALSE, FALSE, 0);
+       gtk_box_pack_end(GTK_BOX(toolbarlist[bar]->widget), add_box, FALSE, FALSE, 0);
        tbar = pref_toolbar_new(add_box, GTK_TOOLBAR_ICONS);
-       toolbarlist->add_button = pref_toolbar_button(tbar, GTK_STOCK_ADD, "NULL", FALSE,
+       toolbarlist[bar]->add_button = pref_toolbar_button(tbar, GTK_STOCK_ADD, "NULL", FALSE,
                                                                                        _("Add Toolbar Item"),
-                                                                                       G_CALLBACK(toolbar_menu_add_cb), toolbarlist);
-       gtk_widget_show(toolbarlist->add_button);
+                                                                                       G_CALLBACK(toolbar_menu_add_cb), toolbarlist[bar]);
+       gtk_widget_show(toolbarlist[bar]->add_button);
 
-       toolbarlist_populate(lw,GTK_BOX(toolbarlist->vbox));
+       toolbarlist_populate(lw,GTK_BOX(toolbarlist[bar]->vbox), bar);
 
-       return toolbarlist->widget;
+       return toolbarlist[bar]->widget;
 }
 
 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */