home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / modelers / geomview / source.lha / Geomview / src / lib / mib / mibFrame.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-17  |  3.7 KB  |  169 lines

  1. #include "mibload.h"
  2. #include "mibwidgets.h"
  3.  
  4. extern Display    *dpy;
  5. extern GC     mib_gc;
  6.  
  7. /* Code for Frames */
  8. /*****************************************************************************/
  9.  
  10. mib_Widget *mib_create_Frame(mib_Widget *parent, char *name, char *frame_type,
  11.         int posx, int posy, int width, int height, int mib_fill)
  12. {
  13.   mib_Widget *temp;
  14.   mib_Frame *myres;
  15.   Arg     args[20];
  16.   int     n;
  17.  
  18.   /* create the new widget and add it to the tree */
  19.  
  20.   temp = mib_new_mib_Widget();
  21.   if (mib_fill == WDEFAULT)
  22.     mib_add_backward(temp, parent);
  23.   else
  24.     mib_add_mib_Widget(temp, parent);
  25.  
  26.   myres = (mib_Frame *)malloc(sizeof(mib_Frame));
  27.  
  28.   /* initialize public resources */
  29.  
  30.   if (mib_fill == WDEFAULT)
  31.   {
  32.     temp->name = (char *)malloc(strlen(name)+1);
  33.     strcpy(temp->name,name);
  34.   }
  35.   temp->mib_class = (char *)malloc(6);
  36.   sprintf(temp->mib_class,"Frame");
  37.   temp->mib_class_num = MIB_FRAME;
  38.   temp->width = width;
  39.   temp->height = height;
  40.   temp->topOffset = posy;
  41.   temp->leftOffset = posx;
  42.   temp->bottomOffset = 0;
  43.   temp->rightOffset = 0;
  44.   temp->topAttachment = 1;
  45.   temp->leftAttachment = 1;
  46.   temp->bottomAttachment = 0;
  47.   temp->rightAttachment = 0;
  48.  
  49.   temp->mib_allowresize = 1;
  50.  
  51.   /* initialize private resources */
  52.  
  53.   temp->myres = (void *)myres;
  54.   myres->shadowtype = 0;
  55.  
  56.   /* create Xt widget */
  57.  
  58.   n = 0;
  59.  
  60.   if (mib_fill == WDEFAULT)
  61.   {
  62.     XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
  63.     XtSetArg (args[n], XmNleftOffset, posx);n++;
  64.     XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
  65.     XtSetArg (args[n], XmNtopOffset, posy);n++;
  66.     XtSetArg (args[n], XmNwidth, width); n++;
  67.     XtSetArg (args[n], XmNheight, height); n++;
  68.   }
  69.  
  70.   XtSetArg (args[n], XmNrubberPositioning, False); n++;
  71.  
  72.   if (mib_fill == WDEFAULT)
  73.     if (!strcmp("InFrame",frame_type))
  74.     {
  75.       XtSetArg (args[n], XmNshadowType, XmSHADOW_IN); n++;
  76.     }
  77.     else
  78.     if (!strcmp("OutFrame",frame_type))
  79.     {
  80.       XtSetArg (args[n], XmNshadowType, XmSHADOW_OUT); n++;
  81.       myres->shadowtype = 1;
  82.     }
  83.     else
  84.     if (!strcmp("EtchedInFrame",frame_type))
  85.     {
  86.       XtSetArg (args[n], XmNshadowType, XmSHADOW_ETCHED_IN); n++;
  87.       myres->shadowtype = 2;
  88.     }
  89.     else
  90.     if (!strcmp("EtchedOutFrame",frame_type))
  91.     {
  92.        XtSetArg (args[n], XmNshadowType, XmSHADOW_ETCHED_OUT); n++;
  93.        myres->shadowtype = 3;
  94.     }
  95.  
  96.   temp->me = XtCreateManagedWidget(name, xmFrameWidgetClass,
  97.                 temp->parent->me, args, n);
  98.  
  99.   if (mib_fill == WEDIT || mib_fill == WDEFAULT)
  100.   {
  101.     mib_apply_eventhandlers(temp->me, temp);
  102.   }
  103.  
  104.   return temp;
  105. }
  106.  
  107. void mib_delete_Frame(mib_Widget *this)
  108. {
  109.   mib_Frame *temp = (mib_Frame *)this->myres;
  110.  
  111.   free(temp);
  112. }
  113.  
  114. void mib_save_Frame(mib_Widget *this, FILE *fout)
  115. {
  116.   mib_Frame *temp = (mib_Frame *)this->myres;
  117.  
  118.   fprintf(fout,"shadowtype: %d\\n\\\n", temp->shadowtype);
  119. }
  120.  
  121. int mib_load_Frame(mib_Widget *this, mib_Buffer *fin)
  122. {
  123.   mib_Frame    *myres;
  124.   unsigned char *label_text;
  125.   char          res[MI_MAXSTRLEN];
  126.   char          val[MI_MAXSTRLEN];
  127.   Arg           args[5];
  128.   int           n;
  129.  
  130.   myres = (mib_Frame *)this->myres;
  131.  
  132.   if (!mib_read_line(fin, res, val))
  133.     return 0;
  134.  
  135.   if (!strcmp(res,"shadowtype"))
  136.   {
  137.     sscanf(val,"%d",&(myres->shadowtype));
  138.  
  139.     n = 0;
  140.     switch (myres->shadowtype) {
  141.     case 0:
  142.         XtSetArg (args[n], XmNshadowType, XmSHADOW_IN); n++;
  143.     break;
  144.     case 1:
  145.     XtSetArg (args[n], XmNshadowType, XmSHADOW_OUT); n++;
  146.     break;
  147.     case 2:
  148.     XtSetArg (args[n], XmNshadowType, XmSHADOW_ETCHED_IN); n++;
  149.     break;
  150.     case 3:
  151.     XtSetArg (args[n], XmNshadowType, XmSHADOW_ETCHED_OUT); n++;
  152.     break;
  153.     default:
  154.     break;
  155.     }
  156.     XtSetValues(this->me, args, n);
  157.   }
  158.   else
  159.     return 0;
  160.  
  161.   if (!mib_read_line(fin, res, val))
  162.     return 0;
  163.  
  164.   if (strcmp(res,"EndWidget"))
  165.     return 0;
  166.  
  167.   return 1;
  168. }
  169.