⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pack.c

📁 gtk1.2的教程
💻 C
📖 第 1 页 / 共 2 页
字号:
/*  *  This is a demo of gtkpacker.  */#include <gtk/gtk.h>void add_widget (GtkWidget *widget, gpointer data);void toggle_side (GtkWidget *widget, gpointer data);void toggle_anchor (GtkWidget *widget, gpointer data);void toggle_options (GtkWidget *widget, gpointer data);typedef struct {    GList     *widgets;    GtkWidget *packer;    GtkWidget *current;    GtkPackerChild *pchild;    GtkWidget *button_top;    GtkWidget *button_bottom;    GtkWidget *button_left;    GtkWidget *button_right;    GtkWidget *button_n;    GtkWidget *button_ne;    GtkWidget *button_nw;    GtkWidget *button_e;    GtkWidget *button_w;    GtkWidget *button_s;    GtkWidget *button_se;    GtkWidget *button_sw;    GtkWidget *button_center;    GtkWidget *button_fillx;    GtkWidget *button_filly;    GtkWidget *button_expand;} Info;void destroy (GtkWidget *widget, gpointer data){    gtk_main_quit ();}intmain (int argv, char **argc){    GtkWidget *window;    GtkWidget *window_pack;    GtkWidget *top_pack;    GtkWidget *frame;    GtkWidget *packer;    GtkWidget *button_pack;    GtkWidget *button_add;    GtkWidget *button_quit;    GtkWidget *bottom_pack;    GtkWidget *side_frame;    GtkWidget *side_pack;    GtkWidget *button_top;    GtkWidget *button_bottom;    GtkWidget *button_left;    GtkWidget *button_right;    GtkWidget *anchor_table;    GtkWidget *anchor_frame;    GtkWidget *button_n;    GtkWidget *button_ne;    GtkWidget *button_nw;    GtkWidget *button_e;    GtkWidget *button_w;    GtkWidget *button_center;    GtkWidget *button_s;    GtkWidget *button_se;    GtkWidget *button_sw;    GtkWidget *button_expand;    GtkWidget *button_fillx;    GtkWidget *button_filly;    GtkWidget *options_pack;    GtkWidget *options_frame;    GtkWidget *anchor_pack;    Info *info;    gtk_init(&argv, &argc);    info = g_malloc(sizeof(Info));    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);    gtk_signal_connect (GTK_OBJECT (window), "destroy",                        GTK_SIGNAL_FUNC (destroy), NULL);    window_pack = gtk_packer_new();    gtk_container_add(GTK_CONTAINER(window), window_pack);    gtk_container_border_width(GTK_CONTAINER(window), 4);    top_pack = gtk_packer_new();    gtk_packer_add_defaults(GTK_PACKER(window_pack),                            top_pack,                            GTK_SIDE_TOP,                            GTK_ANCHOR_CENTER,                            GTK_FILL_X | GTK_FILL_Y | GTK_EXPAND);    frame = gtk_frame_new("Packing Area");    gtk_widget_set_usize(frame, 400, 400);    gtk_packer_add(GTK_PACKER(top_pack),                              frame,                             GTK_SIDE_LEFT,                             GTK_ANCHOR_CENTER,                             GTK_FILL_X | GTK_FILL_Y | GTK_EXPAND,                                  0, 8, 8, 0, 0);    packer = gtk_packer_new();    gtk_container_add(GTK_CONTAINER(frame), packer);    button_pack = gtk_packer_new();    gtk_packer_add(GTK_PACKER(top_pack),                   button_pack,                    GTK_SIDE_LEFT,                   GTK_ANCHOR_N,                   0,                    0, 0, 0, 0, 0);    button_add = gtk_button_new_with_label("Add Button");    gtk_packer_add(GTK_PACKER(top_pack),                   button_add,                    GTK_SIDE_TOP,                   GTK_ANCHOR_CENTER,                   GTK_FILL_X,                    0, 8, 8, 8, 0);    gtk_signal_connect (GTK_OBJECT (button_add), "clicked",                        GTK_SIGNAL_FUNC (add_widget), (gpointer) info);    button_quit = gtk_button_new_with_label("Quit");    gtk_packer_add(GTK_PACKER(top_pack),                   button_quit,                    GTK_SIDE_TOP,                   GTK_ANCHOR_CENTER,                   GTK_FILL_X,                    0, 8, 8, 0, 0);    gtk_signal_connect_object (GTK_OBJECT (button_quit), "clicked",                               GTK_SIGNAL_FUNC (gtk_widget_destroy),                               GTK_OBJECT (window));    bottom_pack = gtk_packer_new();    gtk_packer_add_defaults(GTK_PACKER(window_pack),                            bottom_pack,                            GTK_SIDE_TOP,                            GTK_ANCHOR_CENTER,                            GTK_FILL_X);      side_frame = gtk_frame_new("Side");    gtk_packer_add(GTK_PACKER(window_pack),                   side_frame,                   GTK_SIDE_LEFT,                   GTK_ANCHOR_W,                   GTK_FILL_Y,                   0, 10, 10, 0, 0);    side_pack = gtk_packer_new();    gtk_container_add(GTK_CONTAINER(side_frame), side_pack);        button_top = gtk_toggle_button_new_with_label("Top");    button_bottom = gtk_toggle_button_new_with_label("Bottom");    button_left = gtk_toggle_button_new_with_label("Left");    button_right = gtk_toggle_button_new_with_label("Right");    gtk_object_set_data(GTK_OBJECT(button_top), "side", (gpointer) GTK_SIDE_TOP);    gtk_object_set_data(GTK_OBJECT(button_bottom), "side", (gpointer) GTK_SIDE_BOTTOM);    gtk_object_set_data(GTK_OBJECT(button_left), "side", (gpointer) GTK_SIDE_LEFT);    gtk_object_set_data(GTK_OBJECT(button_right), "side", (gpointer) GTK_SIDE_RIGHT);    gtk_widget_set_usize(button_top, 50, -1);    gtk_widget_set_usize(button_bottom, 50, -1);    gtk_widget_set_usize(button_left, 50, -1);    gtk_widget_set_usize(button_right, 50, -1);    gtk_packer_add(GTK_PACKER(side_pack),                   button_top,                   GTK_SIDE_TOP,                   GTK_ANCHOR_CENTER,                   0,                   0, 5, 5, 0, 0);    gtk_packer_add(GTK_PACKER(side_pack),                   button_bottom,                   GTK_SIDE_BOTTOM,                   GTK_ANCHOR_CENTER,                   0,                   0, 5, 5, 0, 0);    gtk_packer_add(GTK_PACKER(side_pack),                   button_left,                   GTK_SIDE_LEFT,                   GTK_ANCHOR_CENTER,                   0,                   0, 10, 5, 0, 0);    gtk_packer_add(GTK_PACKER(side_pack),                   button_right,                   GTK_SIDE_RIGHT,                   GTK_ANCHOR_CENTER,                   0,                   0, 10, 5, 0, 0);    gtk_signal_connect (GTK_OBJECT (button_top), "toggled",                        GTK_SIGNAL_FUNC (toggle_side), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_bottom), "toggled",                        GTK_SIGNAL_FUNC (toggle_side), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_left), "toggled",                        GTK_SIGNAL_FUNC (toggle_side), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_right), "toggled",                        GTK_SIGNAL_FUNC (toggle_side), (gpointer) info);    anchor_frame = gtk_frame_new("Anchor");    gtk_packer_add(GTK_PACKER(window_pack),                   anchor_frame,                   GTK_SIDE_LEFT,                   GTK_ANCHOR_W,                   GTK_FILL_Y,                   0, 10, 10, 0, 0);    anchor_pack = gtk_packer_new();    gtk_container_add(GTK_CONTAINER(anchor_frame), anchor_pack);    anchor_table = gtk_table_new(3,3,TRUE);    gtk_packer_add(GTK_PACKER(anchor_pack),                   anchor_table,                   GTK_SIDE_TOP,                   GTK_ANCHOR_CENTER,                   GTK_FILL_Y | GTK_FILL_X | GTK_PACK_EXPAND,                   0, 10, 5, 0, 0);    button_n = gtk_toggle_button_new_with_label("N");    button_s = gtk_toggle_button_new_with_label("S");    button_w = gtk_toggle_button_new_with_label("W");    button_e = gtk_toggle_button_new_with_label("E");    button_ne = gtk_toggle_button_new_with_label("NE");    button_nw = gtk_toggle_button_new_with_label("NW");    button_se = gtk_toggle_button_new_with_label("SE");    button_sw = gtk_toggle_button_new_with_label("SW");    button_center = gtk_toggle_button_new_with_label("");    gtk_object_set_data(GTK_OBJECT(button_n), "anchor", (gpointer) GTK_ANCHOR_N);    gtk_object_set_data(GTK_OBJECT(button_nw), "anchor", (gpointer) GTK_ANCHOR_NW);    gtk_object_set_data(GTK_OBJECT(button_ne), "anchor", (gpointer) GTK_ANCHOR_NE);    gtk_object_set_data(GTK_OBJECT(button_s), "anchor", (gpointer) GTK_ANCHOR_S);    gtk_object_set_data(GTK_OBJECT(button_sw), "anchor", (gpointer) GTK_ANCHOR_SW);    gtk_object_set_data(GTK_OBJECT(button_se), "anchor", (gpointer) GTK_ANCHOR_SE);    gtk_object_set_data(GTK_OBJECT(button_w), "anchor", (gpointer) GTK_ANCHOR_W);    gtk_object_set_data(GTK_OBJECT(button_e), "anchor", (gpointer) GTK_ANCHOR_E);    gtk_object_set_data(GTK_OBJECT(button_center), "anchor", (gpointer) GTK_ANCHOR_CENTER);    gtk_signal_connect (GTK_OBJECT (button_n), "toggled",                        GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_nw), "toggled",                        GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_ne), "toggled",                        GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_s), "toggled",                        GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_sw), "toggled",                        GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_se), "toggled",                        GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_w), "toggled",                        GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_e), "toggled",                        GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_center), "toggled",                        GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);    gtk_table_attach_defaults(GTK_TABLE(anchor_table),                              button_nw,                              0, 1, 0, 1);    gtk_table_attach_defaults(GTK_TABLE(anchor_table),                              button_n,                              1, 2, 0, 1);    gtk_table_attach_defaults(GTK_TABLE(anchor_table),                              button_ne,                              2, 3, 0, 1);    gtk_table_attach_defaults(GTK_TABLE(anchor_table),                              button_w,                              0, 1, 1, 2);    gtk_table_attach_defaults(GTK_TABLE(anchor_table),                              button_center,                              1, 2, 1, 2);    gtk_table_attach_defaults(GTK_TABLE(anchor_table),                              button_e,                              2, 3, 1, 2);    gtk_table_attach_defaults(GTK_TABLE(anchor_table),                              button_sw,                              0, 1, 2, 3);    gtk_table_attach_defaults(GTK_TABLE(anchor_table),                              button_s,                              1, 2, 2, 3);    gtk_table_attach_defaults(GTK_TABLE(anchor_table),                              button_se,                              2, 3, 2, 3);    options_frame = gtk_frame_new("Options");    gtk_packer_add(GTK_PACKER(window_pack),                   options_frame,                   GTK_SIDE_LEFT,                   GTK_ANCHOR_W,                   GTK_FILL_Y,                   0, 10, 10, 0, 0);    options_pack = gtk_packer_new();    gtk_container_add(GTK_CONTAINER(options_frame), options_pack);    button_fillx = gtk_toggle_button_new_with_label("Fill X");    button_filly = gtk_toggle_button_new_with_label("Fill Y");    button_expand = gtk_toggle_button_new_with_label("Expand");    gtk_packer_add(GTK_PACKER(options_pack),                   button_fillx,                   GTK_SIDE_TOP,                   GTK_ANCHOR_N,                   GTK_FILL_X | GTK_PACK_EXPAND,                   0, 10, 5, 0, 0);    gtk_packer_add(GTK_PACKER(options_pack),                   button_filly,                   GTK_SIDE_TOP,                   GTK_ANCHOR_CENTER,                   GTK_FILL_X | GTK_PACK_EXPAND,                   0, 10, 5, 0, 0);    gtk_packer_add(GTK_PACKER(options_pack),                   button_expand,                   GTK_SIDE_TOP,                   GTK_ANCHOR_S,                   GTK_FILL_X | GTK_PACK_EXPAND,                   0, 10, 5, 0, 0);    gtk_object_set_data(GTK_OBJECT(button_fillx), "option", (gpointer) GTK_FILL_X);    gtk_object_set_data(GTK_OBJECT(button_filly), "option", (gpointer) GTK_FILL_Y);    gtk_object_set_data(GTK_OBJECT(button_expand), "option", (gpointer) GTK_PACK_EXPAND);    gtk_signal_connect (GTK_OBJECT (button_fillx), "toggled",                        GTK_SIGNAL_FUNC (toggle_options), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_filly), "toggled",                        GTK_SIGNAL_FUNC (toggle_options), (gpointer) info);    gtk_signal_connect (GTK_OBJECT (button_expand), "toggled",                        GTK_SIGNAL_FUNC (toggle_options), (gpointer) info);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -