61
70
switchFocus (menu, oldobj);
64
int key = getcCDKObject (menu);
74
int key = getchCDKObject (menu, &functionKey);
75
/* cleanup the menu */
76
injectCDKMenu ((CDKMENU *) menu, key);
83
/* cleanup the menu */
84
injectCDKMenu ((CDKMENU *)menu, key);
82
int m = injectCDKMenu ((CDKMENU *) menu, key);
89
done = (injectCDKMenu ((CDKMENU *)menu, key) >= 0);
88
94
if ((newobj = getCDKFocusCurrent (screen)) == 0)
89
95
newobj = setCDKFocusNext (screen);
229
* Traverse the widgets on a screen
235
* Set focus to a specific object, returning it.
236
* If the object cannot be found, return null.
238
CDKOBJS *setCDKFocusCurrent (CDKSCREEN *screen, CDKOBJS *newobj)
242
int n = getFocusIndex (screen);
247
if (++n >= screen->objectCount)
250
curobj = screen->object[n];
251
if (curobj == newobj)
262
setFocusIndex (screen, (result != 0) ? n : -1);
267
* Set focus to the first object in the screen.
269
CDKOBJS *setCDKFocusFirst (CDKSCREEN *screen)
271
setFocusIndex (screen, screen->objectCount - 1);
272
return switchFocus (setCDKFocusNext (screen), 0);
276
* Set focus to the last object in the screen.
278
CDKOBJS *setCDKFocusLast (CDKSCREEN *screen)
280
setFocusIndex (screen, 0);
281
return switchFocus (setCDKFocusPrevious (screen), 0);
284
void traverseCDKOnce (CDKSCREEN *screen,
288
CHECK_KEYCODE funcMenuKey)
293
switchFocus (setCDKFocusPrevious (screen), curobj);
297
switchFocus (setCDKFocusNext (screen), curobj);
301
/* save data and exit */
302
exitOKCDKScreen (screen);
306
exitCancelCDKScreen (screen);
310
/* reset data to defaults */
311
resetCDKScreen (screen);
317
refreshCDKScreen (screen);
322
/* not everyone wants menus, so we make them optional here */
323
if (funcMenuKey != 0 && funcMenuKey (keyCode, functionKey))
325
/* find and enable drop down menu */
328
for (j = 0; j < screen->objectCount; ++j)
329
if (ObjTypeOf (screen->object[j]) == vMENU)
331
handleMenu (screen, screen->object[j], curobj);
337
InjectObj (curobj, keyCode);
344
* Traverse the widgets on a screen.
231
346
int traverseCDKScreen (CDKSCREEN *screen)
235
setFocusIndex (screen, screen->objectCount - 1);
236
curobj = switchFocus (setCDKFocusNext (screen), 0);
240
refreshDataCDKScreen (screen);
242
screen->exitStatus = CDKSCREEN_NOEXIT;
244
while ((curobj != 0) && (screen->exitStatus == CDKSCREEN_NOEXIT))
247
key = getcCDKObject (curobj);
253
curobj = switchFocus (setCDKFocusPrevious (screen), curobj);
258
curobj = switchFocus (setCDKFocusNext (screen), curobj);
263
/* save data and exit */
264
exitOKCDKScreen (screen);
269
exitCancelCDKScreen (screen);
274
/* reset data to defaults */
275
resetCDKScreen (screen);
282
refreshCDKScreen (screen);
288
/* find and enable drop down menu */
291
for (j = 0; j < screen->objectCount; ++j)
292
if (ObjTypeOf (screen->object[j]) == vMENU)
294
curobj = handleMenu (screen, screen->object[j], curobj);
301
InjectObj (curobj, key);
307
if (screen->exitStatus == CDKSCREEN_EXITOK)
309
saveDataCDKScreen (screen);
349
CDKOBJS *curobj = setCDKFocusFirst (screen);
353
refreshDataCDKScreen (screen);
355
screen->exitStatus = CDKSCREEN_NOEXIT;
357
while (((curobj = getCDKFocusCurrent (screen)) != 0)
358
&& (screen->exitStatus == CDKSCREEN_NOEXIT))
363
key = getchCDKObject (curobj, &function);
365
traverseCDKOnce (screen, curobj, key, function, checkMenuKey);
368
if (screen->exitStatus == CDKSCREEN_EXITOK)
370
saveDataCDKScreen (screen);