mind_reader.c
#include <gtk/gtk.h>
gchar *str[] = {"♠","♣","♥","♬","♪","♩","♭","☏","♂","♀","☺",
"♧","♡","◊","☆","☊","☋","の","£","☪","♋","☯",
"☂","✈","✉","☈","♨","@","㊣","⊕","あ","§","¥"};
struct A
{
GtkWidget *label;
};
GtkWidget *show_label;
struct A a[100];
GtkWidget *btn;
gint j,id;
PangoFontDescription *desc;
void on_mouse_click();
void reset()
{
gint i,index;
gchar buf[10];
for (i=0;i<100;i++)
{
index = g_random_int_range(0,33);
g_sprintf(buf,"%d:%s",i,str[index]);
if (i==9)
j = index;
if (i>9 && i<90 && !(i%9))
g_sprintf(buf,"%d:%s",i,str[j]);
gtk_label_set_text(GTK_LABEL(a[i].label),buf);
}
gtk_label_set_text(GTK_LABEL(show_label),"");
gtk_button_set_label(GTK_BUTTON(btn),"OK");
g_signal_handler_disconnect(G_OBJECT(btn),id);
id = g_signal_connect(G_OBJECT(btn),"button-press-event",
G_CALLBACK(on_mouse_click),NULL);
}
void on_mouse_click()
{
gtk_label_set_text(GTK_LABEL(show_label),str[j]);
desc = pango_font_description_from_string("Simhei 100");
gtk_widget_modify_font(show_label,desc);
gtk_button_set_label(GTK_BUTTON(btn),"Try again");
g_signal_handler_disconnect(G_OBJECT(btn),id);
id = g_signal_connect(G_OBJECT(btn),"button-press-event",
G_CALLBACK(reset),NULL);
}
void creat_ui()
{
GtkWidget *window;
GtkWidget *hbox;
GtkWidget *vbox;
GtkWidget *button;
GtkWidget *frame;
GtkWidget *separator;
GtkWidget *label;
gint i,index;
gchar buf[10];
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Mind_Reader");
g_signal_connect(G_OBJECT(window), "delete_event",G_CALLBACK(gtk_main_quit), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 20);
// gtk_widget_set_size_request(window,500,400);
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
hbox = gtk_hbox_new(FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), hbox);
vbox=gtk_vbox_new(FALSE, 0);
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
frame = gtk_frame_new("Amazing");
// gtk_widget_set_usize(frame, 100, 200);
show_label = gtk_label_new("");
gtk_widget_set_usize(show_label, 100, 200);
gtk_container_add (GTK_CONTAINER (frame), show_label);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 5);
// separator = gtk_hseparator_new();
// gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, TRUE,5);
frame = gtk_frame_new("Rule");
label = gtk_label_new("Choose any two digit number,add together both digits and then subtract the total from your original number./n" /
"When you have the final number, look it up on the chart and find the relevant symbol, and remember it./n" /
"Then click on the 'OK', and it will show you the symbol you are remember ...");
desc = pango_font_description_from_string("Simhei 10");
gtk_widget_modify_font(label,desc);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
// gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_container_add (GTK_CONTAINER (frame), label);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 5);
separator = gtk_hseparator_new();
gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, TRUE,5);
btn = gtk_button_new_with_label("OK");
id = g_signal_connect(G_OBJECT(btn),"button-press-event",
G_CALLBACK(on_mouse_click),NULL);
gtk_box_pack_start (GTK_BOX (vbox), btn, FALSE, TRUE,5);
for (i=0; i<100; i++)
{
if (!(i%20))
{
vbox=gtk_vbox_new(FALSE, 0);
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
}
index = g_random_int_range(0,33);
g_sprintf(buf,"%d:%s",i,str[index]);
if (i==9)
j = index;
if (i>9 && i<90 && !(i%9))
g_sprintf(buf,"%d:%s",i,str[j]);
label = gtk_label_new(buf);
desc = pango_font_description_from_string("Simhei 12");
gtk_widget_modify_font(label,desc);
a[i].label = label;
gtk_widget_set_usize(label, 40, 20);
gtk_box_pack_start(GTK_BOX(vbox),label, FALSE, FALSE, 0);
/*
button = gtk_button_new_with_label(buf);
gtk_widget_set_usize(button, 50, 30);
gtk_box_pack_start(GTK_BOX(vbox),button, FALSE, FALSE, 0);
*/
}
gtk_widget_show_all(window);
}
gint main(gint argc, gchar **argv)
{
gtk_init(&argc, &argv);
creat_ui();
gtk_main();
return 0;
}
Makefile
CC = gcc
CFLAGS = -Wall /
-DG_DISABLE_DEPRECATED /
-DGDK_DISABLE_DEPRECATED /
-DGDK_PIXBUF_DISABLE_DEPRECATED /
-DGTK_DISABLE_DEPRECATED
mind_reader: mind_reader.c
$(CC) mind_reader.c -o mind_reader $(DEPRECTATED) `pkg-config gtk+-2.0 --cflags --libs`
clean:
rm -f *.o mind_reader