int GScreatewidget ( Gwidget_t *parent, Gwidget_t *widget, int attrn, Gwattr_t *attrp ) { PIXsize_t ps; #if XlibSpecificationRelease < 5 Widget w; #endif int ai; XColor c; int color; if (!parent) { Gerr (POS, G_ERRNOPARENTWIDGET); return -1; } ps.x = ps.y = MINSWSIZE; RESETARGS; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINSWSIZE); break; case G_ATTRBORDERWIDTH: ADD2ARGS (XtNborderWidth, attrp[ai].u.i); break; case G_ATTRCHILDCENTER: Gerr (POS, G_ERRCANNOTSETATTR1, "childcenter"); return -1; case G_ATTRMODE: if (strcmp ("forcebars", attrp[ai].u.t) == 0) ADD2ARGS (XtNforceBars, True); else { Gerr (POS, G_ERRBADATTRVALUE, attrp[ai].u.t); return -1; } break; case G_ATTRCOLOR: color = attrp[ai].u.c.index; if (color != 0 && color != 1) { Gerr (POS, G_ERRBADCOLORINDEX, color); return -1; } c.red = attrp[ai].u.c.r * 257; c.green = attrp[ai].u.c.g * 257; c.blue = attrp[ai].u.c.b * 257; if (XAllocColor ( Gdisplay, DefaultColormap (Gdisplay, Gscreenn), &c )) { if (color == 0) ADD2ARGS (XtNbackground, c.pixel); else ADD2ARGS (XtNforeground, c.pixel); } break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR1, "windowid"); return -1; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } ADD2ARGS (XtNallowHoriz, True); ADD2ARGS (XtNallowVert, True); ADD2ARGS (XtNwidth, ps.x); ADD2ARGS (XtNheight, ps.y); if (!(widget->w = XtCreateWidget ( "scroll", viewportWidgetClass, parent->w, argp, argn ))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } #if XlibSpecificationRelease < 5 RESETARGS; ADD2ARGS (XtNwidth, ps.x); ADD2ARGS (XtNheight, ps.y); if (!(w = XtCreateWidget ( "owsucks", formWidgetClass, widget->w, argp, argn ))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } Glazymanage (w); Glazymanage (widget->w); XtDestroyWidget (w); #else Glazymanage (widget->w); #endif return 0; }
int GLcreatewidget ( Gwidget_t *parent, Gwidget_t *widget, int attrn, Gwattr_t *attrp ) { PIXsize_t ps; int ai; XColor c; int color; if (!parent) { Gerr (POS, G_ERRNOPARENTWIDGET); return -1; } WLU->func = NULL; ps.x = ps.y = MINLWSIZE; RESETARGS; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINLWSIZE); break; case G_ATTRBORDERWIDTH: ADD2ARGS (XtNborderWidth, attrp[ai].u.i); break; case G_ATTRTEXT: ADD2ARGS (XtNlabel, attrp[ai].u.t); break; case G_ATTRCOLOR: color = attrp[ai].u.c.index; if (color != 0 && color != 1) { Gerr (POS, G_ERRBADCOLORINDEX, color); return -1; } c.red = attrp[ai].u.c.r * 257; c.green = attrp[ai].u.c.g * 257; c.blue = attrp[ai].u.c.b * 257; if (XAllocColor ( Gdisplay, DefaultColormap (Gdisplay, Gscreenn), &c )) { if (color == 0) ADD2ARGS (XtNbackground, c.pixel); else ADD2ARGS (XtNforeground, c.pixel); } break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR1, "windowid"); return -1; case G_ATTREVENTCB: WLU->func = (Glabelcb) attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } ADD2ARGS (XtNwidth, ps.x); ADD2ARGS (XtNheight, ps.y); ADD2ARGS (XtNhighlightThickness, 0); ADD2ARGS (XtNinternalHeight, 0); ADD2ARGS (XtNinternalWidth, 0); ADD2ARGS (XtNjustify, XtJustifyLeft); if (!(widget->w = XtCreateWidget ( "label", labelWidgetClass, parent->w, argp, argn ))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } XtOverrideTranslations (widget->w, Glwanytable); Glazymanage (widget->w); return 0; }
int GTcreatewidget ( Gwidget_t *parent, Gwidget_t *widget, int attrn, Gwattr_t *attrp ) { PIXsize_t ps; char *s; int ai; XColor c; int color; static XawTextSelectType sarray[] = { XawselectLine, XawselectNull }; if (!parent) { Gerr (POS, G_ERRNOPARENTWIDGET); return -1; } WTU->func = NULL; ps.x = ps.y = MINTWSIZE; s = "oneline"; RESETARGS; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINTWSIZE); break; case G_ATTRBORDERWIDTH: ADD2ARGS (XtNborderWidth, attrp[ai].u.i); break; case G_ATTRTEXT: ADD2ARGS (XtNstring, attrp[ai].u.t); break; case G_ATTRAPPENDTEXT: Gerr (POS, G_ERRCANNOTSETATTR1, "appendtext"); return -1; case G_ATTRMODE: s = attrp[ai].u.t; break; case G_ATTRCOLOR: color = attrp[ai].u.c.index; if (color != 0 && color != 1) { Gerr (POS, G_ERRBADCOLORINDEX, color); return -1; } c.red = attrp[ai].u.c.r * 257; c.green = attrp[ai].u.c.g * 257; c.blue = attrp[ai].u.c.b * 257; if (XAllocColor ( Gdisplay, DefaultColormap (Gdisplay, Gscreenn), &c )) if (color == 0) ADD2ARGS (XtNbackground, c.pixel); else ADD2ARGS (XtNforeground, c.pixel); break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR1, "windowid"); return -1; case G_ATTRNEWLINECB: WTU->func = (Gtwnewlinecb) attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } ADD2ARGS (XtNwidth, ps.x); ADD2ARGS (XtNheight, ps.y); if (strcmp ("oneline", s) == 0) ADD2ARGS (XtNeditType, XawtextAppend); else if (strcmp ("input", s) == 0 || strcmp ("select", s) == 0) ADD2ARGS (XtNeditType, XawtextEdit); else if (strcmp ("output", s) == 0) ADD2ARGS (XtNeditType, XawtextRead); else { Gerr (POS, G_ERRBADATTRVALUE, s); return -1; } ADD2ARGS (XtNscrollHorizontal, XawtextScrollWhenNeeded); ADD2ARGS (XtNscrollVertical, XawtextScrollWhenNeeded); if (!(widget->w = XtCreateWidget ( "ascii", asciiTextWidgetClass, parent->w, argp, argn ))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } if (strcmp ("oneline", s) == 0 || strcmp ("input", s) == 0) XtOverrideTranslations (widget->w, Gtweoltable); else if (strcmp ("select", s) == 0) XawTextSetSelectionArray (widget->w, sarray); Glazymanage (widget->w); return 0; }
int GBcreatewidget (Gwidget_t *parent, Gwidget_t *widget, int attrn, Gwattr_t *attrp) { PIXsize_t ps; char *s; int ai; XColor c; int color; if (!parent) { Gerr (POS, G_ERRNOPARENTWIDGET); return -1; } WBU->func = NULL; ps.x = ps.y = MINBWSIZE; s = NULL; RESETARGS; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINBWSIZE); break; case G_ATTRBORDERWIDTH: ADD2ARGS (XtNborderWidth, attrp[ai].u.i); break; case G_ATTRTEXT: s = attrp[ai].u.t; ADD2ARGS (XtNlabel, s); break; case G_ATTRCOLOR: color = attrp[ai].u.c.index; if (color != 0 && color != 1) { Gerr (POS, G_ERRBADCOLORINDEX, color); return -1; } c.red = attrp[ai].u.c.r * 257; c.green = attrp[ai].u.c.g * 257; c.blue = attrp[ai].u.c.b * 257; if (XAllocColor ( Gdisplay, DefaultColormap (Gdisplay, Gscreenn), &c )) { if (color == 0) ADD2ARGS (XtNbackground, c.pixel); else ADD2ARGS (XtNforeground, c.pixel); } break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR1, "windowid"); return -1; case G_ATTRBUTTONCB: WBU->func = (Gbuttoncb) attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } if (!s || s[0] == '\000') { ADD2ARGS (XtNwidth, ps.x); ADD2ARGS (XtNheight, ps.y); } else { if (ps.x > MINBWSIZE) ADD2ARGS (XtNwidth, ps.x); if (ps.y > MINBWSIZE) ADD2ARGS (XtNheight, ps.y); } ADD2ARGS (XtNhighlightThickness, 0); ADD2ARGS (XtNinternalHeight, 0); ADD2ARGS (XtNinternalWidth, 0); ADD2ARGS (XtNjustify, XtJustifyLeft); if (!(widget->w = XtCreateWidget ("command", commandWidgetClass, parent->w, argp, argn))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } XtAddCallback (widget->w, XtNcallback, bwcallback, (XtPointer) widget->udata); Glazymanage (widget->w); return 0; }