文字表示色を変更するにはレンダラに対して表示色を指定します。
GtkTreeViewでは
gtk_tree_view_column_set_cell_data_func()で表示データ加工用の関数を登録し、その関数内でデータ加工や表示色変更を行います。
これと同じことを
GtkIconView用の方法で行います。
まずレンダラを取得します。
GtkIconViewは
GtkCellLayoutインターフェイスを実装しているので、そのインターフェイス関数を使用します。
gtk_cell_layout_get_cells()を呼び出すとレンダラのリストを返すので、その中から目的のレンダラ、今回は
GtkCellRendererTextを探しだします。
GtkCellRendererTextが見つかったら
gtk_cell_layout_set_cell_data_func()で表示データ加工用の関数を登録します。
ここまでできたら後は登録した関数で表示色の設定を行えば文字表示色を変更することができます。
サンプルです。
gtkiconview_color.c
文字コードはUTF-8です。
void (*GtkCellLayoutDataFunc) ( GtkCellLayout *cell_layout,
GtkCellRenderer *cell
GtkTreeModel *tree_model,
GtkTreeIter *iter,
gpointer data );
ここまできたら後はレンダラに表示色を指定するだけです。
サンプルではカラフルになるように表示順で色が変るようにしています。
g_object_set()でレンダラのプロパティ
foreground-gdk、
background-gdkに変更する色を
GdkColorで指定します。
また、
xalignを指定してセンタリングするようにしています。
typedef struct {
guint32 pixel;
guint16 red;
guint16 green;
guint16 blue;
} GdkColor;