/* -- MyDials "Interface" -- Any improvements would be appreciated. (P) 1992, Markus Nick --------------------------------------------------------------- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --------------------------------------------------------------- */ /* requires int `dummy' */ #ifndef __myd2ruby_h__ #define __myd2ruby_h__ 1 /* ==== types ==== */ typedef struct { OBJECT *Tree; MFDB Buffer; WORD x, y, w, h; } DIALINFO; typedef struct { WORD x, y, w, h; } RECT; /* ==== prototypes ==== */ int fm_inifld _((OBJECT *tree, int start_fld)); /* ==== defines ==== */ #define dial_init(fct_alloc, fct_free, mnum, mform, gs) \ (my2r_mnum = (mnum), my2r_mform = (mform), my2r_gs = (gs)) #define dial_exit() /* void */ #define dial_fix(tree, is_dialog) ((is_dialog) ? (void)mfm_ruby((tree)) : (void)0) #define dial_center(tree) (form_center(tree, &dummy, &dummy, &dummy, &dummy)) #define dial_move(di, rx, ry, rw, rh) (di_fly((di)->Tree)) #define dial_draw(di) (objc_draw((di)->Tree, ROOT, MAX_DEPTH, (di)->x, (di)->y, (di)->w, (di)->h)) #define dial_start(tree, di) \ ((di)->Tree = (tree), \ (di)->x = (tree)[ROOT].ob_x, (di)->y = (tree)[ROOT].ob_y, \ (di)->w = (tree)[ROOT].ob_width, (di)->h = (tree)[ROOT].ob_height, \ form_dial(FMD_START, xdesk+wdesk/2, ydesk+hdesk/2, 1, 1, \ (di)->x, (di)->y, (di)->w, (di)->h), \ (my2r_gs ? form_dial(FMD_GROW, xdesk+wdesk/2, ydesk+hdesk/2, 1, 1, \ (di)->x, (di)->y, (di)->w, (di)->h) : 0)) #define dial_end(di) \ ((my2r_gs ? form_dial(FMD_SHRINK, xdesk+wdesk/2, ydesk+hdesk/2, 1, 1, \ (di)->x, (di)->y, (di)->w, (di)->h) : 0), \ form_dial(FMD_FINISH, xdesk+wdesk/2, ydesk+hdesk/2, 1, 1, \ (di)->x, (di)->y, (di)->w, (di)->h)) #define dial_do(di, edit_obj) (form_do((di)->Tree, my2d_find_inifld((di)->Tree, edit_obj))) #define open_dial(tree, grow, start, di) \ ((di)->Tree = (tree), \ (di)->x = (tree)[ROOT].ob_x, (di)->y = (tree)[ROOT].ob_y, \ (di)->w = (tree)[ROOT].ob_width, (di)->h = (tree)[ROOT].ob_height, \ form_dial(FMD_START, xdesk+wdesk/2, ydesk+hdesk/2, 1, 1, \ (di)->x, (di)->y, (di)->w, (di)->h), \ ((my2r_gs && (grow)) ? \ (start) \ ? form_dial(FMD_GROW, ((GRECT*)start)->g_x, ((GRECT*)start)->g_y, ((GRECT*)start)->g_w, ((GRECT*)start)->g_h, \ (di)->x, (di)->y, (di)->w, (di)->h) \ : (form_dial(FMD_GROW, xdesk+wdesk/2, ydesk+hdesk/2, 1, 1, \ (di)->x, (di)->y, (di)->w, (di)->h)), \ dial_draw(di)) #define close_dial(di, start) \ (((my2r_gs && (grow)) \ ? (start) \ ? form_dial(FMD_SHRINK, ((GRECT*)start)->g_x, ((GRECT*)start)->g_y, ((GRECT*)start)->g_w, ((GRECT*)start)->g_h, \ (di)->x, (di)->y, (di)->w, (di)->h) \ : form_dial(FMD_SHRINK, xdesk+wdesk/2, ydesk+hdesk/2, 1, 1, \ (di)->x, (di)->y, (di)->w, (di)->h)) \ : 0), \ form_dial(FMD_FINISH, xdesk+wdesk/2, ydesk+hdesk/2, 1, 1, \ (di)->x, (di)->y, (di)->w, (di)->h)) #define HndlDial(tree, startfld, gs, start, ok) \ (open_dial(tree, gs, start, di), \ dial_do(di->Tree, startfld), \ close_dial(di, start), \ *ok = 1) #ifndef __myd2ruby_c__ extern WORD my2r_mnum; extern MFORM my2r_mform; extern BOOLEAN my2r_gs; #endif /* ndef __myd2ruby_c__ */ #endif /* ndef __myd2ruby_h__ */ /* -eof- */