This is mibRadioBox.c in view mode; [Download] [Up]
#include "mibload.h" #include "mibwidgets.h" extern Display *dpy; extern GC mib_gc; /* Code for RadioBox */ /*****************************************************************************/ mib_Widget *mib_create_RadioBox(mib_Widget *parent, char *name, char *label, int posx, int posy, int width, int height, int mib_fill) { mib_Widget *temp; mib_RadioBox *myres; Widget wtemp; unsigned char *label_text; char label_temp[50]; Arg args[20]; int n; /* create the new widget and add it to the tree */ temp = mib_new_mib_Widget(); if (mib_fill == WDEFAULT) mib_add_backward(temp, parent); else mib_add_mib_Widget(temp, parent); myres = (mib_RadioBox *)malloc(sizeof(mib_RadioBox)); /* initialize public resources */ if (mib_fill == WDEFAULT) { temp->name = (char *)malloc(strlen(name)+1); strcpy(temp->name,name); } temp->mib_class = (char *)malloc(9); sprintf(temp->mib_class,"RadioBox"); temp->mib_class_num = MIB_RADIOBOX; temp->width = width; temp->height = height; temp->topOffset = posy; temp->leftOffset = posx; temp->bottomOffset = 0; temp->rightOffset = 0; temp->topAttachment = 1; temp->leftAttachment = 1; temp->bottomAttachment = 0; temp->rightAttachment = 0; temp->mib_allowresize = 0; /* initialize private resources */ temp->myres = (void *)myres; myres->numlabel = 0; if (mib_fill == WDEFAULT) { myres->numlabel = 2; myres->labels = (char **)malloc(10); myres->buttons = (Widget *)malloc(sizeof(Widget) * myres->numlabel); sprintf(label_temp, "Radio 1"); myres->labels[0] = (char *)malloc(strlen(label_temp)+1); strcpy(myres->labels[0],label_temp); sprintf(label_temp, "Radio 2"); myres->labels[1] = (char *)malloc(strlen(label_temp)+1); strcpy(myres->labels[1],label_temp); } /* create Xt widget */ n = 0; XtSetArg (args[n], XmNrubberPositioning, False); n++; if (mib_fill == WDEFAULT) { XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNleftOffset, posx);n++; XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg (args[n], XmNtopOffset, posy);n++; XtSetArg (args[n], XmNwidth, width); n++; XtSetArg (args[n], XmNheight, height); n++; } XtSetArg (args[n], XmNhighlightThickness, 0); n++; temp->me = XmCreateRadioBox(temp->parent->me, "Radio", args, n); wtemp = temp->me; if (mib_fill == WDEFAULT) { n = 0; XtSetArg (args[n], XmNhighlightThickness, 0); n++; XtCreateManagedWidget("Radio 1", xmToggleButtonGadgetClass, wtemp, args, n); n = 0; XtSetArg (args[n], XmNhighlightThickness, 0); n++; XtCreateManagedWidget("Radio 2", xmToggleButtonGadgetClass, wtemp, args, n); } XtManageChild(wtemp); if (mib_fill == WEDIT || mib_fill == WDEFAULT) { mib_apply_eventhandlers(temp->me, temp); } return temp; } void mib_delete_RadioBox(mib_Widget *this) { mib_RadioBox *temp = (mib_RadioBox *)this->myres; int count; for (count=0; count < temp->numlabel; count++) free(temp->labels[count]); free(temp); } void mib_save_RadioBox(mib_Widget *this, FILE *fout) { mib_RadioBox *temp = (mib_RadioBox *)this->myres; int count; fprintf(fout,"numlabel: %d\\n\\\n", temp->numlabel); for (count=0; count < temp->numlabel; count++) { fprintf(fout,"label: \\\"%s\\\"\\n\\\n", temp->labels[count]); } } int mib_load_RadioBox(mib_Widget *this, mib_Buffer *fin) { char res[MI_MAXSTRLEN]; char val[MI_MAXSTRLEN]; int count, vallen, n; Arg args[5]; mib_RadioBox *myres; myres = (mib_RadioBox *)this->myres; if (!mib_read_line(fin, res, val)) return 0; if (!strcmp(res,"numlabel")) { myres->numlabel = 0; sscanf(val,"%d",&(myres->numlabel)); if (!(myres->numlabel)) return 0; myres->labels = (char **)malloc((myres->numlabel+1)*4); myres->buttons = (Widget *)malloc(sizeof(Widget)*(myres->numlabel)); for (count=0; count < myres->numlabel; count++) { if (!mib_read_line(fin, res, val)) return 0; vallen = strlen(val); if (vallen < 2) return 0; val[vallen-1] = '\0'; myres->labels[count] = (char *)malloc(vallen-1); sprintf(myres->labels[count],"%s",&(val[1])); n = 0; XtSetArg (args[n], XmNhighlightThickness, 0); n++; myres->buttons[count] = XtCreateManagedWidget(myres->labels[count], xmToggleButtonGadgetClass, this->me, args, n); } } else return 0; if (!mib_read_line(fin, res, val)) return 0; if (strcmp(res,"EndWidget")) return 0; return 1; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.