がんばって英語で書くブログ
英語勉強中なので、ブログも英語で書こうかと。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

GTK+ studying2
GTK+ memo part2.
this is check button test.


#define _GNU_SOURCE
#include <stdio.h>
#include <gtk/gtk.h>

struct check_button_array {
GtkWidget *button[3];
};

static gboolean button_clicked(GtkWidget *widget,
gpointer data)
{
struct check_button_array *p = (struct check_button_array *) data;
int i = 0;
int size = sizeof(p->button) / sizeof(p->button[0]);

for (i = 0; i < size; i++) {
GtkWidget *chk = p->button[i];
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk)))
g_print("button % is active\n", i);
}


return FALSE;
}

static GtkWidget *create_button(struct check_button_array *check_buttons)
{
GtkWidget *button;

button = gtk_button_new_with_label("ok");
g_signal_connect(G_OBJECT(button), "clicked",
G_CALLBACK(button_clicked), check_buttons);

return button;
}

static GtkWidget *create_check_button(char *label)
{
return gtk_check_button_new_with_label(label);
}

void create_window(void)
{
GtkWidget *window;
GtkWidget *vbox1;
GtkWidget *vbox2;
GtkWidget *hbox;
GtkWidget *button;
GtkWidget *separator;

int i = 0;
static struct check_button_array check_buttons;
int size = sizeof(check_buttons.button) / sizeof(check_buttons.button[0]);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "button-test");

gtk_container_set_border_width(GTK_CONTAINER(window), 5);
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);


vbox1 = gtk_vbox_new(FALSE,0);
vbox2 = gtk_vbox_new(FALSE, 0);
hbox = gtk_hbox_new(TRUE, 5);

gtk_container_add(GTK_CONTAINER(vbox1), hbox);

for (i = 0; i < size; i++) {
char *title = NULL;

asprintf(&title, "check%d", i);
check_buttons.button[i] = create_check_button(title);

gtk_box_pack_start(GTK_BOX(hbox), check_buttons.button[i], TRUE, TRUE, 0);

gtk_widget_show(check_buttons.button[i]);
}

gtk_widget_show(hbox);

gtk_container_add(GTK_CONTAINER(window), vbox1);
gtk_widget_show(vbox1);

separator = gtk_hseparator_new ();
gtk_box_pack_start(GTK_BOX(vbox1), separator, FALSE, TRUE, 0);
gtk_widget_show(separator);

button = create_button(&check_buttons);
gtk_box_pack_start(GTK_BOX(vbox2), button, TRUE, TRUE, 0);
gtk_widget_show(button);

gtk_container_add(GTK_CONTAINER(vbox1), vbox2);
gtk_widget_show(vbox2);

gtk_widget_show(window);

}

int main(int argc, char **argv)
{
gtk_init(&argc, &argv);

create_window();

gtk_main();

return 0;
}


スポンサーサイト

テーマ:英語日記 - ジャンル:学問・文化・芸術

この記事に対するコメント

この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://foobar.blog23.fc2.com/tb.php/157-57215103
この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。