Exemple #1
0
/*! event in main menu */
void event_pmenu(int *quit) {
	int i;

	switch(buf[4]) 	{
	case M_ALERTE :
		big_alert(2, ALERT, "", TRUE);
		menu_tnormal(adr_menu, T_FICHIER, 1);
		break;
	
	case M_WMENU :
		win[WINDMENU].w_pal =(Palette *)malloc(work_display.n_color *sizeof(Palette));
		for(i = 0 ; i < work_display.n_color ; i++) {
			win[WINDMENU].w_pal[i][0] = work_display.palette[i][0];
			win[WINDMENU].w_pal[i][1] = work_display.palette[i][1];
			win[WINDMENU].w_pal[i][2] = work_display.palette[i][2];
		}
		open_window(WINDMENU, WTYP_PICT, WATR_CURRB,
			bureau.xd +(bureau.wd / 5), bureau.yd +(bureau.hd / 5), 320, 150,
			100, 100, 200, 200, 16, 16,
			WFARROW, THIN_CROSS,
			winicn, ZERO, close_wmenu, get_string(TIT_MENU), "",
			(long) bureau.wd,(long) bureau.hd, TRUE, FALSE, W_MENU,
			10, BLACK);
		menu_tnormal(adr_menu, T_FENETRES, 1);
		break;
	
	case M_QUITTER :
		*quit = TRUE;
		menu_tnormal(adr_menu, T_FICHIER, 1);
		break;
	}	/* switch case */
}	/* endof event_pmenu */
Exemple #2
0
/**
*	Handle an menu item event
*/
int deskmenu_dispatch_item(short title, short item)
{
	int i=0;
	int retval = 0;
	OBJECT * menu_root = deskmenu_get_obj_tree();

    menu_tnormal(menu_root, item, 1);
	menu_tnormal(menu_root, title, 1);
	menu_bar(menu_root, 1);

	// legacy code, is this sensible?:
	/*
	while( gw ) {
		window_set_focus( gw, WIDGET_NONE, NULL  );
		gw = gw->next;
	}
	*/


	while (menu_evnt_tbl[i].rid != -1) {
		 if (menu_evnt_tbl[i].rid == item) {
		 	if (menu_evnt_tbl[i].menu_func != NULL) {
				menu_evnt_tbl[i].menu_func(item, title, NULL);
			}
			break;
		}
		i++;
	}

	return(retval);
}
Exemple #3
0
/*! Display info about BIG */
void aff_infos(void) {
	OBJECT *adr;
	int quit = FALSE, index, tit, menuf = FALSE;
	MFDB img;

	if(buf[0] == BEV_WMENU) {
		index = buf[5];
		tit = buf[3];
		menuf = TRUE;
	}
	if(_app)
		menu_tnormal(adr_menu, T_BUREAU, 0); /* Inverser titre */
	wind_update(BEG_MCTRL);							/* Bloquer menu */
	adr = ir_trindex[INFOS];
	if(work_display.n_color >= 16) {
		adr->ob_spec.obspec.interiorcol = 8;
		adr->ob_spec.obspec.fillpattern = 7;
	}
	formm_draw(adr, BLANK, FALSE, &img);
	do {
		dialog(DLG_FORM, adr, FALSE, FALSE, BLANK, &img, FALSE);
		if(object == INF_SORTIE)
			quit = TRUE;
	} while(NOT quit);
	formm_undraw(adr, &img);
	wind_update(END_MCTRL);							/* Débloquer menu */
	if(_app)
		menu_tnormal(adr_menu, T_BUREAU, 1); /* Inverser titre */
	if(menuf) {
		win[index].w_bar[tit].ob_state &= ~SELECTED;
		draw_object(tit, index);
	}
}	/* endof aff_infos() */ 
Exemple #4
0
/*! free popup event */
void event_freepu(void) {
	int i;

	switch(buf[4]) {
	case PUL_ALERT :
		if(_app) 
			menu_tnormal(adr_menu, T_FICHIER, 0);
		else {
			win[WINDACC].w_bar[T_FICHIER + 3].ob_state |= SELECTED;
			draw_object(T_FICHIER + 3, WINDACC);
		}
		big_alert(2, ALERT, "", TRUE);

		if(_app)
			menu_tnormal(adr_menu, T_FICHIER, 1);
		else {
			win[WINDACC].w_bar[T_FICHIER + 3].ob_state &= ~SELECTED;
			draw_object(T_FICHIER + 3, WINDACC);
		}
		break;
	
	case PUL_WMENU :
		if(_app)
			menu_tnormal(adr_menu, T_FENETRES, 0);
		else {
			win[WINDACC].w_bar[T_FENETRES + 3].ob_state |= SELECTED;
			draw_object(T_FENETRES + 3, WINDACC);
		}
		if(win[WINDMENU].w_hg <= ZERO) {
			win[WINDMENU].w_pal =(Palette *)malloc(work_display.n_color * sizeof(Palette));
			for(i = 0 ; i < work_display.n_color ; i++) {
				win[WINDMENU].w_pal[i][0] = work_display.palette[i][0];
				win[WINDMENU].w_pal[i][1] = work_display.palette[i][1];
				win[WINDMENU].w_pal[i][2] = work_display.palette[i][2];
			}
			open_window(WINDMENU, WTYP_PICT, WATR_CURRB,
				bureau.xd +(bureau.wd / 5), bureau.yd +(bureau.hd / 5), 320, 150,
				100, 100, 200, 200, 16, 16,
				WFARROW, THIN_CROSS,
				winicn, ZERO, close_wmenu, get_string(TIT_MENU), "",
				(long) bureau.wd,(long) bureau.hd,
				TRUE, FALSE, W_MENU,
				10, BLACK);
		}
		else {
			buf[3] = win[WINDMENU].w_hg;
			(*win[WINDMENU].w_top)();
		}
		if(_app)
			menu_tnormal(adr_menu, T_FENETRES, 1);
		else {
			win[WINDACC].w_bar[T_FENETRES + 3].ob_state &= ~SELECTED;
			draw_object(T_FENETRES + 3, WINDACC);
		}
		break;
	}	/* end switch case */
}	/* event_freepu */
Exemple #5
0
/*! Free form */
void formulaire(void) {
	OBJECT *adr;
	int quit = FALSE;
	char *adr_bakrsc = 0L;			/* ptr form state */
	MFDB img;

	img.fd_addr = NULL;
	if(_app)
		menu_tnormal(adr_menu, T_FICHIER, 0); 	/* Inverser titre */
	else {
		win[WINDACC].w_bar[T_FICHIER + 3].ob_state |= SELECTED;
		draw_object(T_FICHIER + 3, WINDACC);
	}
	wind_update(BEG_MCTRL);								/* Bloquer menu */
	adr = ir_trindex[FORMULAIRE];
	if(work_display.n_color >= 16) {
		adr->ob_spec.obspec.interiorcol = 8;
		adr->ob_spec.obspec.fillpattern = 7;
		adr[TXT1].ob_spec.tedinfo->te_color = 8;
		adr[TXT1].ob_spec.tedinfo->te_color |= 7 << 4;
		adr[TXT1].ob_spec.tedinfo->te_color |=(1 << 8);
		adr[TXT2].ob_spec.tedinfo->te_color = 8;
		adr[TXT2].ob_spec.tedinfo->te_color |= 7 << 4;
		adr[TXT2].ob_spec.tedinfo->te_color |=(1 << 8);
	}
	bak_rsc(adr, &adr_bakrsc);
	formm_draw(adr, TXT1, TRUE, &img);
	do {
		if(dialog(DLG_FORM, adr, FALSE, FALSE, BLANK, &img, TRUE)) {
			switch(object) {
			case P_CONFIRME :
				quit = TRUE;
				break;
			case P_ANNULE :
				quit = TRUE;
				res_rsc(adr, &adr_bakrsc);
				break;
			}
		}
	} while(NOT quit);
	formm_undraw(adr, &img);
	if(adr_bakrsc)							/* Si état formulaire sauvegardé */
		free(adr_bakrsc);
	wind_update(END_MCTRL);								/* Débloquer menu */
	if(_app)
		menu_tnormal(adr_menu, T_FICHIER, 1); 	/* Inverser titre */
	else {
		win[WINDACC].w_bar[T_FICHIER + 3].ob_state &= ~SELECTED;
		draw_object(T_FICHIER + 3, WINDACC);
	}
}	/* end of formulaire() */
Exemple #6
0
static WORD hndl_menu(WORD title, WORD item)
{
    WORD done, rc;

    done = FALSE;
    switch(title)
    {
    case DESKMENU:
        done = do_deskmenu(item);
        break;
    case FILEMENU:
        done = do_filemenu(item);
        break;
    case VIEWMENU:
        done = FALSE;
        rc = do_viewmenu(item);
        if (rc)             /* if sort and/or view has changed,  */
            desk_all(rc);   /* rebuild all windows appropriately */
        break;
    case OPTNMENU:
        done = do_optnmenu(item);
        break;
    }

    menu_tnormal(G.a_trees[ADMENU], title, 1);

    return done;
}
Exemple #7
0
/* ------------------ */
void mn_action(void)
{
register int i, l;
register char *m_entry;

mouse_on();

i = 0;
while (i < M_POINTS && msg[4] != menu_id[i])
	i++;

m_entry = menu_adr[msg[4]].ob_spec.free_string;
l = strlen(m_entry);

if (m_entry[l - 3] == 'F')
	if (m_entry[l - 1] == '0')
		funk_blink(9);
	else
		funk_blink(m_entry[l - 2] - '1');
		
if (i < M_POINTS)
	(*rout[i])();

menu_tnormal(menu_adr, msg[3], TRUE);
}
Exemple #8
0
/*! Display small form in window */
void pform_wind(void) {
	OBJECT *adr;

	adr = ir_trindex[PETITFORM];
	if(work_display.n_color >= 16) {
		adr->ob_spec.obspec.interiorcol = 8;
		adr->ob_spec.obspec.fillpattern = 7;
		adr[PF_CHAMP1].ob_spec.tedinfo->te_color = 8;
		adr[PF_CHAMP1].ob_spec.tedinfo->te_color |= 7 << 4;
		adr[PF_CHAMP1].ob_spec.tedinfo->te_color |=(1 << 8);
		adr[PF_CHAMP2].ob_spec.tedinfo->te_color = 8;
		adr[PF_CHAMP2].ob_spec.tedinfo->te_color |= 7 << 4;
		adr[PF_CHAMP2].ob_spec.tedinfo->te_color |=(1 << 8);
		adr[PF_CHAMP3].ob_spec.tedinfo->te_color = 8;
		adr[PF_CHAMP3].ob_spec.tedinfo->te_color |= 7 << 4;
		adr[PF_CHAMP3].ob_spec.tedinfo->te_color |=(1 << 8);
		adr[PF_CHAMP4].ob_spec.tedinfo->te_color = 8;
		adr[PF_CHAMP4].ob_spec.tedinfo->te_color |= 7 << 4;
		adr[PF_CHAMP4].ob_spec.tedinfo->te_color |=(1 << 8);
	}
	if(_app) {
		adr[PF_TRAME].ob_spec.obspec.fillpattern = adr_desk->ob_spec.obspec.fillpattern;
		adr[PF_COLOR].ob_spec.obspec.interiorcol = adr_desk->ob_spec.obspec.interiorcol;
	}
	formw_draw(adr, PETIT_FORM, TITRE_PF, BLANK, PF_CHAMP1, WATR_FORMB, winicn);
	if(_app)
		menu_tnormal(adr_menu, T_FENETRES, 1);
}	/* endof pform_wind() */ 
Exemple #9
0
/*
 * Get a single event, process it, and return.
 *
 */
domulti(){
    int event;
  
    event = evnt_multi(MU_MESAG,
			1,1,butdown,
			0,0,0,0,0,
			0,0,0,0,0,
			msgbuff,0,0,&mx,&my,&ret,&ret,&keycode,&ret);
  
    if (event & MU_MESAG)
        switch (msgbuff[0]) {
	    case WM_REDRAW:
		do_redraw(msgbuff[4],msgbuff[5],msgbuff[6],msgbuff[7]);
		break;
	
	    case WM_NEWTOP:
	    case WM_TOPPED:
		wind_set(wi_handle, WF_TOP, 0, 0, 0, 0);
		break;
	
	    case WM_CLOSED:
		running = FALSE;
		break;
	
	    case MN_SELECTED:
		graf_mouse(HOURGLASS, 0L);
		switch(msgbuff[3]) {
		    case MNDESK:
			if(msgbuff[4] == DEABOUT) {
			    strcpy((about[ABVERSN].ob_spec)->te_ptext, "6.00");
			    about[ABOK].ob_state = NORMAL;
			    execform(about);
			    }
			break;		/* "cannot happen" */

		    case MNFILE:
			switch (msgbuff[4]) {
			    case FIQUIT:	/* [QUIT] item */
				running = 0;
				break;

			    case FIINST:	/* [INSTALL] item */
				install();
				break;
		
			    case FIUNINST:	/* [UNINSTALL] item */
				uninstall();
				break;
			}
			break;
		}
		menu_tnormal(menubar, msgbuff[3], 1); /* back to normal */
        	graf_mouse(ARROW, 0L);	/* restore mouse */
		break;
	}
}
Exemple #10
0
/*! Display large form in window */
void gform_wind(void) {
	OBJECT *adr;

	adr = ir_trindex[GRANDFORM];
	if(work_display.n_color >= 16) {
		adr->ob_spec.obspec.interiorcol = 8;
		adr->ob_spec.obspec.fillpattern = 7;
	}
	formw_draw(adr, GRAND_FORM, TITRE_GF, BLANK, BLANK, WATR_CURRB, winicn);
	if(_app)
		menu_tnormal(adr_menu, T_FENETRES, 1);
}	/* endof gform_wind() */ 
Exemple #11
0
/*! message events */
void event_mesag(int *flacc, int *quit) {
	if(buf[0] == MN_SELECTED)
		event_pmenu(quit);
	else if(buf[0] == BEV_HIERM) {	
		if(buf [6] == MH_HISTO) {
			cree_histo();
			menu_tnormal(adr_menu, T_FENETRES, TRUE);
		}
	}	/* hier menu event */
	else if(buf[0] == AC_CLOSE) {
		clos_acc();
		*flacc = FALSE;
	}
	else if((buf[0] == WM_CLOSED) &&(buf[3] == win[WINDACC].w_hg))
		*flacc = FALSE;
}	/* endof event_mesag */
Exemple #12
0
void handle_menu(int16 title, int16 item)
{
    switch (item)
    {
    case MENDE :
        quit = TRUE;
        break;

    case MOPEN :
        open_wdial( wdial, -1, -1 );
        break;

    case MABOUT :
        simple_mdial( about, 0 );
        break;

    default:
        break;
    }
    menu_tnormal(menu, title, 1);
}
Exemple #13
0
/*! hierarchical menu in windows events */
void event_whier(void) {
	if(buf[7] == WINDMENU) {
		switch(buf[6]) {
		case MWH_ICN0 :
			buf[6] = MWH_ICN0;
			icone();
			break;
		case MWH_ICN1 :
			buf[6] = MWH_ICN1;
			icone();
			break;
		}
	}
	
	else if(buf[7] == WINDACC) 	{
		if(buf[6] == MH_HISTO) {
			cree_histo();
			menu_tnormal(win[WINDACC].w_bar, T_FENETRES + 3, TRUE);
		}
	}
}	/* end of event_whier */
Exemple #14
0
void
do_menu( const int *msg, int *event )
{
	WORD 	ret;
	WORD	puntmsg[8];
	WINFO 	*w;

	menu_tnormal( menu, MnTitle(msg), TRUE );
	switch( MnItem(msg) ) {
		case TEST:
			ret = new_window( &w, tree );
			if( ret == (int)ENHNDL ) {
				form_alert( 1, "[1][Sorry, no more windows| are available.|Please close one| you aren't using.][ OK ]" );
			} else if( ret == (int)ENSMEM ) {
				form_alert( 1, "[1][Sorry, not enough| free memory for| another window.][ OK ]" );
			} else {
				++nwindows;
				ObX(ROOT) = w->work.g_x;
				ObY(ROOT) = w->work.g_y;
				redraw( w, &w->work );
				do {
					ret = xform_do( w, 0, puntmsg );
					if( ret == -1 ) {
						switch( MsgType(puntmsg) ) {
							case MN_SELECTED:
								do_menu( (int *)puntmsg, event );
								if( *event == 0 ) {
									ret = 0;
								} else {
									wind_get( 0, WF_TOP, &ret );
									w = id_2winfo( ret );
									if( w == NULL ) {
										form_alert( 1, "[3][Error topping window][ OK ]" );
										ret = *event = 0;
									} else {
										ObX(ROOT) = w->work.g_x;
										ObY(ROOT) = w->work.g_y;
										ret = -1;
									}
								}
							break;

							case WM_TOPPED:
							case WM_NEWTOP:
								w = id_2winfo( WmId(puntmsg) );
								if( w == NULL ) {
									form_alert( 1, "[3][Error topping window][ OK ]" );
									ret = *event = 0;
								}
								wind_set( w->id, WF_TOP );
								ObX(ROOT) = w->work.g_x;
								ObY(ROOT) = w->work.g_y;
							break;

							case WM_CLOSED:
								wind_close( w->id );
								wind_unlink( w );
								wind_delete( w->id );
								free( w );
								--nwindows;
								ret = 0;
							break;
						}
					} else {
						wind_close( w->id );
						wind_unlink( w );
						wind_delete( w->id );
						free( w );
					}
				} while( ret == -1 );
				Deselect(ret & 0x7fff);
			}
		break;

		case QUIT:
			*event = 0;
		break;
	}

}
Exemple #15
0
static void hndlkey(int key, int kstate)
{
	int i = 0, k;
	APPLINFO *appl;
	int title; 				/* DjV 019 110103 rsc index of current menu title */

	if ( (unsigned int)key == HELP )
		showhelp();						/* DjV 007 251202 */

	k = key & ~XD_CTRL;

	if ((((unsigned int) k >= 0x803B) && ((unsigned int) k <= 0x8044)) ||
		(((unsigned int) k >= 0x8154) && ((unsigned int) k <= 0x815D)))
	{
		k &= 0xFF;
		k = (k >= 0x54) ? (k - 0x54 + 11) : (k - 0x3B + 1);

		if ((appl = find_fkey(k)) != NULL)
			app_exec(NULL, appl, NULL, NULL, 0, kstate, FALSE);
	}
	else
	{
		/* k = key & ~XD_ALT;          DjV 019 100103 */
		k = scansh ( key, kstate ); /* DjV 019 100103 */

		/* DjV 019 110103 ---vvv--- */
		/*
		while ((keys[i].scancode != k) && (i < (NKEYS - 1)))
			i++;

		if (keys[i].scancode == k)
		*/

		title = TFIRST;
		while (   (options.V2_2.kbshort[i] != k) && (i <= ( MLAST - MFIRST)) )
		{
			if ( (options.V2_2.kbshort[i] & XD_ALT) != 0 ) title++;  
			i++;
		}

		if ( options.V2_2.kbshort[i] == k )
		{
			/*
			menu_tnormal(menu, keys[i].title, 0);
			hndlmenu(keys[i].title, keys[i].item, kstate);
			*/
			menu_tnormal(menu, title, 0 );
			hndlmenu( title, i + MFIRST, kstate );
		
		}
		/* DjV 019 110103 ---^^^--- */

		else
		{
			i = 0;
			if ((key >= ALT_A) && (key <= ALT_Z))
			{
				i = key - (XD_ALT | 'A');
				if (check_drive(i))
				{
					char *path;

					if ((path = strdup("A:\\")) != NULL)
					{
						path[0] = (char) i + 'A';
						/* dir_add_window(path); DjV 017 280103 */
						dir_add_window(path, NULL); /* DjV 017 280103 */
						itm_set_menu(xw_top()); /* DjV 029 160203 */
					}
					else
						xform_error(ENSMEM);
				}
			}
		}
	}
}
Exemple #16
0
static void hndlmenu(int title, int item, int kstate)
{
	int qbutton; /* DjV 013 291202 */

	if ((menu[item].ob_state & DISABLED) == 0)
	{
		switch (item)
		{
		case MINFO:
			info();
			break;
		case MQUIT:
			/* DjV 013 291202 ---vvv--- */
			qbutton = alert_printf(3,QUITALRT); /* DjV 013 090203  shutdown revived */
			switch (qbutton)
			{
				case 3:
					break;
				case 2:
					shutdown=TRUE; /* no effect yet */
					/* break;DjV 013 090203 only without shutdown */
				case 1:      
			/* DjV 013 291202 ---^^^--- */
					menu_tnormal(menu, title, 1);
					quit = TRUE;
					break;
			}        /* DjV 013 291202 */
			break;
		case MOPTIONS:
			setpreferences();
			break;
		case MPRGOPT:
			prg_setprefs();
			break;
		case MSAVESET:
			save_options();
			break;
		case MLOADOPT:
			load_settings();
			break;
		case MSAVEAS:
			save_options_as();
			break;
		case MAPPLIK:
			app_install();
			break;
		case MIDSKICN:
			dsk_insticon();
			break;
		case MIWDICN:
			icnt_settypes();
			break;
		case MCHNGICN:
			dsk_chngicon();
			break;
		case MREMICON:
			dsk_remicon();
			break;
		case MEDITOR:
			set_editor();
			break;
		/* DjV 016 050103 ---vvv--- */	
		case MCOPTS:
			copyprefs();
			break;
		/* DjV 016 050103 ---^^^--- */
		case MWDOPT:
			dsk_options();
			break;
		/* DjV 007 250102 ---vvv--- */	
		case MVOPTS:
			chrez=voptions();
			if ( chrez ) quit=TRUE;
			break;
		/* DjV 007 250102 ---^^^--- */
		default:
			wd_hndlmenu(item, kstate);	/* handle all the rest in window.c */
			break;
		}
	}
	menu_tnormal(menu, title, 1);
}
Exemple #17
0
/* MAIN()
 * ================================================================
 */
