////////////////////////////////////////////////////////////////////////////////
#include <gtk/gtk.h>
// このプログラム内で使う色の定義をしておく
static GdkColor colorBlue;
static GdkColor colorRed;
static GdkColor colorYellow;
static GdkColor colorGray;
static GdkColor colorLightGray;
static GdkColor colorCustom01 = {0, 0xAAAA, 0x1234, 0xF0F0};
static GdkColor colorCustom02;
// このプログラム内で使う色の設定
static void
set_color (void)
{
// gdk_color_parseは、色名称、もしくは24bitのRGB表記でもいい
// 色名称は、rgb.txtで定義されているものが使用可能らしい。SL6.1では、/usr/share/X11/rgb.txt
gdk_color_parse ("blue", &colorBlue);
gdk_color_parse ("red", &colorRed);
gdk_color_parse ("yellow", &colorYellow);
gdk_color_parse ("gray", &colorGray);
gdk_color_parse ("lightgray", &colorLightGray);
gdk_color_parse("#20F0DF", &colorCustom02);
}
int
main (int argc, char **argv)
{
GtkWidget *window;
GtkWidget *vbox;
gtk_init (&argc, &argv);
set_color();
/* create window, etc */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Widget_color1");
gtk_container_set_border_width (GTK_CONTAINER (window), 2);
g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_set_size_request (window, 400, 140);
vbox = gtk_vbox_new (FALSE, 2);
gtk_container_add (GTK_CONTAINER (window), vbox);
{
GtkWidget *top_event_box;
GtkWidget *mid_hbox;
GtkWidget *bottom_event_box;
// labelのbackgroundに直接色を付けることはできないようで
// labelをevent_boxの中に入れてevent_boxのbackgroundに色指定をすると
// labelのbackgroundに色が付く。
top_event_box = gtk_event_box_new ();
gtk_widget_modify_bg (top_event_box, GTK_STATE_NORMAL, &colorGray);
gtk_box_pack_start (GTK_BOX (vbox), top_event_box, TRUE, TRUE, 2);
{
GtkWidget *top_label;
top_label = gtk_label_new ("TOP LABEL");
// labelのforegroundの色を変更する。
gtk_widget_modify_fg (top_label, GTK_STATE_NORMAL, &colorRed);
gtk_container_add (GTK_CONTAINER (top_event_box), top_label);
}
mid_hbox = gtk_hbox_new (FALSE, 2);
gtk_box_pack_start (GTK_BOX (vbox), mid_hbox, TRUE, TRUE, 2);
{
GtkWidget *entry00;
GtkWidget *entry01;
GtkWidget *button;
entry00 = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (mid_hbox), entry00, TRUE, TRUE, 2);
// entryのbaseの色を変更する。
// ここでは、baseの色=backgroundの色と考えていいようだ
gtk_widget_modify_base (entry00, GTK_STATE_NORMAL, &colorGray);
button = gtk_button_new_with_label ("BUTTON");
gtk_widget_set_size_request (button, 160, 32);
gtk_box_pack_start (GTK_BOX (mid_hbox), button, FALSE, FALSE, 2);
// buttonのbackgroundの色を3状態それぞれ設定可能
// なにもしてないときの色
gtk_widget_modify_bg(button, GTK_STATE_NORMAL, &colorCustom01 );
// マウスオーバしたときの色
gtk_widget_modify_bg(button, GTK_STATE_PRELIGHT,&colorCustom02 );
// buttonを押したときの色
gtk_widget_modify_bg(button, GTK_STATE_ACTIVE, &colorBlue );
// buttonが選択状態のときの色
gtk_widget_modify_bg(button, GTK_STATE_SELECTED, &colorRed );
entry01 = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (mid_hbox), entry01, TRUE, TRUE, 2);
gtk_widget_modify_base (entry01, GTK_STATE_NORMAL, &colorLightGray);
}
bottom_event_box = gtk_event_box_new ();
gtk_widget_modify_bg (bottom_event_box, GTK_STATE_NORMAL, &colorYellow);
gtk_box_pack_start (GTK_BOX (vbox), bottom_event_box, TRUE, TRUE, 2);
{
GtkWidget *bottom_label;
bottom_label = gtk_label_new ("BOTTOM LABEL");
gtk_widget_modify_fg (bottom_label, GTK_STATE_NORMAL, &colorBlue);
gtk_container_add (GTK_CONTAINER (bottom_event_box), bottom_label);
}
}
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
/////////////////////////////////////// EOF ////////////////////////////////////
|