mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-12 15:14:35 +00:00
Merge pull request #1168 from Azaezel/alpha41/guiAddGuis
add add dropdown to gui editor
This commit is contained in:
commit
ef5f60bf8d
4 changed files with 114 additions and 5 deletions
|
|
@ -2583,11 +2583,23 @@ function GuiEditor::onControlDropped(%this, %payload, %position)
|
||||||
%assetId = %payload.moduleName @ ":" @ %payload.assetName;
|
%assetId = %payload.moduleName @ ":" @ %payload.assetName;
|
||||||
%assetType = AssetDatabase.getAssetType(%assetId);
|
%assetType = AssetDatabase.getAssetType(%assetId);
|
||||||
|
|
||||||
if(%assetType $= "ImageAsset")
|
if(AssetBrowser.isMethod("on" @ %assetType @ "GUIEditorDropped"))
|
||||||
{
|
{
|
||||||
%cmd = "return new guiBitmapCtrl();";
|
%module = %payload.moduleName;
|
||||||
%ctrl = eval( %cmd );
|
%asset = %payload.assetName;
|
||||||
%ctrl.bitmap = %assetId;
|
%assetDef = AssetDatabase.acquireAsset(%module @ ":" @ %asset);
|
||||||
|
%buildCommand = AssetBrowser @ ".on" @ %assetType @ "GUIEditorDropped(" @ %assetDef @ ",\"" @ %pos @ "\");";
|
||||||
|
eval(%buildCommand);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//fallback example
|
||||||
|
if(%assetType $= "ImageAsset")
|
||||||
|
{
|
||||||
|
%cmd = "return new guiBitmapCtrl();";
|
||||||
|
%ctrl = eval( %cmd );
|
||||||
|
%ctrl.bitmap = %assetId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,17 @@ function AssetBrowser::onSoundAssetEditorDropped(%this, %assetDef, %position)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function AssetBrowser::onSoundAssetGUIEditorDropped(%this, %assetDef, %position)
|
||||||
|
{
|
||||||
|
%assetId = %assetDef.getAssetId();
|
||||||
|
%cmd = "new GuiAudioCtrl(){";
|
||||||
|
%cmd = %cmd @ "SoundAsset =\""@ %assetId @"\";";
|
||||||
|
%cmd = %cmd @ "position =\""@ %position @"\";";
|
||||||
|
%cmd = %cmd @ "};";
|
||||||
|
%ctrl = GuiEditCanvas.createObject(%cmd);
|
||||||
|
echo(%ctrl SPC "created");
|
||||||
|
}
|
||||||
|
|
||||||
function GuiInspectorTypeSoundAssetPtr::onControlDropped( %this, %payload, %position )
|
function GuiInspectorTypeSoundAssetPtr::onControlDropped( %this, %payload, %position )
|
||||||
{
|
{
|
||||||
Canvas.popDialog(EditorDragAndDropLayer);
|
Canvas.popDialog(EditorDragAndDropLayer);
|
||||||
|
|
|
||||||
|
|
@ -211,6 +211,8 @@ function GuiEditCanvas::onCreateMenu(%this)
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
%this.buildAddMenu();
|
||||||
|
|
||||||
// Workaround (for some reason it doesn't size to the width of the canvas)
|
// Workaround (for some reason it doesn't size to the width of the canvas)
|
||||||
// TODO: After a canvas resize it still messes up the width
|
// TODO: After a canvas resize it still messes up the width
|
||||||
%position = %this.menubar.position.x SPC %this.menubar.position.y;
|
%position = %this.menubar.position.x SPC %this.menubar.position.y;
|
||||||
|
|
@ -220,6 +222,88 @@ function GuiEditCanvas::onCreateMenu(%this)
|
||||||
%this.menuBar.attachToCanvas( Canvas, 0 );
|
%this.menuBar.attachToCanvas( Canvas, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function GuiEditCanvas::buildAddMenu(%this)
|
||||||
|
{
|
||||||
|
%addMenu = MenuBuilder::newMenu("Add");
|
||||||
|
|
||||||
|
%enumeratedClasses = enumerateConsoleClasses("GuiControl");
|
||||||
|
for(%c=0; %c < getFieldCount(%enumeratedClasses); %c++)
|
||||||
|
{
|
||||||
|
%class = getField(%enumeratedClasses, %c);
|
||||||
|
|
||||||
|
if( GuiEditor.isFilteredClass( %class )
|
||||||
|
|| !isMemberOfClass( %class, "GuiControl" ) )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
%category = getCategoryOfClass(%class);
|
||||||
|
|
||||||
|
if(%category $= "")
|
||||||
|
{
|
||||||
|
error("Attempted to fetch category of class " @ %class @ " but none were found.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
%parentMenu = %addMenu; //start at the top
|
||||||
|
for(%cat=0; %cat < getFieldCount(%category); %cat++)
|
||||||
|
{
|
||||||
|
%subCat = getField(%category, %cat);
|
||||||
|
%targetSubmenu = %parentMenu.findMenu(%subCat);
|
||||||
|
if(!isObject(%targetSubmenu))
|
||||||
|
{
|
||||||
|
%targetSubmenu = %parentMenu.newSubmenu(%subCat);
|
||||||
|
}
|
||||||
|
|
||||||
|
%parentMenu = %targetSubmenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
%buildfunc = "";
|
||||||
|
%class = %class;
|
||||||
|
%method = "build" @ %buildfunc;
|
||||||
|
if( !GuiEditCanvas.isMethod( %method ) )
|
||||||
|
%method = "build" @ %class;
|
||||||
|
|
||||||
|
if( !GuiEditCanvas.isMethod( %method ) )
|
||||||
|
%cmd = "return new " @ %class @ "();";
|
||||||
|
else
|
||||||
|
%cmd = "GuiEditCanvas." @ %method @ "();";
|
||||||
|
|
||||||
|
%createCmd = "GuiEditCanvas.newObjectCallback = \"GuiEditCanvas.onFinishCreateObject\"; GuiEditCanvas.createObject( \"" @ %cmd @ "\" );";
|
||||||
|
|
||||||
|
%targetSubmenu.newItem(%class, %createCmd, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
MenuBuilder::addMenuToMenubar(%this.menubar, %addMenu, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
function GuiEditCanvas::createObject( %this, %cmd )
|
||||||
|
{
|
||||||
|
if(startsWith(%cmd, "return "))
|
||||||
|
%objId = eval(%cmd);
|
||||||
|
else
|
||||||
|
%objId = eval("return " @ %cmd);
|
||||||
|
|
||||||
|
if( isObject( %objId ) )
|
||||||
|
%this.onFinishCreateObject( %objId );
|
||||||
|
|
||||||
|
return %objId;
|
||||||
|
}
|
||||||
|
|
||||||
|
function GuiEditCanvas::onFinishCreateObject( %this, %objId )
|
||||||
|
{
|
||||||
|
GuiEditor.getCurrentAddSet().add( %objId );
|
||||||
|
%this.onObjectCreated( %objId );
|
||||||
|
}
|
||||||
|
|
||||||
|
function GuiEditCanvas::onObjectCreated( %this, %objId )
|
||||||
|
{
|
||||||
|
// Can we submit an undo action?
|
||||||
|
if ( isObject( %objId ) )
|
||||||
|
GuiEditor.onAddNewCtrl( %objId );
|
||||||
|
|
||||||
|
GuiEditorTreeView.clearSelection();
|
||||||
|
GuiEditor.select(%objId);
|
||||||
|
}
|
||||||
|
|
||||||
$GUI_EDITOR_MENU_EDGESNAP_INDEX = 0;
|
$GUI_EDITOR_MENU_EDGESNAP_INDEX = 0;
|
||||||
$GUI_EDITOR_MENU_CENTERSNAP_INDEX = 1;
|
$GUI_EDITOR_MENU_CENTERSNAP_INDEX = 1;
|
||||||
$GUI_EDITOR_MENU_GUIDESNAP_INDEX = 3;
|
$GUI_EDITOR_MENU_GUIDESNAP_INDEX = 3;
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,8 @@ function UndoActionAddDelete::trashObjects(%this)
|
||||||
|
|
||||||
if( isObject( %this.tree ) )
|
if( isObject( %this.tree ) )
|
||||||
%this.tree.update();
|
%this.tree.update();
|
||||||
|
|
||||||
|
GuiEditor.clearSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
function UndoActionAddDelete::restoreObjects(%this)
|
function UndoActionAddDelete::restoreObjects(%this)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue