/* * 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 ::= "[][][]" (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 - */