//---------------------------------------------------------------------------
//
//  mayaToHndOpts
//
//  Copyright (C) 2002 - 2007 SEGA Corporation Library R&D Dept.
//  All Rights Reserved.
//
//  Module  : mayaToHndOpts
//  File    : mayaToHndOpts.mel
//  Create  : 2002/10/28
//  Modify  : 2004/08/27
//          : 2004/11/09 : User Init完全対応
//          : 2007/09/27 : Maya2008対応
//  Version : 1.05.22
//  Note    : mayaToHndOpts
//
//---------------------------------------------------------------------------

global int	  $mthgDebugMode = false;
global string $mthgDefaultProjectPath;
global string $mthgOrgProjectPath;
global string $mthgPluginNameList[] = {
//	"MAYA4 HND Exporter                             ",
//	"MAYA45 HND Exporter                            ",
//	"MAYA5 HND Exporter                             ",
//	"MAYA6 HND Exporter                             ",
	"MAYA65 HND Exporter                            ",
	"MAYA7 HND Exporter                             ",
	"MAYA8 HND Exporter                             ",
//	"MAYA85 HND Exporter                            ",
	"MAYA85toHND"                                    ,
	"MAYA2008 HND Exporter                          ",
	"MAYA2008toHND"
};

global string $mthgEntryName	= "default";
global int	  $mthgCrtEntryNo	= 0;
global int	  $mthgEntryNum		= 0;
global int	  $mthgEntryCmdType	= 0;
global string $mthgNNRTempFile;
global string $mthgUserInitNNR;
global string $mthgNNROpenPath;
global string $mthgNNRFileName;
global int    $mthgLoadMode;

//---------------------------------------------------------------------------
//  関数名 : mthgGetAutoSaveOptionEnv
//  機  能 : NNR_AUTOSAVEOPTION環境変数を取得。
//  書  式 : global proc mthgGetAutoSaveOptionEnv()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : NNR_AUTOSAVEOPTION環境変数を取得する。
//---------------------------------------------------------------------------
proc int mthgGetAutoSaveOptionEnv()
{
	int		$value;
	string	$envStr = `getenv NNR_AUTOSAVEOPTION`;

	if( size($envStr) )	$value = (int)$envStr;
	else				$value = 0;

	return($value);
}

//---------------------------------------------------------------------------
//  関数名 : mayaToHndOpts
//  機  能 : HNDExportOptionDialogを表示します。
//  書  式 : global proc int mayaToHndOpts( string $parent,
//                                          string $action,
//                                          string $initialSettings,
//                                          string $resultCallback )
//  引  数 : string $parent          : HndOptionレイアウトの親のレイアウト
//         :                         : (scrollLayout:fileOptionsScroll)
//         : string $action          : このプロシージャ呼び出し時の動作
//         :        "query"          : オプション文字列を作成し、コールバック関数に
//         :                         : オプションを返す。
//         :        "post"           : オプションダイアログのコントロール、レイアウトを配置する。
//         : string $initialSettings : 現在使用していません。
//         : string $resultCallback  : オプション文字列を返すコールバック関数
//         :                           ( $resultCallback(string $optionsString) )
//  戻り値 :
//  説  明 :
//---------------------------------------------------------------------------
global proc int mayaToHndOpts( 
	string $parent,
	string $action,
	string $initialSettings,
	string $resultCallback
)
{
	int		$bResult;
	string	$currentOptions;

	global int	  	$mthgEntryCmdType;
	global int		$mthgDebugMode;
	global string	$mthgDefaultProjectPath;
	global int		$mthgEntryNum;
	global string	$mthgNNRTempFile;
	global string	$mthgUserInitNNR;
	global string	$mthgOrgProjectPath;
	global string	$mthgNNROpenPath;
	global string	$mthgNNRFileName;
	global int		$mthgLoadMode;

	// オリジナルプロジェクトのパスをセット
	$mthgOrgProjectPath = `workspace -query -fullName`;

	// デフォルトプロジェクトのパスをセット
	$mthgDefaultProjectPath = `workspace -query -fullName`;
	$mthgNNROpenPath = $mthgDefaultProjectPath;

	// NNR一時ファイル名を設定
	$mthgNNRTempFile = `internalVar -userTmpDir` + "tmpNNR";

	// User Init NNRファイル名を設定
	$mthgUserInitNNR = `internalVar -userAppDir` + "userInit";

	// レイアウトを配置
	if( $action == "post" ) {
		$mthgNNRFileName = mthgGetDefaultOpenNNRFileName();

		// 親のレイアウトをセット
		setParent $parent;
		// MTHD_HndOptionTemplateテンプレート呼び出し
		mthgCreateHndOptionTemplate();
		// MTHDGUITemplateをカレントテンプレートにセット
		setUITemplate -pushTemplate MTHD_HndOptionTemplate;
		// columnLayout [[
		columnLayout MTHD_HndOptionColumnLayout;
			// MTHD_HndOptionColumnLayoutにレイアウトを追加
			mthgMakeLayoutHndOption( "MTHD_HndOptionColumnLayout" );
		// ]] columnLayout
		setParent ..;

		// テンプレート終了
		setUITemplate -popTemplate;
		// オプション初期化
		mthgResetOption();

/********
		if( $mthgEntryNum == 0 ) {
			mthgInitOption();
		}
********/

		$bResult = 1;
	}
	// オプション文字列をコールバック関数に返す
	else if ( $action == "query" ) {
		// Saveコマンド
		$mthgEntryCmdType = 6;

		$currentOptions = mthgCreateOptionString();
//		$currentOptions += "saveOptionMode=1;";
		$currentOptions += "saveOptionMode=0;";

		if( $mthgDebugMode == true ) {
			string $debugString;
			$debugString = `substituteAllString $currentOptions ";" "\n"`;
			print( $debugString + "\n");
		}
		// オプション文字列をコールバック関数に返す
		eval($resultCallback+" \""+$currentOptions+"\"");
		$bResult = 1;
	}
	else {
		$bResult = 0;
	}

	return $bResult;
}

//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//		オプションダイアログ・レイアウト・コントロール作成用プロシージャ	 //
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//

//---------------------------------------------------------------------------
//  関数名 : mthgCreateHndOptionTemplate
//  機  能 : HNDExportOptionDialogを表示します。
//  書  式 : global proc mthgCreateHndOptionTemplate()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : mayaToHNDオプションダイアログで使用する
//           各レイアウト・コントロール用のテンプレートを定義します。
//---------------------------------------------------------------------------
global proc mthgCreateHndOptionTemplate()
{
	// MTHD_MayaToNNGUITemplateがすでに存在している場合は一度削除する。*/
	if ( `uiTemplate -exists MTHD_HndOptionTemplate` ) {
    	deleteUI -uiTemplate MTHD_HndOptionTemplate;
	}
	// 新規テンプレートを作成
	uiTemplate MTHD_HndOptionTemplate;
	// columnLayout
	columnLayout
		-defineTemplate		MTHD_HndOptionTemplate

		-adjustableColumn	true
		-columnAttach both	0
		-columnAlign		left
		;

	// frameLayout
	frameLayout
		-defineTemplate		MTHD_HndOptionTemplate

		-visible			true
		-collapsable		false
		-collapse			false
		-borderVisible		true
		-borderStyle		"etchedOut"
		-label				""
		-labelVisible		true
		-labelAlign			center
		-labelIndent		5
		-marginWidth		5
		-marginHeight		5
		;

	// rowLayout
	rowLayout
		-defineTemplate		MTHD_HndOptionTemplate

		-columnAttach1		both
		-columnOffset1		0
		-columnAlign1		left

		-columnAttach2		both both
		-columnOffset2		0 0
		-columnAlign2		right left

		-columnAttach3		both both both
		-columnOffset3		0 0 0
		-columnAlign3		right left left

		-columnAttach4		both both both both
		-columnOffset4		0 0 0 0
		-columnAlign4		right left left left

		-columnAttach5		both both both both both
		-columnOffset5		0 0 0 0 0
		-columnAlign5		right left left left left
		;

	// textFieldButtonGrp
	textFieldButtonGrp
		-defineTemplate 	MTHD_HndOptionTemplate

		-label				""
		-text				""
		-buttonLabel		""

		-columnAttach		1 both 0
		-columnAttach		2 both 0
		-columnAttach		3 both 10
		-columnAlign		1 right
		-columnAlign		2 left
		-columnAlign		3 center
		;

	// optionMenuGrp
	optionMenuGrp
		-defineTemplate 	MTHD_HndOptionTemplate

		-label				""

		-columnAttach2		both both
		-columnOffset2		0 0
		-columnAlign2		right left

		-rowAttach			1 top 5
		;

	// checkBoxGrp
	checkBoxGrp
		-defineTemplate 	MTHD_HndOptionTemplate

		-label 				""

		-columnAttach2		both both
		-columnOffset2		0 0
		-columnAlign2		right left

		-columnAttach4		both both both both
		-columnOffset4		0 0 0 0
		-columnAlign4		right left left left
		;

	// radioButtonGrp
	radioButtonGrp
		-defineTemplate 	MTHD_HndOptionTemplate

		-label				""

		-columnAttach3		both both both
		-columnOffset3		0 0 0
		-columnAlign3		right left left

		-columnAttach4		both both both both
		-columnOffset4		0 0 0 0
		-columnAlign4		right left left left
		;

	// button
	button
		-defineTemplate 	MTHD_HndOptionTemplate

		-label				""
		-align				center
		;
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutHndOption
//  機  能 :
//  書  式 : global proc mthgMakeLayoutHndOption( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : mayaTonHNDオプションダイアログで使用する
//           各レイアウトを作成するプロシージャを呼び出します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutHndOption( string $parent )
{
	setParent $parent;
	// レイアウト追加
	// HndOptionHeader
	mthgMakeLayoutHndOptionHeader( $parent );
	// Output Option
	mthgMakeLayoutOutputOption	 ( $parent );
	// Node Option
	mthgMakeLayoutNodeOption	 ( $parent );
	// Motion Option
	mthgMakeLayoutMotionOption	 ( $parent );
	// Hnd Logo
	mthgMakeLayoutHndLogoImage	 ( $parent );
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutHndOptionHeader
//  機  能 :
//  書  式 : global proc mthgMakeLayoutHndOptionHeader( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : オプションダイアログのヘッダーを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutHndOptionHeader( string $parent )
{
	setParent $parent;

	string $pluginName = mthgGetPluginName();
	if( size($pluginName) == 0 ) {
		error( "HND Exporter Plugin is not loaded!\n" );
	}
	string $name	= `pluginInfo -query -name		$pluginName`;
	string $version = `pluginInfo -query -version	$pluginName`;;
	// 文字列の最初と最後からスペースを削除
	$name	 = strip( $name	   );
	$version = strip( $version );
	// ラベル文字列を作成
	string $labelname = $name + " " + $version + "  Export Options";

	// frameLayout [[
	frameLayout
		-borderVisible 	false
		-labelVisible 	false
		-collapsable 	false
		MTHD_OptionHeaderFrameLayout;
		// columnLayout [[
		columnLayout MTHD_OptionHeaderColumnLayout;
			// rowLayout [[
			rowLayout
				-numberOfColumns 	2
				-columnWidth2 		400 100
				-columnAttach2 		both both
				-columnOffset2 		5 5
				-columnAlign2 		left center
				MTHD_OptionHeaderRowLayout;

				// GUIラベル
				text
					-label 	$labelname
					-font 	boldLabelFont
					MTHD_OptionHeaderText;
		// ]] columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;

}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutHndLogoImage
//  機  能 :
//  書  式 : global proc mthgMakeLayoutHndLogoImage( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : イメージファイルを読み込みロゴを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutHndLogoImage( string $parent )
{
	setParent $parent;
	// frameLayout [[
	frameLayout
		-labelVisible	false
		-marginWidth	0
		-marginHeight	0
		MTHD_HndImageFrameLayout;
		// ロゴイメージのレイアウトを作成
		image
			-image	`file -query -location "hnd_logo.iff"`
			-width	500
			-height 100
			MTHD_HndLogoImage;
	// ]] frameLayout
	setParent ..;
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutOutputOption
//  機  能 :
//  書  式 : global proc mthgMakeLayoutOutputOption( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : OutputOptionを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutOutputOption( string $parent )
{
	global string $mthgDefaultProjectPath;
	global int	  $mthgDebugMode;
	global string $mthgEntryName;
	global string $mthgNNROpenPath;
	global string $mthgNNRFileName;

	string $pluginName = mthgGetPluginName();

	setParent $parent;
   	// frameLayout [[
  	frameLayout
  		-label			"Output Option"
   		-labelVisible	false
   		MTHD_OutputOptionFrameLayout;
   		// columnLayout [[
   		columnLayout MTHD_OutputOptionColumnLayout;
			// rowLayout [[
			rowLayout
				-numberOfColumns	3
				-columnWidth3		283 120 100
				-columnOffset3		0 0 10
				-columnAlign3		center center center
				-rowAttach			2 top 30
				-rowAttach			3 top 25
				MTHD_OutputOptionRowLayout;
				// icon
				iconTextStaticLabel
					-style	"iconAndTextHorizontal"
					-image1	"output.xpm"
					-label	"Output Option"
					MTHD_OutputIcon;
				// AutoOptionSave
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Auto Option Save"
					-value1				(mthgGetAutoSaveOptionEnv())
					-columnWidth2		10 110
					-columnOffset2		5 0
					MTHD_AutoOptionSaveCheckBox;
				// バージョン情報表示用ボタン
				button
					-label		"Version"
					-command	("mthgGetVersion")
					MTHD_VersionButton;
			// ]] rowLayout
			setParent ..;

			// frameLayout [[
			frameLayout
				-label			"Option Dialog Setting"
				-labelIndent	10
				-collapsable	false
				-borderStyle	"etchedOut"
				MTHD_OptionSettingFrameLayout;
				// columnLayout [[
				columnLayout MTHD_OptionSettingColumnLayout;

				// Load Mode
				textFieldGrp
					-label 			"  Option Setting Mode : "
					-text 			(mthgGetNNRLoadMode())
					-columnWidth2 	120 120
					-columnAlign2	"left" "left"
					-editable 		false
					MTHD_LoadModeTextFieldGrp;

				// NNR Path
				textFieldGrp
					-label 			"  NNR Directory : "
					-text 			$mthgNNRFileName
					-columnWidth2 	120 375
					-columnAlign2	"left" "left"
					-editable 		false
					MTHD_NNRPathTextFieldGrp;

					// rowLayout [[
					rowLayout
						-numberOfColumns	2
//						-columnWidth2		330 170
						-columnWidth2		280 220
						-columnOffset2		5 5
						-columnAlign2		center center
						-rowAttach			1 top 0
						-rowAttach			2 top 0
						-rowAttach			1 bottom 5
						-rowAttach			2 bottom 5
						MTHD_OptionLoadButtonRowLayout;

						// frameLayout [[
						frameLayout
							-label			"Load"
							-labelIndent	10
							-collapsable	false
							-borderStyle	"etchedOut"
							MTHD_OptionInitButtonFrameLayout;
							// columnLayout [[
							columnLayout MTHD_OptionInitButtonColumnLayout;
								// rowLayout [[
								rowLayout
									-numberOfColumns	4
									-columnWidth4		65 65 65 65
									-columnOffset4		3 3 3 3
									-columnAlign4		center center center center
									-rowAttach			1 top 0
									-rowAttach			2 top 0
									-rowAttach			3 top 0
									-rowAttach			4 top 0
									MTHD_OptionInitButtonRowLayout;
									// オプションシステムイニットボタン
									button
										-label		"Default"
										-width		45
										-annotation	"オプション"
										-command	("mthgInitOption")
										MTHD_OptionSystemInitButton;
									// オプションユーザーイニットボタン
									button
										-label		"User"
										-width		45
										-command	("mthgUserInitOption")
										MTHD_OptionUserInitButton;
									// オプションシーンイニットボタン
									button
										-label		"Scene"
										-width		45
										-command	("mthgResetOption")
										MTHD_OptionSceneInitButton;
									// オプションロードボタン
									button
										-label		"Select"
										-width		45
										-command	("mthgOpenNnrFileBrowser")
										MTHD_OptionLoadButton;
								// ]] rowLayout
								setParent ..;
							// ]] columnLauout
							setParent ..;
						// ]] frameLayout
						setParent ..;

						// frameLayout [[
						frameLayout
							-label			"Save"
							-labelIndent	10
							-collapsable	false
							-borderStyle	"etchedOut"
							MTHD_OptionSaveButtonFrameLayout;
							// columnLayout [[
							columnLayout MTHD_OptionSaveButtonColumnLayout;
								// rowLayout [[
								rowLayout
									-numberOfColumns	3
									-columnWidth3		65 65 65
									-columnOffset3		3 3 3
									-columnAlign3		center center center
									-rowAttach			1 top 0
									-rowAttach			2 top 0
									-rowAttach			3 top 0
									MTHD_OptionSaveButtonRowLayout;
									// オプションセーブボタン
									button
										-label		"User"
										-width		45
										-command	("mthgUserInitSaveOption")
										MTHD_OptionUserInitSaveButton;
									// オプションセーブボタン
									button
										-label		"Scene"
										-width		45
										-command	("mthgSaveOption")
										MTHD_OptionSaveButton;
									// オプションセーブボタン
									button
										-label		"Save As"
										-width		45
										-command	("mthgSaveNnrFileBrowser")
										MTHD_OptionSaveAsButton;
								// ]] rowLayout
								setParent ..;
							// ]] columnLauout
							setParent ..;
						// ]] frameLayout
						setParent ..;
					// ]] rowLayout
					setParent ..;

					separator -style "in";

					// entryName
					rowLayout
						-numberOfColumns	6
						-columnWidth6 		100 40 160 60 40 100
						-columnAttach6		right both left both both both
						-columnOffset6		0 0 10 10 0 10
						-columnAlign6		"right" "center" "right" "center" "center" "center"
						-rowAttach			1 both 5
						-rowAttach			2 both 5
						-rowAttach			3 both 5
						-rowAttach			4 both 5
						-rowAttach			5 both 5
						-rowAttach			6 both 5
						MTHD_entryName;
							text
								-label 			"Entry Name : "
								-visible 		true
								MTHD_entryNameLabel;
							button
								-label 			"Prev"
								-width			40
								-visible 		true
								-command		("mthgEntryPrev")
								MTHD_EntryPrevButton;
							textField
								-width			150
								-text 			$mthgEntryName // デフォルト値をセット
								-visible 		true
								MTHD_EntryNameField;
							button
								-label 			"Next"
								-width			60
								-visible 		true
								-command		("mthgEntryNext")
								MTHD_EntryNextButton;
							button
								-label 			"Del"
								-width			40
								-visible 		true
								-command		("mthgEntryDel")
								MTHD_EntryDelButton;
							button
								-label		 	"Add"
								-width			100
								-visible 		true
								-command		("mthgEntryAdd")
								MTHD_EntryAddButton;
							// デフォルト値をセット
							mthgEntryBottonStatusChg();
					// ]] rowLayout
					setParent ..;
				// ]] columnLauout
				setParent ..;
			// ]] frameLayout
			setParent ..;

			// frameLayout [[
			frameLayout
				-label			"Global Setting"
				-labelIndent	10
				-collapsable	false
				-borderStyle	"etchedOut"
				MTHD_GlobalSettingFrameLayout;
				// columnLayout [[
				columnLayout MTHD_GlobalSettingColumnLayout;
					// outputDirName
					textFieldButtonGrp
						-label 			"Output Dir Name : "
						-text 			$mthgDefaultProjectPath // デフォルト値をセット
						-buttonLabel 	"Select"
						-buttonCommand 	("mthgGetOutputPath")
						-columnWidth3 	100 300 100
						-visible 		true
						-editable 		true
						MTHD_OutputPath;

					text -height 3 -label "";

					// outputFileType
					optionMenuGrp
						-label			"Output File Type : "
						-columnWidth2	100 150
						-changeCommand	"mthgEnableFileAttribute"
						MTHD_FileType;
						// HND_ASCII
						menuItem -label "HND ASCII"			MTHD_FileType_HND_ASCII;
						// HND_BINARY
						menuItem -label "HND BINARY" 		MTHD_FileType_HND_BINARY;
						// HND_ASCII_BINARY
						menuItem -label "HND ASCII/BINARY"	MTHD_FileType_HND_ASCII_BINARY;
						// HND_XML
						menuItem -label "HND XML"	 		MTHD_FileType_HND_XML;
					// ]] optionMenuGrp
					setParent -menu ..;
					// デフォルト値をセット
					optionMenuGrp -edit -value "HND ASCII" MTHD_FileType;

					text -height 3 -label "";
					separator -style "in";
					text -height 3 -label "";

					// rowLayout [[
					rowLayout
						-numberOfColumns	2
						-columnWidth2		240 230
						-rowAttach			1 top 5
						MTHD_OutputOptionRowLayout;
						// optionMenuGrp [[
						columnLayout;
							// OutputPicture
							checkBoxGrp
								-numberOfCheckBoxes 1
								-label				""
								-label1				"Output Picture"
								-columnWidth2		20 150
								MTHD_OutputPicture;
							// OverwritePicture
							checkBoxGrp
								-numberOfCheckBoxes 1
								-label				""
								-label1				"Overwrite Picture"
								-columnWidth2		20 150
								MTHD_OverwritePicture;
							// AddSceneName
							checkBoxGrp
								-numberOfCheckBoxes	1
								-label				""
								-label1				"Add Scene Name"
								-columnWidth2		20 150
								MTHD_AddSceneName;
							// AssignUniqueNodeName
							checkBoxGrp
								-numberOfCheckBoxes	1
								-label				""
								-label1				"Assign Unique Node Name"
								-columnWidth2		20 150
								MTHD_AssignUniqueNodeName;
// Delete [[
//							if( $pluginName == "MAYA65 HND Exporter                            " ||
//								$pluginName == "MAYA7 HND Exporter                             " ||
//								$pluginName == "MAYA8 HND Exporter                             " ||
//								$pluginName == "MAYA85 HND Exporter                            " ) {
//								$pluginName == "MAYA85toHND" ) {
// ]] Delete 2007/09/27
								// OutputNullBone
								checkBoxGrp
									-numberOfCheckBoxes	1
									-label				""
									-label1				"Output Null Bone"
									-value1				off
									-columnWidth2		20 150
									MTND_OutputNullBone;
								// UseTangentSpace
								checkBoxGrp
									-numberOfCheckBoxes	1
									-label				""
									-label1				"Use Tangent Space"
									-value1				true
									-columnWidth2		20 150
									MTND_UseTangentSpace;
// Delete [[
//							}
// ]] Delete 2007/09/27
						setParent ..;
						// FileAttribute
						mthgMakeLayoutFileAttribute( "MTHD_OutputOptionRowLayout" );
					// ]] rowLayout
					setParent ..;
				// ]] columnLauout
				setParent ..;
			// ]] frameLayout
			setParent ..;
		// ]] columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutFileAttribute
//  機  能 :
//  書  式 : global proc mthgMakeLayoutFileAttribute( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : FileAttributeを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutFileAttribute( string $parent )
{
	setParent $parent;
	// frameLayout [[
	frameLayout
		-label "File Attribute"
		MTHD_FileAttributeFrameLayout;
		// rowLayout [[
		rowLayout
			-numberOfColumns	2
			-columnWidth2		110 110
			MTHD_FileAttributeRowLayout;
			// columnLayout [[
			columnLayout;
				// Dec
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Dec"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					-changeCommand		"mthgChangeDecValue"
					MTHD_FileAttribute_Dec;
				// Hex
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Hex"
					-value1				off
					-columnWidth2		10 100
					-columnOffset2		5 0
					-changeCommand		"mthgChangeHexValue"
					MTHD_FileAttribute_Hex;
				// ViewDefault
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"View Default"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_FileAttribute_ViewDefault;
			// ]] columnLayout
			setParent ..;
			// columnLayout [[
			columnLayout;
				// Optimize
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Optimize"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_FileAttribute_Optimize;
				// Comment
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Comment"
					-value1				on
					-columnWidth2		5 100
					-columnOffset2		5 0
					MTHD_FileAttribute_Comment;
				// Tab
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Tab"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_FileAttribute_Tab;
			// ]] columnLayout
			setParent ..;
		// ]] rowLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutNodeOption
//  機  能 :
//  書  式 : global proc mthgMakeLayoutNodeOption( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : NodeOptionを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutNodeOption( string $parent )
{
	setParent $parent;
	// frameLayout [[
	frameLayout
		-labelVisible	false
		-label			"Node Option"
		MTHD_NodeOptionFrameLayout;
		// columnLayout [[
		columnLayout MTHD_NodeOptionColumnLayout;
			// Icon
			iconTextStaticLabel
				-style	"iconAndTextHorizontal"
				-image1 "obj.xpm"
				-label	"Node Option"
				MTHD_NodeIcon;

//			separator -style "single";

			// formLayout [[
//			formLayout MTHD_NodeOptionFormLayout;
			// rowLayout [[
			rowLayout
				-numberOfColumns	4
				-columnWidth4		120 120 120 120
				-columnAttach4		both both both both
				-columnOffset4		0 0 0 0
				-columnAlign4		left left left left
				-rowAttach			1 top 7
				MTHD_NodeOptionRowLayout;
				// Node
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Output"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					-changeCommand		"mthgEnableModelOption; mthgForceSetModelOption;"
					MTHD_OutputNode;


				// columnLayout [[
				columnLayout MTHD_NodeOption1ColumnLayout;
					// Model
					checkBoxGrp
						-numberOfCheckBoxes 1
						-label1				"Model"
						-value1				on
						-columnWidth2		10 100
						-columnOffset2		5 0
						MTHD_OutputModel;
					// Envelope
					checkBoxGrp
						-numberOfCheckBoxes 1
						-label1				"Envelope"
						-value1				on
						-columnWidth2		10 100
						-columnOffset2		5 0
						MTHD_OutputEnvelope;
				// ]] columnLayout
				setParent ..;
				// columnLayout [[
				columnLayout MTHD_NodeOption2ColumnLayout;
					// Instance
					checkBoxGrp
						-numberOfCheckBoxes	1
						-label1				"Instance"
						-value1				on
						-columnWidth2		10 100
						-columnOffset2		5 0
						MTHD_OutputInstance;
					// Bone
					checkBoxGrp
						-numberOfCheckBoxes 1
						-label1				"Bone"
						-value1				on
						-columnWidth2		10 100
						-columnOffset2		5 0
						MTHD_OutputBone;
				// ]] columnLayout
				setParent ..;
				// columnLayout [[
				columnLayout MTHD_NodeOption3ColumnLayout;
					// Camera
					checkBoxGrp
						-numberOfCheckBoxes 1
						-label1				"Camera"
						-value1				on
						-columnWidth2		10 100
						-columnOffset2		5 0
						MTHD_OutputCamera;
					// Light
					checkBoxGrp
						-numberOfCheckBoxes 1
						-label1				"Light"
						-value1				on
						-columnWidth2		10 100
						-columnOffset2		5 0
						MTHD_OutputLight;
				// ]] columnLayout
				setParent ..;
			// ]] rowLayout
			setParent ..;
		// columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;
/* Delete [[
	// レイアウト配置
	formLayout
		-edit
		// MTHD_OutputNode
		-attachForm		MTHD_OutputNode					top		5
		-attachForm		MTHD_OutputNode					left	5
		-attachForm		MTHD_OutputNode					bottom	5
		-attachPosition	MTHD_OutputNode					right	5	25
		// MTHD_NodeOption1ColumnLayout
		-attachForm		MTHD_NodeOption1ColumnLayout	top		5
		-attachControl	MTHD_NodeOption1ColumnLayout	left	5	MTHD_OutputNode
		-attachForm		MTHD_NodeOption1ColumnLayout	bottom	5
		-attachPosition	MTHD_NodeOption1ColumnLayout	right	5	50
		// MTHD_NodeOption2ColumnLayout
		-attachForm		MTHD_NodeOption2ColumnLayout	top		5
		-attachControl	MTHD_NodeOption2ColumnLayout	left	5	MTHD_NodeOption1ColumnLayout
		-attachForm		MTHD_NodeOption2ColumnLayout	bottom	5
		-attachPosition	MTHD_NodeOption2ColumnLayout	right	5	75
		// MTHD_NodeOption3ColumnLayout
		-attachForm		MTHD_NodeOption3ColumnLayout	top		5
		-attachControl	MTHD_NodeOption3ColumnLayout	left	5	MTHD_NodeOption2ColumnLayout
		-attachForm		MTHD_NodeOption3ColumnLayout	bottom	5
		-attachForm		MTHD_NodeOption3ColumnLayout	right	5
		// edit end
		MTHD_NodeOptionFormLayout;
]] Delete */
}
//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutMotionOption
//  機  能 :
//  書  式 : global proc mthgMakeLayoutMotionOption( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : MotionOptionの各レイアウトを作成するプロシージャを呼び出します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutMotionOption( string $parent )
{
	setParent $parent;
	// frameLayout [[
	frameLayout
		-labelVisible	false
		-label			"Motion Option"
		MTHD_MotionOptionFrameLayout;
		// columnLayout [[
		columnLayout MTHD_MotionOptionColumnLayout;
			// icon
			iconTextStaticLabel
				-style	"iconAndTextHorizontal"
				-image1	"motion.xpm"
				-label	"Motion Option"
				MTHD_NodeMotionIcon;
			// レイアウト追加
			mthgMakeLayoutNodeMotionOption		 ( "MTHD_MotionOptionColumnLayout" );
			mthgMakeLayoutMorphMotionOption		 ( "MTHD_MotionOptionColumnLayout" );
			mthgMakeLayoutShapeMotionOption		 ( "MTHD_MotionOptionColumnLayout" );
			mthgMakeLayoutMaterialAnimationOption( "MTHD_MotionOptionColumnLayout" );
			mthgMakeLayoutTextureAnimationOption ( "MTHD_MotionOptionColumnLayout" );
			mthgMakeLayoutCameraMotionOption	 ( "MTHD_MotionOptionColumnLayout" );
			mthgMakeLayoutLightMotionOption		 ( "MTHD_MotionOptionColumnLayout" );
		// ]] columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutNodeMotionOption
//  機  能 :
//  書  式 : global proc mthgMakeLayoutNodeMotionOption( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : NodeMotionOptionを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutNodeMotionOption( string $parent )
{
	setParent $parent;
	// frameLayout [[
	frameLayout
		-label			"Node Motion"
		MTHD_NodeMotionOptionFrameLayout;
		// columnLayout [[
		columnLayout MTHD_NodeMotionOptionFrameLayout;
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		100 160
        		-rowAttach			1 top 5
				MTHD_NodeMotionOptionRowLayout1;
				// OutputMotion
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Output"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					-changeCommand		"mthgEnableMotionOption; mthgForceSetMotionOption;"
					MTHD_OutputMotion;
				// NodeMotionKeyType
				optionMenuGrp
					-label			"Key Type : "
					-columnWidth2	100 60
					-columnOffset2	0 0
					MTHD_NodeMotionKeyType;
					// FULL
					menuItem
						-label "FULL"
						MTHD_NodeMotionKeyType_FULL;
					// KEY
					menuItem
						-label "KEY"
						MTHD_NodeMotionKeyType_KEY;
					// TKEY
					menuItem
						-label "TKEY"
						MTHD_NodeMotionKeyType_TKEY;
				setParent -menu;
			// ]] rowLayout
			setParent ..;
			separator -style "in";
			// rowLayout [[
			rowLayout
				-numberOfColumns	4
				-columnWidth4		95 95 95 95
				MTHD_NodeMotionRowLayout2;
				text -label "Root";
				// OutputMotion_Translation
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Translate"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMotion_Translation;
				// OutputMotion_Rotation
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Rotate"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMotion_Rotation;
				// OutputMotion_Scaling
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Scale"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMotion_Scaling;
			// ]] rowLayout
			setParent ..;
			// rowLayout [[
			rowLayout
				-numberOfColumns	4
				-columnWidth4		95 95 95 95
				MTHD_NodeMotionRowLayout3;
				text -label "Child";
				// OutputMotion_Translation
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Translate"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMotion_ChildTranslation;
				// OutputMotion_Rotation
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Rotate"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMotion_ChildRotation;
				// OutputMotion_Scaling
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Scale"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMotion_ChildScaling;
			// ]] rowLayout
			setParent ..;
		// ]] columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutMorphMotionOption
//  機  能 :
//  書  式 : global proc mthgMakeLayoutMorphMotionOption( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : MorphMotionOptionを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutMorphMotionOption( string $parent )
{
	setParent $parent;
	// frameLayout [[
	frameLayout
		-label			"Morph Weight Motion"
		MTHD_MorphMotionOptionFrameLayout;
		// columnLayout [[
		columnLayout MTHD_MorphMotionOptionColumnLayout;
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		100 160
        		-rowAttach			1 top 5
				MTHD_MorphMotionOptionRowLayout1;
				// OutputMorph
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Output"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					-changeCommand		"mthgEnableMorphOption; mthgForceSetMorphOption"
					MTHD_OutputMorph;
				// MorphMotionKeyType
				optionMenuGrp
					-label			"Key Type : "
					-columnWidth2	100 60
					-columnOffset2	0 0
					MTHD_MorphMotionKeyType;
					// FULL
					menuItem
						-label "FULL"
						MTHD_MorphMotionKeyType_FULL;
					// KEY
					menuItem
						-label "KEY"
						MTHD_MorphMotionKeyType_KEY;
					// TKEY
					menuItem
						-label "TKEY"
					MTHD_MorphMotionKeyType_TKEY;
				setParent -menu;
			// ]] rowLayout
			setParent ..;

			separator -style "in" MTHD_MorphMotionSeparator;

			// rowLayout [[
			rowLayout
				-numberOfColumns 4
				-columnWidth4	 95 95 95 95
				MTHD_MorphMotionOptionRowLayout2;
				// MorphVertex
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Vertex"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMorph_MorphVertex;
				// MorphNormal
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Normal"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMorph_MorphNormal;
				// MorphColor
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Color"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMorph_MorphColor;
				// MorphUV
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"UV"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMorph_MorphUV;
			// ]] rowLayout
			setParent ..;
		// ]] columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutShapeMotionOption
//  機  能 :
//  書  式 : global proc mthgMakeLayoutShapeMotionOption( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : ShapeMotionOptionを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutShapeMotionOption( string $parent )
{
	setParent $parent;
	// frameLayout [[
	frameLayout
		-label			"Shape Motion"
		MTHD_ShapeMotionOptionFrameLayout;
		// columnLayout [[
		columnLayout MTHD_ShapeMotionOptionColumnLayout1;
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		100 160
        		-rowAttach			1 top 5
				MTHD_ShapeMotionOptionRowLayout;
				// Shape
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Output"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					-changeCommand		"mthgEnableShapeOption; mthgForceSetShapeOption"
					MTHD_OutputShape;
				// ShapeMotionKeyType
				optionMenuGrp
					-label			"Key Type : "
					-columnWidth2	100 60
					-columnOffset2	0 0
					MTHD_ShapeMotionKeyType;
					// FULL
					menuItem
						-label "FULL"
						MTHD_ShapeMotionKeyType_FULL;
					// KEY
					menuItem
						-label "KEY"
						MTHD_ShapeMotionKeyType_KEY;
					// TKEY
					menuItem
						-label "TKEY"
						MTHD_ShapeMotionKeyType_TKEY;
				setParent -menu;
			// ]] rowLayout
			setParent ..;

			separator -style "in" MTHD_ShapeMotionSeparator;

			// rowLayout [[
			rowLayout
				-numberOfColumns 4
				-columnWidth4	 95 95 95 95
				MTHD_ShapeMotionOptionRowLayout2;
				// Vertex
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Vertex"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputShape_Vertex;
				// Normal
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Normal"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputShape_PolygonNormal;
				// Color
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Color"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputShape_PolygonColor;
				// UV
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"UV"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputShape_PolygonUV;
			// ]] rowLayout
			setParent ..;
		// ]] columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutMaterialAnimationOption
//  機  能 :
//  書  式 : global proc mthgMakeLayoutMaterialAnimationOption( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : MaterialAnimationOptionを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutMaterialAnimationOption( string $parent )
{
	setParent $parent;
	// frameLayout [[
	frameLayout
		-label			"Material Animation"
		MTHD_MaterialAnimationOptionFrameLayout;
		// columnLayout [[
		columnLayout MTHD_MaterialAnimationOptionColumnLayout;
			// rowLayout [[
			rowLayout
				-numberOfColumns 2
				-columnWidth2	 100 160
        		-rowAttach 1 top 5
				MTHD_MaterialAnimationOptionRowLayout1;
				// MaterialAnimation
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Output"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					-changeCommand		"mthgEnableMaterialOption; mthgForceSetMaterialOption;"
					MTHD_OutputMaterial;
				// MatAnimKeyType
				optionMenuGrp
					-label			"Key Type : "
					-columnWidth2	100 60
					-columnOffset2	0 0
					MTHD_MatAnimKeyType;
					// FULL
					menuItem
						-label "FULL"
						MTHD_MatAnimKeyType_FULL;
					// KEY
					menuItem
						-label "KEY"
						MTHD_MatAnimKeyType_KEY;
					// TKEY
					menuItem
						-label "TKEY"
						MTHD_MatAnimKeyType_TKEY;
				setParent -menu;
			// rowLayout
			setParent ..;

			separator -style "in" MTHD_MatAnimSeparator;

			// rowLayout [[
			rowLayout
				-numberOfColumns 5
				-columnWidth5	 95 95 95 95 95
				MTHD_MaterialAnimationOptionRowLayout2;
				// Diffuse
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Diffuse"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMaterial_Diffuse;
				// Ambient
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Ambient"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMaterial_Ambient;
				// Specular
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Specular"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMaterial_Specular;
				// Transparency
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Transparency"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMaterial_Transparency;
				// Reflect
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Reflect"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputMaterial_Reflect;
			// ]] rowLayout
			setParent ..;
		// ]] columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutTextureAnimationOption
//  機  能 :
//  書  式 : global proc mthgMakeLayoutTextureAnimationOption( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : TextureAnimationOptionを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutTextureAnimationOption( string $parent )
{
	setParent $parent;
	// frameLayout [[
	frameLayout
		-label			"Texture Animation"
		MTHD_TextureAnimationOptionFrameLayout;
		// columnLayout [[
		columnLayout MTHD_TextureAnimationOptionColumnLayout;
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		100 160
        		-rowAttach			1 top 5
				MTHD_TextureAnimationOptionRowLayout1;
				// OutputTextureAnimation
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Output"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					-changeCommand		"mthgEnableTextureOption; mthgForceSetTextureOption;"
					MTHD_OutputTexture;
				// TexAnimKeyType
				optionMenuGrp
					-label			"Key Type : "
					-columnWidth2	100 60
					-columnOffset2	0 0
					MTHD_TexAnimKeyType;
					// FULL
					menuItem
						-label "FULL"
						MTHD_TexAnimKeyType_FULL;
					// KEY
					menuItem
						-label "KEY"
						MTHD_TexAnimKeyType_KEY;
					// TKEY
					menuItem
						-label "TKEY"
						MTHD_TexAnimKeyType_TKEY;
				setParent -menu;
			// ]] rowLayout
			setParent ..;

			separator -style "in" MTHD_TexAnimSeparator;

			// rowLayout [[
			rowLayout
				-numberOfColumns 4
				-columnWidth4	 95 95 95 95
				MTHD_TextureAnimationOptionRowLayout2;
				// UOffset
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"U Offset"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputTexture_UOffset;
				// VOffset
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"V Offset"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputTexture_VOffset;
				// Picture Change
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Picture"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputTexture_PictureChange;
				// Blend
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Blend"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputTexture_Blend;
			// ]] rowLayout
			setParent ..;
		// ]] columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutCameraMotionOption
//  機  能 :
//  書  式 : global proc mthgMakeLayoutCameraMotionOption( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : CameraMotionOptionを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutCameraMotionOption( string $parent )
{
	setParent $parent;
	// frameLayout [[
	frameLayout
		-label			"Camera Motion"
		MTHD_CameraMotionOptionFrameLayout;
		// columnLayout [[
		columnLayout MTHD_CameraMotionOptionColumnLayout;
			// rowLayoutLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		100 160
        		-rowAttach			1 top 5
				MTHD_CameraMotionOptionRowLayout1;
				// OutputCameraMotion
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Output"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					-changeCommand		"mthgEnableCameraOption; mthgForceSetCameraOption"
					MTHD_OutputCameraMotion;
				// CameraMotionKeyType
				optionMenuGrp
					-label			"Key Type : "
					-columnWidth2	100 60
					-columnOffset2	0 0
					MTHD_CameraMotionKeyType;
					// FULL
					menuItem
						-label "FULL"
						MTHD_CameraMotionKeyType_FULL;
					// KEY
					menuItem
						-label "KEY"
						MTHD_CameraMotionKeyType_KEY;
					// TKEY
					menuItem
						-label "TKEY"
						MTHD_CameraMotionKeyType_TKEY;
				setParent -menu;
			// ]] rowLayout
			setParent ..;

			separator -style "in" MTHD_CameraMotionSeparator;

			// rowLayoutLayout [[
			rowLayout
				-numberOfColumns 4
				-columnWidth4	 95 95 95 95
				MTHD_CameraMotionOptionRowLayout2;
				// Target
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Target"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputCameraMotion_CameraTarget;
				// Roll
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Roll"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputCameraMotion_Roll;
				// Angle
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Angle"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputCameraMotion_Angle;
				// Up Target
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Up Target"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputCameraMotion_UpTarget;
			// ]] rowLayout
			setParent ..;
		// ]] columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeLayoutLightMotionOption
//  機  能 :
//  書  式 : global proc mthgMakeLayoutLightMotionOption( string $parent )
//  引  数 : string $parent : 親のレイアウト名
//  戻り値 : なし
//  説  明 : LightMotionOptionを作成します。
//---------------------------------------------------------------------------
global proc mthgMakeLayoutLightMotionOption( string $parent )
{
	setParent $parent;
	// frameLayout [[
	frameLayout
		-label			"Light Motion"
		MTHD_LightMotionOptionFrameLayout;
		// columnLayout [[
		columnLayout MTHD_LightMotionOptionColumnLayout;
			// rowLayout [[
			rowLayout
				-numberOfColumns	2
				-columnWidth2		100 160
        		-rowAttach			1 top 5
				MTHD_LightMotionOptionRowLayout1;
				// OutputLightMotion
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Output"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					-changeCommand		"mthgEnableLightOption; mthgForceSetLightOption;"
					MTHD_OutputLightMotion;
				// LightMotionKeyType
				optionMenuGrp
					-label			"Key Type : "
					-columnWidth2	100 60
					-columnOffset2	0 0
					MTHD_LightMotionKeyType;
					// FULL
					menuItem
						-label "FULL"
						MTHD_LightMotionKeyType_FULL;
					// KEY
					menuItem
						-label "KEY"
						MTHD_LightMotionKeyType_KEY;
					// TKEY
					menuItem
						-label "TKEY"
						MTHD_LightMotionKeyType_TKEY;
				setParent -menu;
			// ]] rowLayout
			setParent ..;

			separator -style "in" MTHD_LightMotionSeparator;

			// rowLayout [[
			rowLayout
				-numberOfColumns 5
				-columnWidth5	 95 95 95 95 95
				MTHD_LightMotionOptionRowLayout2;
				// Target
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Target"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputLightMotion_LightTarget;
				// Color
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Color"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputLightMotion_Color;
				// Intensity
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Intensity"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputLightMotion_Intensity;
				// Far Near
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Far Near"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputLightMotion_FarNear;
				// Inner Outer
				checkBoxGrp
					-numberOfCheckBoxes 1
					-label1				"Inner Outer"
					-value1				on
					-columnWidth2		10 100
					-columnOffset2		5 0
					MTHD_OutputLightMotion_InnerOuter;
			// ]] formLayout
			setParent ..;
		// ]] columnLayout
		setParent ..;
	// ]] frameLayout
	setParent ..;
}

//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//					オプション取得・設定用プロシージャ				 		 //
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//

//---------------------------------------------------------------------------
//  関数名 : mthgGetStringOption
//  機  能 : String型のオプション値を取得します。
//  書  式 : global proc string mthgGetStringOption( string $member )
//  引  数 : string $member：オプション名
//  戻り値 : 現在のオプションの値(string)
//  説  明 : STRING型のオプションを取得します。
//           SELECT型のオプションも取得することができます。
//           この場合は現在選択されているラベル名を返します。
//---------------------------------------------------------------------------
global proc string mthgGetStringOption( string $member )
{
	switch( $member ) {
		case "entryName":
			return `textField			-query	-text	MTHD_EntryNameField`;
		case "outputDirName":
			return	`textFieldButtonGrp	-query	-text	MTHD_OutputPath`;
		// FileType
		case "FileType":
			return	`optionMenuGrp		-query	-value	MTHD_FileType`;
		// NodeMotionKeyType
		case "NodeMotionKeyType":
			return	`optionMenuGrp		-query	-value	MTHD_NodeMotionKeyType`;
		// MorphMotionKeyType
		case "MorphMotionKeyType":
			return	`optionMenuGrp		-query	-value	MTHD_MorphMotionKeyType`;
// Delete [[
//		// MorphTargetSource
//		case "MorphTargetSource":
//			return	`optionMenuGrp		-query	-value	MTHD_MorphTargetSource`;
// ]] Delete
		// ShapeMotionKeyType
		case "ShapeMotionKeyType":
			return	`optionMenuGrp		-query	-value	MTHD_ShapeMotionKeyType`;
		// MatAnimKeyType
		case "MatAnimKeyType":
			return	`optionMenuGrp		-query	-value	MTHD_MatAnimKeyType`;
		// TextureAnimation
		case "TexAnimKeyType":
			return	`optionMenuGrp		-query	-value	MTHD_TexAnimKeyType`;
		// CameraMotion
		case "CameraMotionKeyType":
			return	`optionMenuGrp		-query	-value	MTHD_CameraMotionKeyType`;
		// LightMotion
		case "LightMotionKeyType":
			return	`optionMenuGrp		-query	-value	MTHD_LightMotionKeyType`;
		// エラー
		default:
			warning( "mthgGetStringOption : [" + $member + "] is invalid!\n" );
			return "";
	}
}

//---------------------------------------------------------------------------
//  関数名 : mthgSetStringOption
//  機  能 : String型のオプション値を設定します。
//  書  式 : global proc mthgSetStringOption( string $member, string $value )
//  引  数 : string $member：オプション名
//           string $value ：設定するオプション値
//  戻り値 : なし
//  説  明 : STRING型のオプションを設定します。
//           SELECT型のオプションも設定することができます。
//           この場合は現在選択するラベル名で設定することができます。
//---------------------------------------------------------------------------
global proc mthgSetStringOption( string $member, string $value )
{
	switch( $member ) {
		case "entryName":
			textField		 	-edit 	-text	$value	MTHD_EntryNameField;		break;
		// Output
		case "outputDirName":
			textFieldButtonGrp 	-edit 	-text	$value	MTHD_OutputPath;			break;
		case "FileType":
			optionMenuGrp		-edit	-value	$value	MTHD_FileType;				break;
		// NodeMotion
		case "NodeMotionKeyType":
			optionMenuGrp		-edit	-value	$value	MTHD_NodeMotionKeyType;		break;
		// ShapeMotion
		case "ShapeMotionKeyType":
			optionMenuGrp		-edit	-value	$value	MTHD_ShapeMotionKeyType;	break;
		// MaterialAnimation
		case "MatAnimKeyType":
			optionMenuGrp		-edit	-value	$value	MTHD_MatAnimKeyType;		break;
		// TextureAnimation
		case "TexAnimKeyType":
			optionMenuGrp		-edit	-value	$value	MTHD_TexAnimKeyType;		break;
		// CameraMotion
		case "CameraMotionKeyType":
			optionMenuGrp		-edit	-value	$value	MTHD_CameraMotionKeyType;	break;
		// LightMotion
		case "LightMotionKeyType":
			optionMenuGrp		-edit	-value	$value	MTHD_LightMotionKeyType;	break;
		// エラー
		default:
			warning( "mthgSetStringOption : [" + $member + "] is invalid!\n" );
			return;
	}
}

//---------------------------------------------------------------------------
//  関数名 : mthgGetIntOption
//  機  能 : Int型のオプション値を取得します。
//  書  式 : global proc int mthgGetIntOption( string $member )
//  引  数 : string $member：メンバー名
//  戻り値 : 現在のオプションの値(int)
//  説  明 : INT/SELECT/BOOL型のオプション値を取得します。
//---------------------------------------------------------------------------
global proc int mthgGetIntOption( string $member )
{
	string $pluginName = mthgGetPluginName();

	switch( $member ) {
		// OutputOption
		case "FileType":
			return	`optionMenuGrp	-query	-select	MTHD_FileType`;
		case "AutoOptionSave":
			return	`checkBoxGrp	-query	-value1	MTHD_AutoOptionSaveCheckBox`;
		case "OutputPicture":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputPicture`;
		case "OverwritePicture":
			return	`checkBoxGrp	-query	-value1	MTHD_OverwritePicture`;
		case "AddSceneName":
			return	`checkBoxGrp	-query	-value1	MTHD_AddSceneName`;
		case "AssignUniqueNodeName":
			return	`checkBoxGrp	-query	-value1	MTHD_AssignUniqueNodeName`;
		case "OutputNullBone":
// Delete [[
//			if( $pluginName == "MAYA65 HND Exporter                            " ||
//				$pluginName == "MAYA7 HND Exporter                             " ||
//				$pluginName == "MAYA8 HND Exporter                             " ||
//				$pluginName == "MAYA85 HND Exporter                            " ) {
//				$pluginName == "MAYA85toHND" ) {
//				return `checkBoxGrp		-query	-value1	MTND_OutputNullBone`;
//			}
//			else {
//				warning("mthgGetIntOption : option name [" + $member + "] is invalid!\n");
//				return -1;
//			}
// ]] Delete 2007/09/27
// Add [[
			return `checkBoxGrp		-query	-value1	MTND_OutputNullBone`;
// ]] Add 2007/09/27
		case "UseTangentSpace":
// Delete [[
//			if( $pluginName == "MAYA65 HND Exporter                            " ||
//				$pluginName == "MAYA7 HND Exporter                             " ||
//				$pluginName == "MAYA8 HND Exporter                             " ||
//				$pluginName == "MAYA85 HND Exporter                            " ) {
//				$pluginName == "MAYA85toHND" ) {
//				return `checkBoxGrp		-query	-value1	MTND_UseTangentSpace`;
//			}
//			else {
//				warning("mthgGetIntOption : option name [" + $member + "] is invalid!\n");
//				return -1;
//			}
// ]] Delete 2007/09/27
// Add [[
			return `checkBoxGrp		-query	-value1	MTND_UseTangentSpace`;
// ]] Add 2007/09/27

		// FileAttribute
		case "Dec":
			return	`checkBoxGrp	-query	-value1	MTHD_FileAttribute_Dec`;
		case "Hex":
			return	`checkBoxGrp	-query	-value1	MTHD_FileAttribute_Hex`;
		case "ViewDefault":
			return	`checkBoxGrp	-query	-value1	MTHD_FileAttribute_ViewDefault`;
		case "Optimize":
			return	`checkBoxGrp	-query	-value1	MTHD_FileAttribute_Optimize`;
		case "Comment":
			return	`checkBoxGrp	-query	-value1	MTHD_FileAttribute_Comment`;
		case "Tab":
			return	`checkBoxGrp	-query	-value1	MTHD_FileAttribute_Tab`;

		// OutputNode
		case "OutputNode":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputNode`;
		case "OutputModel":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputModel`;
		case "OutputEnvelope":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputEnvelope`;
		case "OutputInstance":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputInstance`;
		case "OutputBone":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputBone`;
		case "OutputCamera":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputCamera`;
		case "OutputLight":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputLight`;
		// KeyType
// Delete [[
//		case "KeyType":				return	`optionMenuGrp	-query	-select	MTHD_KeyType`;
//		case "SetKeyStartEnd":		return	`checkBoxGrp	-query	-value1	MTHD_SetKeyStartEnd`;
// ]] Delete
		// NodeMotion
		case "OutputMotion":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMotion`;
		case "NodeMotionKeyType":
			return	`optionMenuGrp	-query	-select	MTHD_NodeMotionKeyType`;
		case "Translation":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMotion_Translation`;
		case "Rotation":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMotion_Rotation`;
		case "Scaling":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMotion_Scaling`;
		case "ChildTranslation":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMotion_ChildTranslation`;
		case "ChildRotation":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMotion_ChildRotation`;
		case "ChildScaling":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMotion_ChildScaling`;

		// MorphMotion
		case "OutputMorph":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMorph`;
		case "MorphMotionKeyType":
			return	`optionMenuGrp	-query	-select	MTHD_MorphMotionKeyType`;
// Delete [[
//		case "MorphTargetSource":
//			return	`optionMenuGrp	-query	-select	MTHD_MorphTargetSource`;
// ]] Delete
		case "MorphVertex":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMorph_MorphVertex`;
		case "MorphNormal":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMorph_MorphNormal`;
		case "MorphColor":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMorph_MorphColor`;
		case "MorphUV":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMorph_MorphUV`;

		// ShapeMotion
		case "OutputShape":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputShape`;
		case "ShapeMotionKeyType":
			return	`optionMenuGrp	-query	-select	MTHD_ShapeMotionKeyType`;
		case "Vertex":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputShape_Vertex`;
		case "PolygonNormal":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputShape_PolygonNormal`;
		case "PolygonColor":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputShape_PolygonColor`;
		case "PolygonUV":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputShape_PolygonUV`;

		// MaterialAnimation
		case "OutputMaterial":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMaterial`;
		case "MatAnimKeyType":
			return	`optionMenuGrp	-query	-select	MTHD_MatAnimKeyType`;
		case "Diffuse":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMaterial_Diffuse`;
		case "Ambient":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMaterial_Ambient`;
		case "Specular":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMaterial_Specular`;
		case "Transparency":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMaterial_Transparency`;
		case "Reflect":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputMaterial_Reflect`;

		// TextureAnimation
		case "OutputTexture":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputTexture`;
		case "TexAnimKeyType":
			return	`optionMenuGrp	-query	-select	MTHD_TexAnimKeyType`;
		case "UOffset":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputTexture_UOffset`;
		case "VOffset":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputTexture_VOffset`;
		case "PictureChange":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputTexture_PictureChange`;
		case "Blend":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputTexture_Blend`;

		// CameraMotion
		case "OutputCameraMotion":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputCameraMotion`;
		case "CameraMotionKeyType":
			return	`optionMenuGrp	-query	-select	MTHD_CameraMotionKeyType`;
		case "CameraTarget":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputCameraMotion_CameraTarget`;
		case "Roll":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputCameraMotion_Roll`;
		case "Angle":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputCameraMotion_Angle`;
		case "UpTarget":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputCameraMotion_UpTarget`;

		// LightMotion
		case "OutputLightMotion":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputLightMotion`;
		case "LightMotionKeyType":
			return	`optionMenuGrp	-query	-select	MTHD_LightMotionKeyType`;
		case "LightTarget":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputLightMotion_LightTarget`;
		case "Color":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputLightMotion_Color`;
		case "Intensity":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputLightMotion_Intensity`;
		case "FarNear":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputLightMotion_FarNear`;
		case "InnerOuter":
			return	`checkBoxGrp	-query	-value1	MTHD_OutputLightMotion_InnerOuter`;

		// エラー
		default:
			warning( "mthgGetIntOption : [" + $member + "] is invalid!\n" );
			return -1;
	}
}

//---------------------------------------------------------------------------
//  関数名 : mthgSetIntOption
//  機  能 : Int型のオプション値を設定します。
//  書  式 : global proc mthgSetIntOption( string $member, int $value )
//  引  数 : string $member：オプション名
//         : string $value ：設定するオプション値
//  戻り値 : なし
//  説  明 : INT/SELECT/BOOL型のオプションを設定します。
//---------------------------------------------------------------------------
global proc mthgSetIntOption( string $member, int $value )
{
	global int	  $mthgCrtEntryNo;
	global int	  $mthgEntryNum;
	global int	  $mthgEntryCmdType;

	string $pluginName = mthgGetPluginName();

	switch( $member ) {
		// Entry Name
		case "entryNum":
			$mthgEntryNum			= $value;												break;
		case "entryCrtNo":
			$mthgCrtEntryNo			= $value;												break;
		case "entryCmdType":
			$mthgEntryCmdType		= $value;												break;

		// OutputOption
		case "FileType":
			optionMenuGrp	-edit	-select	$value	MTHD_FileType;							break;
			break;
		case "OutputPicture":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputPicture;						break;
		case "OverwritePicture":
			checkBoxGrp		-edit	-value1	$value	MTHD_OverwritePicture;					break;
		case "AddSceneName":
			checkBoxGrp		-edit	-value1	$value	MTHD_AddSceneName;						break;
		case "AssignUniqueNodeName":
			checkBoxGrp		-edit	-value1	$value	MTHD_AssignUniqueNodeName;				break;
		case "OutputNullBone":
// Delete [[
//			if( $pluginName == "MAYA65 HND Exporter                            " ||
//				$pluginName == "MAYA7 HND Exporter                             " ||
//				$pluginName == "MAYA8 HND Exporter                             " ||
//				$pluginName == "MAYA85 HND Exporter                            " ) {
//				$pluginName == "MAYA85toHND" ) {
//				checkBoxGrp		-edit	-value1	$value	MTND_OutputNullBone;
//			}
//			else {
//				warning( "mthgSetIntOption : option name [" + $member + "] is invalid!"+$value+"\n" );
//			}
//			break;
// ]] Delete 2007/09/27
// Add [[
			checkBoxGrp		-edit	-value1	$value	MTND_OutputNullBone;					break;
// ]] Add 2007/09/27
		case "UseTangentSpace":
// Delete [[
//			if( $pluginName == "MAYA65 HND Exporter                            " ||
//				$pluginName == "MAYA7 HND Exporter                             " ||
//				$pluginName == "MAYA8 HND Exporter                             " ||
//				$pluginName == "MAYA85 HND Exporter                            " ) {
//				$pluginName == "MAYA85toHND" ) {
//				checkBoxGrp		-edit	-value1	$value	MTND_UseTangentSpace;
//			}
//			else {
//				warning( "mthgSetIntOption : option name [" + $member + "] is invalid!"+$value+"\n" );
//			}
//			break;
// ]] Delete 2007/09/27
// Add [[
			checkBoxGrp		-edit	-value1	$value	MTND_UseTangentSpace;					break;
// ]] Add 2007/09/27

		// FileAttribute
		case "Dec":
			checkBoxGrp		-edit	-value1	$value	MTHD_FileAttribute_Dec;					break;
		case "Hex":
			checkBoxGrp		-edit	-value1	$value	MTHD_FileAttribute_Hex;					break;
		case "ViewDefault":
			checkBoxGrp		-edit	-value1	$value	MTHD_FileAttribute_ViewDefault;			break;
		case "Optimize":
			checkBoxGrp		-edit	-value1	$value	MTHD_FileAttribute_Optimize;			break;
		case "Comment":
			checkBoxGrp		-edit	-value1	$value	MTHD_FileAttribute_Comment;				break;
		case "Tab":
			checkBoxGrp		-edit	-value1	$value	MTHD_FileAttribute_Tab;					break;

		// OutputNode
		case "OutputNode":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputNode;						break;
		case "OutputModel":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputModel;						break;
		case "OutputEnvelope":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputEnvelope;					break;
		case "OutputInstance":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputInstance;					break;
		case "OutputBone":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputBone;						break;
		case "OutputCamera":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputCamera;						break;
		case "OutputLight":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputLight;						break;
		// KeyType
// Delete [[
		case "KeyType":
			break;//optionMenuGrp	-edit	-select	$value	MTHD_KeyType;							break;
//		case "SetKeyStartEnd":		checkBoxGrp		-edit	-value1	$value	MTHD_SetKeyStartEnd;					break;
// ]] Delete
		// Motion
		case "OutputMotion":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMotion;						break;
		case "NodeMotionKeyType":
			optionMenuGrp	-edit	-select	$value	MTHD_NodeMotionKeyType;					break;
		case "Translation":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMotion_Translation;			break;
		case "Rotation":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMotion_Rotation;				break;
		case "Scaling":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMotion_Scaling;				break;
		case "ChildTranslation":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMotion_ChildTranslation;		break;
		case "ChildRotation":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMotion_ChildRotation;		break;
		case "ChildScaling":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMotion_ChildScaling;			break;

		// MorphMotion
		case "OutputMorph":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMorph;						break;
		case "MorphMotionKeyType":
			optionMenuGrp	-edit	-select	$value	MTHD_MorphMotionKeyType;				break;
// Delete [[
//		case "MorphTargetSource":
//			optionMenuGrp	-edit	-select	$value	MTHD_MorphTargetSource;					break;
// ]] Delete
		case "MorphVertex":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMorph_MorphVertex;			break;
		case "MorphNormal":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMorph_MorphNormal;			break;
		case "MorphColor":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMorph_MorphColor;			break;
		case "MorphUV":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMorph_MorphUV;				break;
		// ShapeMotion
		case "OutputShape":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputShape;						break;
		case "ShapeMotionKeyType":
			optionMenuGrp	-edit	-select	$value	MTHD_ShapeMotionKeyType;				break;
		case "Vertex":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputShape_Vertex;				break;
		case "PolygonNormal":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputShape_PolygonNormal;			break;
		case "PolygonColor":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputShape_PolygonColor;			break;
		case "PolygonUV":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputShape_PolygonUV;				break;
		// Material
		case "OutputMaterial":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMaterial;					break;
		case "MatAnimKeyType":
			optionMenuGrp	-edit	-select	$value	MTHD_MatAnimKeyType;					break;
		case "Diffuse":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMaterial_Diffuse;			break;
		case "Ambient":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMaterial_Ambient;			break;
		case "Specular":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMaterial_Specular;			break;
		case "Transparency":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMaterial_Transparency;		break;
		case "Reflect":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputMaterial_Reflect;			break;
		// Texture
		case "OutputTexture":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputTexture;						break;
		case "TexAnimKeyType":
			optionMenuGrp	-edit	-select	$value	MTHD_TexAnimKeyType;					break;
		case "UOffset":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputTexture_UOffset;				break;
		case "VOffset":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputTexture_VOffset;				break;
		case "PictureChange":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputTexture_PictureChange;		break;
		case "Blend":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputTexture_Blend;				break;
		// Camera Motion
		case "OutputCameraMotion":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputCameraMotion;				break;
		case "CameraMotionKeyType":
			optionMenuGrp	-edit	-select	$value	MTHD_CameraMotionKeyType;				break;
		case "CameraTarget":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputCameraMotion_CameraTarget;	break;
		case "Roll":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputCameraMotion_Roll;			break;
		case "Angle":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputCameraMotion_Angle;			break;
		case "UpTarget":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputCameraMotion_UpTarget;		break;
		// LightMotion
		case "OutputLightMotion":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputLightMotion;					break;
		case "LightMotionKeyType":
			optionMenuGrp	-edit	-select	$value	MTHD_LightMotionKeyType;				break;
		case "LightTarget":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputLightMotion_LightTarget;		break;
		case "Color":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputLightMotion_Color;			break;
		case "Intensity":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputLightMotion_Intensity;		break;
		case "FarNear":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputLightMotion_FarNear;			break;
		case "InnerOuter":
			checkBoxGrp		-edit	-value1	$value	MTHD_OutputLightMotion_InnerOuter;		break;
		// エラー
		default:
			warning( "mthgSetIntOption : [" + $member + "] is invalid!\n" );
			return;
	}
}

//---------------------------------------------------------------------------
//  関数名 : mthgGetNNRLoadMode
//  機　能 : NNRのロードモードを取得。
//  書　式 : global proc string mthgGetNNRLoadMode()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : NNRのロードモード文字列を取得する。
//---------------------------------------------------------------------------
global proc string mthgGetNNRLoadMode()
{
	global int $mthgLoadMode;

	switch( $mthgLoadMode ) {
		case 0:
			return "System Default";
		case 1:
			return "User Default";
		case 2:
			return "NNR File";
	}
}

//---------------------------------------------------------------------------
//  関数名 : mthgUpdateNNRStatus
//  機　能 : NNR関連のステータスの更新。
//  書　式 : global proc mthgUpdateNNRStatus()
//  引　数 : なし
//  戻り値 : なし
//  説　明 : NNRのロードモード文字列を取得する。
//---------------------------------------------------------------------------
global proc mthgUpdateNNRStatus()
{
	global string	$mthgNNRFileName;

	string $nnrModeStr = mthgGetNNRLoadMode();

	textFieldGrp -edit -text $nnrModeStr MTHD_LoadModeTextFieldGrp;
	textFieldGrp -edit -text $mthgNNRFileName MTHD_NNRPathTextFieldGrp;

	refresh;
}

//---------------------------------------------------------------------------
//  関数名 : mthgGetOutputPath
//  機  能 : ディレクトリ選択用ファイルブラウザダイアログをオープンする
//  書  式 : global proc mthgGetOutputPath()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : ファイルブラウザで選択したディレクトリは
//           プロシージャmthgSetOutputPathの引数に渡されます。
//           (現在使用していません)
//---------------------------------------------------------------------------
global proc mthgGetOutputPath()
{
	string $path = mthgGetStringOption( "outputDirName" );
	workspace -dir $path;
	fileBrowserDialog
		-mode			4
		-fileCommand	"mthgSetOutputPath"
		-fileType		"OutputDirName"
		-actionName		"Select"
		-includeName	$path;
}

//---------------------------------------------------------------------------
//  関数名 : mthgSetOutputPath
//  機  能 : ファイルブラウザで選択したディレクトリ名をテキストフィールドに設定します。
//  書  式 : global proc mthgSetOutputPath( string $path, string $fileType )
//  引  数 : string $path    ：ディレクトリ名
//           string $fileType：ファイルタイプ
//  戻り値 : なし
//  説  明 :
//           (現在使用していません)
//---------------------------------------------------------------------------
global proc mthgSetOutputPath( string $path, string $fileType )
{
	// ファイルタイプが"directory"の時、フィールドにパスをセット
	if( $fileType == "directory" ) {
		mthgSetStringOption( "outputDirName", $path );
	}
}

//---------------------------------------------------------------------------
//  関数名 : mthgChangeDecValue
//  機  能 : Decの値に応じてHexの値を変更します。
//  書  式 : global proc mthgChangeDecValue()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : Decがtrue のときHexはfalse
//           DecがfalseのときHexはtrue
//---------------------------------------------------------------------------
global proc mthgChangeDecValue()
{
	mthgSetIntOption( "Hex", !(mthgGetIntOption("Dec")) );
}

//---------------------------------------------------------------------------
//  関数名 : mthgChangeHexValue
//  機  能 : Decの値に応じてHexの値を変更します。
//  書  式 : global proc mthgChangeHexValue()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : Hexがtrue のときDecはfalse
//           HexがfalseのときDecはtrue
//---------------------------------------------------------------------------
global proc mthgChangeHexValue()
{
	mthgSetIntOption( "Dec", !(mthgGetIntOption("Hex")) );
}

//---------------------------------------------------------------------------
//  関数名 : mthgForceSetModelOption
//  機  能 : ノードオプションのオプションを強制設定します。
//  書  式 : global proc mthgForceSetModelOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgForceSetModelOption()
{
	int $outputnode = mthgGetIntOption( "OutputNode" );

	mthgSetIntOption( "OutputModel",	$outputnode );
	mthgSetIntOption( "OutputEnvelope",	$outputnode );
	mthgSetIntOption( "OutputInstance",	$outputnode );
	mthgSetIntOption( "OutputBone",		$outputnode );
	mthgSetIntOption( "OutputCamera",	$outputnode );
	mthgSetIntOption( "OutputLight",	$outputnode );
}

//---------------------------------------------------------------------------
//  関数名 : mthgForceSetMotionOption
//  機  能 : ノードモーションオプション強制設定します。
//  書  式 : global proc mthgForceSetMotionOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgForceSetMotionOption()
{
	int $outputmotion = mthgGetIntOption( "OutputMotion" );

	mthgSetIntOption( "Translation",		$outputmotion );
	mthgSetIntOption( "Rotation",			$outputmotion );
	mthgSetIntOption( "Scaling",			$outputmotion );
	mthgSetIntOption( "ChildTranslation",	$outputmotion );
	mthgSetIntOption( "ChildRotation",		$outputmotion );
	mthgSetIntOption( "ChildScaling",		$outputmotion );
}

//---------------------------------------------------------------------------
//  関数名 : mthgForceSetMorphOption
//  機  能 : モーフモーションオプションを強制設定します。
//  書  式 : global proc mthgForceSetMorphOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgForceSetMorphOption()
{
	int $outputmorph = mthgGetIntOption( "OutputMorph" );

	mthgSetIntOption( "MorphVertex",	$outputmorph );
	mthgSetIntOption( "MorphNormal",	$outputmorph );
	mthgSetIntOption( "MorphColor",		$outputmorph );
	mthgSetIntOption( "MorphUV",		$outputmorph );
}

//---------------------------------------------------------------------------
//  関数名 : mthgForceSetShapeOption
//  機  能 : シェイプモーションオプションを強制設定します。
//  書  式 : global proc mthgForceSetShapeOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgForceSetShapeOption()
{
	int $outputshape = mthgGetIntOption( "OutputShape" );

	mthgSetIntOption( "Vertex",			$outputshape );
	mthgSetIntOption( "PolygonNormal",	$outputshape );
	mthgSetIntOption( "PolygonColor",	$outputshape );
	mthgSetIntOption( "PolygonUV",		$outputshape );
}

//---------------------------------------------------------------------------
//  関数名 : mthgForceSetMaterialOption
//  機  能 : マテリアルアニメーションオプションを強制設定します。
//  書  式 : global proc mthgForceSetMaterialOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgForceSetMaterialOption()
{
	int $outputmat = mthgGetIntOption( "OutputMaterial" );

	mthgSetIntOption( "Diffuse",		 $outputmat );
	mthgSetIntOption( "Ambient",		 $outputmat );
	mthgSetIntOption( "Specular",		 $outputmat );
	mthgSetIntOption( "Transparency",	 $outputmat );
	mthgSetIntOption( "Reflect",		 $outputmat );
}

//---------------------------------------------------------------------------
//  関数名 : mthgForceSetTextureOption
//  機  能 : テクスチャアニメーションオプションを強制設定します。
//  書  式 : global proc mthgForceSetTextureOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgForceSetTextureOption()
{
	int $outputtex = mthgGetIntOption( "OutputTexture" );

	mthgSetIntOption( "UOffset",		$outputtex );
	mthgSetIntOption( "VOffset",		$outputtex );
	mthgSetIntOption( "PictureChange",	$outputtex );
	mthgSetIntOption( "Blend",			$outputtex );
}

//---------------------------------------------------------------------------
//  関数名 : mthgForceSetCameraOption
//  機  能 : カメラモーションオプションのレイアウトのコントロールを設定します。
//  書  式 : global proc mthgForceSetCameraOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgForceSetCameraOption()
{
	int $outputcamera = mthgGetIntOption( "OutputCameraMotion" );

	mthgSetIntOption( "CameraTarget",	$outputcamera );
	mthgSetIntOption( "Roll",			$outputcamera );
	mthgSetIntOption( "UpTarget",		$outputcamera );
	mthgSetIntOption( "Angle",			$outputcamera );
}


//---------------------------------------------------------------------------
//  関数名 : mthgForceSetLightOption
//  機  能 : ライトモーションオプションを強制設定します。
//  書  式 : global proc mthgForceSetLightOption()
//  引  数 : なし
//
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgForceSetLightOption()
{
	int $outputlight = mthgGetIntOption( "OutputLightMotion" );

	mthgSetIntOption( "LightTarget",	$outputlight );
	mthgSetIntOption( "Color",			$outputlight );
	mthgSetIntOption( "Intensity",		$outputlight );
	mthgSetIntOption( "FarNear",		$outputlight );
	mthgSetIntOption( "InnerOuter",		$outputlight );
}

//---------------------------------------------------------------------------
//  関数名 : mthgGetDefaultOpenNNRFileName
//  機  能 : カレントのNNRファイル名の取得
//  書  式 : global proc string mthgGetDefaultOpenNNRFileName()
//  引  数 : なし
//  戻り値 : NNRファイル名（パス付き）
//  説  明 : カレントのNNRファイル名を返します。
//---------------------------------------------------------------------------
global proc string mthgGetDefaultOpenNNRFileName()
{
	global string	$mthgNNROpenPath;

	string $nnrFile = $mthgNNROpenPath;

	if( endString( $nnrFile,1 ) != "/") {
		$nnrFile += "/";
	}

	$nnrFile += mthgGetCurrentSceneName();

	return( $nnrFile );
}

//---------------------------------------------------------------------------
//  関数名 : mthgGetCurrentSceneName
//  機  能 : カレントのシーン名を取得します
//  書  式 : global proc string mthgGetCurrentSceneName()
//  引  数 : なし
//  戻り値 : string : シーン名
//  説  明 : シーン名がない場合は"untitled"を返します。
//---------------------------------------------------------------------------
global proc string mthgGetCurrentSceneName()
{
	string $scenename;
	// カレントのシーン名をフルパスで取得
	string $fullpath = `file -query -sceneName`;
	// シーン名がなければ""
	if( size($fullpath) == 0 ) {
		$scenename = "untitled";
	}
	else {
		// ディレクトリーごとに分割
		string $tmpname[];
		tokenize $fullpath "/\\" $tmpname;
		// ファイル名を取得
		$scenename = $tmpname[size($tmpname)-1];
		tokenize $scenename "." $tmpname;
		$scenename = $tmpname[0];
	}
	$scenename += ".nnr";

	return $scenename;
}

//---------------------------------------------------------------------------
//  関数名 : mthgGetPluginName
//  機  能 : プラグイン名を取得します。
//  書  式 : global proc mthgGetPluginName()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc string mthgGetPluginName()
{
	global string $mthgPluginNameList[];

	for( $i = 0; $i < size( $mthgPluginNameList ); $i++ ) {
		if( `pluginInfo -query -loaded $mthgPluginNameList[$i]` == true ) {
			return $mthgPluginNameList[$i];
		}
	}
	return "";
}

//---------------------------------------------------------------------------
//  関数名 : mthgCreateOptionString
//  機  能 : カレントのオプション値を取得して
//         : コールバック関数に設定するオプション文字列を作成します。
//  書  式 : global proc string mthgCreateOptionString()
//  引  数 : なし
//  戻り値 : オプション文字列(option1=value1;option2=value2;...)
//  説  明 :
//---------------------------------------------------------------------------
global proc string mthgCreateOptionString()
{
	global string	$mthgDefaultProjectPath;
	global string	$mthgEntryName;
	global int		$mthgCrtEntryNo;
	global int		$mthgEntryNum;
	global int		$mthgEntryCmdType;
	global string	$mthgNNRTempFile;
	global string	$mthgUserInitNNR;
	global string	$mthgOrgProjectPath;
	global string	$mthgNNRFileName;

	string $pluginName = mthgGetPluginName();

	string	$strVal;
	string	$currentOptions;

	// outputDirNameの値を取得
	$strVal = `mthgGetStringOption("entryName")`;
	if( size($strVal) == 0 ) {
		$strVal = "New Entry";
	}
	// entryNameをセット
	$currentOptions += "entryName="			+ $strVal						+ ";";
	// entryNumをセット
	$currentOptions += "entryNum="			+ $mthgEntryNum					+ ";";
	// mtngCrtEntryNoをセット
	$currentOptions += "entryCrtNo="		+ $mthgCrtEntryNo				+ ";";
	// entryCmdTypeをセット
	$currentOptions += "entryCmdType="		+ $mthgEntryCmdType				+ ";";
	// tempNNRNameをセット
	$currentOptions += "tempNNRName="		+ $mthgNNRTempFile + ".nnr"		+ ";";

	// userInitNNRをセット
	$currentOptions += "userInitNNR="		+ $mthgUserInitNNR				+ ";";


	// outputDirNameの値を取得
	$strVal = `mthgGetStringOption("outputDirName")`;
	// outputDirNameを指定していないときはデフォルトのプロジェクトパスをセット
	if(!size($strVal)){
		$strVal = $mthgDefaultProjectPath;
	}
	// outputDirNameのプロジェクトをセット
	else if( `filetest -d $strVal` ) {
		setProject($strVal);
	}
	// ディレクトリがなければダイアログを表示。
	else {
		if( mthgMakeDirDialog($strVal) == "Yes" ) {
			sysFile -makeDir $strVal;
			setProject($strVal);
		}
		else {
			$strVal = $mthgDefaultProjectPath;
		}
	}

	$strVal = substituteAllString($strVal, "\\", "/");;

	// outputDirNameをセット
	$currentOptions += "outputDirName="			+ $strVal + ";";
	// Output
	$currentOptions += "FileType="				+(mthgGetIntOption("FileType")-1)			+ ";";
	$currentOptions += "AutoOptionSave="		+ mthgGetIntOption("AutoOptionSave")		+ ";";
	$currentOptions += "OutputPicture="			+ mthgGetIntOption("OutputPicture")			+ ";";
	$currentOptions += "OverwritePicture="		+ mthgGetIntOption("OverwritePicture")		+ ";";
	$currentOptions += "AddSceneName="			+ mthgGetIntOption("AddSceneName")			+ ";";
	$currentOptions += "AssignUniqueNodeName="	+ mthgGetIntOption("AssignUniqueNodeName")	+ ";";

	// OutputNullBoneをセット
// Delete [[
//	if( $pluginName == "MAYA65 HND Exporter                            " ||
//		$pluginName == "MAYA7 HND Exporter                             " ||
//		$pluginName == "MAYA8 HND Exporter                             " ||
//		$pluginName == "MAYA85 HND Exporter                            " ) {
//		$pluginName == "MAYA85toHND" ) {
//		$currentOptions += "OutputNullBone="	+ mthgGetIntOption("OutputNullBone")		+ ";";
//	}
// ]] Delete 2007/09/27
// Add [[
		$currentOptions += "OutputNullBone="	+ mthgGetIntOption("OutputNullBone")		+ ";";
// ]] Add 2007/09/27
	// UseTangentSpaceをセット
// Delete [[
//	if( $pluginName == "MAYA65 HND Exporter                            " ||
//		$pluginName == "MAYA7 HND Exporter                             " ||
//		$pluginName == "MAYA8 HND Exporter                             " ||
//		$pluginName == "MAYA85 HND Exporter                            " ) {
//		$pluginName == "MAYA85toHND" ) {
//		$currentOptions += "UseTangentSpace="	+ mthgGetIntOption("UseTangentSpace")		+ ";";
//	}
// ]] Delete 2007/09/27
// Add [[
		$currentOptions += "UseTangentSpace="	+ mthgGetIntOption("UseTangentSpace")		+ ";";
// ]] Add 2007/09/27

	// FileAttribute
	$currentOptions += "Dec="					+ mthgGetIntOption("Dec")					+ ";";
	$currentOptions += "Hex="					+ mthgGetIntOption("Hex")					+ ";";
	$currentOptions += "ViewDefault="			+ mthgGetIntOption("ViewDefault")			+ ";";
	$currentOptions += "Optimize="				+ mthgGetIntOption("Optimize")				+ ";";
	$currentOptions += "Comment="				+ mthgGetIntOption("Comment")				+ ";";
	$currentOptions += "Tab="					+ mthgGetIntOption("Tab")					+ ";";

	// OutputNode
	$currentOptions += "OutputNode="			+ mthgGetIntOption("OutputNode")			+ ";";
	$currentOptions += "OutputModel="			+ mthgGetIntOption("OutputModel")			+ ";";
	$currentOptions += "OutputEnvelope="		+ mthgGetIntOption("OutputEnvelope")		+ ";";
	$currentOptions += "OutputInstance="		+ mthgGetIntOption("OutputInstance")		+ ";";
	$currentOptions += "OutputBone="			+ mthgGetIntOption("OutputBone")			+ ";";
	$currentOptions += "OutputCamera="			+ mthgGetIntOption("OutputCamera")			+ ";";
	$currentOptions += "OutputLight="			+ mthgGetIntOption("OutputLight")			+ ";";
	// KeyType
// Delete [[
//	$currentOptions += "KeyType="				+ (mthgGetIntOption("KeyType") - 1)		+ ";";
//	$currentOptions += "SetKeyStartEnd="		+ mthgGetIntOption("SetKeyStartEnd")	+ ";";
// ]] Delete

	// NodeMotion
	$currentOptions += "OutputMotion="			+ mthgGetIntOption("OutputMotion")			+ ";";
	$currentOptions += "NodeMotionKeyType="		+(mthgGetIntOption("NodeMotionKeyType")-1)	+ ";";
	$currentOptions += "Translation="			+ mthgGetIntOption("Translation")			+ ";";
	$currentOptions += "Rotation="				+ mthgGetIntOption("Rotation")				+ ";";
	$currentOptions += "Scaling="				+ mthgGetIntOption("Scaling")				+ ";";
	$currentOptions += "ChildTranslation="		+ mthgGetIntOption("ChildTranslation")		+ ";";
	$currentOptions += "ChildRotation="			+ mthgGetIntOption("ChildRotation")			+ ";";
	$currentOptions += "ChildScaling="			+ mthgGetIntOption("ChildScaling")			+ ";";

	// MorphMotion
	$currentOptions += "OutputMorph="			+ mthgGetIntOption("OutputMorph")			+ ";";
	$currentOptions += "MorphMotionKeyType="	+(mthgGetIntOption("MorphMotionKeyType")-1)	+ ";";
// Delete [[
//	$currentOptions += "MorphTargetSource="		+(mthgGetIntOption("MorphTargetSource" )-1)	+ ";";
// ]] Delete
	$currentOptions += "MorphVertex="			+ mthgGetIntOption("MorphVertex")			+ ";";
	$currentOptions += "MorphNormal="			+ mthgGetIntOption("MorphNormal")			+ ";";
	$currentOptions += "MorphColor="			+ mthgGetIntOption("MorphColor")			+ ";";
	$currentOptions += "MorphUV="				+ mthgGetIntOption("MorphUV")				+ ";";

	// ShapeMotion
	$currentOptions += "OutputShape="			+ mthgGetIntOption("OutputShape")			+ ";";
	$currentOptions += "ShapeMotionKeyType="	+(mthgGetIntOption("ShapeMotionKeyType")-1)	+ ";";
	$currentOptions += "Vertex="				+ mthgGetIntOption("Vertex")				+ ";";
	$currentOptions += "PolygonNormal="			+ mthgGetIntOption("PolygonNormal")			+ ";";
	$currentOptions += "PolygonColor="			+ mthgGetIntOption("PolygonColor")			+ ";";
	$currentOptions += "PolygonUV="				+ mthgGetIntOption("PolygonUV")				+ ";";

	// MaterialAnimation
	$currentOptions += "OutputMaterial="		+ mthgGetIntOption("OutputMaterial")		+ ";";
	$currentOptions += "MatAnimKeyType="		+(mthgGetIntOption("MatAnimKeyType")-1)		+ ";";
	$currentOptions += "Diffuse="				+ mthgGetIntOption("Diffuse")				+ ";";
	$currentOptions += "Ambient="				+ mthgGetIntOption("Ambient")				+ ";";
	$currentOptions += "Specular="				+ mthgGetIntOption("Specular")				+ ";";
	$currentOptions += "Transparency="			+ mthgGetIntOption("Transparency")			+ ";";
	$currentOptions += "Reflect="				+ mthgGetIntOption("Reflect")				+ ";";

	// TextureAnimation
	$currentOptions += "OutputTexture="			+ mthgGetIntOption("OutputTexture")			+ ";";
	$currentOptions += "TexAnimKeyType="		+(mthgGetIntOption("TexAnimKeyType")-1)		+ ";";
	$currentOptions += "UOffset="				+ mthgGetIntOption("UOffset")				+ ";";
	$currentOptions += "VOffset="				+ mthgGetIntOption("VOffset")				+ ";";
	$currentOptions += "PictureChange="			+ mthgGetIntOption("PictureChange")			+ ";";
	$currentOptions += "Blend="					+ mthgGetIntOption("Blend")					+ ";";

	// CameraMotion
	$currentOptions += "OutputCameraMotion="	+ mthgGetIntOption("OutputCameraMotion")	+ ";";
	$currentOptions += "CameraMotionKeyType="	+(mthgGetIntOption("CameraMotionKeyType")-1)+ ";";
	$currentOptions += "CameraTarget="			+ mthgGetIntOption("CameraTarget")			+ ";";
	$currentOptions += "Roll="					+ mthgGetIntOption("Roll")					+ ";";
	$currentOptions += "UpTarget="				+ mthgGetIntOption("UpTarget")				+ ";";
	$currentOptions += "Angle="					+ mthgGetIntOption("Angle")					+ ";";

	// LightMotion
	$currentOptions += "OutputLightMotion="		+ mthgGetIntOption("OutputLightMotion")		+ ";";
	$currentOptions += "LightMotionKeyType="	+(mthgGetIntOption("LightMotionKeyType")-1)	+ ";";
	$currentOptions += "LightTarget="			+ mthgGetIntOption("LightTarget")			+ ";";
	$currentOptions += "Color="					+ mthgGetIntOption("Color")					+ ";";
	$currentOptions += "Intensity="				+ mthgGetIntOption("Intensity")				+ ";";
	$currentOptions += "FarNear="				+ mthgGetIntOption("FarNear")				+ ";";
	$currentOptions += "InnerOuter="			+ mthgGetIntOption("InnerOuter")			+ ";";

	// projectPath
	$currentOptions += "projectPath="			+ $mthgOrgProjectPath						+ ";";
	// sceneName
	$currentOptions += "sceneName="				+ mthgGetCurrentSceneName()					+ ";";
	$currentOptions += "saveNNRFile="			+ $mthgNNRFileName							+ ";";

	return $currentOptions;
}

//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//					コントロール有効化/無効化プロシージャ				 	 //
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//

//---------------------------------------------------------------------------
//  関数名 : mthgEnableOption
//  機  能 : コントロールを有効化/無効化します。
//  書  式 : global proc mthgEnableOption( string $member, int $value )
//  引  数 : string $member：オプション名
//         : string $value ：on(1)/off(0)
//  戻り値 : なし
//  説  明 : コントロールを有効化/無効化します。
//---------------------------------------------------------------------------
global proc mthgEnableOption( string $member, int $value )
{
	switch( $member ) {
		// Entry Name
		case "entryNextBotton":
			button	 		-edit	-enable	$value	MTHD_EntryNextButton;					break;
		case "entryPrevBotton":
			button	 		-edit	-enable	$value	MTHD_EntryPrevButton;					break;
		case "entryDelBotton":
			button	 		-edit	-enable	$value	MTHD_EntryDelButton;					break;

		// FileAttribute
		case "Dec":
			checkBoxGrp		-edit	-enable	$value	MTHD_FileAttribute_Dec;					break;
		case "Hex":
			checkBoxGrp		-edit	-enable	$value	MTHD_FileAttribute_Hex;					break;
		case "ViewDefault":
			checkBoxGrp		-edit	-enable	$value	MTHD_FileAttribute_ViewDefault;			break;
		case "Optimize":
			checkBoxGrp		-edit	-enable	$value	MTHD_FileAttribute_Optimize;			break;
		case "Comment":
			checkBoxGrp		-edit	-enable	$value	MTHD_FileAttribute_Comment;				break;
		case "Tab":
			checkBoxGrp		-edit	-enable	$value	MTHD_FileAttribute_Tab;					break;

		// OutputNode
		case "OutputModel":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputModel;						break;
		case "OutputEnvelope":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputEnvelope;					break;
		case "OutputInstance":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputInstance;					break;
		case "OutputBone":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputBone;						break;
		case "OutputCamera":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputCamera;						break;
		case "OutputLight":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputLight;						break;

		// NodeMotion
		case "NodeMotionKeyType":
			optionMenuGrp	-edit	-enable $value	MTHD_NodeMotionKeyType;					break;
		case "Translation":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMotion_Translation;			break;
		case "Rotation":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMotion_Rotation;				break;
		case "Scaling":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMotion_Scaling;				break;
		case "ChildTranslation":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMotion_ChildTranslation;		break;
		case "ChildRotation":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMotion_ChildRotation;		break;
		case "ChildScaling":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMotion_ChildScaling;			break;

		// MorphMotion
		case "MorphMotionKeyType":
			optionMenuGrp	-edit	-enable $value	MTHD_MorphMotionKeyType;				break;
// Delete [[
//		case "MorphTargetSource":
//			optionMenuGrp	-edit	-enable $value	MTHD_MorphTargetSource;					break;
// ]] Delete
		case "MorphVertex":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMorph_MorphVertex;			break;
		case "MorphNormal":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMorph_MorphNormal;			break;
		case "MorphColor":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMorph_MorphColor;			break;
		case "MorphUV":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMorph_MorphUV;				break;

		// ShapeMotion
		case "ShapeMotionKeyType":
			optionMenuGrp	-edit	-enable $value	MTHD_ShapeMotionKeyType;				break;
		case "Vertex":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputShape_Vertex;				break;
		case "PolygonNormal":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputShape_PolygonNormal;			break;
		case "PolygonColor":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputShape_PolygonColor;			break;
		case "PolygonUV":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputShape_PolygonUV;				break;

		// MaterialAnimation
		case "MatAnimKeyType":
			optionMenuGrp	-edit	-enable $value	MTHD_MatAnimKeyType;					break;
		case "Diffuse":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMaterial_Diffuse;			break;
		case "Ambient":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMaterial_Ambient;			break;
		case "Specular":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMaterial_Specular;			break;
		case "Transparency":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMaterial_Transparency;		break;
		case "Reflect":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputMaterial_Reflect;			break;

		// TextureAnimation
		case "TexAnimKeyType":
			optionMenuGrp	-edit	-enable $value	MTHD_TexAnimKeyType;					break;
		case "UOffset":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputTexture_UOffset;				break;
		case "VOffset":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputTexture_VOffset;				break;
		case "PictureChange":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputTexture_PictureChange;		break;
		case "Blend":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputTexture_Blend;				break;

		// CameraMotion
		case "CameraMotionKeyType":
			optionMenuGrp	-edit	-enable $value	MTHD_CameraMotionKeyType;				break;
		case "CameraTarget":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputCameraMotion_CameraTarget;	break;
		case "Roll":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputCameraMotion_Roll;			break;
		case "Angle":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputCameraMotion_Angle;			break;
		case "UpTarget":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputCameraMotion_UpTarget;		break;

		// LightMotion
		case "LightMotionKeyType":
			optionMenuGrp	-edit	-enable $value	MTHD_LightMotionKeyType;				break;
		case "LightTarget":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputLightMotion_LightTarget;		break;
		case "Color":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputLightMotion_Color;			break;
		case "Intensity":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputLightMotion_Intensity;		break;
		case "FarNear":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputLightMotion_FarNear;			break;
		case "InnerOuter":
			checkBoxGrp		-edit	-enable	$value	MTHD_OutputLightMotion_InnerOuter;		break;

		// エラー
		default:
			warning( "mthgEnableOption : [" + $member + "] is invalid!\n" );				break;
	}
}

//---------------------------------------------------------------------------
//  関数名 : mthgEnableFileAttribute
//  機  能 : ファイルアトリビュートののコントロールの有効/無効を設定します。
//  書  式 : global proc mthgEnableFileAttribute()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : FileTypeがHND_ASCII(==1)のときコントロール有効
//           それ以外のときのときコントロール無効
//---------------------------------------------------------------------------
global proc mthgEnableFileAttribute()
{
//	int $filetype = mthgGetIntOption( "FileType" ) == 1 ? true : false;
	int	$filetypeid = mthgGetIntOption( "FileType" );
	int $filetype = false;

	// $filetypeid: 1:ASCII 2:BINARY 3:ASCII/BINARY
	if( $filetypeid == 1 || $filetypeid == 3 ) {
		$filetype = true;
	}

	mthgEnableOption( "Dec",		$filetype );
	mthgEnableOption( "Hex",		$filetype );
	mthgEnableOption( "ViewDefault",$filetype );
	mthgEnableOption( "Optimize",	$filetype );
	mthgEnableOption( "Comment",	$filetype );
	mthgEnableOption( "Tab",		$filetype );
}

//---------------------------------------------------------------------------
//  関数名 : mthgEnableModelOption
//  機  能 : ノードオプションのコントロールの有効/無効を設定します。
//  書  式 : global proc mthgEnableModelOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : OutputNodeがON のときコントロール有効
//           OutputNodeがOFFのときコントロール無効
//---------------------------------------------------------------------------
global proc mthgEnableModelOption()
{
	int $outputnode = mthgGetIntOption( "OutputNode" );

	mthgEnableOption( "OutputModel",	$outputnode );
	mthgEnableOption( "OutputEnvelope",	$outputnode );
	mthgEnableOption( "OutputInstance",	$outputnode );
	mthgEnableOption( "OutputBone",		$outputnode );
	mthgEnableOption( "OutputCamera",	$outputnode );
	mthgEnableOption( "OutputLight",	$outputnode );
}

//---------------------------------------------------------------------------
//  関数名 : mthgEnableMotionOption
//  機  能 : ノードモーションオプションのコントロールの有効/無効を設定します。
//  書  式 : global proc mthgEnableMotionOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : OutputMotionがON のときコントロール有効
//           OutputMotionがOFFのときコントロール無効
//---------------------------------------------------------------------------
global proc mthgEnableMotionOption()
{
	int $outputmotion = mthgGetIntOption( "OutputMotion" );

	mthgEnableOption( "NodeMotionKeyType",	$outputmotion );
	mthgEnableOption( "Translation",		$outputmotion );
	mthgEnableOption( "Rotation",			$outputmotion );
	mthgEnableOption( "Scaling",			$outputmotion );
	mthgEnableOption( "ChildTranslation",	$outputmotion );
	mthgEnableOption( "ChildRotation",		$outputmotion );
	mthgEnableOption( "ChildScaling",		$outputmotion );
}

//---------------------------------------------------------------------------
//  関数名 : mthgEnableMorphOption
//  機  能 : モーフモーションオプションのコントロールの有効/無効を設定します。
//  書  式 : global proc mthgEnableMorphOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : OutputMorphがON のときコントロール有効
//           OutputMorphがOFFのときコントロール無効
//---------------------------------------------------------------------------
global proc mthgEnableMorphOption()
{
	int $outputmorph = mthgGetIntOption( "OutputMorph" );

	mthgEnableOption( "MorphMotionKeyType",	$outputmorph );
// Delete [[
//	mthgEnableOption( "MorphTargetSource",	$outputmorph );
// ]] Delete
	mthgEnableOption( "MorphVertex",		$outputmorph );
	mthgEnableOption( "MorphNormal",		$outputmorph );
	mthgEnableOption( "MorphColor",			$outputmorph );
	mthgEnableOption( "MorphUV",			$outputmorph );
}

//---------------------------------------------------------------------------
//  関数名 : mthgEnableShapeOption
//  機  能 : シェイプモーションオプションのコントロールの有効/無効を設定します。
//  書  式 : global proc mthgEnableShapeOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : OutputShapeがON のときコントロール有効
//           OutputShapeがOFFのときコントロール無効
//---------------------------------------------------------------------------
global proc mthgEnableShapeOption()
{
	int $outputshape = mthgGetIntOption( "OutputShape" );

	mthgEnableOption( "ShapeMotionKeyType",	$outputshape );
	mthgEnableOption( "Vertex",				$outputshape );
	mthgEnableOption( "PolygonNormal",		$outputshape );
	mthgEnableOption( "PolygonColor",		$outputshape );
	mthgEnableOption( "PolygonUV",			$outputshape );
}

//---------------------------------------------------------------------------
//  関数名 : mthgEnableMaterialOption
//  機  能 : マテリアルアニメーションオプションのコントロールの有効/無効を設定します。
//  書  式 : global proc mthgEnableMaterialOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : OutputShapeがON のときコントロール有効
//           OutputShapeがOFFのときコントロール無効
//---------------------------------------------------------------------------
global proc mthgEnableMaterialOption()
{
	int $outputmat = mthgGetIntOption( "OutputMaterial" );

	mthgEnableOption( "MatAnimKeyType",	$outputmat );
	mthgEnableOption( "Diffuse",		$outputmat );
	mthgEnableOption( "Ambient",		$outputmat );
	mthgEnableOption( "Specular",		$outputmat );
	mthgEnableOption( "Transparency",	$outputmat );
	mthgEnableOption( "Reflect",		$outputmat );
}

//---------------------------------------------------------------------------
//  関数名 : mthgEnableTextureOption
//  機  能 : テクスチャアニメーションオプションのコントロールの有効/無効を設定します。
//  書  式 : global proc mthgEnableTextureOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : OutputTextureがON のときコントロール有効
//           OutputTextureがOFFのときコントロール無効
//---------------------------------------------------------------------------
global proc mthgEnableTextureOption()
{
	int $outputtex = mthgGetIntOption( "OutputTexture" );

	mthgEnableOption( "UOffset",		$outputtex );
	mthgEnableOption( "VOffset",		$outputtex );
	mthgEnableOption( "TexAnimKeyType",	$outputtex );
	mthgEnableOption( "PictureChange",	$outputtex );
	mthgEnableOption( "Blend",		 	$outputtex );
}

//---------------------------------------------------------------------------
//  関数名 : mthgEnableCameraOption
//  機  能 : カメラモーションオプションのコントロールの有効/無効を設定します。
//  書  式 : global proc mthgEnableCameraOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : OutputCameraMotionがON のときコントロール有効
//           OutputCameraMotionがOFFのときコントロール無効
//---------------------------------------------------------------------------
global proc mthgEnableCameraOption()
{
	int $outputcamera = mthgGetIntOption( "OutputCameraMotion" );

	mthgEnableOption( "CameraMotionKeyType",	$outputcamera );
	mthgEnableOption( "CameraTarget",			$outputcamera );
	mthgEnableOption( "Roll",					$outputcamera );
	mthgEnableOption( "UpTarget",				$outputcamera );
	mthgEnableOption( "Angle",					$outputcamera );
}

//---------------------------------------------------------------------------
//  関数名 : mthgEnableLightOption
//  機  能 : ライトモーションオプションのコントロールの有効/無効を設定します。
//  書  式 : global proc mthgEnableLightOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 : OutputCameraMotionがON のときコントロール有効
//           OutputCameraMotionがOFFのときコントロール無効
//---------------------------------------------------------------------------
global proc mthgEnableLightOption()
{
	int $outputlight = mthgGetIntOption( "OutputLightMotion" );

	mthgEnableOption( "LightMotionKeyType",	$outputlight );
	mthgEnableOption( "LightTarget",		$outputlight );
	mthgEnableOption( "Color",				$outputlight );
	mthgEnableOption( "Intensity",			$outputlight );
	mthgEnableOption( "FarNear",			$outputlight );
	mthgEnableOption( "InnerOuter",			$outputlight );
}

//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//					NNR LOAD/SAVE用プロシージャ				 				 //
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//

//---------------------------------------------------------------------------
//  関数名 : mthgSaveOption
//  機  能 : カレントのオプションを取得して、NNRファイルに保存します。
//  書  式 : global proc mthgSaveOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgSaveOption()
{
	global int    $mthgEntryCmdType;
	global string $mthgDefaultProjectPath;
	global int    $mthgLoadMode;
	global string $mthgNNROpenPath;
	global string $mthgNNRFileName;

	$mthgLoadMode = 2;
	$mthgNNROpenPath = $mthgDefaultProjectPath;
	$mthgNNRFileName = mthgGetDefaultOpenNNRFileName();
	mthgUpdateNNRStatus();

	$mthgEntryCmdType = 6;

	// カレントオプション文字列を取得
	string $currentOptions = mthgCreateOptionString();
	$currentOptions += "saveOptionMode=1;";

	// NNR Fileに保存
	mthSaveNnrHnd( $currentOptions );

	$mthgLoadMode = 2;
}

//---------------------------------------------------------------------------
//  関数名 : mthgUserInitSaveOption
//  機  能 : カレントのオプションを取得して、NNRファイルに保存します。
//  書  式 : global proc mthgUserInitSaveOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgUserInitSaveOption()
{
	global int	  $mthgEntryCmdType;
	global int    $mthgLoadMode;
	global string $mthgNNROpenPath;
	global string $mthgDefaultProjectPath;
	global string $mthgNNRFileName;

	$mthgLoadMode = 1;
	$mthgNNROpenPath = $mthgDefaultProjectPath;
	$mthgNNRFileName = mthgGetDefaultOpenNNRFileName();
	mthgUpdateNNRStatus();

	// Saveコマンド
	$mthgEntryCmdType = 8;

	// カレントオプション文字列を取得
	string $currentOptions = mthgCreateOptionString();
	$currentOptions += "saveOptionMode=2;";

	// NNR Fileに保存
	mthSaveNnrHnd( $currentOptions );
}

//---------------------------------------------------------------------------
//  関数名 : mthgLoadNnrHndFile
//  機  能 : NNRファイルを読み込み、カレントのオプションにセットします。
//  書  式 : global proc mthgLoadNnrHndFile()
//  引  数 : string $filepath : NNRファイルへのパス
//           string $filetype : ファイルタイプ
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgLoadNnrOption( string $filepath, string $filetype )
{
	global string $mthgNNRTempFile;
	global int    $mthgLoadMode;
	global string $mthgNNROpenPath;
	global string $mthgNNRFileName;

	if( size($filepath) == 0 ) {
		return;
	}
	// ディレクトリーごとに分割
	string $tmpname[];
	string $filename;
	string $extension;

	$filepath = `substitute "\\*" $filepath "/"`;
	$mthgNNRFileName = $filepath;

	// ファイル名を取得
	int $tokenNum = `tokenize $filepath "." $tmpname`;
	// パスに"."が使われている場合を考慮
	int $i;
	string $nnrPath;
	for($i=0; $i<size($tmpname)-1;$i++) {
		$filename += $tmpname[$i];
		$nnrPath  += $tmpname[$i];
		if( $i != (size($tmpname)-2) ){
			$nnrPath += "/";
			$filename += ".";
		}
	}
	$extension = $tmpname[$tokenNum-1];

	$mthgNNROpenPath = $nnrPath;

	// 拡張子をチェック
	if( $extension != "nnr" ) {
		warning( "mthgLoadNnrOption : this file extension [" + $filepath + "] is not \"nnr\"!");
		return;
	}
	$mthgLoadMode = 2;
	mthgUpdateNNRStatus();
	mthgLoadOption( $filename, 1 );

	string $tmpnnrname	= $mthgNNRTempFile + ".nnr";

	// カレントのNNRファイルを一時NNRファイルに複写
	sysFile -copy $tmpnnrname $filepath;
}

//---------------------------------------------------------------------------
//  関数名 : mthgTmpLoadOption
//  機  能 : カレントのシーンファイルに対応したNNRファイルを読み込み、一時ファイルを作成。
//  書  式 : global proc mtndTmpLoadOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgTmpLoadOption()
{
	global string $mthgNNRTempFile;

	mthgLoadOption( $mthgNNRTempFile, 1 );
}

//---------------------------------------------------------------------------
//  関数名 : mthgResetOption
//  機  能 : カレントのシーンファイルに対応したNNRファイルを読み込み、オプションをセットします。
//  書  式 : global proc mthgResetOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgResetOption()
{
	global string $mthgNNRTempFile;
	global int    $mthgLoadMode;
	global string $mthgNNROpenPath;
	global string $mthgNNRFileName;

	// プロジェクトのパスを取得
	string $projectPath = `workspace -query -rootDirectory`;
	// シーン名を取得
	string $sceneName = mthgGetCurrentSceneName();
	// NNRファイルパスをセット
	string $nnrFileName	= $projectPath + $sceneName;
//	string $nnrFileName	= $nnrname + ".nnr";
	string $tmpnnrname	= $mthgNNRTempFile + ".nnr";

	$mthgNNRFileName = mthgGetDefaultOpenNNRFileName();
	$mthgLoadMode = 2;
	$mthgNNROpenPath = $projectPath;
	mthgUpdateNNRStatus();

	// 一時NNRファイルが存在すれば削除
	if(`file -query -exists $tmpnnrname`) {
		sysFile -delete $tmpnnrname;
	}

	// シーン名があるかどうか
	if( size($sceneName) == 0 ) {
//		mthgLoadOption( "", 2 );
		mthgUserInitOption();
	}
	else {
		if(`file -query -exists $nnrFileName`) {
			$mthgLoadMode = 2;
			mthgUpdateNNRStatus();
			// カレントのNNRファイルを一時NNRファイルに複写
			sysFile -copy $tmpnnrname $nnrFileName;
			mthgLoadOption( $mthgNNRTempFile, 1 );
		}
		else {
//			mthgLoadOption( "", 2 );
			mthgUserInitOption();
		}
	}

}

//---------------------------------------------------------------------------
//  関数名 : mthgInitOption
//  機  能 : NNRからデフォルト値を取得し、オプションを初期化します。
//  書  式 : global proc mthgInitOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgInitOption()
{
	global int	  $mthgEntryCmdType;
//	global string $mthgNNRTempFile;
	global int	  $mthgEntryNum;
	global int    $mthgLoadMode;
	global string $mthgNNROpenPath;
	global string $mthgDefaultProjectPath;
	global string $mthgNNRFileName;

//	string $tmpnnrname	= $mthgNNRTempFile + ".nnr";

	// 一時NNRファイルが存在すれば削除
//	if(`file -query -exists $tmpnnrname`) {
//		sysFile -delete $tmpnnrname;
//	}

	$mthgLoadMode =0;
	$mthgNNROpenPath = $mthgDefaultProjectPath;
	$mthgNNRFileName = mthgGetDefaultOpenNNRFileName();
	mthgUpdateNNRStatus();

	mthgLoadOption( "", 0 );

	// Initコマンド
	$mthgEntryCmdType = 1;

	// カレントのオプション文字列を取得
	string $currentOptionString = `mthgCreateOptionString`;
	$currentOptionString += "saveOptionMode=1;";

	// 現在のオプションを保存
	mthSaveNnrHnd( $currentOptionString );

	$mthggEntryNum = 1;
}

//---------------------------------------------------------------------------
//  関数名 : mthgUserInitOption
//  機  能 : NNRからデフォルト値を取得し、オプションを初期化します。
//  書  式 : global proc mthgUserInitOption()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgUserInitOption()
{
	global int	  $mthgEntryCmdType;
	global string $mthgNNRTempFile;
	global int	  $mthgEntryNum;
	global string $mthgUserInitNNR;
	global int    $mthgLoadMode;
	global string $mthgNNROpenPath;
	global string $mthgDefaultProjectPath;
	global string $mthgNNRFileName;

	string $userInitFileName	= $mthgUserInitNNR + ".nnr";
	string $tmpnnrname			= $mthgNNRTempFile + ".nnr";

//	mthgLoadOption( $mthgUserInitNNR, 2 );

	// 一時NNRファイルが存在すれば削除
	if(`file -query -exists $tmpnnrname`) {
		sysFile -delete $tmpnnrname;
	}

	if(`file -query -exists $userInitFileName`) {
		$mthgLoadMode = 1;
		$mthgNNROpenPath = $mthgDefaultProjectPath;
		$mthgNNRFileName = mthgGetDefaultOpenNNRFileName();
		mthgUpdateNNRStatus();
		// カレントのNNRファイルを一時NNRファイルに複写
		sysFile -copy $tmpnnrname $userInitFileName;
		mthgLoadOption( $mthgNNRTempFile, 2 );
	}
	else {
		$mthgLoadMode = 0;
		$mthgNNROpenPath = $mthgDefaultProjectPath;
		$mthgNNRFileName = mthgGetDefaultOpenNNRFileName();
		mthgUpdateNNRStatus();
		mthgLoadOption( "", 2 );
	}


}

//---------------------------------------------------------------------------
//  関数名 : mthgSaveNnrFileBrowser
//  機  能 : ファイルブラウザからNNRファイル名を取得します。
//  書  式 : global proc mthgSaveNnrFileBrowser( string $member )
//  引  数 : なし
//  戻り値 : なし
//  説  明 : ファイルブラウザで選択したNNRファイルへのパスは
//           プロシージャmthgLoadNnrOptionの引数に渡されます。
//---------------------------------------------------------------------------
global proc mthgSaveNnrFileBrowser()
{
	global string $mthgDefaultProjectPath;
	global string $mthgNNROpenPath;

	workspace -directory $mthgNNROpenPath;

	// ファイルブラウザをディレクトリモードでオープン
	fileBrowserDialog
		-mode			1	// 1=WriteMode
		-fileCommand	"mthgSaveAsOption"
//		-fileType		"NNR"
		-actionName		"SaveAs"
		-operationMode	"SaveAs"
		-includeName	$mthgNNROpenPath;

	workspace -directory $mthgDefaultProjectPath;

}

//---------------------------------------------------------------------------
//  関数名 : mthgSaveAsOption
//  機  能 : NNRファイルを読み込み、オプションを保存します。
//  書  式 : global proc mthgSaveAsOption( string $filepath, int $loadMode )
//  引  数 : string $filepath : ファイルパス
//         : int $int         : 読み込みモード番号
//  戻り値 : なし
//  説  明 : NNRファイルを読み込み、オプションを保存します。
//---------------------------------------------------------------------------
global proc mthgSaveAsOption( string $filepath, string $fileType )
{
	global int	  $mthgEntryCmdType;
	global int    $mthgLoadMode;
	global string $mthgNNROpenPath;
	global string $mthgNNRFileName;

	$mthgEntryCmdType = 6;

	$mthgLoadMode = 2;
	$filepath = `substitute "\\*" $filepath "/"`;
	string $nnrFileName = $filepath;

	string $tmpname[];
	string $extension;
	// ファイル名を取得
	int $tokenNum = `tokenize $filepath "." $tmpname`;
	// パスに"."が使われている場合を考慮
	int $i;
	string $nnrPath;

	if( $tokenNum == 1 ) {
		$nnrFileName += ".nnr";
	}
	else {
		$extension = $tmpname[$tokenNum-1];
		// 拡張子をチェック
		if( $extension != "nnr" ) {
			warning( "mthgSaveAsOption : this file extension [" + $filepath + "] is not \"nnr\"!");
			return;
		}
	}

	$tokenNum = `tokenize $filepath "/" $tmpname`;
	for($i=0; $i<size($tmpname)-1;$i++) {
		$nnrPath  += $tmpname[$i];
		if( $i != (size($tmpname)-2) ){
			$nnrPath += "/";
		}
	}

	$mthgNNROpenPath = $nnrPath;
	$mthgNNRFileName = $nnrFileName;
	mthgUpdateNNRStatus();

	// カレントオプション文字列を取得
	string $currentOptions = mthgCreateOptionString();
	$currentOptions += "saveOptionMode=1;";

	// NNR Fileに保存
	mthSaveNnrHnd( $currentOptions );
}

//---------------------------------------------------------------------------
//  関数名 : mthgOpenNnrFileBrowser
//  機  能 : ファイルブラウザからNNRファイル名を取得します。
//  書  式 : global proc mthgOpenNnrFileBrowser( string $member )
//  引  数 : なし
//  戻り値 : なし
//  説  明 : ファイルブラウザで選択したNNRファイルへのパスは
//           プロシージャmthgLoadNnrOptionの引数に渡されます。
//---------------------------------------------------------------------------
global proc mthgOpenNnrFileBrowser()
{
	global string $mthgNNROpenPath;
	global string $mthgDefaultProjectPath;

	workspace -directory $mthgNNROpenPath;

	// ファイルブラウザをディレクトリモードでオープン
	fileBrowserDialog
		-mode			0	// 0=ReadMode
		-fileCommand	"mthgLoadNnrOption"
		-fileType		"NNR"
		-actionName		"Select"
		-includeName	$mthgNNROpenPath;

	workspace -directory $mthgDefaultProjectPath;
}

//---------------------------------------------------------------------------
//  関数名 : mthgLoadOption
//  機  能 : NNRファイルを読み込み、オプションをセットします。
//  書  式 : global proc mthgLoadOption( string $filepath, int $loadMode )
//  引  数 : string $filepath : ファイルパス
//         : int $int         : 読み込みモード番号
//  戻り値 : なし
//  説  明 : オプション文字列を"="で切り離します。
//           オプションをセット後に、コントロールの有効/無効化を行います。
//---------------------------------------------------------------------------
global proc mthgLoadOption( string $filepath, int $loadMode )
{
	global int $mthgDebugMode;

	$filepath = `substitute "\\*" $filepath "/"`;

	// NNRファイル読み込み
	string $nnrOptionStrings[] = `mthLoadNnrHnd $filepath $loadMode`;

	if( $mthgDebugMode == true ) {
		print( "\nmthgLoadOption ===========\n");
	}
	// オプションをセット
	for( $nnrOptions in $nnrOptionStrings ) {
		if( $mthgDebugMode == true ) {
			print( $nnrOptions + "\n");
		}
		string $option[];
		// オプション文字列を"="で切り離す
		// $option[0]:メンバー名、$option[1]:オプション値
		tokenize $nnrOptions "=" $option;
		mthgSetNnrHndOption( $option[0], $option[1] );
	}

	// コントロールの有効無効の設定
	mthgEnableFileAttribute();
	mthgEnableModelOption();
	mthgEnableMotionOption();
	mthgEnableShapeOption();
	mthgEnableMorphOption();
	mthgEnableMaterialOption();
	mthgEnableTextureOption();
	mthgEnableCameraOption();
	mthgEnableLightOption();

	// Entryボタンの状況を更新
	mthgEntryBottonStatusChg();
}

//---------------------------------------------------------------------------
//  関数名 : mthgSetNnrHndOption
//  機  能 : NNRから読み込んだデータをオプションにセットします。
//  書  式 : global proc mthgSetNnrHndOption()
//  引  数 : string $member : オプション名
//         : string $value  : 値
//  戻り値 : なし
//  説  明 : [SELECT]型のオプションのみオプション値に+1してください。
//---------------------------------------------------------------------------
global proc mthgSetNnrHndOption( string $member, string $value )
{
	switch( $member ) {
		// String型のオプションをセット
		case "entryName":
		case "outputDirName":
			mthgSetStringOption( $member, $value );
			break;
// Delete [[
//		case "OutputPath":
//			mthgSetStringOption( $member, $value );
//			break;
// ]] Delete
		case "FileType":
		case "KeyType":
		case "NodeMotionKeyType":
		case "MorphMotionKeyType":
// Delete [[
//		case "MorphTargetSource":
// ]] Delete
		case "ShapeMotionKeyType":
		case "MatAnimKeyType":
		case "TexAnimKeyType":
		case "CameraMotionKeyType":
		case "LightMotionKeyType":
			mthgSetIntOption( $member, (int)$value + 1 );
			break;
		default:
			mthgSetIntOption( $member, (int)$value );
			break;
	}
}

//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//					Entry名関連						 						 //
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------
//  関数名 : mthgEntryNext
//  機  能 : Entry名フィールドNextボタン処理。
//  書  式 : global proc mthgEntryNext()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgEntryNext()
{
	global int	  $mthgEntryCmdType;

	// Nextコマンド
	$mthgEntryCmdType = 3;

	// カレントのオプション文字列を取得
	string $currentOptionString = `mthgCreateOptionString`;
	$currentOptionString += "saveOptionMode=1;";

	// 現在のオプションを保存
	mthSaveNnrHnd( $currentOptionString );

	// Entryボタンの状況を更新
	mthgEntryBottonStatusChg();

	// 現在のオプションをリロード
	mthgTmpLoadOption();

}

//---------------------------------------------------------------------------
//  関数名 : mthgEntryPrev
//  機  能 : Entry名フィールドPrevボタン処理。
//  書  式 : global proc mthgEntryPrev()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgEntryPrev()
{
	global int	  $mthgEntryCmdType;

	// Prevコマンド
	$mthgEntryCmdType = 2;

	// カレントのオプション文字列を取得
	string $currentOptionString = `mthgCreateOptionString`;
	$currentOptionString += "saveOptionMode=1;";

	// 現在のオプションを保存
	mthSaveNnrHnd( $currentOptionString );

	// Entryボタンの状況を更新
	mthgEntryBottonStatusChg();

	// 現在のオプションをリロード
	mthgTmpLoadOption();

}

//---------------------------------------------------------------------------
//  関数名 : mthgEntryDel
//  機  能 : Entry名フィールドDelボタン処理。
//  書  式 : global proc mthgEntryDel()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgEntryDel()
{
	global int	  $mthgEntryCmdType;

	// Deleteコマンド
	$mthgEntryCmdType = 4;

	// カレントのオプション文字列を取得
	string $currentOptionString = `mthgCreateOptionString`;
	$currentOptionString += "saveOptionMode=1;";

	// 現在のオプションを保存
	mthSaveNnrHnd( $currentOptionString );

	// Entryボタンの状況を更新
	mthgEntryBottonStatusChg();

	// 現在のオプションをリロード
	mthgTmpLoadOption();

}

//---------------------------------------------------------------------------
//  関数名 : mthgEntryAdd
//  機  能 : Entry名フィールドAddボタン処理。
//  書  式 : global proc mthgEntryAdd()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgEntryAdd()
{
	global int	  $mthgEntryCmdType;

	// Addコマンド
	$mthgEntryCmdType = 5;

	// カレントのオプション文字列を取得
	string $currentOptionString = `mthgCreateOptionString`;
	$currentOptionString += "saveOptionMode=1;";

	// 現在のオプションを保存
	mthSaveNnrHnd( $currentOptionString );

	// Entryボタンの状況を更新
	mthgEntryBottonStatusChg();

	// 現在のオプションをリロード
	mthgTmpLoadOption();

}

//---------------------------------------------------------------------------
//  関数名 : mthgEntryBottonStatusChg
//  機  能 : EntryPrevボタンを状況を変化させる。
//  書  式 : global proc mthgEntryBottonStatusChg()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgEntryBottonStatusChg()
{
	global int	  $mthgCrtEntryNo;
	global int	  $mthgEntryNum;

	if( $mthgCrtEntryNo <= 0 ) {
		mthgEnableOption( "entryPrevBotton", false );
		if( $mthgEntryNum <= 1 ) {
			mthgEnableOption( "entryNextBotton", false );
			mthgEnableOption( "entryDelBotton",  false );
		}
		else {
			mthgEnableOption( "entryNextBotton", true );
			mthgEnableOption( "entryDelBotton",  true );
		}
	}
	else if( $mthgCrtEntryNo >= ($mthgEntryNum - 1) ) {
		mthgEnableOption( "entryPrevBotton", true  );
		mthgEnableOption( "entryDelBotton",  true  );
		mthgEnableOption( "entryNextBotton", false );
	}
	else {
		mthgEnableOption( "entryPrevBotton", true  );
		mthgEnableOption( "entryDelBotton",  true  );
		mthgEnableOption( "entryNextBotton", true  );
	}

}

//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
//					メッセージ表示ダイアログ用プロシージャ			 		 //
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//

//---------------------------------------------------------------------------
//  関数名 : mthgGetVersion
//  機  能 : Maya to HNDの各モジュールのバージョン情報を表示します。
//  書  式 : global proc mthgGetVersion()
//  引  数 : なし
//  戻り値 : なし
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgGetVersion()
{
	string $copyright = "Copyright (C) 2002 - 2007 SEGA Creative Center Graphic Section";
	string $allverinfo[] = `mthGetVer`;
	string $verinfo;
	string $info;

	$verinfo = $copyright + "\n\n";
	for( $info in $allverinfo ) {
		$info = `substituteAllString $info "\n" ""`;
		$verinfo += $info + "\n\n";
	}

	mthgMessageDialog( $verinfo );
}

//---------------------------------------------------------------------------
//  関数名 : mthgMessageDialog
//  機  能 : メッセージダイアログを表示します。
//  書  式 : global proc mthgMessageDialog( string $comment )
//  引  数 : string $comment：表示するコメント
//  戻り値 :
//  説  明 :
//---------------------------------------------------------------------------
global proc mthgMessageDialog( string $comment )
{
	string $pluginName = mthgGetPluginName();
	if( size($pluginName) == 0 ) {
		error( "HND Exporter Plugin is not loaded!\n" );
		return;
	}
	string $name	= `pluginInfo -query -name		$pluginName`;
	string $version = `pluginInfo -query -version	$pluginName`;;
	// 文字列の最初と最後からスペースを削除
	$name	 = strip( $name	   );
	$version = strip( $version );
	// ラベル文字列を作成
	string $labelname = $name + " " + $version;

	confirmDialog
		-title			$labelname
		-message		$comment
		-messageAlign	"center"
		-button			"OK"
		-defaultButton	"OK";
}

//---------------------------------------------------------------------------
//  関数名 : mthgMakeDirDialog
//  機  能 : ディレクトリを作成するかどうかを告知するダイアログを表示します。
//  書  式 : global proc mtngGetVerPS2()
//  引  数 : なし
//  戻り値 : "Yes"/"No"
//  説  明 :
//-------------------------------------------------------------------------*/
global proc string mthgMakeDirDialog( string $dirName )
{
	string $result =
	`confirmDialog
		-title			("Directory is not found!")
		-message		("make this directory?\n\n" + $dirName )
		-messageAlign	"center"
		-button			"Yes"
		-button			"No"
		-defaultButton	"Yes"
		-cancelButton	"No"
		-dismissString	"No"`;

	return $result;
}

//
// End of file
//
