#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include "sftlib.h"


/*ami*/
#define TGLNUM 8
/*amiend*/

int	AMI_PTGL = -1 ;
int	AMI_PTGL_b[2] = -1 ;
int	AMI_PTGL_m[4] = -1 ;
int	AMI_PTGL_tm[TGLNUM] = -1 ;
int	AMI_PTGL_tgl[TGLNUM] = -1 ;
int	AMI_PTGLrev = -1 ;

/*global*/
int AMI_PTGL_ret;
int AMI_PTGL_new;
int AMI_PTGL_end;

PROTO int AMI_ExecSystemA( int *endflg, int btn[2] ) PROTOEND
{
	EVENT *pev,ev;
	int   evmsk, i;
	*endflg=1;
	evmsk=MMI_GetEventMask();
	MMI_SetEventMask( EVALL );
	while( *endflg==1 ){
		MMI_iosense();
		if( MMI_GetEvnt(EVALL, &pev)==NOERR )
		{
			ev=*pev;
			MMI_ExecEvnt(&ev);
			if( ev.what == EVKEY )  {
				if( ev.info == '\r' ) i=0; 
				else if ( ev.info == 0x1b ) i=1;
				if( i==0 || i== 1 )
					MMI_SendMessage( btn[i], MM_EXEC, 0 );
			}
		}
	}
	MMI_SetEventMask(evmsk);
	return 0;
}


PROTO int AMI_PTGL_call( char *b1,char *b2, int *n, int *s) PROTOEND
{
	int   i;

/*	for(i=0; i< TGLNUM; i++)
**		MMI_SendMessage(AMI_PTGL_tm[i], MM_SETMSG, 1, mes[i]);
*/

	MMI_SendMessage(AMI_PTGL_b[0], MM_SETMSG, 1, b1);
	MMI_SendMessage(AMI_PTGL_b[1], MM_SETMSG, 1, b2);

	AMI_PTGL_new=AMI_PTGL_ret=*n;
	for( i=0; i< TGLNUM; i++ )
		MTL_resetFlagObj(AMI_PTGL_tgl[i], ~MS_TOGGLE);
	if( *n>=0 && *n <TGLNUM ) 
		MTL_setFlagObj(AMI_PTGL_tgl[*n], MS_TOGGLE);

	if( *s<0 ) MTL_setFlagObj(AMI_PTGLrev, MS_TOGGLE);
		else MTL_resetFlagObj(AMI_PTGLrev, ~MS_TOGGLE);
 
	MMI_SendMessage(AMI_PTGL, MM_ATTACH, 1, DB_base );
	MMI_SendMessage(AMI_PTGL, MM_SHOW, 0) ;
	AMI_ExecSystemA( &AMI_PTGL_end, AMI_PTGL_b);

	if( AMI_PTGL_ret==0 )
	{
		*n=AMI_PTGL_new;
		if( MTL_checkFlagObj( AMI_PTGLrev, MS_TOGGLE ))
			*s=-1; else *s=1;
	}
	return AMI_PTGL_ret;
}
/*amiend*/

/*	initDataPTGL:AMI_PTGL_b[0]:MJ_DBUTTONL40の呼び出し関数	*/
/*	initDataPTGL:AMI_PTGL_b[1]:MJ_DBUTTONL40の呼び出し関数	*/
int	AMI_PTGL_func(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	if( kobj==AMI_PTGL_b[0] ) AMI_PTGL_ret=0; else AMI_PTGL_ret=1;
    MMI_SendMessage( AMI_PTGL, MM_ERASE, 0 );
	MMI_SendMessage( AMI_PTGL, MM_DETACH,0);
	AMI_PTGL_end=0;
	return NOERR ;
}

/*	initDataPTGL:AMI_PTGL_tgl[0]:MJ_TICONL40の呼び出し関数	*/
/*	initDataPTGL:AMI_PTGL_tgl[1]:MJ_TICONL40の呼び出し関数	*/
/*	initDataPTGL:AMI_PTGL_tgl[2]:MJ_TICONL40の呼び出し関数	*/
/*	initDataPTGL:AMI_PTGL_tgl[3]:MJ_TICONL40の呼び出し関数	*/
/*	initDataPTGL:AMI_PTGL_tgl[4]:MJ_TICONL40の呼び出し関数	*/
/*	initDataPTGL:AMI_PTGL_tgl[5]:MJ_TICONL40の呼び出し関数	*/
/*	initDataPTGL:AMI_PTGL_tgl[6]:MJ_TICONL40の呼び出し関数	*/
/*	initDataPTGL:AMI_PTGL_tgl[7]:MJ_TICONL40の呼び出し関数	*/
int	AMI_PTGL_funcT(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	int newi;
	for(newi=0; newi< TGLNUM; newi++) {
		if( kobj == AMI_PTGL_tgl[newi] ) break;
	}
	MTL_resetFlagObj(AMI_PTGL_tgl[AMI_PTGL_new], ~MS_TOGGLE);

	MTL_setFlagObj(AMI_PTGL_tgl[newi], MS_TOGGLE);
	MMI_SendMessage(AMI_PTGL_tgl[AMI_PTGL_new], MM_SHOW, 0) ;
	MMI_SendMessage(AMI_PTGL_tgl[newi], MM_SHOW, 0) ;
	AMI_PTGL_new=newi;
	return NOERR ;
}

