mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-25 01:23:52 +00:00
Parametrize script extension, default to 'tscript'
This commit is contained in:
parent
b8b62292bd
commit
099dd4f1f3
542 changed files with 774 additions and 783 deletions
331
Templates/BaseGame/game/tools/gui/fileDialogBase.ed.tscript
Normal file
331
Templates/BaseGame/game/tools/gui/fileDialogBase.ed.tscript
Normal file
|
|
@ -0,0 +1,331 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// File Dialog Base - Add to Sim Callback
|
||||
// Purpose : Intitialize Variables and Setup State.
|
||||
//-----------------------------------------------------------------------------
|
||||
function FileDialogBase::onAdd( %this )
|
||||
{
|
||||
// Callback function Succeed
|
||||
%this.SuccessCallback = 0;
|
||||
// Callback function Cancel
|
||||
%this.CancelCallback = 0;
|
||||
|
||||
// Multiple Select Flag
|
||||
%this.MultipleSelect = false;
|
||||
|
||||
// File Extensions Group
|
||||
%this.FileExtensions = new SimGroup();
|
||||
|
||||
%this.AddFilter("*.*","All Files");
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// File Dialog Base - Remove from Sim Callback
|
||||
// Purpose : Destroy Resources.
|
||||
//-----------------------------------------------------------------------------
|
||||
function FileDialogBase::onRemove( %this )
|
||||
{
|
||||
|
||||
// Remove FileExtensions Group
|
||||
if ( isObject( %this.FileExtensions ) )
|
||||
%this.FileExtensions.delete();
|
||||
|
||||
// Remove Returned Files Group
|
||||
if( isObject( %this.ReturnFiles ) )
|
||||
%this.ReturnFiles.delete();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// File Dialog Base - Show on Screen Callback
|
||||
// Purpose : Destroy Resources.
|
||||
//-----------------------------------------------------------------------------
|
||||
function FileDialogBase::onWake( %this )
|
||||
{
|
||||
// Necessary
|
||||
%dirTree = %this.findObjectByInternalName("DirectoryTree", true);
|
||||
%fileList = %this.findObjectByInternalName("FileList", true);
|
||||
%filterList = %this.findObjectByInternalName("FilterList", true);
|
||||
%cancelButton = %this.findObjectByInternalName("CancelButton", true);
|
||||
%okButton = %this.findObjectByInternalName("OkButton", true);
|
||||
|
||||
// Optional
|
||||
%fileName = %this.findObjectByInternalName("FileName", true);
|
||||
|
||||
// Check for functionality Components.
|
||||
if( !isObject( %dirTree ) || !isObject( %fileList ) || !isObject( %filterList ) )
|
||||
{
|
||||
error("FileDialogBase::onWake - Unable to find NECESSARY child controls.");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for button components.
|
||||
if( !isObject( %cancelButton ) || !isObject( %okButton ) )
|
||||
{
|
||||
error("FileDialogBase::onWake - Unable to find accept and cancel buttons!");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Tag controls so that they can navigate our dialog.
|
||||
%dirTree.parent = %this;
|
||||
%fileList.parent = %this;
|
||||
%filterList.parent = %this;
|
||||
%okButton.parent = %this;
|
||||
%cancelButton.parent = %this;
|
||||
|
||||
// Tag optionals
|
||||
if( isObject( %fileName ) )
|
||||
%fileName.parent = %this;
|
||||
|
||||
// Finally, make sure our ReturnFiles group is empty.
|
||||
if( isObject( %this.ReturnFiles ) )
|
||||
%this.ReturnFiles.delete();
|
||||
|
||||
%this.ReturnFiles = new SimGroup();
|
||||
%this.add( %this.ReturnFiles );
|
||||
|
||||
// If no filters
|
||||
if( %this.GetFilterCount() == 0 )
|
||||
%this.addfilter("*.*","All Files");
|
||||
|
||||
%this.PopulateFilters();
|
||||
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// File Dialog Base - Add a file extension filter to the list
|
||||
//-----------------------------------------------------------------------------
|
||||
function FileDialogBase::AddFilter( %this, %extension, %caption )
|
||||
{
|
||||
if( !isObject( %this.FileExtensions ) )
|
||||
{
|
||||
error("OpenFileDialog::AddFilter - FileExtensions Group does not exist!");
|
||||
return false;
|
||||
}
|
||||
|
||||
%filter = new ScriptObject()
|
||||
{
|
||||
extension = %extension;
|
||||
caption = %caption;
|
||||
};
|
||||
|
||||
// Add to filter list
|
||||
%this.FileExtensions.add( %filter );
|
||||
|
||||
return %filter;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// File Dialog Base - Clear filters by file extension
|
||||
//-----------------------------------------------------------------------------
|
||||
function FileDialogBase::ClearFilters( %this )
|
||||
{
|
||||
if( isObject( %this.FileExtensions ) )
|
||||
%this.FileExtensions.delete();
|
||||
|
||||
%this.FileExtensions = new SimGroup();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// File Dialog Base - Get number of filters
|
||||
//-----------------------------------------------------------------------------
|
||||
function FileDialogBase::GetFilterCount( %this )
|
||||
{
|
||||
if( !isObject( %this.FileExtensions ) )
|
||||
return 0;
|
||||
|
||||
// Return Count
|
||||
return %this.FileExtensions.getCount();
|
||||
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// File Dialog Base - Populate dropdown with filter options
|
||||
//-----------------------------------------------------------------------------
|
||||
function FileDialogBase::PopulateFilters( %this )
|
||||
{
|
||||
%fileExtensions = %this.FileExtensions;
|
||||
if( !isObject( %fileExtensions ) )
|
||||
{
|
||||
error("OpenFileDialog::PopulateFilters - FileExtensions Group does not exist!");
|
||||
return false;
|
||||
}
|
||||
|
||||
%filterList = %this.findObjectByInternalName("FilterList", true);
|
||||
if( !isObject( %filterList ) )
|
||||
{
|
||||
error("FileDialogBase::PopulateFilters - Filter List Dropdown not found!");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Clear filter list
|
||||
%filterList.clear();
|
||||
|
||||
// Populate List
|
||||
for( %i = 0; %i < %fileExtensions.getCount(); %i++ )
|
||||
{
|
||||
// Fetch Filter Script Object
|
||||
%filter = %fileExtensions.getObject( %i );
|
||||
|
||||
// Add item to list
|
||||
%filterList.add( %filter.Caption SPC "(" SPC %filter.Extension SPC ")", %filter.getID() );
|
||||
}
|
||||
|
||||
// Set First Item to Selected.
|
||||
%filterList.setFirstSelected();
|
||||
|
||||
|
||||
}
|
||||
|
||||
function FileDialogOkButton::onClick( %this )
|
||||
{
|
||||
if( !isObject( %this.parent ) )
|
||||
{
|
||||
error("FileDialogBase->FileDialogOkButton::onClick - Unable to find proper parent control! Functionality Compromised!");
|
||||
return;
|
||||
}
|
||||
|
||||
%dirTree = %this.parent.findObjectByInternalName("DirectoryTree", true);
|
||||
%fileList = %this.parent.findObjectByInternalName("FileList", true);
|
||||
%filterList = %this.parent.findObjectByInternalName("FilterList", true);
|
||||
|
||||
// Check for functionality Components.
|
||||
if( !isObject( %dirTree ) || !isObject( %fileList ) || !isObject( %filterList ) )
|
||||
{
|
||||
error("FileDialogOkButton::onClick - Unable to find NECESSARY sibling controls.");
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Fetch Path
|
||||
//
|
||||
%path = %dirTree.getSelectedPath();
|
||||
|
||||
//
|
||||
// Compose File Name
|
||||
//
|
||||
%fileNameCtrl = %this.parent.findObjectByInternalName("FileName", true);
|
||||
|
||||
// FileName TextEdit?
|
||||
if( isObject( %fileNameCtrl ) )
|
||||
{
|
||||
// Get FileName from TextEdit
|
||||
%fileName = %fileNameCtrl.getText();
|
||||
|
||||
// Get Filter Object from dropdown list
|
||||
%filterObj = %filterList.getSelected();
|
||||
|
||||
// Validate File Extension
|
||||
if( fileExt( %fileName ) $= "" && isObject( %filterObj ) )
|
||||
{
|
||||
// Append Extension to FileName
|
||||
%fileName = %fileName @ fileExt( %filterObj.Extension );
|
||||
}
|
||||
}
|
||||
else
|
||||
%fileName = %fileList.getSelectedFile();
|
||||
|
||||
//
|
||||
// Build Full Path
|
||||
//
|
||||
%fullPath = %path @ "/" @ %fileName;
|
||||
|
||||
Canvas.popDialog( %this.parent );
|
||||
|
||||
// Callback
|
||||
eval( %this.parent.SuccessCallback @ "(\"" @ %fullPath @"\");" );
|
||||
|
||||
%parent.SuccessCallback = 0;
|
||||
|
||||
//error("Ok");
|
||||
|
||||
}
|
||||
|
||||
function FileDialogCancelButton::onClick( %this )
|
||||
{
|
||||
Canvas.popDialog( %this.parent );
|
||||
//error("Cancel");
|
||||
}
|
||||
|
||||
|
||||
function FileDialogDirectoryTree::onSelectPath( %this, %path )
|
||||
{
|
||||
%fileList = %this.parent.findObjectByInternalName("FileList", true);
|
||||
%filterList = %this.parent.findObjectByInternalName("FilterList", true);
|
||||
|
||||
|
||||
%filterObj = %filterList.getSelected();
|
||||
if( !isObject( %filterObj ) )
|
||||
%filter = "*.*";
|
||||
else
|
||||
%filter = %filterObj.Extension;
|
||||
|
||||
%fileList.setPath( %path, %filter );
|
||||
}
|
||||
|
||||
|
||||
function FileDialogFilterList::onSelect( %this, %id, %text )
|
||||
{
|
||||
if( !isObject( %id ) )
|
||||
{
|
||||
error("FileDialogFilterList::onSelect - Invalid Filter Object!");
|
||||
return;
|
||||
}
|
||||
|
||||
%fileList = %this.parent.findObjectByInternalName("FileList", true);
|
||||
|
||||
%fileList.setFilter( %id.Extension );
|
||||
|
||||
}
|
||||
|
||||
|
||||
function FileDialogFileList::onDoubleClick( %this )
|
||||
{
|
||||
//error("DoubleClick");
|
||||
%okButton = %this.parent.findObjectByInternalName("OkButton", true);
|
||||
|
||||
if( isObject( %okButton ) )
|
||||
%okButton.performClick();
|
||||
}
|
||||
|
||||
function FileDialogFileList::onSelect( %this, %listid, %file )
|
||||
{
|
||||
%fileNameCtrl = %this.parent.findObjectByInternalName("FileName", true);
|
||||
|
||||
// FileName TextEdit?
|
||||
if( !isObject( %fileNameCtrl ) )
|
||||
return;
|
||||
|
||||
// Update our file name to the one selected
|
||||
%fileNameCtrl.setText( %file );
|
||||
}
|
||||
|
||||
function FileDialogFileName::onReturn( %this )
|
||||
{
|
||||
//error("onReturn");
|
||||
%okButton = %this.parent.findObjectByInternalName("OkButton", true);
|
||||
|
||||
if( isObject( %okButton ) )
|
||||
%okButton.performClick();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue