Example #1
0
static boolean validObjType (CDKOBJS *obj, EObjectType type)
{
   bool valid = FALSE;

   if (obj != 0 && ObjTypeOf (obj) == type)
   {
      switch (type)
      {
      case vALPHALIST:
      case vBUTTON:
      case vBUTTONBOX:
      case vCALENDAR:
      case vDIALOG:
      case vDSCALE:
      case vENTRY:
      case vFSCALE:
      case vFSELECT:
      case vFSLIDER:
      case vGRAPH:
      case vHISTOGRAM:
      case vITEMLIST:
      case vLABEL:
      case vMARQUEE:
      case vMATRIX:
      case vMENTRY:
      case vMENU:
      case vRADIO:
      case vSCALE:
      case vSCROLL:
      case vSELECTION:
      case vSLIDER:
      case vSWINDOW:
      case vTEMPLATE:
      case vUSCALE:
      case vUSLIDER:
      case vVIEWER:
	 valid = TRUE;
	 break;
      case vTRAVERSE:		/* not really an object */
      case vNULL:
	 break;
      }
   }
   return valid;
}
Example #2
0
/*
 * Returns true if we have done a "new" on this object but no "destroy"
 */
bool validCDKObject (CDKOBJS *obj)
{
   bool result = FALSE;
   if (obj != 0)
   {
      ALL_OBJECTS *ptr;

      for (ptr = all_objects; ptr != 0; ptr = ptr->link)
      {
	 if (ptr->object == obj)
	 {
	    result = validObjType (obj, ObjTypeOf (obj));
	    break;
	 }
      }
   }
   return result;
}
Example #3
0
static CDKOBJS *bindableObject (EObjectType * cdktype, void *object)
{
   CDKOBJS *obj = (CDKOBJS *)object;

   if (obj != 0 && *cdktype == ObjTypeOf (obj))
   {
      if (*cdktype == vFSELECT)
      {
	 *cdktype = vENTRY;
	 object = ((CDKFSELECT *)object)->entryField;
      }
      else if (*cdktype == vALPHALIST)
      {
	 *cdktype = vENTRY;
	 object = ((CDKALPHALIST *)object)->entryField;
      }
   }
   else
   {
      object = 0;
   }
   return (CDKOBJS *)object;
}
Example #4
0
int my_traverseCDKScreen (CDKSCREEN *screen)
{
    CDKOBJS *curobj = NULL;

    // Get the focus
    curobj = getCDKFocusCurrent(screen);

    // If we didn't have one, or it was invalid, pick first one.
    if (!curobj)
        curobj = switchFocus (setCDKFocusNext (screen), 0);

    // Still no focus, bail.
    if (curobj == 0)
        return 0;

    refreshDataCDKScreen (screen);

    screen->exitStatus = CDKSCREEN_NOEXIT;



    while ((curobj != 0) && (screen->exitStatus == CDKSCREEN_NOEXIT))
    {
        int key;


        /* I want ASYNC, but for some reason you can't set this
         * globally */
        // PreProcess can change Focus, we need to detect this
        if (getCDKFocusCurrent(screen) != curobj) {
            curobj = getCDKFocusCurrent(screen);
            if (!curobj) break;
        }

        wtimeout(curobj->inputWindow, 350);
        key = getcCDKObject (curobj);

        switch (key)
        {
        case KEY_BTAB:
        {
            curobj = switchFocus (setCDKFocusPrevious (screen), curobj);
            break;
        }
        case KEY_TAB:
        {
            curobj = switchFocus (setCDKFocusNext (screen), curobj);
            break;
        }
        case KEY_F(10):
        {
            /* save data and exit */
            exitOKCDKScreen (screen);
            break;
        }
        case CTRL('X'):
        {
            exitCancelCDKScreen (screen);
            break;
        }
        case CTRL('R'):
        {
            /* reset data to defaults */
            resetCDKScreen (screen);
            setFocus (curobj);
            break;
        }
        case CDK_REFRESH:
        {
            /* redraw screen */
            refreshCDKScreen (screen);
            setFocus (curobj);
            break;
        }
        case KEY_ESC:
        {
            /* find and enable drop down menu */
            int j;

            for (j = 0; j < screen->objectCount; ++j)
                if (ObjTypeOf (screen->object[j]) == vMENU)
                {
                    curobj = handleMenu (screen, screen->object[j], curobj);
                    break;
                }
            break;
        }


        /* wgetch() returns ERR if we timedout */
        case ERR:
            return -1;
            break;

        default:
        {
            InjectObj (curobj, key);
            break;
        }
        }

    }

    if (screen->exitStatus == CDKSCREEN_EXITOK)
    {
        saveDataCDKScreen (screen);
        return 1;
    }
    else
        return 0;
}