[gthumb] added the bookmarks to the headerbar
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] added the bookmarks to the headerbar
- Date: Sat, 9 Nov 2013 20:04:44 +0000 (UTC)
commit 02d51b8c46a5c3c3a8f50aef57c3decf0db7cab4
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sat Oct 19 13:32:19 2013 +0200
added the bookmarks to the headerbar
data/icons/hicolor/scalable/actions/Makefile.am | 1 +
.../scalable/actions/bookmarks-symbolic.svg | 80 ++++++++
extensions/bookmarks/Makefile.am | 12 +-
extensions/bookmarks/actions.c | 32 +++
extensions/bookmarks/actions.h | 3 +
extensions/bookmarks/callbacks.c | 202 ++++++++------------
extensions/bookmarks/data/ui/Makefile.am | 6 +-
extensions/bookmarks/data/ui/bookmarks-menu.ui | 25 +++
extensions/bookmarks/data/ui/bookmarks.ui | 177 +++++++++++-------
extensions/bookmarks/dlg-bookmarks.c | 2 +-
extensions/bookmarks/gresource.xml | 7 +
gthumb/gth-browser-actions-callbacks.c | 131 ++-----------
gthumb/gth-browser-actions-callbacks.h | 13 +--
gthumb/gth-browser-actions-entries.h | 50 +-----
gthumb/gth-browser-ui.h | 9 -
gthumb/gth-browser.c | 60 ++++--
gthumb/gth-browser.h | 5 +
gthumb/resources/gears-menu.ui | 5 +
18 files changed, 418 insertions(+), 402 deletions(-)
---
diff --git a/data/icons/hicolor/scalable/actions/Makefile.am b/data/icons/hicolor/scalable/actions/Makefile.am
index 807533f..b1dd19d 100644
--- a/data/icons/hicolor/scalable/actions/Makefile.am
+++ b/data/icons/hicolor/scalable/actions/Makefile.am
@@ -5,6 +5,7 @@ context = actions
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
+ bookmarks-symbolic.svg \
browser-mode.svg \
file-catalog.svg \
file-library.svg \
diff --git a/data/icons/hicolor/scalable/actions/bookmarks-symbolic.svg
b/data/icons/hicolor/scalable/actions/bookmarks-symbolic.svg
new file mode 100644
index 0000000..8856b79
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/bookmarks-symbolic.svg
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="bookmarks-symbolic.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#555753"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="32"
+ inkscape:cx="4.1967014"
+ inkscape:cy="10.284634"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:snap-grids="false"
+ inkscape:window-width="1483"
+ inkscape:window-height="933"
+ inkscape:window-x="390"
+ inkscape:window-y="156"
+ inkscape:window-maximized="0"
+ showborder="true"
+ fit-margin-top="0"
+ fit-margin-right="0"
+ fit-margin-left="0"
+ fit-margin-bottom="0"
+ showguides="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid7044"
+ empspacing="8"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ originx="-31.97559px"
+ originy="-816.00002px" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Livello 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-31.97559,-220.36218)">
+ <path
+ style="fill:#bebebe;fill-opacity:1;stroke:none"
+ d="m 4.02441,0.96879 0.00684,13.96871 4.0625,-3.96875 3.9375,4.0625 0.03125,-14.03123 z"
+ id="path2996"
+ inkscape:connector-curvature="0"
+ transform="translate(31.97559,220.36218)"
+ sodipodi:nodetypes="cccccc" />
+ </g>
+</svg>
diff --git a/extensions/bookmarks/Makefile.am b/extensions/bookmarks/Makefile.am
index e5291f5..3de25c7 100644
--- a/extensions/bookmarks/Makefile.am
+++ b/extensions/bookmarks/Makefile.am
@@ -10,8 +10,16 @@ libbookmarks_la_SOURCES = \
callbacks.h \
dlg-bookmarks.c \
dlg-bookmarks.h \
+ resources.c \
+ resources.h \
main.c
+RESOURCES_DEP = $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies --sourcedir=$(srcdir)
$(srcdir)/gresource.xml)
+resources.c: gresource.xml $(RESOURCES_DEP)
+ $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name gth
$(srcdir)/gresource.xml
+resources.h: gresource.xml $(RESOURCES_DEP)
+ $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name gth
$(srcdir)/gresource.xml
+
libbookmarks_la_CFLAGS = $(GTHUMB_CFLAGS) -I$(top_srcdir) -I$(top_builddir)/gthumb
libbookmarks_la_LDFLAGS = $(EXTENSION_LIBTOOL_FLAGS)
libbookmarks_la_LIBADD = $(GTHUMB_LIBS)
@@ -24,7 +32,9 @@ extensionini_DATA = $(extensionini_in_files:.extension.in.in=.extension)
@GTHUMB_EXTENSION_IN_RULE@
@GTHUMB_EXTENSION_RULE@
-EXTRA_DIST = $(extensionini_in_files)
+EXTRA_DIST = \
+ $(extensionini_in_files) \
+ gresource.xml
DISTCLEANFILES = $(extensionini_DATA)
diff --git a/extensions/bookmarks/actions.c b/extensions/bookmarks/actions.c
index 94990dd..38582a5 100644
--- a/extensions/bookmarks/actions.c
+++ b/extensions/bookmarks/actions.c
@@ -52,3 +52,35 @@ gth_browser_activate_action_bookmarks_edit (GtkAction *action,
{
dlg_bookmarks (browser);
}
+
+
+void
+gth_browser_activate_bookmarks_add (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GthBrowser *browser = GTH_BROWSER (user_data);
+ GBookmarkFile *bookmarks;
+ GFile *location;
+ char *uri;
+
+ location = gth_browser_get_location (browser);
+ if (location == NULL)
+ return;
+
+ bookmarks = gth_main_get_default_bookmarks ();
+ uri = g_file_get_uri (location);
+ _g_bookmark_file_add_uri (bookmarks, uri);
+ gth_main_bookmarks_changed ();
+
+ g_free (uri);
+}
+
+
+void
+gth_browser_activate_bookmarks_edit (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ dlg_bookmarks (GTH_BROWSER (user_data));
+}
diff --git a/extensions/bookmarks/actions.h b/extensions/bookmarks/actions.h
index 7c91108..a05ffae 100644
--- a/extensions/bookmarks/actions.h
+++ b/extensions/bookmarks/actions.h
@@ -29,4 +29,7 @@
DEFINE_ACTION(gth_browser_activate_action_bookmarks_add)
DEFINE_ACTION(gth_browser_activate_action_bookmarks_edit)
+DEF_ACTION_CALLBACK (gth_browser_activate_bookmarks_add)
+DEF_ACTION_CALLBACK (gth_browser_activate_bookmarks_edit)
+
#endif /* ACTIONS_H */
diff --git a/extensions/bookmarks/callbacks.c b/extensions/bookmarks/callbacks.c
index 0dae653..ad1456f 100644
--- a/extensions/bookmarks/callbacks.c
+++ b/extensions/bookmarks/callbacks.c
@@ -30,48 +30,19 @@
#define BROWSER_DATA_KEY "bookmarks-browser-data"
-static const char *fixed_ui_info =
-"<ui>"
-" <menubar name='MenuBar'>"
-" <placeholder name='OtherMenus'>"
-" <menu name='Bookmarks' action='BookmarksMenu'>"
-" <menuitem action='Bookmarks_Add'/>"
-" <menuitem action='Bookmarks_Edit'/>"
-" <separator/>"
-" <menu name='SystemBookmarks' action='SystemBookmarksMenu'>"
-" </menu>"
-" <separator name='EntryPointListSeparator'/>"
-" <placeholder name='EntryPointList'/>"
-" <separator name='BookmarkListSeparator'/>"
-" <placeholder name='BookmarkList'/>"
-" </menu>"
-" </placeholder>"
-" </menubar>"
-"</ui>";
-
-
-static GtkActionEntry bookmarks_action_entries[] = {
- { "BookmarksMenu", NULL, N_("_Bookmarks") },
- { "SystemBookmarksMenu", NULL, N_("_System Bookmarks") },
-
- { "Bookmarks_Add", GTK_STOCK_ADD,
- N_("_Add Bookmark"), "<control>D",
- N_("Add current location to bookmarks"),
- G_CALLBACK (gth_browser_activate_action_bookmarks_add) },
-
- { "Bookmarks_Edit", NULL,
- N_("_Edit Bookmarks..."), "<control>B",
- N_("Edit bookmarks"),
- G_CALLBACK (gth_browser_activate_action_bookmarks_edit) },
+static const GActionEntry actions[] = {
+ { "bookmarks-add", gth_browser_activate_bookmarks_add },
+ { "bookmarks-edit", gth_browser_activate_bookmarks_edit }
};
-static guint bookmarks_action_entries_size = G_N_ELEMENTS (bookmarks_action_entries);
typedef struct {
- GthBrowser *browser;
- GtkActionGroup *actions;
- guint bookmarks_changed_id;
- guint entry_points_changed_id;
+ GthBrowser *browser;
+ guint bookmarks_changed_id;
+ guint entry_points_changed_id;
+ GMenu *system_bookmarks_menu;
+ GMenu *entry_points_menu;
+ GMenu *bookmarks_menu;
} BrowserData;
@@ -88,6 +59,9 @@ browser_data_free (BrowserData *data)
data->entry_points_changed_id);
data->entry_points_changed_id = 0;
}
+ _g_object_unref (data->system_bookmarks_menu);
+ _g_object_unref (data->entry_points_menu);
+ _g_object_unref (data->bookmarks_menu);
g_free (data);
}
@@ -118,23 +92,20 @@ static void
update_system_bookmark_list_from_content (GthBrowser *browser,
const char *content)
{
- GtkWidget *bookmark_list;
- GtkWidget *menu;
- char **lines;
- int i;
+ BrowserData *data;
+ char **lines;
+ int i;
- bookmark_list = gtk_ui_manager_get_widget (gth_browser_get_ui_manager (browser),
"/MenuBar/OtherMenus/Bookmarks/SystemBookmarks");
- menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (bookmark_list));
-
- _gtk_container_remove_children (GTK_CONTAINER (menu), NULL, NULL);
+ data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
+ g_return_if_fail (data != NULL);
lines = g_strsplit (content, "\n", -1);
for (i = 0; lines[i] != NULL; i++) {
- char **line;
- char *uri;
- GFile *file;
- GIcon *icon;
- char *name;
+ char **line;
+ char *uri;
+ GFile *file;
+ char *name;
+ GMenuItem *item;
line = g_strsplit (lines[i], " ", 2);
uri = line[0];
@@ -144,31 +115,21 @@ update_system_bookmark_list_from_content (GthBrowser *browser,
}
file = g_file_new_for_uri (uri);
- icon = _g_file_get_icon (file);
name = g_strdup (strchr (lines[i], ' '));
if (name == NULL)
name = _g_file_get_display_name (file);
if (name == NULL)
name = g_file_get_parse_name (file);
-
- _gth_browser_add_file_menu_item_full (browser,
- menu,
- file,
- icon,
- name,
- GTH_ACTION_GO_TO,
- i,
- -1);
+ item = _g_menu_item_new_for_file (file, name);
+ g_menu_item_set_action_and_target (item, "win.go-to-location", "s", uri);
+ g_menu_append_item (data->system_bookmarks_menu, item);
g_free (name);
- _g_object_unref (icon);
g_object_unref (file);
g_strfreev (line);
}
- g_strfreev (lines);
- if (i > 0)
- gtk_widget_show (bookmark_list);
+ g_strfreev (lines);
}
@@ -208,12 +169,19 @@ update_system_bookmark_list_ready (GObject *source_object,
static void
_gth_browser_update_system_bookmark_list (GthBrowser *browser)
{
+ BrowserData *browser_data;
GFile *bookmark_file;
GFileInputStream *input_stream;
UpdateBookmarksData *data;
+ browser_data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
+ g_return_if_fail (browser_data != NULL);
+
+ g_menu_remove_all (browser_data->system_bookmarks_menu);
+
/* give priority to XDG_CONFIG_HOME/gtk-3.0/bookmarks if not found
* try the old ~/.gtk-bookmarks */
+
bookmark_file = gth_user_dir_get_file_for_read (GTH_DIR_CONFIG, "gtk-3.0", "bookmarks", NULL);
if (! g_file_query_exists (bookmark_file, NULL)) {
char *path;
@@ -249,41 +217,31 @@ _gth_browser_update_system_bookmark_list (GthBrowser *browser)
static void
_gth_browser_update_bookmark_list (GthBrowser *browser)
{
- GtkWidget *menu;
- GtkWidget *bookmark_list;
- GtkWidget *bookmark_list_separator;
+ BrowserData *data;
GBookmarkFile *bookmarks;
char **uris;
- gsize length;
int i;
- bookmark_list = gtk_ui_manager_get_widget (gth_browser_get_ui_manager (browser),
"/MenuBar/OtherMenus/Bookmarks/BookmarkList");
- menu = gtk_widget_get_parent (bookmark_list);
+ data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
+ g_return_if_fail (data != NULL);
- _gtk_container_remove_children (GTK_CONTAINER (menu), bookmark_list, NULL);
+ g_menu_remove_all (data->bookmarks_menu);
bookmarks = gth_main_get_default_bookmarks ();
- uris = g_bookmark_file_get_uris (bookmarks, &length);
-
- bookmark_list_separator = gtk_ui_manager_get_widget (gth_browser_get_ui_manager (browser),
"/MenuBar/OtherMenus/Bookmarks/BookmarkListSeparator");
- if (length > 0)
- gtk_widget_show (bookmark_list_separator);
- else
- gtk_widget_hide (bookmark_list_separator);
+ uris = g_bookmark_file_get_uris (bookmarks, NULL);
for (i = 0; uris[i] != NULL; i++) {
- GFile *file;
- char *name;
+ GFile *file;
+ char *name;
+ GMenuItem *item;
file = g_file_new_for_uri (uris[i]);
name = g_bookmark_file_get_title (bookmarks, uris[i], NULL);
- _gth_browser_add_file_menu_item (browser,
- menu,
- file,
- name,
- GTH_ACTION_GO_TO,
- i);
+ item = _g_menu_item_new_for_file (file, name);
+ g_menu_item_set_action_and_target (item, "win.go-to-location", "s", uris[i]);
+ g_menu_append_item (data->bookmarks_menu, item);
+ _g_object_unref (item);
g_free (name);
g_object_unref (file);
}
@@ -306,33 +264,28 @@ bookmarks_changed_cb (GthMonitor *monitor,
static void
_gth_browser_update_entry_point_list (GthBrowser *browser)
{
- GtkUIManager *ui;
- GtkWidget *separator1;
- GtkWidget *separator2;
- GtkWidget *menu;
+ BrowserData *data;
GList *entry_points;
GList *scan;
- int position;
- ui = gth_browser_get_ui_manager (browser);
- separator1 = gtk_ui_manager_get_widget (ui, "/MenuBar/OtherMenus/Bookmarks/EntryPointListSeparator");
- separator2 = gtk_ui_manager_get_widget (ui, "/MenuBar/OtherMenus/Bookmarks/BookmarkListSeparator");
- menu = gtk_widget_get_parent (separator1);
- _gtk_container_remove_children (GTK_CONTAINER (menu), separator1, separator2);
+ data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
+ g_return_if_fail (data != NULL);
+
+ g_menu_remove_all (data->entry_points_menu);
- position = 6;
entry_points = gth_main_get_all_entry_points ();
for (scan = entry_points; scan; scan = scan->next) {
GthFileData *file_data = scan->data;
+ GMenuItem *item;
+ char *uri;
- _gth_browser_add_file_menu_item_full (browser,
- menu,
- file_data->file,
- g_file_info_get_icon (file_data->info),
- g_file_info_get_display_name (file_data->info),
- GTH_ACTION_GO_TO,
- 0,
- position++);
+ item = _g_menu_item_new_for_file (file_data->file, NULL);
+ uri = g_file_get_uri (file_data->file);
+ g_menu_item_set_action_and_target (item, "win.go-to-location", "s", uri);
+ g_menu_append_item (data->entry_points_menu, item);
+
+ g_free (uri);
+ g_object_unref (item);
}
_g_object_list_unref (entry_points);
@@ -352,28 +305,39 @@ void
bookmarks__gth_browser_construct_cb (GthBrowser *browser)
{
BrowserData *data;
- GError *error = NULL;
g_return_if_fail (GTH_IS_BROWSER (browser));
data = g_new0 (BrowserData, 1);
g_object_set_data_full (G_OBJECT (browser), BROWSER_DATA_KEY, data, (GDestroyNotify)
browser_data_free);
- data->browser = browser;
+ g_action_map_add_action_entries (G_ACTION_MAP (browser),
+ actions,
+ G_N_ELEMENTS (actions),
+ browser);
+
+ {
+ GtkWidget *button;
+ GtkBuilder *builder;
+
+ button = _gtk_menu_button_new_for_header_bar ();
+ gtk_widget_set_tooltip_text (button, _("Bookmarks"));
+ gtk_container_add (GTK_CONTAINER (button), gtk_image_new_from_icon_name
("bookmarks-symbolic", GTK_ICON_SIZE_MENU));
- data->actions = gtk_action_group_new ("Bookmarks Actions");
- gtk_action_group_set_translation_domain (data->actions, NULL);
- gtk_action_group_add_actions (data->actions,
- bookmarks_action_entries,
- bookmarks_action_entries_size,
- browser);
- gtk_ui_manager_insert_action_group (gth_browser_get_ui_manager (browser), data->actions, 0);
-
- if (! gtk_ui_manager_add_ui_from_string (gth_browser_get_ui_manager (browser), fixed_ui_info, -1,
&error)) {
- g_message ("building menus failed: %s", error->message);
- g_error_free (error);
+ builder = gtk_builder_new_from_resource
("/org/gnome/gThumb/bookmarks/data/ui/bookmarks-menu.ui");
+ data->system_bookmarks_menu = G_MENU (gtk_builder_get_object (builder, "system-bookmarks"));
+ data->entry_points_menu = G_MENU (gtk_builder_get_object (builder, "entry-points"));
+ data->bookmarks_menu = G_MENU (gtk_builder_get_object (builder, "bookmarks"));
+
+ gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), G_MENU_MODEL
(gtk_builder_get_object (builder, "bookmarks-menu")));
+
+ gtk_widget_show_all (button);
+ gtk_box_pack_start (GTK_BOX (gth_browser_get_headerbar_section (browser,
GTH_BROWSER_HEADER_SECTION_BROWSER_COMMANDS)), button, FALSE, FALSE, 0);
+
+ g_object_unref (builder);
}
+ data->browser = browser;
data->bookmarks_changed_id = g_signal_connect (gth_main_get_default_monitor (),
"bookmarks-changed",
G_CALLBACK (bookmarks_changed_cb),
diff --git a/extensions/bookmarks/data/ui/Makefile.am b/extensions/bookmarks/data/ui/Makefile.am
index 7c46184..18df1fd 100644
--- a/extensions/bookmarks/data/ui/Makefile.am
+++ b/extensions/bookmarks/data/ui/Makefile.am
@@ -1,5 +1,5 @@
-uidir = $(pkgdatadir)/ui
-ui_DATA = bookmarks.ui
-EXTRA_DIST = $(ui_DATA)
+EXTRA_DIST = \
+ bookmarks.ui \
+ bookmarks-menu.ui
-include $(top_srcdir)/git.mk
diff --git a/extensions/bookmarks/data/ui/bookmarks-menu.ui b/extensions/bookmarks/data/ui/bookmarks-menu.ui
new file mode 100644
index 0000000..3511bb5
--- /dev/null
+++ b/extensions/bookmarks/data/ui/bookmarks-menu.ui
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <menu id="bookmarks-menu">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Add Bookmark</attribute>
+ <attribute name="action">win.bookmarks-add</attribute>
+ <attribute name="accel"><![CDATA[<Ctrl>D]]></attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Edit Bookmarks…</attribute>
+ <attribute name="action">win.bookmarks-edit</attribute>
+ <attribute name="accel"><![CDATA[<Ctrl>B]]></attribute>
+ </item>
+ </section>
+ <submenu id="system-bookmarks">
+ <attribute name="label" translatable="yes">_System Bookmarks</attribute>
+ </submenu>
+ <section id="entry-points">
+ </section>
+ <section id="bookmarks">
+ </section>
+ </menu>
+</interface>
diff --git a/extensions/bookmarks/data/ui/bookmarks.ui b/extensions/bookmarks/data/ui/bookmarks.ui
index 9d6e1c2..ef9b6dd 100644
--- a/extensions/bookmarks/data/ui/bookmarks.ui
+++ b/extensions/bookmarks/data/ui/bookmarks.ui
@@ -1,29 +1,60 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.0 on Sat Oct 19 11:45:32 2013 -->
<interface>
- <requires lib="gtk+" version="2.16"/>
- <!-- interface-naming-policy project-wide -->
+ <!-- interface-requires gtk+ 3.10 -->
<object class="GtkDialog" id="bookmarks_dialog">
- <property name="height_request">300</property>
+ <property name="height_request">400</property>
+ <property name="can_focus">False</property>
<property name="border_width">5</property>
<property name="title" translatable="yes">Bookmarks</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox7">
+ <object class="GtkBox" id="dialog-vbox7">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="orientation">vertical</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="bm_close_button">
+ <property name="label">gtk-close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
<child>
<object class="GtkHBox" id="hbox57">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="border_width">6</property>
<property name="spacing">24</property>
<child>
<object class="GtkVBox" id="vbox47">
<property name="visible">True</property>
- <property name="orientation">vertical</property>
+ <property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="bm_bookmarks_label">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">_Bookmarks:</property>
<property name="use_underline">True</property>
@@ -35,48 +66,99 @@
</packing>
</child>
<child>
- <object class="GtkHBox" id="hbox90">
+ <object class="GtkBox" id="box1">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
<child>
<object class="GtkScrolledWindow" id="bm_list_container">
<property name="width_request">250</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
- <property name="window_placement">bottom-right</property>
+ <property name="vexpand">True</property>
+ <property name="window_placement">bottom-left</property>
<property name="shadow_type">etched-in</property>
<child>
<placeholder/>
</child>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
+ <child>
+ <object class="GtkToolbar" id="toolbar1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <style>
+ <class name="inline-toolbar"/>
+ </style>
+ <property name="icon_size">2</property>
+ <child>
+ <object class="GtkToolButton" id="bm_go_to_button">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Go to this location</property>
+ <property name="label" translatable="yes">toolbutton1</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">go-jump-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="bm_remove_button">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Remove</property>
+ <property name="label" translatable="yes">toolbutton2</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">edit-delete-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
- <property name="orientation">vertical</property>
+ <property name="can_focus">False</property>
<property name="spacing">12</property>
<child>
<object class="GtkVBox" id="vbox2">
<property name="visible">True</property>
- <property name="orientation">vertical</property>
+ <property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">_Name</property>
<property name="use_underline">True</property>
@@ -87,18 +169,20 @@
</object>
<packing>
<property name="expand">False</property>
+ <property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkEntry" id="entry_name">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="invisible_char">●</property>
+ <property name="invisible_char">●</property>
<property name="width_chars">30</property>
</object>
</child>
@@ -112,17 +196,19 @@
</object>
<packing>
<property name="expand">False</property>
+ <property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox3">
<property name="visible">True</property>
- <property name="orientation">vertical</property>
+ <property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">_Location</property>
<property name="use_underline">True</property>
@@ -140,12 +226,13 @@
<child>
<object class="GtkAlignment" id="alignment2">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkEntry" id="entry_location">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="invisible_char">●</property>
+ <property name="invisible_char">●</property>
<property name="width_chars">30</property>
</object>
</child>
@@ -159,77 +246,27 @@
</object>
<packing>
<property name="expand">False</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area7">
- <property name="visible">True</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="bm_go_to_button">
- <property name="label">gtk-jump-to</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="bm_remove_button">
- <property name="label">gtk-remove</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="bm_close_button">
- <property name="label">gtk-close</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
<property name="expand">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
</child>
<action-widgets>
- <action-widget response="0">bm_go_to_button</action-widget>
- <action-widget response="0">bm_remove_button</action-widget>
<action-widget response="0">bm_close_button</action-widget>
</action-widgets>
</object>
diff --git a/extensions/bookmarks/dlg-bookmarks.c b/extensions/bookmarks/dlg-bookmarks.c
index 143f52e..a628ccf 100644
--- a/extensions/bookmarks/dlg-bookmarks.c
+++ b/extensions/bookmarks/dlg-bookmarks.c
@@ -340,7 +340,7 @@ dlg_bookmarks (GthBrowser *browser)
data = g_new0 (DialogData, 1);
data->browser = browser;
- data->builder = _gtk_builder_new_from_file ("bookmarks.ui", "bookmarks");
+ data->builder = gtk_builder_new_from_resource ("/org/gnome/gThumb/bookmarks/data/ui/bookmarks.ui");
data->last_selected_uri = NULL;
data->entry_changed = FALSE;
diff --git a/extensions/bookmarks/gresource.xml b/extensions/bookmarks/gresource.xml
new file mode 100644
index 0000000..f1f9bc9
--- /dev/null
+++ b/extensions/bookmarks/gresource.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/org/gnome/gThumb/bookmarks">
+ <file compressed="true">data/ui/bookmarks.ui</file>
+ <file compressed="true">data/ui/bookmarks-menu.ui</file>
+ </gresource>
+</gresources>
diff --git a/gthumb/gth-browser-actions-callbacks.c b/gthumb/gth-browser-actions-callbacks.c
index 2673f9c..003f03a 100644
--- a/gthumb/gth-browser-actions-callbacks.c
+++ b/gthumb/gth-browser-actions-callbacks.c
@@ -57,99 +57,6 @@ gth_browser_activate_action_file_open (GtkAction *action,
void
-gth_browser_activate_action_file_revert (GtkAction *action,
- GthBrowser *browser)
-{
- GthFileData *file_data;
-
- file_data = gth_browser_get_current_file (browser);
- if (file_data == NULL)
- return;
- g_file_info_set_attribute_boolean (file_data->info, "gth::file::is-modified", FALSE);
- gth_browser_load_file (browser, file_data, TRUE);
-}
-
-
-void
-gth_browser_activate_action_file_save (GtkAction *action,
- GthBrowser *browser)
-{
- GtkWidget *viewer_page;
-
- viewer_page = gth_browser_get_viewer_page (browser);
- if (viewer_page == NULL)
- return;
-
- gth_viewer_page_save (GTH_VIEWER_PAGE (viewer_page), NULL, NULL, browser);
-}
-
-
-void
-gth_browser_activate_action_file_save_as (GtkAction *action,
- GthBrowser *browser)
-{
- GtkWidget *viewer_page;
-
- viewer_page = gth_browser_get_viewer_page (browser);
- if (viewer_page == NULL)
- return;
-
- gth_viewer_page_save_as (GTH_VIEWER_PAGE (viewer_page), NULL, NULL);
-}
-
-
-void
-gth_browser_activate_action_file_new_window (GtkAction *action,
- GthBrowser *browser)
-{
- GtkWidget *window;
-
- window = gth_browser_new (gth_browser_get_location (browser), NULL);
- gtk_window_present (GTK_WINDOW (window));
-}
-
-
-void
-gth_browser_activate_action_edit_preferences (GtkAction *action,
- GthBrowser *browser)
-{
- dlg_preferences (browser);
-}
-
-
-void
-gth_browser_activate_action_go_up (GtkAction *action,
- GthBrowser *browser)
-{
- gth_browser_go_up (browser, 1);
-}
-
-
-void
-gth_browser_activate_action_go_location (GtkAction *action,
- GthBrowser *browser)
-{
- dlg_location (browser);
-}
-
-
-void
-gth_browser_activate_action_go_home (GtkAction *action,
- GthBrowser *browser)
-{
- gth_browser_go_home (browser);
-}
-
-
-void
-gth_browser_activate_action_go_clear_history (GtkAction *action,
- GthBrowser *browser)
-{
- gth_browser_clear_history (browser);
-}
-
-
-void
gth_browser_activate_action_view_filter (GtkAction *action,
GthBrowser *browser)
{
@@ -366,30 +273,6 @@ gth_browser_activate_action_edit_select_all (GtkAction *action,
}
-void
-gth_browser_activate_action_help_about (GtkAction *action,
- gpointer data)
-{
-
-}
-
-
-void
-gth_browser_activate_action_help_help (GtkAction *action,
- gpointer data)
-{
- show_help_dialog (GTK_WINDOW (data), NULL);
-}
-
-
-void
-gth_browser_activate_action_help_shortcuts (GtkAction *action,
- gpointer data)
-{
- show_help_dialog (GTK_WINDOW (data), "gthumb-shortcuts");
-}
-
-
/* -- GAction callbacks -- */
@@ -608,6 +491,20 @@ gth_browser_activate_go_to_history_pos (GSimpleAction *action,
void
+gth_browser_activate_go_to_location (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GFile *file;
+
+ file = g_file_new_for_uri (g_variant_get_string (parameter, NULL));
+ gth_browser_go_to (GTH_BROWSER (user_data), file, NULL);
+
+ g_object_unref (file);
+}
+
+
+void
gth_browser_activate_go_home (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
diff --git a/gthumb/gth-browser-actions-callbacks.h b/gthumb/gth-browser-actions-callbacks.h
index fc56f1a..04c8290 100644
--- a/gthumb/gth-browser-actions-callbacks.h
+++ b/gthumb/gth-browser-actions-callbacks.h
@@ -26,23 +26,11 @@
#define DEFINE_ACTION(x) void x (GtkAction *action, gpointer data);
-DEFINE_ACTION(gth_browser_activate_action_bookmarks_add)
-DEFINE_ACTION(gth_browser_activate_action_bookmarks_edit)
-DEFINE_ACTION(gth_browser_activate_action_edit_comment)
-DEFINE_ACTION(gth_browser_activate_action_edit_preferences)
DEFINE_ACTION(gth_browser_activate_action_edit_select_all)
DEFINE_ACTION(gth_browser_activate_action_file_open)
-DEFINE_ACTION(gth_browser_activate_action_file_new_window)
-DEFINE_ACTION(gth_browser_activate_action_file_revert)
-DEFINE_ACTION(gth_browser_activate_action_file_save)
-DEFINE_ACTION(gth_browser_activate_action_file_save_as)
DEFINE_ACTION(gth_browser_activate_action_folder_open)
DEFINE_ACTION(gth_browser_activate_action_folder_open_in_new_window)
DEFINE_ACTION(gth_browser_activate_action_folder_open_in_file_manager)
-DEFINE_ACTION(gth_browser_activate_action_go_up)
-DEFINE_ACTION(gth_browser_activate_action_go_location)
-DEFINE_ACTION(gth_browser_activate_action_go_clear_history)
-DEFINE_ACTION(gth_browser_activate_action_go_home)
DEFINE_ACTION(gth_browser_activate_action_view_sort_by)
DEFINE_ACTION(gth_browser_activate_action_view_filter)
DEFINE_ACTION(gth_browser_activate_action_view_filterbar)
@@ -75,6 +63,7 @@ DEF_ACTION_CALLBACK (gth_browser_activate_fullscreen)
DEF_ACTION_CALLBACK (gth_browser_activate_go_back)
DEF_ACTION_CALLBACK (gth_browser_activate_go_forward)
DEF_ACTION_CALLBACK (gth_browser_activate_go_to_history_pos)
+DEF_ACTION_CALLBACK (gth_browser_activate_go_to_location)
DEF_ACTION_CALLBACK (gth_browser_activate_go_home)
DEF_ACTION_CALLBACK (gth_browser_activate_go_up)
DEF_ACTION_CALLBACK (gth_browser_activate_open_location)
diff --git a/gthumb/gth-browser-actions-entries.h b/gthumb/gth-browser-actions-entries.h
index 28510a1..0cb01fd 100644
--- a/gthumb/gth-browser-actions-entries.h
+++ b/gthumb/gth-browser-actions-entries.h
@@ -36,6 +36,7 @@ static const GActionEntry gth_browser_actions[] = {
{ "go-forward", gth_browser_activate_go_forward },
{ "go-home", gth_browser_activate_go_home },
{ "go-to-history-position", gth_browser_activate_go_to_history_pos, "s", "''", NULL },
+ { "go-to-location", gth_browser_activate_go_to_location, "s", "''", NULL },
{ "go-up", gth_browser_activate_go_up },
{ "open-location", gth_browser_activate_open_location },
{ "revert-to-saved", gth_browser_activate_revert_to_saved },
@@ -49,41 +50,16 @@ static GthActionEntryExt gth_browser_action_entries[] = {
{ "FileMenu", NULL, N_("_File") },
{ "EditMenu", NULL, N_("_Edit") },
{ "ViewMenu", NULL, N_("_View") },
- { "HelpMenu", NULL, N_("_Help") },
{ "OpenWithMenu", NULL, N_("Open _With") },
{ "ImportMenu", NULL, N_("I_mport From") },
{ "ExportMenu", NULL, N_("E_xport To") },
- { "File_NewWindow", "window-new",
- N_("New _Window"), "<control>N",
- N_("Open another window"),
- GTH_ACTION_FLAG_NONE,
- G_CALLBACK (gth_browser_activate_action_file_new_window) },
-
{ "File_Open", GTK_STOCK_OPEN,
NULL, NULL,
NULL,
GTH_ACTION_FLAG_NONE,
G_CALLBACK (gth_browser_activate_action_file_open) },
- { "File_Save", GTK_STOCK_SAVE,
- NULL, "<control>S",
- NULL,
- GTH_ACTION_FLAG_NONE,
- G_CALLBACK (gth_browser_activate_action_file_save) },
-
- { "File_SaveAs", GTK_STOCK_SAVE_AS,
- NULL, NULL,
- NULL,
- GTH_ACTION_FLAG_NONE,
- G_CALLBACK (gth_browser_activate_action_file_save_as) },
-
- { "File_Revert", GTK_STOCK_REVERT_TO_SAVED,
- NULL, "F4",
- NULL,
- GTH_ACTION_FLAG_NONE,
- G_CALLBACK (gth_browser_activate_action_file_revert) },
-
{ "Folder_Open", GTK_STOCK_OPEN,
N_("Open"), "",
NULL,
@@ -96,12 +72,6 @@ static GthActionEntryExt gth_browser_action_entries[] = {
GTH_ACTION_FLAG_NONE,
G_CALLBACK (gth_browser_activate_action_folder_open_in_new_window) },
- { "Edit_Preferences", GTK_STOCK_PREFERENCES,
- NULL, NULL,
- N_("Edit various preferences"),
- GTH_ACTION_FLAG_NONE,
- G_CALLBACK (gth_browser_activate_action_edit_preferences) },
-
{ "Edit_SelectAll", GTK_STOCK_SELECT_ALL,
NULL, "<control>A",
NULL,
@@ -150,24 +120,6 @@ static GthActionEntryExt gth_browser_action_entries[] = {
GTH_ACTION_FLAG_NONE,
G_CALLBACK (gth_browser_activate_action_view_fullscreen) },
- { "Go_Location", NULL,
- N_("_Location..."), "<control>L",
- N_("Specify a location to open"),
- GTH_ACTION_FLAG_NONE,
- G_CALLBACK (gth_browser_activate_action_go_location) },
-
- { "Go_Home", NULL,
- NULL, "<alt>Home",
- NULL,
- GTH_ACTION_FLAG_NONE,
- G_CALLBACK (gth_browser_activate_action_go_home) },
-
- { "Go_Clear_History", GTK_STOCK_CLEAR,
- N_("_Delete History"), NULL,
- N_("Delete the list of visited locations"),
- GTH_ACTION_FLAG_NONE,
- G_CALLBACK (gth_browser_activate_action_go_clear_history) },
-
{ "Browser_Tools", "palette",
N_("Edit"), NULL,
N_("Edit file"),
diff --git a/gthumb/gth-browser-ui.h b/gthumb/gth-browser-ui.h
index d056efa..37fef24 100644
--- a/gthumb/gth-browser-ui.h
+++ b/gthumb/gth-browser-ui.h
@@ -28,11 +28,6 @@ static const char *fixed_ui_info =
"<ui>"
" <menubar name='MenuBar'>"
" <menu name='File' action='FileMenu'>"
-" <menuitem action='File_NewWindow'/>"
-" <separator/>"
-" <menuitem action='File_Save'/>"
-" <menuitem action='File_SaveAs'/>"
-" <menuitem action='File_Revert'/>"
" <placeholder name='File_Actions'/>"
" <placeholder name='File_Actions_2'/>"
" <separator/>"
@@ -61,8 +56,6 @@ static const char *fixed_ui_info =
" <placeholder name='Folder_Actions_2'/>"
" <separator/>"
" <placeholder name='Edit_Actions'/>"
-" <separator/>"
-" <menuitem action='Edit_Preferences'/>"
" </menu>"
" <menu name='View' action='ViewMenu'>"
" <menuitem action='View_Stop'/>"
@@ -135,7 +128,6 @@ static const char *fixed_ui_info =
" <separator/>"
" <menu name='OpenWith' action='OpenWithMenu'>"
" </menu>"
-" <menuitem action='File_SaveAs'/>"
" <placeholder name='Open_Actions'/>"
" <separator/>"
" <placeholder name='File_Actions'/>"
@@ -152,7 +144,6 @@ static const char *fixed_ui_info =
" <separator/>"
" <menu name='OpenWith' action='OpenWithMenu'>"
" </menu>"
-" <menuitem action='File_SaveAs'/>"
" <placeholder name='Open_Actions'/>"
" <separator/>"
" <placeholder name='File_Actions'/>"
diff --git a/gthumb/gth-browser.c b/gthumb/gth-browser.c
index 11693e2..cfca951 100644
--- a/gthumb/gth-browser.c
+++ b/gthumb/gth-browser.c
@@ -594,9 +594,6 @@ gth_browser_update_sensitivity (GthBrowser *browser)
n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view
(browser)));
_gth_browser_set_action_sensitive (browser, "File_Open", n_selected == 1);
- _gth_browser_set_action_sensitive (browser, "File_Save", viewer_can_save && modified);
- _gth_browser_set_action_sensitive (browser, "File_SaveAs", viewer_can_save);
- _gth_browser_set_action_sensitive (browser, "File_Revert", viewer_can_save && modified);
_gth_browser_set_action_sensitive (browser, "View_Stop", browser->priv->fullscreen ||
(browser->priv->activity_ref > 0));
_gth_browser_set_action_sensitive (browser, "View_Prev", current_file_pos > 0);
_gth_browser_set_action_sensitive (browser, "View_Next", (current_file_pos != -1) &&
(current_file_pos < n_files - 1));
@@ -721,23 +718,11 @@ _gth_browser_history_menu (GthBrowser *browser)
scan;
scan = scan->next, i++)
{
- GFile *file = scan->data;
- GthFileSource *file_source;
- GFileInfo *info;
- char *label;
- GMenuItem *item;
- char *target;
-
- file_source = gth_main_get_file_source (file);
- info = gth_file_source_get_file_info (file_source, file, GFILE_DISPLAY_ATTRIBUTES);
- if (info != NULL) {
- label = g_strdup (g_file_info_get_display_name (info));
- g_object_unref (info);
- }
- else
- label = _g_file_get_display_name (file);
+ GFile *file = scan->data;
+ GMenuItem *item;
+ char *target;
- item = g_menu_item_new (label, NULL);
+ item = _g_menu_item_new_for_file (file, NULL);
target = g_strdup_printf ("%d", i);
g_menu_item_set_action_and_target (item, "win.go-to-history-position", "s", target);
g_menu_append_item (browser->priv->history_menu, item);
@@ -748,8 +733,7 @@ _gth_browser_history_menu (GthBrowser *browser)
}
g_free (target);
- g_free (label);
- g_object_unref (file_source);
+ g_object_unref (item);
}
}
}
@@ -6816,3 +6800,37 @@ gth_browser_restore_state (GthBrowser *browser)
return TRUE;
}
+
+
+GMenuItem *
+_g_menu_item_new_for_file (GFile *file,
+ const char *custom_label)
+{
+ GMenuItem *item;
+ GthFileSource *file_source;
+ GFileInfo *info;
+
+ item = g_menu_item_new (NULL, NULL);
+ file_source = gth_main_get_file_source (file);
+ info = gth_file_source_get_file_info (file_source, file, GFILE_DISPLAY_ATTRIBUTES);
+ if (info != NULL) {
+ g_menu_item_set_label (item, (custom_label != NULL) ? custom_label :
g_file_info_get_display_name (info));
+ g_menu_item_set_icon (item, g_file_info_get_icon (info));
+ }
+ else {
+ char *label;
+ GIcon *icon;
+
+ label = _g_file_get_display_name (file);
+ icon = _g_file_get_icon (file);
+ g_menu_item_set_label (item, (custom_label != NULL) ? custom_label : label);
+ g_menu_item_set_icon (item, icon);
+
+ g_object_unref (icon);
+ g_free (label);
+ }
+
+ _g_object_unref (info);
+
+ return item;
+}
diff --git a/gthumb/gth-browser.h b/gthumb/gth-browser.h
index 9692ec2..5578cbc 100644
--- a/gthumb/gth-browser.h
+++ b/gthumb/gth-browser.h
@@ -246,6 +246,11 @@ void _gth_browser_add_file_menu_item_full (GthBrowser *browser,
int steps,
int position);
+/* utilities */
+
+GMenuItem * _g_menu_item_new_for_file (GFile *file,
+ const char *custom_label);
+
G_END_DECLS
#endif /* GTH_BROWSER_H */
diff --git a/gthumb/resources/gears-menu.ui b/gthumb/resources/gears-menu.ui
index eff1b3c..6873acd 100644
--- a/gthumb/resources/gears-menu.ui
+++ b/gthumb/resources/gears-menu.ui
@@ -4,6 +4,11 @@
<menu id="menu">
<section>
<item>
+ <attribute name="label" translatable="yes">New _Window</attribute>
+ <attribute name="action">app.new-window</attribute>
+ <attribute name="accel"><![CDATA[<Ctrl>N]]></attribute>
+ </item>
+ <item>
<attribute name="label" translatable="yes">_Open…</attribute>
<attribute name="action">win.open-location</attribute>
<attribute name="accel"><![CDATA[<Ctrl>O]]></attribute>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]