VOID
main( VOID )
{
	OBJECT  *tree;
	WORD    i;
	WORD    button;
	GRECT   box;
	GRECT   xrect;
        WORD    tempx;

        GRECT   rect;
        MRETS   mk;
	
        WORD    ptitle, pitem, pmenu;
	OBJECT  *ptree;
        BOOLEAN flag;
	BOOLEAN done;
	WORD    dummy;

        WORD	xvalue;

        
	appl_init();

	phys_handle = graf_handle( &gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox );

        graf_mouse( ARROW, 0L );
        
        rsrc_load( "TEST.RSC" );

        rsrc_gaddr( 0, MENU1, &ad_tree );
	rsrc_gaddr( 0, BIGBOX, &ad_box );
        rsrc_gaddr( 0, COUNTRY, &ad_country );
	rsrc_gaddr( 0, OTHER, &ad_other );
        rsrc_gaddr( 0, MENUBAR, &ad_menubar );
	rsrc_gaddr( 0, TREE6, &ad_extra );

	ad_other[ ROOT ].ob_x = ad_other[ ROOT ].ob_y = 0;
#if 0
	/* test setting delay and height variables */
	TData.Delay  = 100L;
	TData.Drag   = 10000L;
	TData.Delay  = 250L;
	TData.Speed  = 0L;
	TData.Height = 16;
	menu_settings( 1, &TData );
#endif

	/* test attaching submenus */
	Menu.mn_tree   = ad_country;
	Menu.mn_menu   = ROOT;
        Menu.mn_item   = Cur2;
	Menu.mn_scroll = TRUE;
	menu_attach( 1, ad_tree, DELETE, &Menu );

	Menu.mn_tree   = ad_other;
	Menu.mn_menu   = DISNEY;
        Menu.mn_item   = MICKEY;
	Menu.mn_scroll = FALSE;
	menu_attach( 1, ad_tree, FLOPPY, &Menu );

	Menu.mn_tree   = ad_other;
	Menu.mn_menu   = MODEM;
        Menu.mn_item   = Cur3;
	Menu.mn_scroll = FALSE;
        menu_attach( 1, ad_country, 5, &Menu );

	Menu.mn_tree   = ad_other;
	Menu.mn_menu   = DISNEY;
        Menu.mn_item   = MICKEY;
	Menu.mn_scroll = FALSE;
        menu_attach( 1, ad_country, 1, &Menu );

	Menu.mn_tree   = ad_other;
	Menu.mn_menu   = DISNEY;
        Menu.mn_item   = MICKEY;
	Menu.mn_scroll = FALSE;
	menu_attach( 1, ad_country, ARKANSAS, &Menu );

	Menu.mn_tree   = ad_other;
	Menu.mn_menu   = QUOTES;
        Menu.mn_item   = Cur4;
	Menu.mn_scroll = FALSE;
	menu_attach( 1, ad_other, 5, &Menu );

	Menu.mn_tree   = ad_country;
	Menu.mn_menu   = ROOT;
        Menu.mn_item   = Cur2;
	Menu.mn_scroll = TRUE;
	menu_attach( 1, ad_menubar, PASTE, &Menu );

	Menu.mn_tree   = ad_country;
	Menu.mn_menu   = ROOT;
        Menu.mn_item   = Cur2;
	Menu.mn_scroll = TRUE;
	menu_attach( 1, ad_menubar, FNEW, &Menu );

        menu_icheck( ad_tree, Cur1, 1 );
	menu_icheck( ad_country, Cur2, 1 );
	menu_icheck( ad_other, Cur3, 1 );
	menu_icheck( ad_other, Cur4, 1 );
	menu_icheck( ad_other, Cur5, 1 );

	ActiveTree( ad_box );

        form_center( ad_box, &rect.g_x, &rect.g_y, &rect.g_w, &rect.g_h );

	ObX( ROOT ) = rect.g_x;
        xrect = ObRect( TITLE1 );
        objc_offset( ad_box, TITLE1, &xrect.g_x, &xrect.g_y );
	tempx = xrect.g_x;
        xrect.g_x = (( xrect.g_x + 7 )/8 ) * 8;
	rect.g_x = rect.g_x + ( xrect.g_x - tempx );
	ObX( ROOT ) = rect.g_x;
	rect.g_x -= 3;

	form_dial( FMD_START, rect.g_x, rect.g_y, rect.g_w, rect.g_h,
			      rect.g_x, rect.g_y, rect.g_w, rect.g_h );
	objc_draw( ad_box, ROOT, MAX_DEPTH, rect.g_x, rect.g_y,
					    rect.g_w, rect.g_h );

        do
        {
	  ActiveTree( ad_box );
          button = form_do( ad_box, 0L );

	  switch( button )
	  {
	    case TITLE1:
			 box = ObRect( TITLE1 );
			 objc_offset( ad_box, TITLE1, &box.g_x, &box.g_y );
			 
			 Menu.mn_tree   = ad_tree;
			 Menu.mn_menu   = ROOT;
			 Menu.mn_item   = Cur1;
			 Menu.mn_scroll = FALSE;
			 flag = menu_popup( &Menu, box.g_x, box.g_y, &MData );
			 if( flag )
			   MenuCheck( MData.mn_tree,
				      MData.mn_menu, 
				      MData.mn_item );
			 break;

            case TITLE2:
			 box = ObRect( TITLE2 );
			 objc_offset( ad_box, TITLE2, &box.g_x, &box.g_y );

			 Menu.mn_tree   = ad_country;
			 Menu.mn_menu   = ROOT;
			 Menu.mn_item   = Cur2;
			 Menu.mn_scroll = TRUE;
			 flag = menu_popup( &Menu, box.g_x, box.g_y, &MData );
			 if( flag )
			   MenuCheck( MData.mn_tree,
				      MData.mn_menu,
				      MData.mn_item );
			 break;

            case TITLE3:
			 box = ObRect( TITLE3 );
			 objc_offset( ad_box, TITLE3, &box.g_x, &box.g_y );

			 Menu.mn_tree   = ad_other;
			 Menu.mn_menu   = MODEM;
			 Menu.mn_item   = Cur3;
			 Menu.mn_scroll = FALSE;
			 flag = menu_popup( &Menu, box.g_x, box.g_y, &MData );
			 if( flag )
			   MenuCheck( MData.mn_tree,
				      MData.mn_menu,
				      MData.mn_item );
			 break;

            case TITLE4:
			 box = ObRect( TITLE4 );
			 objc_offset( ad_box, TITLE4, &box.g_x, &box.g_y );

			 Menu.mn_tree   = ad_other;
			 Menu.mn_menu   = QUOTES;
			 Menu.mn_item   = Cur4;
			 Menu.mn_scroll = FALSE;
			 flag = menu_popup( &Menu, box.g_x, box.g_y, &MData );
			 if( flag )
			   MenuCheck( MData.mn_tree,
				      MData.mn_menu,
				      MData.mn_item );
			 break;

            default:
			break;
          }

        }while( button != XEXIT );

	form_dial( FMD_FINISH, rect.g_x, rect.g_y, rect.g_w, rect.g_h,
			       rect.g_x, rect.g_y, rect.g_w, rect.g_h );

        evnt_button( 1, 1, 0, &dummy, &dummy, &dummy, &dummy );



       /* display menubar stuff here */
        ActiveTree( ad_menubar );
        menu_bar( ad_menubar, TRUE );

        
	do
	{
	    evnt_mesag( msg );
	    if( msg[0] == MN_SELECTED )
	    {
		/* msg[7] is the parent of FQUIT - which the user can't know */
		ptr = &msg[5];
		if( ( *ptr == ad_menubar ) &&
                    ( msg[4] == FQUIT )
		  )
                {
		  button = form_alert( 1, "[1][ |  EXIT PROGRAM? ][OK|Cancel]");
		  if( button == 1 )
		    done = TRUE;
                }  
		else
		    MenuCheck( *ptr, msg[7], msg[4] );
		menu_tnormal( ad_menubar, msg[3], TRUE );
            }	
	}while( !done );
        menu_bar( ad_menubar, FALSE );

        rsrc_free();
	graf_mouse( ARROW, 0L );
	appl_exit();
}
Exemple #18
0
/***********************************************************************
 Ereignisauswertung (AES-Nachrichten, Tastendr�cke, Timer ), welche sowohl
 von Event_Multi() als auch von X_Form_Do() aufgerufen wird
***********************************************************************/
int Messag(XEVENT *event)
{
	reg int ev = event -> ev_mwich, *msg = event -> ev_mmgpbuf;
	reg int used = 0;
	reg windowptr thewin = Thefrontwin;

	/* Nachricht vom AES ? */
	if (ev & MU_MESAG)
	{
		/* Nachrichtenereignis wurde ausgewertet */
		used |= MU_MESAG;

		switch (*msg)
		{
			/* Men�eintrag angeklickt ? */
			case MN_SELECTED:
				/* Men�eintrag deselektieren */
				menu_tnormal(Menu, msg[3], 1);

				/* gew�nschte Funktion ausf�hren */
				if (MenuSelect(msg[4], 0, 0, FAIL) == FALSE)
					/* Nachricht konnte nicht ausgewertet werden
					   (sollte NIE vorkommen) */
					used &= ~MU_MESAG;
				break;

			case WM_REDRAW:
			case WM_TOPPED:
			case WM_CLOSED:
			case WM_FULLED:
			case WM_ARROWED:
			case WM_HSLID:
			case WM_VSLID:
			case WM_SIZED:
			case WM_MOVED:
			case WM_NEWTOP:
			case WM_UNTOPPED:
			case WM_ONTOP:
			case WM_BOTTOM:
				do_window(msg);
				break;

			/* Applikation beenden/r�cksetzen */
			case AP_TERM:
			case AC_CLOSE:
				shutdown(Reset);
				break;

			/* Accessory �ffnen (Hauptdialog �ffnen) */
			case AC_OPEN:
				break;

			/* Applikation hat sich an- oder abgemeldet */
			case XACC_AV_INIT:
			case XACC_AV_EXIT:
				break;

			default:
			/* unbekannte Nachricht konnte nicht ausgewertet werden */
				used &= ~MU_MESAG;
		}
	}

	/* Tastatur-Ereignis auswerten */
	if (ev & MU_KEYBD && !ob_isstate(Menu, MENU_ETAT, DISABLED))
	{
		int key = event -> ev_mkreturn & 0xFF;
		int maj = key & ~0x20;
		int top;

		wind_get(0, WF_TOP, &top);
		if (Dialog[CONFIG_MENU].info != NULL && Dialog[CONFIG_MENU].info -> di_flag > CLOSED && top == Dialog[CONFIG_MENU].info -> di_win -> handle)
		{	/* la configuration des raccourcis est ouverte */
			((raccourcis_var *)Dialog[CONFIG_MENU].var) -> state = event -> ev_mmokstate;
			((raccourcis_var *)Dialog[CONFIG_MENU].var) -> key = event -> ev_mkreturn;
			(*Dialog[CONFIG_MENU].proc)(&Dialog[CONFIG_MENU], FAIL);
		}
		else
		{
			/* gew�nschte Funktion ausf�hren */
			if (MenuSelect(FAIL, event -> ev_mkreturn, event -> ev_mmokstate, FAIL))
				used |= MU_KEYBD;	/* Tastaturereignis wurde ausgewertet */
			else
				if (scantoascii(event -> ev_mkreturn) == 0)
				{	/* touches sp�ciales */
					key = event -> ev_mkreturn >> 8;
					switch (event -> ev_mmokstate)
					{
						case K_RSHIFT:
						case K_LSHIFT:
							switch (key)
							{
								case SCANUP:
									if (thewin -> type >= TAMPON)
									{
										if (thewin -> fonction.fichier.curseur_x < 0)
										{
											if (thewin -> type != TAMPON)
												MenuSelect(BLOC_PRECEDENT, 0, 0, FAIL);
											else
											{
												msg[4] = PAGE_UP;
												msg[0] = WM_ARROWED;
												msg[3] = thewin -> win -> handle;
												do_window(msg);
											}
										}
										else
											curseur_up(thewin, TRUE);
									}
									else
									{
										msg[4] = PAGE_UP;
										msg[0] = WM_ARROWED;
										msg[3] = thewin -> win -> handle;
										do_window(msg);
									}
									break;

								case SCANDOWN:
									if (thewin -> type >= TAMPON)
									{
										if (thewin -> fonction.fichier.curseur_x < 0)
										{
											if (thewin -> type != TAMPON)
												MenuSelect(BLOC_SUIVANT, 0, 0, FAIL);
											else
											{
												msg[4] = PAGE_DOWN;
												msg[0] = WM_ARROWED;
												msg[3] = thewin -> win -> handle;
												do_window(msg);
											}
										}
										else
											curseur_down(thewin, TRUE);
									}
									else
									{
										msg[4] = PAGE_DOWN;
										msg[0] = WM_ARROWED;
										msg[3] = thewin -> win -> handle;
										do_window(msg);
									}
									break;

								case SCANLEFT:
									if (thewin -> type >= TAMPON && thewin -> fonction.fichier.curseur_x >= 0)
										curseur_left(thewin, FALSE, TRUE);
									else
									{
										msg[4] = PAGE_LEFT;
										msg[0] = WM_ARROWED;
										msg[3] = thewin -> win -> handle;
										do_window(msg);
									}
									break;

								case SCANRIGHT:
									if (thewin -> type >= TAMPON && thewin -> fonction.fichier.curseur_x >= 0)
										curseur_right(thewin, FALSE, TRUE);
									else
									{
										msg[4] = PAGE_RIGHT;
										msg[0] = WM_ARROWED;
										msg[3] = thewin -> win -> handle;
										do_window(msg);
									}
									break;

								case SCANHOME:
									if (thewin -> type >= TAMPON && thewin -> fonction.fichier.curseur_x >= 0)
										curseur_home(thewin, TRUE);
									break;
							}
							break;

						case K_CTRL:
							switch (key)
							{
								case CTRLLEFT:
									if (thewin -> type >= TAMPON && thewin -> fonction.fichier.curseur_x >= 0 && !thewin -> fonction.secteur.ascii)
										curseur_left(thewin, FALSE, FALSE);
									break;

								case CTRLRIGHT:
									if (thewin -> type >= TAMPON && thewin -> fonction.fichier.curseur_x >= 0 && !thewin -> fonction.secteur.ascii)
										curseur_right(thewin, FALSE, FALSE);
									break;

								case SCANUP:
									if (thewin -> type >= SECTEUR)
										MenuSelect(SECTEUR_PRECEDEN, 0, 0, FAIL);
									break;

								case SCANDOWN:
									if (thewin -> type >= SECTEUR)
										MenuSelect(SECTEUR_SUIVANT, 0, 0, FAIL);
									break;
							}
							break;

						case 0:
							switch (key)
							{
								case SCANHOME:
									if (thewin -> type >= TAMPON && thewin -> fonction.fichier.curseur_x >= 0)
										curseur_home(thewin, FALSE);
									break;

								case SCANUP:
									if (thewin -> type >= TAMPON)
									{
										if (thewin -> fonction.fichier.curseur_x < 0)
										{
											if (thewin -> type != TAMPON)
												MenuSelect(SECTEUR_PRECEDEN, 0, 0, FAIL);
											else
											{
												msg[4] = LINE_UP;
												msg[0] = WM_ARROWED;
												msg[3] = thewin -> win -> handle;
												do_window(msg);
											}
										}
										else
											curseur_up(thewin, FALSE);
									}
									else
									{
										msg[4] = LINE_UP;
										msg[0] = WM_ARROWED;
										msg[3] = thewin -> win -> handle;
										do_window(msg);
									}
									break;

								case SCANDOWN:
									if (thewin -> type >= TAMPON)
									{
										if (thewin -> fonction.fichier.curseur_x < 0)
										{
											if (thewin -> type != TAMPON)
												MenuSelect(SECTEUR_SUIVANT, 0, 0, FAIL);
											else
											{
												msg[4] = LINE_DOWN;
												msg[0] = WM_ARROWED;
												msg[3] = thewin -> win -> handle;
												do_window(msg);
											}
										}
										else
											curseur_down(thewin, FALSE);
									}
									else
									{
										msg[4] = LINE_DOWN;
										msg[0] = WM_ARROWED;
										msg[3] = thewin -> win -> handle;
										do_window(msg);
									}
									break;

								case SCANLEFT:
									if (thewin -> type >= TAMPON && thewin -> fonction.fichier.curseur_x >= 0)
										curseur_left(thewin, TRUE, FALSE);
									else
									{
										msg[4] = LINE_LEFT;
										msg[0] = WM_ARROWED;
										msg[3] = thewin -> win -> handle;
										do_window(msg);
									}
									break;

								case SCANRIGHT:
									if (thewin -> type >= TAMPON && thewin -> fonction.fichier.curseur_x >= 0)
										curseur_right(thewin, TRUE, FALSE);
									else
									{
										msg[4] = LINE_RIGHT;
										msg[0] = WM_ARROWED;
										msg[3] = thewin -> win -> handle;
										do_window(msg);
									}
									break;
							}
							break;
					}
				}
				else
					if (thewin -> type >= TAMPON && thewin -> fonction.secteur.curseur_x >= 0)
Exemple #19
0
/* ------------ */
main()
{
register int which; 										/* Ausgel�ste Aktion */
register int i; 												/* Schleifenindex */
int msg[8]; 														/* Message-Buffer */
int dummy;															/* f�r unwichtige Werte */

appl_init();
open_vwork();

fnt_path[0] = Dgetdrv() + 'A';					/* Aktuellen Pfad ermitteln*/
fnt_path[1] = ':';
Dgetpath(fnt_path + 2, 0);
strcat(fnt_path, "\\*.FNT");

rsrc_load("VDI_FONT.RSC");							/* RSC laden */

graf_mouse(ARROW, 0L);									/* Mauspfeil */

set_workarea(); 												/* Hintergrund anlegen */
count_defined();
set_marker(); 													/* Marker positionieren */
restore_char(); 												/* Erstes Zeichen holen */
show_ccharacter();

do
	{
	which = evnt_multi(MU_BUTTON|MU_KEYBD|MU_MESAG,
										 2, 1, 1,
										 0, 0, 0, 0, 0,
										 0, 0, 0, 0, 0,
										 msg,
										 0, 0,
										 &mousex, &mousey, &dummy,
										 &dummy, &key, &clicks);


	switch(which)
		{
		case MU_KEYBD:											/* Tastendruck ? */
			if ((char)key >= 'a' && (char)key <= 'z')
				key &= 0xDF;
				
			if (!(char)key) 									/* Kontrolltaste ?*/
				{
				key >>= 8;
				key |= 0x80;
				}

			for (i = 0; i < KEY_NUM; i++)					/* Passenden Men�eintrag suchen */
				if (m_keys[i] == (char)key)
					{
					which = MU_MESAG;
					msg[0] = MN_SELECTED;
					msg[4] = m_entry[i];
					menu_action(msg); 						/* Men�eintrag ausf�hren */
					break;
					}
			break;

		case MU_MESAG:
			if (msg[0] == MN_SELECTED)				/* Men�eintrag ? */
				{
				menu_action(msg);
				menu_tnormal(menu_adr, msg[3], TRUE);
				}
			break;

		case MU_BUTTON:
			button_click(); 									/* Mausklick */
			break;
		}

	}while(which != MU_MESAG || msg[0] != MN_SELECTED || msg[4] != F_OK);

cls_vwork();
appl_exit();
}
Exemple #20
0
/*
 * Get a single event, process it, and return.
 *
 */
domulti(){
    int event;
    
    event = evnt_multi(MU_MESAG,
			1,1,butdown,
			0,0,0,0,0,
			0,0,0,0,0,
			msgbuff,0,0,&mx,&my,&ret,&ret,&keycode,&ret);

    if (event & MU_MESAG) {
    	wind_update(TRUE);
	switch (msgbuff[0]) {
	    case WM_REDRAW:
		do_redraw(msgbuff[4],msgbuff[5],msgbuff[6],msgbuff[7]);
		break;

	    case MN_SELECTED:
	        BEE_MOUSE;
		switch(msgbuff[3]) {
		    case MNDISK:
			switch (msgbuff[4]) {
			    case DIFORM:
		        	if ((needscan) && (rescan(0,0) == ERROR))	{
						break;	/* don't report medium changed */
					}
			        tformat = TRUE;
					needscan = FALSE;
			        dodiform();
			        tformat = FALSE;
			        break;
			    case DIPART:
		        	if ((needscan)&&(rescan(0,0) == ERROR))	{
						break;	/* don't report medium changed */
					}
					needscan = FALSE;
			        dodipart(-1, NULL, NULL);
			    	break;
			    case DIZERO:
					if (pnf)	{
						err(needboot);
					} else {
		        		if ((needscan)&&(rescan(0,1) == ERROR))	{
							break;	/* don't report medium changed */
						}
						needscan = FALSE;
			        	dodizero();
					}
			        break;
			    case DIMARK:
					if (pnf)	{
						err(needboot);
					} else {
		        		if ((needscan)&&(rescan(0,1) == ERROR))	{
							break;	/* don't report medium changed */
						}
						needscan = FALSE;
			        	dodimark();
					}
			        break;
			    case DISHIP:
		        	if ((needscan)&&(rescan(0,0) == ERROR))	{
						break;	/* don't report medium changed */
					}
					needscan = FALSE;
			        dodiship();
			        break;
			    default:	    break;
			}
			break;

		    case MNFILE:
			switch (msgbuff[4]) {
			    case FIQUIT:
				running = 0;
				break;

			    default:
				break;
			}
			break;
			
		    case MNDESK:
			if(msgbuff[4] == DEABOUT) {
			    strcpy(abtdial[ABVERSN].ob_spec, "Version 3.5");
			    abtdial[ABOK].ob_state = NORMAL;
			    execform(abtdial);
			}
			break;		/* "cannot happen" */
		}

		menu_tnormal(menuobj, msgbuff[3], 1);	/* back to normal */
	        ARROW_MOUSE;
		break;
		
	    case WM_NEWTOP:
	    case WM_TOPPED:
		wind_set(wi_handle, WF_TOP, 0, 0, 0, 0);
		break;

	    case WM_CLOSED:
		running = FALSE;
		break;

	    default:
		break;
	}
	wind_update(FALSE);
    }
}
Exemple #21
0
/* MAIN()
 * ================================================================
 */
VOID
main( VOID )
{
	WORD    button;
	BOOLEAN done;
	OBJECT  *tree;
       

	appl_init();

	phys_handle = graf_handle( &gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox );

	open_vwork();
	
        graf_mouse( ARROW, 0L );
        
        rsrc_load( "DEMO.RSC" );

        rsrc_gaddr( 0, MENUBAR, &ad_menubar );
        rsrc_gaddr( 0, ATREE, &ad_tree );
	rsrc_gaddr( 0, FONTTREE, &ad_fonts );
	rsrc_gaddr( 0, STREE, &ad_style );
	rsrc_gaddr( 0, POSTREE, &ad_position );
	rsrc_gaddr( 0, CTREE, &ad_color );
        rsrc_gaddr( 0, PTREE, &ad_pattern );
	rsrc_gaddr( 0, MTREE, &ad_modem );

	rsrc_gaddr( 0, BAUDRATE, &ad_baudrate );
	rsrc_gaddr( 0, PARTREE, &ad_parity );
	rsrc_gaddr( 0, BITTREE, &ad_bittree );
	rsrc_gaddr( 0, STOPTREE, &ad_stoptree );
	rsrc_gaddr( 0, PORTTREE, &ad_porttree );
	rsrc_gaddr( 0, FLOWTREE, &ad_flowtree );

	rsrc_gaddr( 0, LTREE, &ad_list );
	rsrc_gaddr( 0, TOOLBOX, &ad_tools );
	rsrc_gaddr( 0, BLANK, &ad_blank );
	rsrc_gaddr( 0, TOOLBOX2, &ad_box2 );
	rsrc_gaddr( 0, TOOLBAR, &ad_box3 );

	rsrc_gaddr( 0, FONT2, &ad_font2 );


	/* Attach all Submenus that are being attached */
	AttachMenus();


	/* CheckMark the Current Menu Items in their respective menus */
	menu_icheck( ad_baudrate, CurBaudRate, 1 );
	menu_icheck( ad_parity, CurParity, 1 );
	menu_icheck( ad_bittree, CurBits, 1 );
	menu_icheck( ad_stoptree, CurStopBits, 1 );
	menu_icheck( ad_porttree, CurPort, 1 );
	menu_icheck( ad_flowtree, CurFlow, 1 );

	menu_icheck( ad_style, CurStyle, 1 );
	menu_icheck( ad_position, CurPos, 1 );
	menu_icheck( ad_fonts, CurFonts, 1 );
	menu_icheck( ad_font2, CurFont2, 1 );

        /* display menubar stuff here */
        menu_bar( ad_menubar, TRUE );

	/* initialize windows */
        wind_get( 0, WF_FULLXYWH, &desk.g_x, &desk.g_y, &desk.g_w, &desk.g_h );
	cur_tree = ad_tools;
	menu_flag = TRUE;			/* Set Toggle Flags */
	SubFlag   = TRUE;
	ToolFlag  = TRUE;

	CurRect.g_x = desk.g_x;
	CurRect.g_y = desk.g_y;
	CurRect.g_w = 320;
	CurRect.g_h = 200;

	InitObjects();

	InitWindow();
	menu_ienable( ad_menubar, FOPEN, 0 );
	menu_ienable( ad_menubar, FCLOSE, 1 );



        done = FALSE;
	do
	{

	    evnt_mesag( msg );
	    
	    wind_update( BEG_UPDATE );

	    if( msg[0] == MN_SELECTED )
	    {
		/* msg[7] is the parent of FQUIT - which the user can't know */
		ptr = ( OBJECT **)&msg[5];
	if( *ptr == ad_menubar )
		{
		   switch( msg[4] )
		   {
		      case FQUIT:
				  button = form_alert( 1, "[1][ |  EXIT PROGRAM? ][OK|Cancel]");
				  if( button == 1 )
		 		      done = TRUE;
		       		  break;

		      case ABOUTX: execform( ad_tree, 0 );
				   break;

		      case PHONE: do_modem();
				  break;

		      case TABOUT: /* Enable, Disable About PLUS change TEXT */
				   menu_flag ^= 1;
				   menu_ienable( ad_menubar, ABOUTX, menu_flag );
				   menu_text( ad_menubar, TABOUT, TextAbout[ menu_flag ] );

				  if( menu_flag )
				    menu_text( ad_menubar, ABOUTX, "  About Demo...     " );
				  else
				    menu_text( ad_menubar, ABOUTX, "  Disabled...       " );
				  break;

		       case TSUB: /* Enable/Disable all Submenus */
				  SubFlag ^= 1;
				  menu_text( ad_menubar, TSUB, TextSubMenu[ SubFlag ] );
				  if( SubFlag )
				    AttachMenus();
				  else
				    DetachMenus();
				  break;

		       case SLISTS: DoList();			/* Do A Drop Down List Dialog */
				    break;

		       case TOOLFLAG: /* Enable/Disable ToolBox */
				      ToolFlag ^= 1;
				      menu_text( ad_menubar, TOOLFLAG, TextToolBox[ ToolFlag ] );
				      if( ToolFlag )
				      {
					*( (LONG *)&tree_data[0] ) = ( LONG )cur_tree;
					wind_set( wid, WF_TOOLBAR, tree_data[0], tree_data[1], dummy, dummy );
				      }
				      else
					wind_set( wid, WF_TOOLBAR, 0, 0, dummy, dummy );
				      break;

		        case SWITCH: /* Switch ToolBoxes */
					if( cur_tree == ad_tools )
					   cur_tree = ad_box2;
					else if( cur_tree == ad_box2 ) {
					         cur_tree = ad_box3;

					         ActiveTree( ad_fonts );
      						 textptr = ObString( CurFonts );
						 strncpy( &tbuff[0], &textptr[1], 28 );

      						 ActiveTree( ad_box3 );
      						 TedText( FBUTT1 ) = &tbuff[0];
					     }
					     else
					       cur_tree = ad_tools;
					*( (LONG *)&tree_data[0] ) = ( LONG )cur_tree;
					ToolFlag = TRUE;
	  	    		        menu_text( ad_menubar, TOOLFLAG, TextToolBox[ ToolFlag ] );
					wind_set( wid, WF_TOOLBAR, tree_data[0], tree_data[1], dummy, dummy );
				     break;

			case FCLOSE: /* close Window */
				     if( wid ) {
					wind_get( wid, WF_CURRXYWH,
						  &CurRect.g_x, &CurRect.g_y,
						  &CurRect.g_w, &CurRect.g_h );
			                wind_close( wid );
			                wind_delete( wid );
			                wid = 0;
					menu_ienable( ad_menubar, FCLOSE, 0 );
					menu_ienable( ad_menubar, FOPEN, 1 );
				     }
				     break;

			case FOPEN:  /* open Window */
				     if( !wid ) {
					InitWindow();
					menu_ienable( ad_menubar, FOPEN, 0 );
					menu_ienable( ad_menubar, FCLOSE, 1 );
				     }				 
				     break;

		      default:
				   break;
		   }
		}

		
		/* MENU SELECTED -> Font Style Menu Clicked on as a SUBMENU from the Menubar*/
		if( *ptr == ad_style )
		{
		   menu_icheck( ad_style, CurStyle, 0 );	/* Turn OFF Old Checkmark */
		   menu_icheck( ad_style, msg[4], 1 );		/* Turn ON New CheckMark  */
		   CurStyle = msg[4];				/* Update Current Var     */
		   menu_istart( 1, ad_style, ROOT, CurStyle );	/* Reset Starting Position*/
		}


		/* MENU SELECTED -> Font Position Clicked on as a SUBMENU from the menubar */
		if( *ptr == ad_position )
		{
		   menu_icheck( ad_position, CurPos, 0 );
		   menu_icheck( ad_position, msg[4], 1 );
		   CurPos = msg[4];
		   menu_istart( 1, ad_position, ROOT, CurPos );
		}


		/* MENU SELECTED -> Fonts Menu Clicked on as a SUBMENU from the menubar */
		if( *ptr == ad_fonts )
		{
		   menu_icheck( ad_fonts, CurFonts, 0 );
		   menu_icheck( ad_fonts, msg[4], 1 );
		   CurFonts = msg[4];
		   menu_istart( 1, ad_fonts, ROOT, CurFonts );
		}

		menu_tnormal( ad_menubar, msg[3], TRUE );
            }

	    if( msg[0] != MN_SELECTED ) {
		switch( msg[0] ) {
		   case WM_FULLED:
			DoFull( msg[3] );
			break;

		   case WM_REDRAW:
			 DoRedraw( msg );
			 break;

		   case WM_ARROWED:
		   case WM_HSLID:
		   case WM_VSLID:
			 break;

		   case WM_MOVED:
			 if( msg[3] == wid ) {
			    wind_set( wid, WF_CURRXYWH, msg[4],
				      msg[5], msg[6], msg[7] );
			 }
			 break;

		   case WM_TOPPED:
			 if( msg[3] == wid ) {
			    wind_set( wid, WF_TOP );
			 }
			 break;

		   case WM_CLOSED:
			 if( msg[3] == wid ) {
			    wind_get( wid, WF_CURRXYWH,
				      &CurRect.g_x, &CurRect.g_y,
				      &CurRect.g_w, &CurRect.g_h );

			    wind_close( wid );
			    wind_delete( wid );
			    wid = 0;
			    menu_ienable( ad_menubar, FCLOSE, 0 );
			    menu_ienable( ad_menubar, FOPEN, 1 );
			 }
			 break;

		   case WM_SIZED:
			DoSizer( msg );
			break;

		   case WM_TOOLBAR:
			if( msg[3] == wid ) {
			      /* Button Handling for ToolBox #1 */
			      if( cur_tree == ad_tools ) {
			        switch( msg[4] ) {
			           case T1B1:  button = B1B1;
				        break;
			           case T1B2:  button = B1B2;
				        break;
			           case T1B3:  button = B1B3;
				        break;
			           case T1B4:  button = B1B4;
				        break;
			           case T1B5:  button = B1B5;
				        break;
				}
			      }

			      /* Button Handling for TOOLBOX 2 */
			      if( cur_tree == ad_box2 ) {
			        switch( msg[4] ) {
			           case T2I1:  button = T2B1;
				        break;
			           case T2I2:  button = T2B2;
				        break;
			           case T2I3:  button = T2B3;
				        break;
			           case T2I4:  button = T2B4;
				        break;
			           case T2I5:  button = T2B5;
				        break;
				}
			      }

			      /* Word Processing Tree */
			      if( cur_tree == ad_box3 ) {
				switch( msg[4] ) {
				   case FBUTT1:
				   case FBUTT2: DoFonts();
						break;

				   default:
					    break;
				}
			      }



			   if( cur_tree != ad_box3 ) {
			     if( cur_tree[ button ].ob_state & SELECTED )
			       cur_tree[ button ].ob_state &= ~SELECTED;
			     else
			       cur_tree[ button ].ob_state |= SELECTED;

			     objc_offset( cur_tree, button, &r.g_x, &r.g_y );
			     r.g_x -= 2;
			     r.g_y -= 2;
			     r.g_w = cur_tree[ button ].ob_width + 4;
			     r.g_h = cur_tree[ button ].ob_height + 4;
			     do_redraw( cur_tree, button, &r );
			   }

			}  /* end of msg[3] == wid */
			break;

			case WM_ICONIFY:
			     if( msg[3] == wid )
			       wind_set( msg[3], WF_ICONIFY, msg[4], msg[5], msg[6], msg[7] );
			     break;

			case WM_UNICONIFY:
			     if( msg[3] == wid )
			       wind_set( msg[3], WF_UNICONIFY, msg[4], msg[5], msg[6], msg[7] );
			     break;

		   default:
			break;
		}  /* end of switch */
	    }
	    wind_update( END_UPDATE );
	    	    
	}while( !done );
	if( wid > 0 )
	   wind_delete( wid );

        menu_bar( ad_menubar, FALSE );
	
	graf_mouse( ARROW, 0L );	
	
        rsrc_free();

       	close_vwork();
	appl_exit();
}