/*************************************************************************
*	HEwin
*************************************************************************/

char	*_hewin_usrfile[8] =
{
	"hewin.ini" ,
	"hewin.itm" ,
	"hewin.icn" ,
	"hewin.apl" ,
	"hewin.env" ,
	NULL         
};

int		_hewin_config(char *instdir, int item_setup)
{
	int			ret, i, instflag, updateflag;
	char	   *dlgTxm;
	char	   *dlgGets;
	char		tmp[256], buf[8];

	_hewin_instmode = _HEWIN_INSTMODE_NOTHING;
	strcpy(tmp,instdir);		add_path_fn(tmp,"hewin.exp");
	instflag   = ( FS_isFile(tmp) == FSISFILE_FILE ) ? 1 : 0;
	if ( instflag )
	{
		updateflag = 1;
		i = 0;
		while ( _hewin_usrfile[i] != NULL )
		{
			strcpy(tmp,instdir);		add_path_fn(tmp,_hewin_usrfile[i]);
			if ( FS_isFile(tmp) != FSISFILE_FILE )
			{	/* ユーザー定義ファイルがないので更新処理の必要はなし	*/
				updateflag = 0;
				break;
			}
			++i;
		}
	} else
		updateflag = 0;

	dlgTxm = DlgTxm_open(ColBoxNormal);
	DlgTxm_setTitle(dlgTxm,Fnt16x16,"HEwin 環境設定");

	DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "ｲﾝｽﾄｰﾙ先 : %s", instdir );
	DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "");
	if ( instflag )
	{
		DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
		    "指定のディレクトリには既にHEwin がインストールされています。");
		DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "");
		DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
		    "インストール時に設定情報を初期化しますか？");
		DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "");

		DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
		    "初期設定 … ｲﾝｽﾄｰﾙ時にHEwin の設定情報をすべて初期化します。  ");
		if ( updateflag )
		{
			DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
			"            既にｲﾝｽﾄｰﾙされているHEwin の設定情報は失われます。");

			DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
			"更新     … 既にｲﾝｽﾄｰﾙされているHEwin の設定情報は残したまま  ");
			DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
			"            実行ファイルだけ新しくｲﾝｽﾄｰﾙします。              ");
		} else
		{
			DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
			"なし     … 実行ファイルだけ新しくｲﾝｽﾄｰﾙします。              ");
		}

		DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'I'  , KA_I  ,
		    1, "", 0, "初期設定 : [I]");
		if ( updateflag )
		{
		DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'U'  , KA_U  ,
		    2, "", 0, "更新 : [U]");
		} else
		{
		DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'N'  , KA_N  ,
		    0, "", 0, "なし : [N]");
		}
	} else
	{
		/* 初期設定ｲﾝｽﾄｰﾙ	*/
		DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r' , KA_EXEC,
		    1, "", 0, "OK : [実行]");
	}

	DlgTxm_setSize(dlgTxm,320,40);
	DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
	do
	{
		ret = DlgTxm_start(dlgTxm);
	} while ( ret < 0 );
	DlgTxm_close(dlgTxm);
	switch ( ret )
	{
		case 1 : _hewin_instmode = _HEWIN_INSTMODE_INIT   ;	break;
		case 2 : _hewin_instmode = _HEWIN_INSTMODE_UPDATE ;	break;
		default: _hewin_instmode = _HEWIN_INSTMODE_NOTHING;	break;
	}

	/* 作業ドライブ	----------------------------------------------------*/
	_hewin_swapDrv = -1;
	if ( item_setup )
	{
		if ( (dlgGets = DlgGets_open()) == NULL )
			return (ERR);

		DlgGets_setTitle(dlgGets,Fnt16x16,"HEwin 環境設定");
		buf[0] = _hewin_swapDrv < 0 ? toupper(instdir[0]) : _hewin_swapDrv + 'A';
		buf[1] = '\0';
		DlgGets_setSize(dlgGets,320,64);
		DlgGets_putf( dlgGets, Fnt16x16, 1, "作業ドライブを指定してください（例：「D」）。" );
		DlgGets_setPosition(dlgGets,DLGPOS_CENTER_OF_SCREEN);	/* 画面中央	*/
		if ( DlgGets_start(dlgGets,3,buf) == NORMAL )
		{
			if ( isalpha(buf[0]) )
				_hewin_swapDrv = toupper(buf[0]);
			else
				_hewin_swapDrv = -1;
		}
		DlgGets_close(dlgGets);
	}

	/* 画面モード	----------------------------------------------------*/
	_hewin_scnmode  = -1;
	if ( item_setup )
	{
		dlgTxm = DlgTxm_open(ColBoxNormal);
		DlgTxm_setTitle(dlgTxm,Fnt16x16,"HEwin 画面モード");

		DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
		    "動作画面モードを指定してください。");
		DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "");

		DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, "中解像度    … 640×480ドット                            " );
		DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, "中解像度 #2 … 736×496ドット　ディスプレイによっては正常" );
		DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, "               に表示されないことがあります。            " );
		DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, "高解像度    … 1024×768ドット 高解像度TBIOS を組み込んだ" );
		DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, "               場合に使用できます。高解像度に対応した機種" );
		DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, "               （MX／MA／HC／HB／HA等）で使用できます。  " );


		DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'N'  , KA_N  ,
		    1, "", 0, "中解像度  : [N]");
		DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'S'  , KA_S  ,
		    2, "", 0, "中解像度 #2 : [S]");
		DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'H'  , KA_H  ,
		    3, "", 0, "高解像度 : [H]");

		DlgTxm_setSize(dlgTxm,320,40);
		DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
		do
		{
			ret = DlgTxm_start(dlgTxm);
		} while ( ret < 0 );
		DlgTxm_close(dlgTxm);
		switch ( ret )
		{
			case 1: _hewin_scnmode = 0;	break;
			case 2: _hewin_scnmode = 2;	break;
			case 3: _hewin_scnmode = 5;	break;
		}
	}

	return (NORMAL);
}

