371 lines
16 KiB
Diff
371 lines
16 KiB
Diff
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
|
|
|