home *** CD-ROM | disk | FTP | other *** search
- /*
- * Aes forms library interface
- *
- * form_do monitor user interaction with a dialog.
- * form_dial Reserve/Free screen space, draw expand/shrink ing
- * outline of dialog.
- * form_alert Display an Alert.
- * form_error Display an error.
- * form_center Center a dialog.
- *
- * ++jrb bammi@cadence.com
- * modified: mj -- ntomczak@vm.ucs.ualberta.ca
- */
- #include "common.h"
-
- /* Monitor User interaction with form
- * returns index of object that caused the end of interaction
- */
-
- #ifdef __DEF_ALL__
-
- #define L_form_do
- #define L_form_dia
- #define L_form_ale
- #define L_form_err
- #define L_form_cen
- #define L_form_key
- #define L_form_but
-
- #endif /* __DEF_ALL__ */
-
-
- #ifdef L_form_do
-
- int form_do(void *Tree, /* address of root of Object tree */
- int StartObj) /* index of an editable text field */
- /* where cursor is placed */
- /* =0 if no such field */
- {
- _int_in[0] = StartObj;
- _addrin[0] = Tree;
- return __aes__(AES_CONTROL_ENCODE(50, 1, 1, 1));
- }
- #endif /* L_form_do */
-
- #ifdef L_form_dia
-
- /* Form Dialog
- * Depending on the Value of Flag do
- * Flag = 0 (FMD_START)
- * Reserve Space for Dialog Box.
- * Flag = 1 (FMD_GROW)
- * Draw a growing box from S to B.
- * Flag = 2 (FMD_SHRINK)
- * Draw a shrinking box from B to S.
- * Flag = 3 (FMD_FINISH)
- * Free scren space claimed by FMD_START.
- *
- * returns == 0 an error exists, >0 no error.
- */
- int form_dial(int Flag,
- int Sx, int Sy, int Sw, int Sh, /* smallest size */
- int Bx, int By, int Bw, int Bh) /* largest size */
- {
- _int_in[0] = Flag;
- _int_in[1] = Sx;
- _int_in[2] = Sy;
- _int_in[3] = Sw;
- _int_in[4] = Sh;
-
- _int_in[5] = Bx;
- _int_in[6] = By;
- _int_in[7] = Bw;
- _int_in[8] = Bh;
-
- return __aes__(AES_CONTROL_ENCODE(51, 9, 1, 0));
- }
- #endif /* L_form_dia */
-
-
- #ifdef L_form_ale
-
- /* Display an Alert
- * alert string ::= "[<icon>][<message>][<buttons>]" (braks are literal)
- * icon ::= 0 No Icon, 1 note, 2 Wait, 3 Stop
- * message, button ::= '|' seperated strings
- *
- * limits: each alert line < 30 chars, each button < 10 chars
- *
- * returns exit button
- */
- int form_alert(int DefButton, /* default exit button (0 if none) */
- char *Str) /* alert string */
- {
- _int_in[0] = DefButton;
- _addrin[0] = Str;
- return __aes__(AES_CONTROL_ENCODE(52, 1, 1, 1));
- }
- #endif /* L_form_ale */
-
-
- #ifdef L_form_err
-
- /* Display a error code dialog box
- * returns exit button (1, 2, or 3)
- * handles only the following error codes:
- * 2,3,18 cannot find folder/file
- * 4 no room to open another doc
- * 5 item alredy exists or is read-only
- * 8,10,11 not enough mem for application
- * 15 drive does not exists
- * [Ed: someone at atari is really screwed up]
- */
- int form_error(int ErrorCode)
- {
- _int_in[0] = ErrorCode;
- return __aes__(AES_CONTROL_ENCODE(53, 1, 1, 0));
- }
- #endif /* L_form_err */
-
-
- #ifdef L_form_cen
-
- /* Center a dialog
- * returns a reserved value
- */
- int form_center(void *Tree, /* addr of root of dialog tree */
- int *Cx, int *Cy, int *Cw, int *Ch) /* centered box */
- {
- int retval;
-
- _addrin[0] = Tree;
-
- retval = __aes__(AES_CONTROL_ENCODE(54, 0, 5, 1));
-
- *Cx = _int_out[1];
- *Cy = _int_out[2];
- *Cw = _int_out[3];
- *Ch = _int_out[4];
-
- return retval;
- }
- #endif /* L_form_cen */
-
- /* Two forgotten AES calls - 55 & 56 */
- /* Reference: Atari ST Profibuch */
- /* Hans-Dieter Jankowski, Julian F. Reschke, Dietmar Rabich */
- /* SYBEX-Verlag GmbH, Dsseldorf, Germany */
- /* 7.th edition 1989 */
- /* ISBN : 3-88745-563-0 */
- /* Pages 549 ff. */
-
- #ifdef L_form_key
-
- /* This one simulates keyboard input into a form. */
- /* Parameters : */
- /* Ktree : Adress of the object tree */
- /* Kobject : object number of current EDIT - Object */
- /* Kobnext : unused, set to zero */
- /* Kchar : the character to be input into the form */
- /* *Knxtobject : new EDIT - Object for the next call */
- /* (changes if tab, cursor or return has been pressed) */
- /* *Knxtchar : 0: character was cursor, tab or return */
- /* >0 : character input into the form */
- /* Return value: 0: Exit - object has been pressed */
- /* >0 Dialog has not been finished yet */
- int form_keybd(void *Ktree, int Kobject, int Kobnext, int Kchar,
- int *Knxtobject, int *Knxtchar)
-
- {
- int retval;
-
- _addrin[0] = Ktree;
- _int_in[0] = Kobject;
- _int_in[1] = Kchar;
- _int_in[2] = Kobnext;
-
- retval = __aes__(AES_CONTROL_ENCODE(55, 3, 3, 1));
-
- *Knxtobject = _int_out[1];
- *Knxtchar = _int_out[2];
-
- return retval;
- }
- #endif /* L_form_key */
-
- #ifdef L_form_but
-
- /* This one simulates mouse clicks into a form. */
- /* Parameters : */
- /* Btree : Adress of the object tree */
- /* Bobject : object number of object to be worked upon */
- /* Bclicks : number of mouse clicks to be simulated */
- /* Bnxtobj : new current object , high - order - bit is set if */
- /* there was a double click to a TOUCHEXIT - object */
- /* 0: next object is HIDDEN or DISABLED or is not */
- /* EDITABLE */
- /* Return value: 0: an EXIT - or TOUCHEXIT - object has been selected */
- /* >0 : dialog has not been finished */
- int form_button(void *Btree, int Bobject, int Bclicks, int *Bnxtobj)
-
- {
- int retval;
-
- _addrin[0] = Btree;
- _int_in[0] = Bobject;
- _int_in[1] = Bclicks;
-
- retval = __aes__(AES_CONTROL_ENCODE(56, 2, 2, 1));
-
- *Bnxtobj = _int_out[1];
-
- return retval;
- }
- #endif /* L_form_but */
-
- /* - eof - */
-