aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2003-06-12 06:06:26 +0800
committerChristian Persch <chpe@src.gnome.org>2003-06-12 06:06:26 +0800
commit45aa254e9c7d745fe0d8aaa1627fced919b0bbdc (patch)
treef3729ebbf884d7ccf69cc60f9e23a244b11127fc /src
parent0daded02b044566c4b9f8495c762508cbce39a0b (diff)
downloadgsoc2013-epiphany-45aa254e9c7d745fe0d8aaa1627fced919b0bbdc.tar
gsoc2013-epiphany-45aa254e9c7d745fe0d8aaa1627fced919b0bbdc.tar.gz
gsoc2013-epiphany-45aa254e9c7d745fe0d8aaa1627fced919b0bbdc.tar.bz2
gsoc2013-epiphany-45aa254e9c7d745fe0d8aaa1627fced919b0bbdc.tar.lz
gsoc2013-epiphany-45aa254e9c7d745fe0d8aaa1627fced919b0bbdc.tar.xz
gsoc2013-epiphany-45aa254e9c7d745fe0d8aaa1627fced919b0bbdc.tar.zst
gsoc2013-epiphany-45aa254e9c7d745fe0d8aaa1627fced919b0bbdc.zip
Moved bookmark tool item creation to a dedicated tool item. That way we
2003-06-11 Christian Persch <chpe@cvs.gnome.org> * src/bookmarks/ephy-bookmark-toolitem.h: * src/bookmarks/ephy-bookmark-toolitem.c: * src/bookmarks/ephy-bookmark-action.c: (create_tool_item), (create_menu_item), (ephy_bookmark_action_class_init): Moved bookmark tool item creation to a dedicated tool item. That way we can provide toolbar overflow menu items.
Diffstat (limited to 'src')
-rw-r--r--src/bookmarks/Makefile.am2
-rw-r--r--src/bookmarks/ephy-bookmark-action.c58
-rw-r--r--src/bookmarks/ephy-bookmark-toolitem.c140
-rw-r--r--src/bookmarks/ephy-bookmark-toolitem.h57
4 files changed, 204 insertions, 53 deletions
diff --git a/src/bookmarks/Makefile.am b/src/bookmarks/Makefile.am
index 4425d0aa5..16bf2c5d2 100644
--- a/src/bookmarks/Makefile.am
+++ b/src/bookmarks/Makefile.am
@@ -32,6 +32,8 @@ libephybookmarks_la_SOURCES = \
ephy-bookmarks-menu.h \
ephy-bookmark-properties.c \
ephy-bookmark-properties.h \
+ ephy-bookmark-toolitem.c \
+ ephy-bookmark-toolitem.h \
ephy-new-bookmark.c \
ephy-new-bookmark.h \
ephy-topic-action.c \
diff --git a/src/bookmarks/ephy-bookmark-action.c b/src/bookmarks/ephy-bookmark-action.c
index 4264483d7..50be80fd3 100644
--- a/src/bookmarks/ephy-bookmark-action.c
+++ b/src/bookmarks/ephy-bookmark-action.c
@@ -24,6 +24,7 @@
#include <libgnomevfs/gnome-vfs-uri.h>
#include "ephy-bookmark-action.h"
+#include "ephy-bookmark-toolitem.h"
#include "ephy-bookmarks.h"
#include "ephy-shell.h"
#include "ephy-string.h"
@@ -89,56 +90,6 @@ ephy_bookmark_action_get_type (void)
return type;
}
-static GtkWidget *
-create_menu_item (EggAction *action)
-{
- GtkWidget *item;
-
- item = gtk_image_menu_item_new ();
-
- return item;
-}
-
-static GtkWidget *
-create_tool_item (EggAction *action)
-{
- GtkWidget *item, *button, *hbox, *label,
- *icon, *entry;
-
- item = (* EGG_ACTION_CLASS (parent_class)->create_tool_item) (action);
-
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox);
- gtk_container_add (GTK_CONTAINER (item), hbox);
-
- button = gtk_button_new ();
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
- gtk_widget_show (button);
- gtk_container_add (GTK_CONTAINER (hbox), button);
- g_object_set_data (G_OBJECT (item), "button", button);
-
- entry = gtk_entry_new ();
- gtk_widget_set_size_request (entry, 120, -1);
- gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
- g_object_set_data (G_OBJECT (item), "entry", entry);
-
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox);
- gtk_container_add (GTK_CONTAINER (button), hbox);
-
- icon = gtk_image_new ();
- gtk_widget_show (icon);
- gtk_box_pack_start (GTK_BOX (hbox), icon, TRUE, TRUE, 0);
- g_object_set_data (G_OBJECT (item), "icon", icon);
-
- label = gtk_label_new (NULL);
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
- g_object_set_data (G_OBJECT (item), "label", label);
-
- return item;
-}
-
static void
ephy_bookmark_action_sync_smart_url (EggAction *action, GParamSpec *pspec, GtkWidget *proxy)
{
@@ -304,6 +255,8 @@ connect_proxy (EggAction *action, GtkWidget *proxy)
{
GtkWidget *button, *entry;
+ LOG ("Connecting action %p to proxy %p", action, proxy)
+
(* EGG_ACTION_CLASS (parent_class)->connect_proxy) (action, proxy);
ephy_bookmark_action_sync_label (action, NULL, proxy);
@@ -411,9 +364,8 @@ ephy_bookmark_action_class_init (EphyBookmarkActionClass *class)
parent_class = g_type_class_peek_parent (class);
action_class = EGG_ACTION_CLASS (class);
- action_class->toolbar_item_type = EGG_TYPE_TOOL_ITEM;
- action_class->create_tool_item = create_tool_item;
- action_class->create_menu_item = create_menu_item;
+ action_class->toolbar_item_type = EPHY_TYPE_BOOKMARK_TOOLITEM;
+ action_class->menu_item_type = GTK_TYPE_IMAGE_MENU_ITEM;
action_class->connect_proxy = connect_proxy;
object_class->finalize = ephy_bookmark_action_finalize;
diff --git a/src/bookmarks/ephy-bookmark-toolitem.c b/src/bookmarks/ephy-bookmark-toolitem.c
new file mode 100644
index 000000000..1c21b8f1d
--- /dev/null
+++ b/src/bookmarks/ephy-bookmark-toolitem.c
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2003 Christian Persch
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "ephy-bookmark-toolitem.h"
+#include "ephy-marshal.h"
+#include "ephy-debug.h"
+
+#include <gtk/gtk.h>
+#include <gtk/gtkimagemenuitem.h>
+
+static GObjectClass *parent_class = NULL;
+
+static void ephy_bookmark_toolitem_class_init (EphyBookmarkToolitemClass *klass);
+static void ephy_bookmark_toolitem_init (EphyBookmarkToolitem *item);
+
+#define MENU_ID "ephy-bookmark-toolitem-menu-id"
+
+/**
+ * EphyBookmarkToolitem object
+ */
+
+GType
+ephy_bookmark_toolitem_get_type (void)
+{
+ static GType ephy_bookmark_toolitem_type = 0;
+
+ if (ephy_bookmark_toolitem_type == 0)
+ {
+ static const GTypeInfo our_info =
+ {
+ sizeof (EphyBookmarkToolitemClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) ephy_bookmark_toolitem_class_init,
+ NULL,
+ NULL, /* class_data */
+ sizeof (EphyBookmarkToolitem),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) ephy_bookmark_toolitem_init,
+ };
+
+ ephy_bookmark_toolitem_type = g_type_register_static (EGG_TYPE_TOOL_ITEM,
+ "EphyBookmarkToolitem",
+ &our_info, 0);
+ }
+
+ return ephy_bookmark_toolitem_type;
+}
+
+static gboolean
+ephy_bookmark_toolitem_create_menu_proxy (EggToolItem *item)
+{
+ GtkWidget *menu_item, *label, *icon, *image;
+ GdkPixbuf *pixbuf;
+ const char *text;
+
+ LOG ("create menu proxy for %p", item)
+
+ icon = g_object_get_data (G_OBJECT (item), "icon");
+ pixbuf = gtk_image_get_pixbuf (GTK_IMAGE (icon));
+ image = gtk_image_new_from_pixbuf (pixbuf);
+
+ label = g_object_get_data (G_OBJECT (item), "label");
+ text = gtk_label_get_label (GTK_LABEL (label));
+
+ menu_item = gtk_image_menu_item_new_with_mnemonic (text);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), image);
+
+ egg_tool_item_set_proxy_menu_item (item, MENU_ID, menu_item);
+
+ return TRUE;
+}
+
+static void
+ephy_bookmark_toolitem_init (EphyBookmarkToolitem *item)
+{
+ GtkWidget *button, *hbox, *label, *icon, *entry;
+
+ LOG ("Initialising bookmark toolitem %p", item)
+
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox);
+ gtk_container_add (GTK_CONTAINER (item), hbox);
+
+ button = gtk_button_new ();
+ gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
+ gtk_widget_show (button);
+ gtk_container_add (GTK_CONTAINER (hbox), button);
+ g_object_set_data (G_OBJECT (item), "button", button);
+
+ entry = gtk_entry_new ();
+ gtk_widget_set_size_request (entry, 120, -1);
+ gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
+ g_object_set_data (G_OBJECT (item), "entry", entry);
+
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox);
+ gtk_container_add (GTK_CONTAINER (button), hbox);
+
+ icon = gtk_image_new ();
+ gtk_widget_show (icon);
+ gtk_box_pack_start (GTK_BOX (hbox), icon, TRUE, TRUE, 0);
+ g_object_set_data (G_OBJECT (item), "icon", icon);
+
+ label = gtk_label_new (NULL);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+ g_object_set_data (G_OBJECT (item), "label", label);
+}
+
+static void
+ephy_bookmark_toolitem_class_init (EphyBookmarkToolitemClass *klass)
+{
+ EggToolItemClass *tool_item_class;
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ tool_item_class = (EggToolItemClass *)klass;
+
+ tool_item_class->create_menu_proxy = ephy_bookmark_toolitem_create_menu_proxy;
+}
diff --git a/src/bookmarks/ephy-bookmark-toolitem.h b/src/bookmarks/ephy-bookmark-toolitem.h
new file mode 100644
index 000000000..1e817b0b7
--- /dev/null
+++ b/src/bookmarks/ephy-bookmark-toolitem.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2003 Christian Persch
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef EPHY_BOOKMARK_TOOLITEM_H
+#define EPHY_BOOKMARK_TOOLITEM_H
+
+#include "eggtoolitem.h"
+
+G_BEGIN_DECLS
+
+/* object forward declarations */
+
+typedef struct _EphyBookmarkToolitem EphyBookmarkToolitem;
+typedef struct _EphyBookmarkToolitemClass EphyBookmarkToolitemClass;
+typedef struct _EphyBookmarkToolitemPrivate EphyBookmarkToolitemPrivate;
+
+/**
+ * EphyBookmarkToolitem object
+ */
+
+#define EPHY_TYPE_BOOKMARK_TOOLITEM (ephy_bookmark_toolitem_get_type())
+#define EPHY_BOOKMARK_TOOLITEM(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EPHY_TYPE_BOOKMARK_TOOLITEM, EphyBookmarkToolitem))
+#define EPHY_BOOKMARK_TOOLITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EPHY_TYPE_BOOKMARK_TOOLITEM, EphyBookmarkToolitemClass))
+#define EPHY_IS_BOOKMARK_TOOLITEM(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EPHY_TYPE_BOOKMARK_TOOLITEM))
+#define EPHY_IS_BOOKMARK_TOOLITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), EPHY_TYPE_BOOKMARK_TOOLITEM))
+#define EPHY_BOOKMARK_TOOLITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), EPHY_TYPE_BOOKMARK_TOOLITEM, EphyBookmarkToolitemClass))
+
+struct _EphyBookmarkToolitemClass
+{
+ EggToolItemClass parent_class;
+};
+
+struct _EphyBookmarkToolitem
+{
+ EggToolItem parent_object;
+};
+
+GType ephy_bookmark_toolitem_get_type (void);
+
+G_END_DECLS
+
+#endif