comparison src/layout_util.c @ 1335:588d96cda850

save and restore toolbar configuration
author nadvornik
date Sat, 28 Feb 2009 12:50:39 +0000
parents f97450e632a1
children 63eb48237608
comparison
equal deleted inserted replaced
1334:f97450e632a1 1335:588d96cda850
41 #include "ui_tabcomp.h" 41 #include "ui_tabcomp.h"
42 #include "utilops.h" 42 #include "utilops.h"
43 #include "view_dir.h" 43 #include "view_dir.h"
44 #include "window.h" 44 #include "window.h"
45 #include "metadata.h" 45 #include "metadata.h"
46 #include "rcfile.h"
46 47
47 #include <gdk/gdkkeysyms.h> /* for keyboard values */ 48 #include <gdk/gdkkeysyms.h> /* for keyboard values */
48 49
49 50
50 #define MENU_EDIT_ACTION_OFFSET 16 51 #define MENU_EDIT_ACTION_OFFSET 16
1442 " <menuitem action='LogWindow'/>" 1443 " <menuitem action='LogWindow'/>"
1443 " <separator/>" 1444 " <separator/>"
1444 " </menu>" 1445 " </menu>"
1445 " </menubar>" 1446 " </menubar>"
1446 " <toolbar name='ToolBar'>" 1447 " <toolbar name='ToolBar'>"
1447 " <toolitem action='Thumbnails'/>"
1448 " <toolitem action='Back'/>"
1449 " <toolitem action='Home'/>"
1450 " <toolitem action='Refresh'/>"
1451 " <toolitem action='ZoomIn'/>"
1452 " <toolitem action='ZoomOut'/>"
1453 " <toolitem action='ZoomFit'/>"
1454 " <toolitem action='ZoomFit'/>"
1455 " <toolitem action='Zoom100'/>"
1456 " <toolitem action='Preferences'/>"
1457 " <toolitem action='FloatTools'/>"
1458 " </toolbar>" 1448 " </toolbar>"
1459 "<accelerator action='PrevImageAlt1'/>" 1449 "<accelerator action='PrevImageAlt1'/>"
1460 "<accelerator action='PrevImageAlt2'/>" 1450 "<accelerator action='PrevImageAlt2'/>"
1461 "<accelerator action='NextImageAlt1'/>" 1451 "<accelerator action='NextImageAlt1'/>"
1462 "<accelerator action='NextImageAlt2'/>" 1452 "<accelerator action='NextImageAlt2'/>"
1475 "<accelerator action='ConnectZoomInAlt1'/>" 1465 "<accelerator action='ConnectZoomInAlt1'/>"
1476 "<accelerator action='ConnectZoomOutAlt1'/>" 1466 "<accelerator action='ConnectZoomOutAlt1'/>"
1477 "<accelerator action='ConnectZoom100Alt1'/>" 1467 "<accelerator action='ConnectZoom100Alt1'/>"
1478 "<accelerator action='ConnectZoomFitAlt1'/>" 1468 "<accelerator action='ConnectZoomFitAlt1'/>"
1479 "</ui>"; 1469 "</ui>";
1480
1481 1470
1482 static gchar *menu_translate(const gchar *path, gpointer data) 1471 static gchar *menu_translate(const gchar *path, gpointer data)
1483 { 1472 {
1484 return (gchar *)(_(path)); 1473 return (gchar *)(_(path));
1485 } 1474 }
1725 g_message("building menus failed: %s", error->message); 1714 g_message("building menus failed: %s", error->message);
1726 g_error_free(error); 1715 g_error_free(error);
1727 exit(EXIT_FAILURE); 1716 exit(EXIT_FAILURE);
1728 } 1717 }
1729 1718
1719 layout_toolbar_clear(lw);
1720 layout_toolbar_add_default(lw);
1721
1730 layout_actions_setup_marks(lw); 1722 layout_actions_setup_marks(lw);
1731 layout_actions_setup_editors(lw); 1723 layout_actions_setup_editors(lw);
1732 layout_copy_path_update(lw); 1724 layout_copy_path_update(lw);
1733 } 1725 }
1734 1726
1745 GtkWidget *layout_actions_menu_bar(LayoutWindow *lw) 1737 GtkWidget *layout_actions_menu_bar(LayoutWindow *lw)
1746 { 1738 {
1747 return gtk_ui_manager_get_widget(lw->ui_manager, "/MainMenu"); 1739 return gtk_ui_manager_get_widget(lw->ui_manager, "/MainMenu");
1748 } 1740 }
1749 1741
1750 GtkWidget *layout_button_bar(LayoutWindow *lw) 1742 GtkWidget *layout_actions_toolbar(LayoutWindow *lw)
1751 { 1743 {
1752 GtkWidget *bar = gtk_ui_manager_get_widget(lw->ui_manager, "/ToolBar"); 1744 GtkWidget *bar = gtk_ui_manager_get_widget(lw->ui_manager, "/ToolBar");
1753 gtk_toolbar_set_icon_size(GTK_TOOLBAR(bar), GTK_ICON_SIZE_SMALL_TOOLBAR); 1745 gtk_toolbar_set_icon_size(GTK_TOOLBAR(bar), GTK_ICON_SIZE_SMALL_TOOLBAR);
1754 gtk_toolbar_set_style(GTK_TOOLBAR(bar), GTK_TOOLBAR_ICONS); 1746 gtk_toolbar_set_style(GTK_TOOLBAR(bar), GTK_TOOLBAR_ICONS);
1755 return bar; 1747 return bar;
1748 }
1749
1750 void layout_toolbar_clear(LayoutWindow *lw)
1751 {
1752 if (lw->toolbar_merge_id)
1753 {
1754 gtk_ui_manager_remove_ui(lw->ui_manager, lw->toolbar_merge_id);
1755 gtk_ui_manager_ensure_update(lw->ui_manager);
1756 }
1757 string_list_free(lw->toolbar_actions);
1758 lw->toolbar_actions = NULL;
1759
1760 lw->toolbar_merge_id = gtk_ui_manager_new_merge_id(lw->ui_manager);
1761 }
1762
1763
1764 void layout_toolbar_add(LayoutWindow *lw, const gchar *action)
1765 {
1766 if (!action || !lw->ui_manager) return;
1767 gtk_ui_manager_add_ui(lw->ui_manager, lw->toolbar_merge_id, "/ToolBar", action, action, GTK_UI_MANAGER_TOOLITEM, FALSE);
1768 lw->toolbar_actions = g_list_append(lw->toolbar_actions, g_strdup(action));
1769 }
1770
1771
1772 void layout_toolbar_add_default(LayoutWindow *lw)
1773 {
1774 layout_toolbar_add(lw, "Thumbnails");
1775 layout_toolbar_add(lw, "Back");
1776 layout_toolbar_add(lw, "Home");
1777 layout_toolbar_add(lw, "Refresh");
1778 layout_toolbar_add(lw, "ZoomIn");
1779 layout_toolbar_add(lw, "ZoomOut");
1780 layout_toolbar_add(lw, "ZoomFit");
1781 layout_toolbar_add(lw, "Zoom100");
1782 layout_toolbar_add(lw, "Preferences");
1783 layout_toolbar_add(lw, "FloatTools");
1784 }
1785
1786 void layout_toolbar_write_config(LayoutWindow *lw, GString *outstr, gint indent)
1787 {
1788 GList *work = lw->toolbar_actions;
1789 WRITE_STRING("<toolbar>\n");
1790 indent++;
1791 while (work)
1792 {
1793 gchar *action = work->data;
1794 work = work->next;
1795 WRITE_STRING("<toolitem\n");
1796 write_char_option(outstr, indent + 1, "action", action);
1797 WRITE_STRING("/>\n");
1798 }
1799 indent--;
1800 WRITE_STRING("</toolbar>\n");
1801 }
1802
1803 void layout_toolbar_add_from_config(LayoutWindow *lw, const gchar **attribute_names, const gchar **attribute_values)
1804 {
1805 gchar *action = NULL;
1806
1807 while (*attribute_names)
1808 {
1809 const gchar *option = *attribute_names++;
1810 const gchar *value = *attribute_values++;
1811
1812 if (READ_CHAR_FULL("action", action)) continue;
1813
1814 DEBUG_1("unknown attribute %s = %s", option, value);
1815 }
1816
1817 layout_toolbar_add(lw, action);
1818 g_free(action);
1756 } 1819 }
1757 1820
1758 /* 1821 /*
1759 *----------------------------------------------------------------------------- 1822 *-----------------------------------------------------------------------------
1760 * misc 1823 * misc