char	*_hewin_init_delfile[10] =
{
	"center.dat" ,
	"hewin.apl"  ,
	"hewin.env"  ,
	"hewin.icn"  ,
	"hewin.ini"  ,
	"hewin.itm"  ,
	"hewin.mac"  ,
	"tdpedit.his",
	NULL
};

int		_hewin_install(char *instdir,int item_setup)
{
	int			ret, i, att, drv;
	char	   *srcdir, *instfile;
	char	   *item_prog, *item_ttl, item_para[128];
	int			item_att;
	char		tmp[256], scnmode_para[32];

	syl_putf("HEwin INSTALL");

	if ( _hewin_instmode == _HEWIN_INSTMODE_INIT )
	{
		i = 0;
		while ( _hewin_init_delfile[i] != NULL )
		{
			strcpy(tmp,instdir);	add_path_fn(tmp,_hewin_init_delfile[i]);
			if ( FS_isFile(tmp) == FSISFILE_FILE )
				FS_remove(tmp);
			++i;
		}
	}

	srcdir       = "/TAROPYON/HEWIN";
	instfile     = "*.exp *.cci *.c *.h *.rex *.dll *.exe *.doc *.hlp *.lst *.tbl";
	item_prog    = "HEWIN.EXP";
	item_ttl     = "HEwin";
	item_para[0] = '\0';
	item_att     = 2;

	srcdir = _tc_getFcopySrcDir( srcdir, tmp);
	switch ( _hewin_instmode )
	{
		case _HEWIN_INSTMODE_INIT  :	att = _FCOPY_MODE_INIT  ;	break;
		case _HEWIN_INSTMODE_UPDATE:	att = _FCOPY_MODE_INIT  ;	break;
		default:						att = _FCOPY_MODE_UPDATE;	break;
	}
	ret = FCOPY_exec(att, srcdir, instfile, instdir);

	if ( _hewin_instmode == _HEWIN_INSTMODE_INIT )
	{
		instfile = "*.apl *.env *.icn *.ini *.itm *.tif";
		att      = _FCOPY_MODE_INIT & (~FCOPY_ATT_SUBDIR);
		ret      =  FCOPY_exec(att, srcdir, instfile, instdir);
	}

	/* 環境設定	--------------------------------------------------------*/
	syl_putf("HEwin CUSTOMIZE");
	_hewin_setup(instdir,item_setup);

	if ( ret == NORMAL && item_setup != 0 )
	{	/* アイテム登録	*/
		syl_putf("HEwin ITEM SETUP");
		if ( _hewin_scnmode >= 0 )
		{
			switch ( _hewin_scnmode )
			{
				case 0:	i = '0';	break;
				case 2:	i = '2';	break;
				case 5:	i = 'H';	break;
			}
			sprintf(scnmode_para, "-scnMode %c ", i);
		} else
			scnmode_para[0] = '\0';
		if ( isalpha(_hewin_swapDrv) )
			sprintf(item_para,"%s-swapDrv %c", scnmode_para, _hewin_swapDrv);
		else
			strcpy( item_para, scnmode_para);
		drv = toupper(instdir[0]) - 'A';
		strcpy(tmp,instdir);
		add_path_fn(tmp,item_prog);
		item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
	}

	return (ret);
}

int		_hewin_setup(char *instdir,int item_setup)
{
	return _hewin_edia_setup("hewin.mac", instdir, item_setup);
}

