blob: 60cbca68fd4046e2fe8dc12557d4e1d35090c4d6 [file] [log] [blame] [edit]
diff -rup gdl-2.31.2/gdl/gdl-dock-bar.c gdl-2.31.2-ricky/gdl/gdl-dock-bar.c
--- gdl-2.31.2/gdl/gdl-dock-bar.c 2010-05-02 20:03:06.000000000 +0800
+++ gdl-2.31.2-ricky/gdl/gdl-dock-bar.c 2013-07-01 15:25:01.795260400 +0800
@@ -269,6 +269,7 @@ gdl_dock_bar_add_item (GdlDockBar *dock
GtkWidget *button;
gchar *stock_id;
gchar *name;
+ GdkPixbuf *pixbuf_icon;
GtkWidget *image, *box, *label;
g_return_if_fail (GDL_IS_DOCK_BAR (dockbar));
@@ -293,6 +294,8 @@ gdl_dock_bar_add_item (GdlDockBar *dock
box = gtk_vbox_new (FALSE, 0);
g_object_get (item, "stock-id", &stock_id, "long-name", &name, NULL);
+ g_object_get (item, "stock-id", &stock_id, "pixbuf-icon", &pixbuf_icon,
+ "long-name", &name, NULL);
if (dockbar->_priv->dockbar_style == GDL_DOCK_BAR_TEXT ||
dockbar->_priv->dockbar_style == GDL_DOCK_BAR_BOTH) {
@@ -311,7 +314,9 @@ gdl_dock_bar_add_item (GdlDockBar *dock
image = gtk_image_new_from_stock (stock_id,
GTK_ICON_SIZE_SMALL_TOOLBAR);
g_free (stock_id);
- } else {
+ } else if(pixbuf_icon){
+ image = gtk_image_new_from_pixbuf (pixbuf_icon);
+ }else {
image = gtk_image_new_from_stock (GTK_STOCK_NEW,
GTK_ICON_SIZE_SMALL_TOOLBAR);
}
diff -rup gdl-2.31.2/gdl/gdl-dock-item.c gdl-2.31.2-ricky/gdl/gdl-dock-item.c
--- gdl-2.31.2/gdl/gdl-dock-item.c 2010-05-03 03:53:28.000000000 +0800
+++ gdl-2.31.2-ricky/gdl/gdl-dock-item.c 2013-07-02 09:33:19.280291200 +0800
@@ -177,6 +177,7 @@ struct _GdlDockItemPrivate {
gboolean intern_tab_label;
guint notify_label;
guint notify_stock_id;
+ guint notify_pixbuf_icon;
gint preferred_width;
gint preferred_height;
@@ -444,11 +445,21 @@ on_stock_id_changed (GObject* item,
gpointer user_data)
{
gchar* stock_id;
- g_object_get (item, "stock_id", &stock_id, NULL);
+ g_object_get (item, "stock-id", &stock_id, NULL);
gtk_image_set_from_stock (GTK_IMAGE (user_data), stock_id, GTK_ICON_SIZE_MENU);
g_free(stock_id);
}
+static void
+on_pixbuf_icon_changed (GObject* item,
+ GParamSpec* spec,
+ gpointer user_data)
+{
+ GdkPixbuf* pixbuf_icon;
+ g_object_get (item, "pixbuf-icon", &pixbuf_icon, NULL);
+ gtk_image_set_from_pixbuf(GTK_IMAGE (user_data), pixbuf_icon);
+}
+
static GObject *
gdl_dock_item_constructor (GType type,
guint n_construct_properties,
@@ -469,6 +480,7 @@ gdl_dock_item_constructor (GType
GtkWidget *icon;
gchar* long_name;
gchar* stock_id;
+ GdkPixbuf *pixbuf_icon;
if (GDL_DOCK_ITEM_HAS_GRIP (item)) {
item->_priv->grip_shown = TRUE;
@@ -481,6 +493,8 @@ gdl_dock_item_constructor (GType
}
g_object_get (g_object, "long-name", &long_name, "stock-id", &stock_id, NULL);
+ g_object_get (g_object, "long-name", &long_name, "stock-id", &stock_id,
+ "pixbuf-icon", &pixbuf_icon,NULL);
hbox = gtk_hbox_new (FALSE, 5);
label = gtk_label_new (long_name);
@@ -488,6 +502,9 @@ gdl_dock_item_constructor (GType
if (stock_id)
gtk_image_set_from_stock (GTK_IMAGE (icon), stock_id,
GTK_ICON_SIZE_MENU);
+ else if(pixbuf_icon)
+ gtk_image_set_from_pixbuf (GTK_IMAGE (icon), pixbuf_icon);
+
gtk_box_pack_start (GTK_BOX (hbox), icon, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
@@ -497,6 +514,9 @@ gdl_dock_item_constructor (GType
item->_priv->notify_stock_id =
g_signal_connect (item, "notify::stock-id", G_CALLBACK (on_stock_id_changed),
icon);
+ item->_priv->notify_pixbuf_icon =
+ g_signal_connect (item, "notify::pixbuf-icon", G_CALLBACK (on_pixbuf_icon_changed),
+ icon);
gtk_widget_show_all (hbox);
@@ -1722,6 +1742,28 @@ gdl_dock_item_new_with_stock (const gcha
return GTK_WIDGET (item);
}
+GtkWidget *
+gdl_dock_item_new_with_pixbuf_icon (const gchar *name,
+ const gchar *long_name,
+ const GdkPixbuf *pixbuf_icon,
+ GdlDockItemBehavior behavior)
+{
+ GdlDockItem *item;
+
+ item = GDL_DOCK_ITEM (g_object_new (GDL_TYPE_DOCK_ITEM,
+ "name", name,
+ "long-name", long_name,
+ "pixbuf-icon", pixbuf_icon,
+ "behavior", behavior,
+ NULL));
+
+ GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_AUTOMATIC);
+ gdl_dock_item_set_tablabel (item, gtk_label_new (long_name));
+
+ return GTK_WIDGET (item);
+}
+
+
/* convenient function (and to preserve source compat) */
/**
* gdl_dock_item_dock_to:
@@ -1842,6 +1884,7 @@ gdl_dock_item_set_tablabel (GdlDockItem
item->_priv->intern_tab_label = FALSE;
g_signal_handler_disconnect (item, item->_priv->notify_label);
g_signal_handler_disconnect (item, item->_priv->notify_stock_id);
+ g_signal_handler_disconnect (item, item->_priv->notify_pixbuf_icon);
}
if (item->_priv->tab_label) {
diff -rup gdl-2.31.2/gdl/gdl-dock-item.h gdl-2.31.2-ricky/gdl/gdl-dock-item.h
--- gdl-2.31.2/gdl/gdl-dock-item.h 2010-04-11 21:26:30.000000000 +0800
+++ gdl-2.31.2-ricky/gdl/gdl-dock-item.h 2013-07-01 15:30:01.489563500 +0800
@@ -142,6 +142,12 @@ GtkWidget *gdl_dock_item_new_with_st
const gchar *stock_id,
GdlDockItemBehavior behavior);
+GtkWidget *gdl_dock_item_new_with_pixbuf_icon (const gchar *name,
+ const gchar *long_name,
+ const GdkPixbuf *pixbuf_icon,
+ GdlDockItemBehavior behavior);
+
+
GType gdl_dock_item_get_type (void);
void gdl_dock_item_dock_to (GdlDockItem *item,
diff -rup gdl-2.31.2/gdl/gdl-dock-item-grip.c gdl-2.31.2-ricky/gdl/gdl-dock-item-grip.c
--- gdl-2.31.2/gdl/gdl-dock-item-grip.c 2010-05-02 20:03:06.000000000 +0800
+++ gdl-2.31.2-ricky/gdl/gdl-dock-item-grip.c 2013-07-01 15:27:55.387563500 +0800
@@ -69,10 +69,12 @@ gdl_dock_item_create_label_widget(GdlDoc
GtkLabel *label;
gchar *stock_id = NULL;
gchar *title = NULL;
+ GdkPixbuf *pixbuf;
label_box = (GtkHBox*)gtk_hbox_new (FALSE, 0);
g_object_get (G_OBJECT (grip->item), "stock-id", &stock_id, NULL);
+ g_object_get (G_OBJECT (grip->item), "pixbuf-icon", &pixbuf, NULL);
if(stock_id) {
image = GTK_IMAGE(gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU));
@@ -81,6 +83,12 @@ gdl_dock_item_create_label_widget(GdlDoc
g_free (stock_id);
}
+ else if(pixbuf){
+ image = GTK_IMAGE(gtk_image_new_from_pixbuf (pixbuf));
+
+ gtk_widget_show (GTK_WIDGET(image));
+ gtk_box_pack_start(GTK_BOX(label_box), GTK_WIDGET(image), FALSE, TRUE, 0);
+ }
g_object_get (G_OBJECT (grip->item), "long-name", &title, NULL);
if (title) {
diff -rup gdl-2.31.2/gdl/gdl-dock-notebook.c gdl-2.31.2-ricky/gdl/gdl-dock-notebook.c
--- gdl-2.31.2/gdl/gdl-dock-notebook.c 2010-04-24 19:42:49.000000000 +0800
+++ gdl-2.31.2-ricky/gdl/gdl-dock-notebook.c 2013-07-02 11:56:58.058942800 +0800
@@ -388,11 +388,12 @@ gdl_dock_notebook_dock (GdlDockObject
GdlDockItem *item = GDL_DOCK_ITEM (object);
GdlDockItem *requestor_item = GDL_DOCK_ITEM (requestor);
gchar *long_name, *stock_id;
+ GdkPixbuf *pixbuf_icon;
GtkWidget *label;
gint position = -1;
g_object_get (requestor_item, "long-name", &long_name,
- "stock-id", &stock_id, NULL);
+ "stock-id", &stock_id, "pixbuf-icon", &pixbuf_icon, NULL);
label = gdl_dock_item_get_tablabel (requestor_item);
if (!label) {
label = gtk_label_new (long_name);
@@ -412,7 +413,7 @@ gdl_dock_notebook_dock (GdlDockObject
position = gdl_switcher_insert_page (GDL_SWITCHER (item->child),
GTK_WIDGET (requestor), label,
long_name, long_name,
- stock_id, position);
+ stock_id, pixbuf_icon, position);
GDL_DOCK_OBJECT_SET_FLAGS (requestor, GDL_DOCK_ATTACHED);
diff -rup gdl-2.31.2/gdl/gdl-dock-object.c gdl-2.31.2-ricky/gdl/gdl-dock-object.c
--- gdl-2.31.2/gdl/gdl-dock-object.c 2010-05-02 20:03:06.000000000 +0800
+++ gdl-2.31.2-ricky/gdl/gdl-dock-object.c 2013-07-01 16:37:45.281565200 +0800
@@ -81,6 +81,7 @@ enum {
PROP_NAME,
PROP_LONG_NAME,
PROP_STOCK_ID,
+ PROP_PIXBUF_ICON,
PROP_MASTER,
PROP_EXPORT_PROPERTIES
};
@@ -137,6 +138,12 @@ gdl_dock_object_class_init (GdlDockObjec
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
g_object_class_install_property (
+ g_object_class, PROP_PIXBUF_ICON,
+ g_param_spec_pointer ("pixbuf-icon", _("Pixbuf Icon"),
+ _("Pixbuf icon for the dock object"),
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (
g_object_class, PROP_MASTER,
g_param_spec_object ("master", _("Dock master"),
_("Dock master this dock object is bound to"),
@@ -213,6 +220,9 @@ gdl_dock_object_set_property (GObject
g_free (object->stock_id);
object->stock_id = g_value_dup_string (value);
break;
+ case PROP_PIXBUF_ICON:
+ object->pixbuf_icon = g_value_get_pointer (value);
+ break;
case PROP_MASTER:
if (g_value_get_object (value))
gdl_dock_object_bind (object, g_value_get_object (value));
@@ -243,6 +253,9 @@ gdl_dock_object_get_property (GObject
case PROP_STOCK_ID:
g_value_set_string (value, object->stock_id);
break;
+ case PROP_PIXBUF_ICON:
+ g_value_set_pointer (value, object->pixbuf_icon);
+ break;
case PROP_MASTER:
g_value_set_object (value, object->master);
break;
diff -rup gdl-2.31.2/gdl/gdl-dock-object.h gdl-2.31.2-ricky/gdl/gdl-dock-object.h
--- gdl-2.31.2/gdl/gdl-dock-object.h 2010-04-11 21:26:30.000000000 +0800
+++ gdl-2.31.2-ricky/gdl/gdl-dock-object.h 2013-07-01 15:50:02.935563500 +0800
@@ -88,6 +88,7 @@ struct _GdlDockObject {
gchar *name;
gchar *long_name;
gchar *stock_id;
+ GdkPixbuf *pixbuf_icon;
gboolean reduce_pending;
};
diff -rup gdl-2.31.2/gdl/gdl-switcher.c gdl-2.31.2-ricky/gdl/gdl-switcher.c
--- gdl-2.31.2/gdl/gdl-switcher.c 2010-05-02 20:09:27.000000000 +0800
+++ gdl-2.31.2-ricky/gdl/gdl-switcher.c 2013-07-02 09:18:28.271970500 +0800
@@ -51,6 +51,7 @@ static void gdl_switcher_add_button (Gd
const gchar *label,
const gchar *tooltips,
const gchar *stock_id,
+ const GdkPixbuf *pixbuf_icon,
gint switcher_id,
GtkWidget *page);
/* static void gdl_switcher_remove_button (GdlSwitcher *switcher, gint switcher_id); */
@@ -125,6 +126,18 @@ gdl_switcher_stock_id_changed (GObject*
g_free (id);
}
+static void
+gdl_switcher_pixbuf_icon_changed (GObject* object,
+ GParamSpec* spec,
+ gpointer user_data)
+{
+ Button* button = user_data;
+ GdkPixbuf* pixbuf_icon;
+
+ g_object_get (object, "pixbuf-icon", &pixbuf_icon, NULL);
+ gtk_image_set_from_pixbuf (GTK_IMAGE(button->icon),pixbuf_icon);
+}
+
static Button *
button_new (GtkWidget *button_widget, GtkWidget *label, GtkWidget *icon,
@@ -144,6 +157,8 @@ button_new (GtkWidget *button_widget, Gt
button);
g_signal_connect (page, "notify::stock-id", G_CALLBACK (gdl_switcher_stock_id_changed),
button);
+ g_signal_connect (page, "notify::pixbuf-icon", G_CALLBACK (gdl_switcher_pixbuf_icon_changed),
+ button);
g_object_ref (button_widget);
g_object_ref (label);
@@ -670,8 +685,8 @@ gdl_switcher_page_added_cb (GtkNotebook
switcher_id = gdl_switcher_get_page_id (page);
- gdl_switcher_add_button (GDL_SWITCHER (switcher), NULL, NULL, NULL,
- switcher_id, page);
+ gdl_switcher_add_button (GDL_SWITCHER (switcher), NULL, NULL, NULL, NULL,
+ switcher_id, page);
gdl_switcher_select_button (GDL_SWITCHER (switcher), switcher_id);
}
@@ -781,6 +796,7 @@ gdl_switcher_new (void)
void
gdl_switcher_add_button (GdlSwitcher *switcher, const gchar *label,
const gchar *tooltips, const gchar *stock_id,
+ const GdkPixbuf *pixbuf_icon,
gint switcher_id, GtkWidget* page)
{
GtkWidget *event_box;
@@ -803,8 +819,15 @@ gdl_switcher_add_button (GdlSwitcher *sw
gtk_container_add (GTK_CONTAINER (button_widget), hbox);
gtk_widget_show (hbox);
- icon_widget = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU);
- gtk_widget_show (icon_widget);
+ if (stock_id) {
+ icon_widget = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU);
+ } else if (pixbuf_icon) {
+ icon_widget = gtk_image_new_from_pixbuf (pixbuf_icon);
+ } else {
+ icon_widget = gtk_image_new_from_stock (GTK_STOCK_NEW, GTK_ICON_SIZE_MENU);
+ }
+
+ gtk_widget_show (icon_widget);
if (!label) {
gchar *text = g_strdup_printf ("Item %d", switcher_id);
@@ -881,7 +904,7 @@ gint
gdl_switcher_insert_page (GdlSwitcher *switcher, GtkWidget *page,
GtkWidget *tab_widget, const gchar *label,
const gchar *tooltips, const gchar *stock_id,
- gint position)
+ const GdkPixbuf *pixbuf_icon, gint position)
{
gint ret_position;
gint switcher_id;
@@ -894,7 +917,7 @@ gdl_switcher_insert_page (GdlSwitcher *s
gtk_widget_show (tab_widget);
}
switcher_id = gdl_switcher_get_page_id (page);
- gdl_switcher_add_button (switcher, label, tooltips, stock_id, switcher_id, page);
+ gdl_switcher_add_button (switcher, label, tooltips, stock_id, pixbuf_icon, switcher_id, page);
ret_position = gtk_notebook_insert_page (GTK_NOTEBOOK (switcher), page,
tab_widget, position);
diff -rup gdl-2.31.2/gdl/gdl-switcher.h gdl-2.31.2-ricky/gdl/gdl-switcher.h
--- gdl-2.31.2/gdl/gdl-switcher.h 2010-04-11 21:26:30.000000000 +0800
+++ gdl-2.31.2-ricky/gdl/gdl-switcher.h 2013-07-01 15:43:38.083563500 +0800
@@ -60,6 +60,7 @@ gint gdl_switcher_insert_page (Gd
const gchar *label,
const gchar *tooltips,
const gchar *stock_id,
+ const GdkPixbuf *pixbuf_icon,
gint position);
G_END_DECLS