/*************************************************************************
*	"lib.c"
*************************************************************************/


int		DlgMvFunc(int evtNo, char *sbj)
{
	char	*dlg;
	SHORT	fr[4];	/* DLGBOX_T	*/

	dlg = EVT_getPtr(sbj);
	fr[0] = DLG_getFr(dlg,0);	/* x0	*/
	fr[1] = DLG_getFr(dlg,1);	/* y0	*/
	fr[2] = DLG_getFr(dlg,2);	/* xs	*/
	fr[3] = DLG_getFr(dlg,3);	/* ys	*/
	if ( DlgMove( fr ) )
	{	DLG_move( dlg, fr[0], fr[1] );
	}
	return	(EVT_BREAK);
}


char	*GetAsciiTime( char *s, long t )
{
	int		*tm;

	tm = localtime( &t );
	sprintf( s, "%04d/%02d/%02d %02d:%02d", 
		TM_YEAR(tm)+1900, TM_MON(tm)+1, TM_MDAY(tm),
		TM_HOUR(tm), TM_MIN(tm) );
	return (s);
}


int		TxdUsr_saveColTbl( char *txd )
{
	int		ret;
	char	*fdl;
	char	tmp[128], *fn;

	if ( (fdl = FDL_open(0)) == NULL )
		return (ERR);
	FDL_set_wildcard( fdl, "*.tbl");
	FDL_set_title( fdl, "SAVE COLOR TABLE");
	ret = FDL_start(fdl);
	fn  = FDL_get_filename(fdl);
	if ( ret != NORMAL || strlen(fn) == 0 )
	{
		FDL_close(fdl);
		return (ERR);
	}
	FS_appendSnam( tmp, fn, ".tbl");
	TXD_saveColTbl(txd,tmp);
	FDL_close(fdl);

	return (NORMAL);
}

int		CnsUsr_saveColTbl( char *cns )
{
	int		ret;
	char	*fdl;
	char	tmp[128], *fn;

	if ( (fdl = FDL_open(0)) == NULL )
		return (ERR);
	FDL_set_title( fdl, "SAVE COLOR TABLE");
	FDL_set_wildcard( fdl, "*.tbl");
	ret = FDL_start(fdl);
	fn  = FDL_get_filename(fdl);
	if ( ret != NORMAL || strlen(fn) == 0 )
	{
		FDL_close(fdl);
		return (ERR);
	}
	FS_appendSnam( tmp, fn, ".tbl");
	CNS_saveColTbl(cns,tmp);
	FDL_close(fdl);

	return (NORMAL);
}


/*************************************************************************
*	日付入りのファイル名を作成（通信ログ保存用）
*-------------------------------------------------------------------------
*	char	*MakeFnDate( char *path, char *top, char *sub );
*		path	ディレクトリ
*		top		ファイル名の先頭文字
*		sub		拡張子（ピリオドも含む）
*************************************************************************/

char	*MakeFnDate( char *getFn, char *path, char *top, char *sub )
{
	long		t;
	int			*tm;
	char		tmp[32];
	int			ch;

	time(&t);
	tm = localtime( &t );
	sprintf( tmp, "%02d%02d%02d", TM_YEAR(tm), TM_MON(tm)+1, TM_MDAY(tm) );
	ch = 'a';
	while ( ch <= 'z' )
	{	sprintf( getFn,"%s%s%s%c%s", path, top, tmp, ch, sub );
		if ( FS_isFileExist(getFn) == 0 )
			return (getFn);
		++ch;
	}
	getFn[0] = '\0';
	return (NULL);
}


int		MakeLogStr( char *buf, char *s )
{
	while ( *s )
	{
		if ( iskan(s) )
		{
			*buf = *s;	++buf;	++s;
			*buf = *s;	++buf;	++s;
		} else if ( *s == '\\' )
		{
			*buf = '\\';	++buf;
			*buf = 'x';		++buf;
			*buf = '5';		++buf;
			*buf = 'c';		++buf;
			++s;
		} else
		{	*buf = *s;	++buf;	++s;
		}
	}
	*buf = '\0';
}

int		cci_wait(int sec)
{
	int				x, y;
	unsigned int	clk;

	clk = clock() + sec * CLOCKS_PER_SEC;
	while ( clock() < clk )
	{	if ( EVT_mos_pget(&x,&y) || EVT_kbhit() )
			break;
	}
	KBF_clear();
	return (NORMAL);
}

char	*GetSizeStr( size_t siz, char *buf )
{
	if ( siz == 0 )
		strcpy( buf, "0");
	else if ( siz < 1024 )
		sprintf( buf, "%u", siz );
	else if ( siz < 1024*1024 )
		sprintf( buf, "%.1fK", siz / 1024.0 );
	else
		sprintf( buf, "%.1fM", siz / 1048576.0 );

	return (buf);
}


int		cci_system( char *title, char *cmd )
{
	char	*dlg;

	dlg = DLG_msgOpen( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN, 
	    80*6, 12*12, C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
	    "%s", title );

	if ( dlg )
	{
		DLG_msgSetConfig( dlg, 4, 6, 12 );
		DLG_msgClear( dlg, -1 );
		DLG_msgConsSet( dlg, C_MBLACK, C_HWHITE);
		DLG_msgPrintf(dlg,"\r\n%s\r\n", cmd );
	}
	MOS_DEC();
	system( cmd );
	MOS_INC();
	if ( dlg )
	{
		DLG_msgPrintf(dlg,"\r\n***** COMPLETED *****\r\n");
		NTM_wait(2);
		DLG_msgConsEnd(dlg);
		DLG_msgClose(dlg);
	}
	return (0);

	return (NORMAL);
}

