/*************************************************************************
*	インストール
*************************************************************************/

#define	_NO_START		(0)
#define	_NO_HEWIN		(1)
#define	_NO_EDIA		(2)
#define	_NO_GSPLAY		(3)
#define	_NO_HE386		(4)
#define	_NO_CCI			(5)
#define	_NO_SDK			(6)
#define	_NO_HELP		(999)

int		DrvDef = -1;
int		InstUpdate = 0;	/* 日付を比較して複写	*/
char	Path_HEWIN[256];
char	Path_EDIA[256];
char	Path_GSPLAY[256];
char	Path_HE386[256];
char	Path_CCI[256];
char	Path_SDK[256];

#include	"instlib.cci"
#include	"instcfg.cci"
#include	"instcopy.cci"
#include	"instapl.cci"
#include	"institem.cci"

char	*Msg_after_inst[8] =
{
	"***** インストール終了しました *****",
	"サイドワークプログラムは各自，登録してください。",
	NULL
};

/*************************************************************************
*	インストール開始
*************************************************************************/

int		_install_start()
{
	int		ret, drv;
	char	*fdl;
	char	*mnu;
	char	*btn;
	char	tmp[256];

	/* 環境設定	--------------------------------------------------------*/
	if ( (ret = _inst_cfg_setup()) != 0 )
		return (ret);

	/* インストール開始	------------------------------------------------*/
	DSP_writePage(1);
	btn = MNU_allocBtn(2);
	MNU_setBtn( btn, 0, '\r'  , KA_EXEC  , 1, "開始 : [実行]" );
	MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "中止 : [取消]" );
	ret = MNU_selectBtn( DlgX0, DlgY0,
	    C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER, 2, btn,
	    "    インストール作業を開始します。  " );
	MNU_freeBtn( btn );
	if ( ret != 1 )
		return (1);	/* 中断	*/

	_set_fcopymode(InstUpdate);
	if ( _autoinst_HEWIN(  Path_HEWIN  ) ) goto _ERR;
	if ( _autoinst_EDIA(   Path_EDIA   ) ) goto _ERR;
	if ( _autoinst_GSPLAY( Path_GSPLAY ) ) goto _ERR;
	if ( _autoinst_HE386(  Path_HE386  ) ) goto _ERR;
	if ( _autoinst_CCI(    Path_CCI    ) ) goto _ERR;
	if ( _autoinst_SDK(    Path_SDK    ) ) goto _ERR;

	if ( _setcfg_HEWIN() ) goto _ERR;
	if ( _setcfg_EDIA()  ) goto _ERR;
	if ( _setcfg_SDK()   ) goto _ERR;
	if ( _inst_set_item() ) goto _ERR;

	/* インストール終了	------------------------------------------------*/
	dsp_init(NULL);
	DSP_writePage(0);
	dspmsg_setpos(64,64,18);
	dspmsg_puts("サイドワークプログラムは，");
	sprintf(tmp,"  %s",FnSdkSys);
	dspmsg_puts(tmp);
	dspmsg_puts("を参考にして登録してください。");

	SYL_puts( C_INFO, "***** Completed *****");
	DSP_writePage(1);
	MNU_sure( DlgX0, DlgY0,
	    C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER,
	    "    インストール終了しました。  " );
	return (NORMAL);

_ERR:
	DSP_writePage(1);
	MNU_sure( DlgX0, DlgY0,
	    C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER,
	    "  インストールを中断します。" );
	return (ERR);
}

/*************************************************************************
*	インストール先の指定
*************************************************************************/

int		_set_instPath( char *prog, char *path )
{
	int		ret, drv;
	char	*fdl;
	char	whare[256];

	if ( (fdl = FDL_open(0)) == NULL )
		return (-1);
	FDL_set_title( fdl,"%s インストール先指定", prog);
	FDL_set_wildcard( fdl, "*.*");
	ret = FDL_start(fdl);
	if ( ret == NORMAL )
	{
		drv = FDL_get_drv(fdl);
		strcpy( whare, FDL_get_whare(fdl) );
	}
	FDL_close(fdl);
	if ( ret == NORMAL )
		sprintf(path,"%c:/%s", drv+'A', whare);
	return (NORMAL);
}

#include	"instmenu.cci"

int		install_main()
{
	int		ret;
	char	*btn;

	dsp_init(Msg_inst_all);
	DSP_writePage(1);
	btn = MNU_allocBtn(3);
	MNU_setBtn( btn, 0, '\r'  , KA_EXEC  , 1, "説明 : [実行]" );
	MNU_setBtn( btn, 1, 'S'   , KA_S     , 2, "開始 : [S]"    );
	MNU_setBtn( btn, 2, '\x1B', KA_CANCEL, 3, "終了 : [取消]" );
	ret = MNU_selectBtn( DlgX0, DlgY0,
	    C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER, 3, btn,
	    "  処理を選択してください。" );
	MNU_freeBtn( btn );
	switch ( ret )
	{
		case 1:
			_inst_setdir(1);
			break;
		case 2:
			_inst_setdir(0);
			break;
		case 3:	/* 終了	*/
			return (ERR);
	}
	return (NORMAL);
}

