PPG.PPGLayout

導入

v4.0

詳細

現在のインスペクト対象オブジェクトの PPGLayout を戻します。論理コードから PPGLayout の内容を変更することによりユーザインターフェイスを動的に変更できます。変更が完了したら、PPG.Refresh を使用してインターフェイスを書き換えます。

JScript の例

// JScript Custom Property example demonstrating how to

// build a simple Script viewer by using the

// siControlFolder, siControlCombo and multi-line string

// control.

//

// Note: This example could be extended: for example by adding a 

// "Save" and "New" button.

Main()

function Main()

{

	var oCustomProperty = ActiveSceneRoot.AddProperty( 

	                          "CustomProperty", false,

	                          "Script View" ) ;

	oCustomProperty.AddParameter3( "Dir", siString ) ;

	oCustomProperty.AddParameter3( "Scripts", siString ) ;

	oCustomProperty.AddParameter3( "File", siString ) ;

	var oLayout = oCustomProperty.PPGLayout

	oLayout.AddGroup( "Script Directory" ) ;

	var oItem = oLayout.AddItem( "Dir", "Directory", "Folder" ) ;	

	oItem.SetAttribute( "NoLabel", true ) ;	

	oLayout.EndGroup() ;

	oLayout.AddGroup( "Script File" ) ;

	var oItem = oLayout.AddEnumControl( "Scripts", Array(),

		             "", siControlCombo ) ;

	oItem.SetAttribute( "NoLabel", true ) ;	

	oLayout.EndGroup();

	oLayout.AddGroup( "File Contents" ) ;

	var oItem = oLayout.AddString( "File", "", true, 200 ) ;

	oItem.SetAttribute( "NoLabel", true ) ;	

	oLayout.EndGroup() ;

	oLayout.Language = "Jscript" ;

	oLayout.Logic = OnInit.toString() +

		             PopulateCombo.toString() +

		             Dir_OnChanged.toString() +

		             Scripts_OnChanged.toString();

	strDefaultDir = Application.InstallationPath( siUserPath ) + 

	                     "/Data/Scripts" ;

	oCustomProperty.Dir = strDefaultDir ;	

	InspectObj( oCustomProperty );

}

//

// The remaining code is event code which

// is injected into the PPG layout.

//

function OnInit()

{

	PopulateCombo() ;	

}

function Dir_OnChanged()

{

	PopulateCombo() ;

	PPG.File.Value = "" ;

}

function Scripts_OnChanged()

{

	strDir = PPG.Dir.Value 

	strScript = PPG.Scripts.Value 

	if ( strDir == "" || strScript == "" )

	{

		PPG.File.Value = "" ;

		return ;

	}

	try

	{

		var oFSO = new ActiveXObject( "Scripting.FileSystemObject" ) ;		

		var oFile = oFSO.OpenTextFile( strDir + "/" + strScript ) ;

		PPG.File.Value = oFile.ReadAll() ;

	}

	catch( e )

	{

		PPG.File.Value = "" ;

		Application.LogMessage ( "Error reading file " + 

		             strDir + "/" + strScript + 

		             "(" + e.Description + ")" ) ;

	}

}

function PopulateCombo()

{

	strDir = PPG.Dir.Value ;

	strOldValue = PPG.Scripts.Value ; 

	// Get access to the PPGLayout object

var oLayout = PPG.PPGLayout ;

	// The Combo box definition is part of the layout.

	// We look it up based on the script name of the associated

	// parameter

	var oCombo = PPG.PPGLayout.Item( "Scripts" ) ;

	if ( strDir == "" )

	{

		//Flush any contents

		oCombo.UIItems = null ;

		PPG.Scripts.Value = "" ;

	}

	else

	{

		var oFSO = new ActiveXObject( "Scripting.FileSystemObject" ) ;		

		var oItems = new Array() ;

		try

		{

			bFoundOldValue = false ;

			var oFolder = oFSO.GetFolder( strDir ) ;

		   fc = new Enumerator(oFolder.files);

		   for (; !fc.atEnd(); fc.moveNext())

		   {

		   		var oFile = fc.item() ;

		   		if ( -1 != oFile.Name.indexOf( ".vbs" ) ||

			   		  -1 != oFile.Name.indexOf( ".js" ) ||

			   		  -1 != oFile.Name.indexOf( ".pys" ) ||

			   		  -1 != oFile.Name.indexOf( ".pls" ) )

			   	{			   		 		   		

			   		// Both label and value will be the string name

			   		oItems.push( oFile.Name ) ;

		   			oItems.push( oFile.Name ) ;

		   			if ( strOldValue == oFile.Name )

		   			{

		   				bFoundOldValue = true ;

		   			}

		   		}

		   }

			oCombo.UIItems = oItems ;

			if ( bFoundOldValue )

			{

				// This is the case when you close and reopen the

				// property page - we want to restore the original 

				// setting if possible.

				PPG.Scripts.Value = strOldValue ;

			}

			else

			{

				// We leave the value empty

				// so that the user actually 

				// picks a script file

				// before we load anything

				PPG.Scripts.Value = "" ;

			}

		}

		catch( e )

		{

			Application.LogMessage( "Error finding script files" +

		           " in specified directory: " + e.Description );

		}

	}	

	// Necessary to make sure the updated Combo is drawn

	PPG.Refresh() ;

}

関連項目

ProjectItem.PPGLayout InspectObj