summaryrefslogtreecommitdiff
path: root/demos
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2010-04-26 11:55:34 +0100
committerBastien Nocera <hadess@hadess.net>2010-04-28 12:02:05 +0100
commit6b939d57c762f58a9f8d529024b7171ff70b6986 (patch)
tree04bf5bcb6aeb62c01c62edb40e9c4036fc8e98e5 /demos
parent3cc9575323b4ca8c6d82572f1bfe3eb23555fdb3 (diff)
downloadgtk+-6b939d57c762f58a9f8d529024b7171ff70b6986.tar.gz
Support 'symbolic' themed icons
Add gtk_icon_info_load_symbolic() to load symbolic icons, and theme their background/foreground colours to match the colours used in the theme. Adds the gtk_icon_info_load_symbolic() function, explicit support in GtkImage and GtkCellRendererPixbuf, and test cases for those 2 widgets. With help from Bastien Nocera <hadess@hadess.net> https://bugzilla.gnome.org/show_bug.cgi?id=614711
Diffstat (limited to 'demos')
-rw-r--r--demos/gtk-demo/images.c21
-rw-r--r--demos/gtk-demo/list_store.c30
2 files changed, 51 insertions, 0 deletions
diff --git a/demos/gtk-demo/images.c b/demos/gtk-demo/images.c
index 9eaac39c0f..eb3f1d9484 100644
--- a/demos/gtk-demo/images.c
+++ b/demos/gtk-demo/images.c
@@ -317,6 +317,7 @@ do_images (GtkWidget *do_widget)
GtkWidget *align;
GtkWidget *button;
GdkPixbuf *pixbuf;
+ GIcon *gicon;
GError *error = NULL;
char *filename;
@@ -415,6 +416,26 @@ do_images (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (frame), image);
+ /* Symbolic icon */
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label),
+ "<u>Symbolic themed icon</u>");
+ gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+ frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
+ /* The alignment keeps the frame from growing when users resize
+ * the window
+ */
+ align = gtk_alignment_new (0.5, 0.5, 0, 0);
+ gtk_container_add (GTK_CONTAINER (align), frame);
+ gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
+
+ gicon = g_themed_icon_new_with_default_fallbacks ("battery-critical-charging-symbolic");
+ image = gtk_image_new_from_gicon (gicon, GTK_ICON_SIZE_DIALOG);
+
+ gtk_container_add (GTK_CONTAINER (frame), image);
/* Progressive */
diff --git a/demos/gtk-demo/list_store.c b/demos/gtk-demo/list_store.c
index 009cd97993..e5c72bab67 100644
--- a/demos/gtk-demo/list_store.c
+++ b/demos/gtk-demo/list_store.c
@@ -29,7 +29,9 @@ enum
COLUMN_SEVERITY,
COLUMN_DESCRIPTION,
COLUMN_PULSE,
+ COLUMN_ICON,
COLUMN_ACTIVE,
+ COLUMN_SENSITIVE,
NUM_COLUMNS
};
@@ -92,11 +94,24 @@ create_model (void)
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_UINT,
+ G_TYPE_STRING,
+ G_TYPE_BOOLEAN,
G_TYPE_BOOLEAN);
/* add data to the list store */
for (i = 0; i < G_N_ELEMENTS (data); i++)
{
+ gchar *icon_name;
+ gboolean sensitive;
+
+ if (i == 1 || i == 3)
+ icon_name = "battery-critical-charging-symbolic";
+ else
+ icon_name = NULL;
+ if (i == 3)
+ sensitive = FALSE;
+ else
+ sensitive = TRUE;
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
COLUMN_FIXED, data[i].fixed,
@@ -104,7 +119,9 @@ create_model (void)
COLUMN_SEVERITY, data[i].severity,
COLUMN_DESCRIPTION, data[i].description,
COLUMN_PULSE, 0,
+ COLUMN_ICON, icon_name,
COLUMN_ACTIVE, FALSE,
+ COLUMN_SENSITIVE, sensitive,
-1);
}
@@ -199,6 +216,19 @@ add_columns (GtkTreeView *treeview)
NULL);
gtk_tree_view_column_set_sort_column_id (column, COLUMN_PULSE);
gtk_tree_view_append_column (treeview, column);
+
+ /* column for symbolic icon */
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ g_object_set (G_OBJECT (renderer), "follow-state", TRUE, NULL);
+ column = gtk_tree_view_column_new_with_attributes ("Symbolic icon",
+ renderer,
+ "icon-name",
+ COLUMN_ICON,
+ "sensitive",
+ COLUMN_SENSITIVE,
+ NULL);
+ gtk_tree_view_column_set_sort_column_id (column, COLUMN_ICON);
+ gtk_tree_view_append_column (treeview, column);
}
static gboolean