This is mibScale.c in view mode; [Download] [Up]
#include "mibload.h"
#include "mibwidgets.h"
extern Display *dpy;
extern GC mib_gc;
static int scaleflag;
/* Code for Scale */
/*****************************************************************************/
mib_Widget *mib_create_Scale(mib_Widget *parent, char *name, char *orient,
int posx, int posy, int width, int height, int mib_fill)
{
mib_Widget *temp;
mib_Scale *myres;
Arg args[20];
int n;
scaleflag = 0;
/* 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_Scale *)malloc(sizeof(mib_Scale));
/* initialize public resources */
if (mib_fill == WDEFAULT)
{
temp->name = (char *)malloc(strlen(name)+1);
strcpy(temp->name,name);
}
temp->mib_class = (char *)malloc(10);
sprintf(temp->mib_class,"Scale");
temp->mib_class_num = MIB_SCALE;
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 = 1;
/* initialize private resources */
temp->myres = (void *)myres;
myres->orientation = 0;
/* create Xt widget */
n = 0;
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], XmNrubberPositioning, False); n++;
if (mib_fill == WDEFAULT)
if (!strcmp("VertScale",orient))
{
XtSetArg (args[n], XmNorientation, XmVERTICAL); n++;
}
else
if (!strcmp("HorzScale",orient))
{
XtSetArg (args[n], XmNorientation, XmHORIZONTAL); n++;
myres->orientation = 1;
}
if (mib_fill == WEDIT || mib_fill == WDEFAULT)
{
XtSetArg (args[n], XmNshowArrows, False); n++;
XtSetArg (args[n], XmNsliderSize, 30); n++;
}
XtSetArg (args[n], XmNrubberPositioning, False); n++;
XtSetArg (args[n], XmNhighlightThickness, 0); n++;
if (mib_fill == WEDIT || mib_fill == WDEFAULT)
temp->me = XtCreateManagedWidget(name, xmScrollBarWidgetClass,
temp->parent->me, args, n);
else
temp->me = XtCreateManagedWidget(name, xmScaleWidgetClass,
temp->parent->me, args, n);
if (mib_fill == WEMPTY)
scaleflag = 1;
if (mib_fill == WEDIT || mib_fill == WDEFAULT)
{
mib_apply_eventhandlers(temp->me, temp);
}
return temp;
}
void mib_delete_Scale(mib_Widget *this)
{
mib_Scale *temp = (mib_Scale *)this->myres;
free(temp);
}
void mib_save_Scale(mib_Widget *this, FILE *fout)
{
mib_Scale *temp = (mib_Scale *)this->myres;
fprintf(fout,"orientation: %d\\n\\\n", temp->orientation);
}
int mib_load_Scale(mib_Widget *this, mib_Buffer *fin)
{
mib_Scale *myres;
unsigned char *label_text;
char res[MI_MAXSTRLEN];
char val[MI_MAXSTRLEN];
Arg args[5];
int n;
Dimension myht,mywd;
myres = (mib_Scale *)this->myres;
if (!mib_read_line(fin, res, val))
return 0;
if (!strcmp(res,"orientation"))
{
sscanf(val,"%d",&(myres->orientation));
n = 0;
if (scaleflag)
{
if (!myres->orientation)
{
XtSetArg (args[n], XmNscaleWidth, this->width); n++;
}
else
{
XtSetArg (args[n], XmNscaleWidth, this->height); n++;
}
XtSetValues(this->me, args, n);
}
n = 0;
switch (myres->orientation) {
case 0:
XtSetArg (args[n], XmNorientation, XmVERTICAL); n++;
break;
case 1:
XtSetArg (args[n], XmNorientation, XmHORIZONTAL); n++;
break;
default:
break;
}
XtSetValues(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.