ACS19@UHUPVM1.BITNET (05/17/86)
/* HERE IS THE THIRD PART OF THE RAMDISK ACCESSORY */
/* This program is copyright 1986 by Michael Vederman. Distribute it
freely, so long as proper credit is given. */
/**************************************************************************/
/* BEGIN PART III */
open_dialog()
{
int c;
/* This routine does a lot. It probably could have been done easier
by direct assignment to the structure, but standard system calls never
hurt. (gag) It opens a dialog box into our window, then does a form_do,
indicating one editable field, which makes it wait for something to
happen. Then it does whatever the return code tells it. I tried for
the longest time to get the fmd_finish to erase the dialog, but it
doesn't. It merely pipes a message, you have to do a redraw manually!!
Which means you better know VDI. I cheated by getting rid of the whole
window, in this way it has to redraw the desktop, automatically. */
clear_window(wi_handle);
form_center(rs_object, &fo_cx, &fo_cy, &fo_cw, &fo_ch);
form_dial(FMD_START,xdesk,ydesk,wdesk,hdesk,fo_cx, fo_cy, fo_cw, fo_ch);
objc_draw(rs_object,0,15,fo_cx,fo_cy,fo_cw,fo_ch);
if (!in_place)
form_alert(1,&alert8);
fo_doreturn=form_do(rs_object, SIZEBOX);
form_dial(FMD_FINISH,xdesk,ydesk,wdesk,hdesk,fo_cx,fo_cy,fo_cw,fo_ch);
switch (fo_doreturn)
{
case ALOCBOX:
{
do_ramdisk();
if (ok){
objc_change(rs_object, ALOCBOX, 0,
xdesk, ydesk, wdesk,hdesk,
SHADOWED+DISABLED, 0);
objc_change(rs_object, ALOCSTR, 0,
xdesk, ydesk, wdesk, hdesk,
DISABLED, 0);
objc_change(rs_object, DALOCSTR, 0,
xdesk, ydesk, wdesk, hdesk,
NORMAL, 0);
objc_change(rs_object, RESIZSTR, 0,
xdesk, ydesk, wdesk, hdesk,
NORMAL, 0);
objc_change(rs_object, DALOCBOX, 0,
xdesk, ydesk, wdesk, hdesk,
NORMAL|SHADOWED, 0);
objc_change(rs_object, RESIZBOX, 0,
xdesk, ydesk, wdesk, hdesk,
NORMAL|SHADOWED, 0);
}
else
objc_change(rs_object, ALOCBOX, 0,
xdesk, ydesk, wdesk, hdesk,
NORMAL|SHADOWED, 0);
}
break;
case RESIZBOX:
{
objc_change(rs_object, RESIZBOX, 0,
xdesk, ydesk, wdesk, hdesk,
NORMAL|SHADOWED, 0);
form_alert(1,&alert6);
}
break;
case DALOCBOX:
{
remove_rdisk();
objc_change(rs_object, ALOCBOX, 0,
xdesk, ydesk, wdesk,hdesk,
NORMAL|SHADOWED, 0);
objc_change(rs_object, ALOCSTR, 0,
xdesk, ydesk, wdesk,hdesk,
NORMAL, 0);
objc_change(rs_object, DALOCBOX, 0,
xdesk, ydesk, wdesk,hdesk,
DISABLED|SHADOWED, 0);
objc_change(rs_object, DALOCSTR, 0,
xdesk, ydesk, wdesk,hdesk,
DISABLED, 0);
objc_change(rs_object, RESIZBOX, 0,
xdesk, ydesk, wdesk,hdesk,
DISABLED|SHADOWED, 0);
objc_change(rs_object, RESIZSTR, 0,
xdesk, ydesk, wdesk,hdesk,
DISABLED, 0);
form_alert(1,&alert5);
}
break;
case GOODBYE:
{
form_alert(1, &alert4);
objc_change(rs_object, GOODBYE, 0,
xdesk, ydesk, wdesk,hdesk,
NORMAL, 0);
}
break;
}
wind_close(wi_handle);
graf_shrinkbox(15,27,160,8, xdesk, ydesk, wdesk, hdesk );
wind_delete(wi_handle);
msgbuff[0]=AC_CLOSE;
msgbuff[3]=menu_id;
wi_handle=(-1);
}
/***************************************************************************/
start()
{
while (TRUE)
{
event=evnt_multi( MU_MESAG,
1, 1, ret,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
msgbuff, 0, 0, &ret, &ret, &ret, &ret, &ret, &ret );
if ( event & MU_MESAG )
switch( msgbuff[0] )
{
case AC_OPEN:
if (msgbuff[4]==menu_id)
{
if (wi_handle==(-1))
{ open_vwork();
open_window();
open_dialog(); }
}
break;
case AC_CLOSE:
if ((msgbuff[3]==menu_id) && (wi_handle != (-1) ))
{ v_clsvwk(handle); wi_handle=(-1); }
break;
}
}
}
/* Th.. Th.. That's all Folks... If you have any problems, please post
them either to the network, or send them to me directly ACS19@UHUPVM1.
I know that there will probably be a tab expansion somewhere along the
line, so I hope it does not get truncated. If it does, I will repost
it. I hope no one accuses me of 'abuse of the system', since I merely
wish to exchange and share info. I have edited this a little, and I
have not recompiled it since, but I do not think there should be any
problems. Let me know what you find. Someone please send me the
other articles from BAMMI's posting of Tim Oren's tutorial, I have
10-12, and also need the macro defs, since he has not responded yet. */
/* Mike */
/* END PART III */