static void mate_dock_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info) { int i; GtkWidget *child; GtkWidget *toplevel; GladeChildInfo *childinfo; toplevel = gtk_widget_get_ancestor (w, MATE_TYPE_APP); for (i = 0; i < info->n_children; i++) { childinfo = &info->children[i]; if (!strcmp (childinfo->child->classname, "MateComponentDockItem")) { mate_add_dock_item (xml, w, info, childinfo); continue; } if (matecomponent_dock_get_client_area (MATECOMPONENT_DOCK (w))) g_warning ("Multiple client areas for MateComponentDock found."); child = glade_xml_build_widget (xml, childinfo->child); if (toplevel != NULL) mate_app_set_contents (MATE_APP (toplevel), child); else matecomponent_dock_set_client_area (MATECOMPONENT_DOCK (w), child); } }
static void panda_clist_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info, const char *longname) { GList *tmp; GtkTreeViewColumn *column; gint col = 0; for (tmp = info->children; tmp; tmp = tmp->next) { GtkWidget *child = glade_xml_build_widget (xml, tmp->data, longname); gtk_widget_show(child); column = gtk_tree_view_get_column(GTK_TREE_VIEW(w), col); gtk_tree_view_column_set_widget(column, child); if (GTK_IS_MISC(child)) { gtk_tree_view_column_set_alignment(column, GTK_MISC(child)->xalign); gtk_misc_set_padding(GTK_MISC(child),0,0); } gtk_tree_view_column_set_clickable(column, FALSE); gtk_tree_view_column_set_spacing(column,0); if (!GTK_PANDA_CLIST(w)->show_titles) { gtk_widget_hide(child); } col++; } }
static void mate_add_dock_item (GladeXML *xml, GtkWidget *parent, GladeWidgetInfo *info, GladeChildInfo *childinfo) { MateComponentDockPlacement placement; guint band, offset; int position; MateComponentDockItemBehavior behavior; int i; GtkWidget *child; GtkWidget *toplevel; band = offset = position = 0; placement = MATECOMPONENT_DOCK_TOP; behavior = MATECOMPONENT_DOCK_ITEM_BEH_NORMAL; for (i = 0; i < childinfo->n_properties; i++) { const char *name = childinfo->properties[i].name; const char *value = childinfo->properties[i].value; if (!strcmp (name, "placement")) placement = glade_enum_from_string ( MATECOMPONENT_TYPE_DOCK_PLACEMENT, value); else if (!strcmp (name, "band")) band = strtoul (value, NULL, 10); else if (!strcmp (name, "position")) position = strtol (value, NULL, 10); else if (!strcmp (name, "offset")) offset = strtoul (value, NULL, 10); else if (!strcmp (name, "behavior")) behavior = glade_flags_from_string ( MATECOMPONENT_TYPE_DOCK_ITEM_BEHAVIOR, value); } child = glade_xml_build_widget (xml, childinfo->child); toplevel = gtk_widget_get_ancestor (parent, MATE_TYPE_APP); matecomponent_dock_item_set_behavior (MATECOMPONENT_DOCK_ITEM (child), behavior); if (toplevel != NULL) { mate_app_add_dock_item ( MATE_APP (toplevel), MATECOMPONENT_DOCK_ITEM (child), placement, band, position, offset); } else { matecomponent_dock_add_item (MATECOMPONENT_DOCK (parent), MATECOMPONENT_DOCK_ITEM (child), placement, band, position, offset, FALSE); } }
static void notebook_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info, const char *longname) { /* * the notebook tabs are listed after the pages, and have * child_name set to Notebook:tab. We store pages in a GList * while waiting for tabs */ GList *pages = NULL; GList *tmp; for (tmp = info->children; tmp; tmp = tmp->next) { GladeWidgetInfo *cinfo = tmp->data; GtkWidget *child; GList *tmp2; GladeAttribute *attr = NULL; GtkAccelGroup *accel; accel = glade_xml_push_accel(xml); child = glade_xml_build_widget (xml,cinfo,longname); note_page_setup_signals(child, accel); glade_xml_pop_accel(xml); for (tmp2 = cinfo->attributes; tmp2; tmp2 = tmp2->next) { attr = tmp2->data; if (!strcmp(attr->name, "child_name")) break; } if (tmp2 == NULL || strcmp(attr->value, "Notebook:tab") != 0) pages = g_list_append (pages, child); else { GtkWidget *page; gint key = glade_xml_get_parent_accel(xml); if (pages) { page = pages->data; pages = g_list_remove (pages, page); } else { page = gtk_label_new("Unknown page"); gtk_widget_show(page); } gtk_notebook_append_page (GTK_NOTEBOOK(w), page,child); if (key) { gtk_widget_add_accelerator(page, "grab_focus", glade_xml_ensure_accel(xml), key, GDK_MOD1_MASK, 0); g_signal_connect(G_OBJECT(page), "grab_focus", GTK_SIGNAL_FUNC(note_change_page), w); } } } }
static void window_build_children(GladeXML *self, GtkWidget *w, GladeWidgetInfo *info, const char *longname) { GList *tmp; for (tmp = info->children; tmp != NULL; tmp = tmp->next) { GtkWidget *child = glade_xml_build_widget(self, tmp->data, longname); g_object_set_data(G_OBJECT(w), "child", child); } }
static void button_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info, const char *longname) { GtkWidget *child = glade_xml_build_widget(xml, (GladeWidgetInfo *)info->children->data, longname); guint key = glade_xml_get_parent_accel(xml); gtk_container_add(GTK_CONTAINER(w), child); if (key) gtk_widget_add_accelerator(w, "clicked", glade_xml_ensure_accel(xml), key, GDK_MOD1_MASK, 0); }
static void app_build_children (GladeXML *xml, GtkWidget *parent, GladeWidgetInfo *info) { int i; for (i = 0; i < info->n_children; i++) { GladeChildInfo *cinfo; GtkWidget *child; cinfo = &info->children[i]; if (cinfo->internal_child) { /* not quite proper handling of appbar, but ... */ if (!strcmp (cinfo->internal_child, "appbar")) { child = glade_xml_build_widget (xml, cinfo->child); mate_app_set_statusbar (MATE_APP (parent), child); } else { glade_xml_handle_internal_child (xml, parent, cinfo); } } else { child = glade_xml_build_widget (xml, cinfo->child); #if 0 g_object_ref (G_OBJECT (child)); gtk_widget_freeze_child_notify (child); for (j = 0; j < info->children[i].n_properties; j++) glade_xml_set_packing_property ( xml, MATE_APP (parent)->vbox, child, cinfo->properties[j].name, cinfo->properties[j].value); gtk_widget_thaw_child_notify(child); g_object_unref(G_OBJECT(child)); #endif } } }
static void fixed_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info, const char *longname) { GList *tmp; for (tmp = info->children; tmp; tmp = tmp->next) { GladeWidgetInfo *cinfo = tmp->data; GtkWidget *child = glade_xml_build_widget(xml, cinfo,longname); g_object_set_data(G_OBJECT(child),"x",GINT_TO_POINTER(cinfo->x)); g_object_set_data(G_OBJECT(child),"y",GINT_TO_POINTER(cinfo->y)); g_object_set_data(G_OBJECT(child),"has_x",GINT_TO_POINTER(1)); g_object_set_data(G_OBJECT(child),"has_y",GINT_TO_POINTER(1)); gtk_fixed_put(GTK_FIXED(w), child, cinfo->x, cinfo->y); } }
static void box_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info, const char *longname) { GList *tmp; for (tmp = info->children; tmp; tmp = tmp->next) { GladeWidgetInfo *cinfo = tmp->data; GtkWidget *child = glade_xml_build_widget (xml,cinfo,longname); GList *tmp2; gboolean expand = TRUE, fill = TRUE, start = TRUE; gint padding = 0; for (tmp2 = cinfo->child_attributes; tmp2; tmp2 = tmp2->next) { GladeAttribute *attr = tmp2->data; switch (attr->name[0]) { case 'e': if (!strcmp (attr->name, "expand")) expand = attr->value[0] == 'T'; break; case 'f': if (!strcmp (attr->name, "fill")) fill = attr->value[0] == 'T'; break; case 'p': if (!strcmp (attr->name, "padding")) padding = strtol(attr->value, NULL, 0); else if (!strcmp (attr->name, "pack")) start = strcmp (attr->value, "GTK_PACK_START") == 0; break; } } if (start) gtk_box_pack_start (GTK_BOX(w), child, expand, fill, padding); else gtk_box_pack_end (GTK_BOX(w), child, expand, fill, padding); } }
static void dock_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info) { int i; GtkWidget *child; GladeChildInfo *childinfo; for (i = 0; i < info->n_children; i++) { childinfo = &info->children[i]; if (!strcmp (childinfo->child->classname, "BonoboDockItem")) { add_dock_item (xml, w, info, childinfo); continue; } if (bonobo_dock_get_client_area (BONOBO_DOCK (w))) g_warning ("Multiple client areas for BonoboDock found."); child = glade_xml_build_widget (xml, childinfo->child); bonobo_dock_set_client_area (BONOBO_DOCK (w), child); } }
static void add_dock_item (GladeXML *xml, GtkWidget *parent, GladeWidgetInfo *info, GladeChildInfo *childinfo) { BonoboDockPlacement placement; guint band, offset; int position; int i; GtkWidget *child; band = offset = position = 0; placement = BONOBO_DOCK_TOP; for (i = 0; i < childinfo->n_properties; i++) { const char *name = childinfo->properties[i].name; const char *value = childinfo->properties[i].value; if (!strcmp (name, "placement")) placement = glade_enum_from_string ( BONOBO_TYPE_DOCK_PLACEMENT, value); else if (!strcmp (name, "band")) band = UINT (value); else if (!strcmp (name, "position")) position = INT (value); else if (!strcmp (name, "offset")) offset = UINT (value); } child = glade_xml_build_widget (xml, childinfo->child); bonobo_dock_add_item (BONOBO_DOCK (parent), BONOBO_DOCK_ITEM (child), placement, band, position, offset, FALSE); }
static void menushell_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info) { int i, j; MateUIInfo infos[2] = { { MATE_APP_UI_ITEM }, MATEUIINFO_END }; for (i = 0; i < info->n_children; i++) { GladeChildInfo *cinfo = &info->children[i]; GladeWidgetInfo *cwinfo = cinfo->child; GtkWidget *child; gchar *stock_name = NULL; for (j = 0; j < cwinfo->n_properties; j++) { if (!strcmp (cwinfo->properties[j].name, "stock_item")) { stock_name = cwinfo->properties[j].value; break; } } if (!stock_name) { /* this is a normal menu item */ child = glade_xml_build_widget (xml, cwinfo); gtk_menu_shell_append (GTK_MENU_SHELL (w), child); continue; } /* load the template MateUIInfo for this item */ if (!get_stock_uiinfo (stock_name, &infos[0])) { /* failure ... */ if (!strncmp (stock_name, "MATEUIINFO_", 12)) stock_name += 12; child = gtk_menu_item_new_with_label (stock_name); glade_xml_set_common_params (xml, child, cwinfo); gtk_menu_shell_append (GTK_MENU_SHELL(w), child); continue; } /* we now have the template for this item. Now fill it in */ for (j = 0; j < cwinfo->n_properties; j++) { const char *name = cwinfo->properties[j].name; const char *value = cwinfo->properties[j].value; if (!strcmp (name, "label")) infos[0].label = _(value); else if (!strcmp (name, "tooltip")) infos[0].hint = _(value); } mate_app_fill_menu (GTK_MENU_SHELL(w), infos, glade_xml_ensure_accel(xml), TRUE, i); child = infos[0].widget; gtk_menu_item_remove_submenu(GTK_MENU_ITEM(child)); glade_xml_set_common_params(xml, child, cwinfo); } #if 0 if (uline) glade_xml_pop_uline_accel(xml); #endif #if 0 if (strcmp(info->classname, "GtkMenuBar") != 0 && mate_preferences_get_menus_have_tearoff()) { GtkWidget *tearoff = gtk_tearoff_menu_item_new(); gtk_menu_prepend(GTK_MENU(w), tearoff); gtk_widget_show(tearoff); } #endif }
static void table_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info, const char *longname) { GList *tmp; for (tmp = info->children; tmp; tmp = tmp->next) { GladeWidgetInfo *cinfo = tmp->data; GtkWidget *child = glade_xml_build_widget (xml,cinfo,longname); GList *tmp2; gint left_attach=0,right_attach=1,top_attach=0,bottom_attach=1; gint xpad=0, ypad=0, xoptions=0, yoptions=0; for (tmp2 = cinfo->child_attributes; tmp2; tmp2 = tmp2->next) { GladeAttribute *attr = tmp2->data; switch (attr->name[0]) { case 'b': if (!strcmp(attr->name, "bottom_attach")) bottom_attach = strtol(attr->value, NULL, 0); break; case 'l': if (!strcmp(attr->name, "left_attach")) left_attach = strtol(attr->value, NULL, 0); break; case 'r': if (!strcmp(attr->name, "right_attach")) right_attach = strtol(attr->value, NULL, 0); break; case 't': if (!strcmp(attr->name, "top_attach")) top_attach = strtol(attr->value, NULL, 0); break; case 'x': switch (attr->name[1]) { case 'e': if (!strcmp(attr->name, "xexpand") && attr->value[0] == 'T') xoptions |= GTK_EXPAND; break; case 'f': if (!strcmp(attr->name, "xfill") && attr->value[0] == 'T') xoptions |= GTK_FILL; break; case 'p': if (!strcmp(attr->name, "xpad")) xpad = strtol(attr->value, NULL, 0); break; case 's': if (!strcmp(attr->name, "xshrink") && attr->value[0] == 'T') xoptions |= GTK_SHRINK; break; } break; case 'y': switch (attr->name[1]) { case 'e': if (!strcmp(attr->name, "yexpand") && attr->value[0] == 'T') yoptions |= GTK_EXPAND; break; case 'f': if (!strcmp(attr->name, "yfill") && attr->value[0] == 'T') yoptions |= GTK_FILL; break; case 'p': if (!strcmp(attr->name, "ypad")) ypad = strtol(attr->value, NULL, 0); break; case 's': if (!strcmp(attr->name, "yshrink") && attr->value[0] == 'T') yoptions |= GTK_SHRINK; break; } break; } } gtk_table_attach(GTK_TABLE(w), child, left_attach,right_attach, top_attach,bottom_attach, xoptions,yoptions, xpad,ypad); } }