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

📄 pack.c

📁 gtk1.2的教程
💻 C
📖 第 1 页 / 共 2 页
字号:
    info->widgets = NULL;    info->packer = packer;    info->button_top = button_top;    info->button_bottom = button_bottom;    info->button_left = button_left;    info->button_right = button_right;    info->button_n = button_n;    info->button_nw = button_nw;    info->button_ne = button_ne;    info->button_e = button_e;    info->button_w = button_w;    info->button_center = button_center;    info->button_s = button_s;    info->button_sw = button_sw;    info->button_se = button_se;    info->button_fillx = button_fillx;    info->button_filly = button_filly;    info->button_expand = button_expand;    add_widget(NULL, (gpointer) info);    gtk_widget_show_all(window);    gtk_main();    return 0;}void toggle_options (GtkWidget *widget, gpointer data){   Info *info;   gint option;   GList *list;   GtkPackerChild *pchild;   gint fillx, filly, expand;   info = (Info*) data;    option = (gint) gtk_object_get_data(GTK_OBJECT(widget), "option");   pchild = info->pchild;   if (pchild == NULL) {       abort();   };   fillx = filly = expand = 0;   if (GTK_TOGGLE_BUTTON(info->button_fillx)->active)       fillx = GTK_FILL_X;   if (GTK_TOGGLE_BUTTON(info->button_filly)->active)       filly = GTK_FILL_Y;   if (GTK_TOGGLE_BUTTON(info->button_expand)->active)       expand = GTK_PACK_EXPAND;   gtk_packer_configure(GTK_PACKER(info->packer),                        info->current,                        pchild->side,                        pchild->anchor,                        fillx | filly | expand,                         pchild->border_width,                         pchild->pad_x,                         pchild->pad_y,                         pchild->i_pad_x,                         pchild->i_pad_y);}void toggle_anchor (GtkWidget *widget, gpointer data){   Info *info;   gint anchor;   GList *list;   GtkPackerChild *pchild;   info = (Info*) data;    if (GTK_TOGGLE_BUTTON(widget)->active) {       anchor = (gint) gtk_object_get_data(GTK_OBJECT(widget), "anchor");       pchild = info->pchild;       if (pchild == NULL) {           abort();       };       gtk_packer_configure(GTK_PACKER(info->packer),                           info->current,                           pchild->side,                           anchor,                           pchild->options,                            pchild->border_width,                            pchild->pad_x,                            pchild->pad_y,                            pchild->i_pad_x,                            pchild->i_pad_y);       if (info->button_n != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_n),0);           gtk_widget_set_sensitive(info->button_n, 1);       }       if (info->button_nw != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_nw),0);           gtk_widget_set_sensitive(info->button_nw, 1);       }       if (info->button_ne != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_ne),0);           gtk_widget_set_sensitive(info->button_ne, 1);       }       if (info->button_s != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_s),0);           gtk_widget_set_sensitive(info->button_s, 1);       }       if (info->button_sw != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_sw),0);           gtk_widget_set_sensitive(info->button_sw, 1);       }       if (info->button_se != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_se),0);           gtk_widget_set_sensitive(info->button_se, 1);       }       if (info->button_e != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_e),0);           gtk_widget_set_sensitive(info->button_e, 1);       }       if (info->button_w != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_w),0);           gtk_widget_set_sensitive(info->button_w, 1);       }       if (info->button_center != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_center),0);           gtk_widget_set_sensitive(info->button_center, 1);       }       gtk_widget_set_sensitive(widget, 0);    }}void toggle_side (GtkWidget *widget, gpointer data){   Info *info;   gint side;   GList *list;   GtkPackerChild *pchild;   info = (Info*) data;    if (GTK_TOGGLE_BUTTON(widget)->active) {       side = (gint) gtk_object_get_data(GTK_OBJECT(widget), "side");       pchild = info->pchild;       if (pchild == NULL) {           abort();       };       gtk_packer_configure(GTK_PACKER(info->packer),                           info->current,                           side,                           pchild->anchor,                           pchild->options,                            pchild->border_width,                            pchild->pad_x,                            pchild->pad_y,                            pchild->i_pad_x,                            pchild->i_pad_y);       if (info->button_top != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_top),0);           gtk_widget_set_sensitive(info->button_top, 1);       }       if (info->button_bottom != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_bottom),0);           gtk_widget_set_sensitive(info->button_bottom, 1);       }       if (info->button_left != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_left),0);           gtk_widget_set_sensitive(info->button_left, 1);       }       if (info->button_right != widget) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_right),0);           gtk_widget_set_sensitive(info->button_right, 1);       }       gtk_widget_set_sensitive(widget, 0);    }}voidset_widget (GtkWidget *w, gpointer data) {   Info *info;   GList *list;   GtkWidget *widget;   GtkPackerChild *pchild;   gint options;   if (GTK_TOGGLE_BUTTON(w)->active) {       info = (Info*) data;       info->current = w;       pchild = NULL;       list = g_list_first(GTK_PACKER(info->packer)->children);       while (list) {           if (((GtkPackerChild*)(list->data))->widget == info->current) {               pchild = (GtkPackerChild*)(list->data);               break;           }           list = g_list_next(list);       }       if (pchild == NULL) {           abort();       };       info->pchild = pchild;        switch (pchild->side) {         case GTK_SIDE_TOP:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_top),1);           break;         case GTK_SIDE_BOTTOM:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_bottom),1);           break;         case GTK_SIDE_LEFT:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_left),1);           break;         case GTK_SIDE_RIGHT:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_right),1);           break;         default:           printf("foo... side == %d\n", pchild->side);       };       switch (pchild->anchor) {         case GTK_ANCHOR_N:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_n),1);           break;         case GTK_ANCHOR_NW:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_nw),1);           break;         case GTK_ANCHOR_NE:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_ne),1);           break;         case GTK_ANCHOR_S:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_s),1);           break;         case GTK_ANCHOR_SW:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_sw),1);           break;         case GTK_ANCHOR_SE:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_se),1);           break;         case GTK_ANCHOR_W:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_w),1);           break;         case GTK_ANCHOR_E:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_e),1);           break;         case GTK_ANCHOR_CENTER:           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_center),1);           break;         default:       };       options = pchild->options;       if (options & GTK_PACK_EXPAND) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_expand),1);       } else {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_expand),0);       }       if (options & GTK_FILL_X) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_fillx),1);       } else {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_fillx),0);       }       if (options & GTK_FILL_Y) {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_filly),1);       } else {           gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_filly),0);       }              gtk_widget_set_sensitive(w, 0);       list = g_list_first(info->widgets);       while (list) {           widget = (GtkWidget*)(list->data);           if (widget != info->current) {               gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(widget),0);               gtk_widget_set_sensitive(widget, 1);           }           list = g_list_next(list);       }    }}void add_widget (GtkWidget *w, gpointer data){     static gint n = 0;   GtkPacker *packer;   GtkWidget *widget;   gchar str[255];   Info *info;   info = (Info*) data;   packer = GTK_PACKER(info->packer);      sprintf(str, "%d", n);   widget = gtk_toggle_button_new_with_label(str);   gtk_widget_set_usize(widget, 50, 50);   gtk_container_add(GTK_CONTAINER(packer), widget);   gtk_widget_show(widget);   gtk_signal_connect (GTK_OBJECT (widget), "toggled",                       GTK_SIGNAL_FUNC (set_widget), (gpointer) info);   info->widgets = g_list_append(info->widgets, (gpointer) widget);   gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(widget),1);   set_widget(widget, info);   n++;}

⌨️ 快捷键说明

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