Browse Source

Asset Admin: Now with a Frame Set!

This adds the Frame Set to the Asset Admin. It also fixes a few bugs with centering.
Peter Robinson 2 years ago
parent
commit
359c92a5f1

+ 118 - 26
editor/AssetAdmin/AssetAdmin.cs

@@ -38,25 +38,79 @@ function AssetAdmin::create(%this)
 	exec("./ImageEditor/exec.cs");
 
 	%this.guiPage = EditorCore.RegisterEditor("Asset Manager", %this);
-	%this.guiPage.add(%this.buildAssetWindow());
-	%this.guiPage.add(%this.buildAudioPlayButton());
-	%this.guiPage.add(%this.buildLibrary());
-	%this.guiPage.add(%this.buildInspector());
+	%this.content = %this.createFrameSet();
+	%this.buildAssetWindow();
+	%this.buildAudioPlayButton();
+	%this.buildInspector();
+	%this.buildLibrary();
 
 	EditorCore.FinishRegistration(%this.guiPage);
 
 	%this.isOpen = false;
 }
 
+function AssetAdmin::createFrameSet(%this)
+{
+	%content = new GuiFrameSetCtrl() {
+		HorizSizing = "width";
+        VertSizing = "height";
+        Position = "0 0";
+        Extent = %this.guiPage.getExtent();
+        DividerThickness = 6;
+	};
+    ThemeManager.setProfile(%content, "frameSetProfile");
+    ThemeManager.setProfile(%content, "dropButtonProfile", "dropButtonProfile");
+    ThemeManager.setProfile(%content, "frameSetTabBookProfile", "tabBookProfile");
+    ThemeManager.setProfile(%content, "frameSetTabProfile", "tabProfile");
+    ThemeManager.setProfile(%content, "frameSetTabPageProfile", "tabPageProfile");
+    %this.guiPage.add(%content);
+
+    %idList = %content.createHorizontalSplit(1);
+    %leftID = getWord(%idList, 0);
+    %rightID = getWord(%idList, 1);
+    %content.anchorFrame(%rightID);
+    %content.setFrameSize(%rightID, 324);
+    
+    %ids = %content.createVerticalSplit(%leftID);
+    %centerFrameID = getWord(%ids, 0);
+    %inspectorFrameID = getWord(%ids, 1);
+	%content.anchorFrame(%inspectorFrameID);
+    %content.setFrameSize(%inspectorFrameID, 360);
+
+	return %content;
+}
+
 function AssetAdmin::buildLibrary(%this)
 {
+	%this.libWindow = new GuiWindowCtrl()
+    {
+        HorizSizing = "right";
+        VertSizing = "bottom";
+        Position = "0 0";
+        Extent = "330 380";
+        MinExtent = "100 100";
+        text = "Asset Library";
+        canMove = true;
+        canClose = false;
+        canMinimize = true;
+        canMaximize = false;
+        resizeWidth = true;
+        resizeHeight = true;
+    };
+    ThemeManager.setProfile(%this.libWindow, "windowProfile");
+    ThemeManager.setProfile(%this.libWindow, "windowContentProfile", "ContentProfile");
+    ThemeManager.setProfile(%this.libWindow, "windowButtonProfile", "CloseButtonProfile");
+    ThemeManager.setProfile(%this.libWindow, "windowButtonProfile", "MinButtonProfile");
+    ThemeManager.setProfile(%this.libWindow, "windowButtonProfile", "MaxButtonProfile");
+    %this.content.add(%this.libWindow);
+
 	%this.libScroller = new GuiScrollCtrl()
 	{
-		HorizSizing="left";
-		VertSizing="height";
-		Position="700 0";
-		Extent="324 768";
-		MinExtent="162 384";
+        HorizSizing = "width";
+        VertSizing = "height";
+		Position="0 0";
+		Extent="324 356";
+		MinExtent="0 0";
 		hScrollBar="dynamic";
 		vScrollBar="alwaysOn";
 		constantThumbHeight="0";
@@ -67,11 +121,12 @@ function AssetAdmin::buildLibrary(%this)
 	ThemeManager.setProfile(%this.libScroller, "scrollingPanelThumbProfile", ThumbProfile);
 	ThemeManager.setProfile(%this.libScroller, "scrollingPanelTrackProfile", TrackProfile);
 	ThemeManager.setProfile(%this.libScroller, "scrollingPanelArrowProfile", ArrowProfile);
+	%this.libWindow.add(%this.libScroller);
 
 	%this.dictionaryList = new GuiChainCtrl()
 	{
-		HorizSizing="right";
-		VertSizing="bottom";
+		HorizSizing="width";
+		VertSizing="height";
 		Position="0 0";
 		Extent="310 768";
 		MinExtent="220 200";
@@ -85,8 +140,6 @@ function AssetAdmin::buildLibrary(%this)
 	%this.dictionaryList.add(%this.buildDictionary("Fonts", "FontAsset"));
 	%this.dictionaryList.add(%this.buildDictionary("Audio", "AudioAsset"));
 	//%this.dictionaryList.add(%this.buildDictionary("Spines", "SpineAsset"));
-
-	return %this.libScroller;
 }
 
 function AssetAdmin::buildDictionary(%this, %title, %type)
@@ -96,10 +149,10 @@ function AssetAdmin::buildDictionary(%this, %title, %type)
 		Class = AssetDictionary;
 		Text=%title;
 		command="";
-		HorizSizing="right";
+		HorizSizing="width";
 		VertSizing="bottom";
 		Position="0 0";
-		Extent="310 22";
+		Extent="306 22";
 		MinExtent="80 22";
 		Type = %type;
 	};
@@ -111,22 +164,61 @@ function AssetAdmin::buildDictionary(%this, %title, %type)
 
 function AssetAdmin::buildInspector(%this)
 {
+	%this.inspectorWindow = new GuiWindowCtrl()
+    {
+        HorizSizing = "right";
+        VertSizing = "bottom";
+        Position = "0 0";
+        Extent = "706 380";
+        MinExtent = "100 100";
+        text = "Asset Inspector";
+        canMove = true;
+        canClose = false;
+        canMinimize = true;
+        canMaximize = false;
+        resizeWidth = true;
+        resizeHeight = true;
+    };
+    ThemeManager.setProfile(%this.inspectorWindow, "windowProfile");
+    ThemeManager.setProfile(%this.inspectorWindow, "windowContentProfile", "ContentProfile");
+    ThemeManager.setProfile(%this.inspectorWindow, "windowButtonProfile", "CloseButtonProfile");
+    ThemeManager.setProfile(%this.inspectorWindow, "windowButtonProfile", "MinButtonProfile");
+    ThemeManager.setProfile(%this.inspectorWindow, "windowButtonProfile", "MaxButtonProfile");
+    %this.content.add(%this.inspectorWindow);
+
 	%this.inspector = new GuiControl()
 	{
 		class = "AssetInspector";
-		HorizSizing="width";
-		VertSizing="top";
-		Position="0 444";
-		Extent="700 324";
+        HorizSizing = "width";
+        VertSizing = "height";
+		Position="0 0";
+		Extent="700 370";
 		MinExtent="350 222";
 	};
 	ThemeManager.setProfile(%this.inspector, "overlayProfile");
 
-	return %this.inspector;
+	%this.inspectorWindow.add(%this.inspector);
 }
 
 function AssetAdmin::buildAssetWindow(%this)
 {
+	%this.background = new GuiSpriteCtrl() {
+		HorizSizing = "right";
+        VertSizing = "bottom";
+        Position = "0 0";
+        Extent = "100 100";
+		imageColor = "255 255 255 255";
+        Image = "EditorCore:editorGrid";
+		singleFrameBitmap = "1";
+		tileImage = "1";
+		positionOffset = "0 0";
+		imageSize = "128 128";
+		fullSize = "0";
+		constrainProportions = "1";
+	};
+    ThemeManager.setProfile(%this.background, "emptyProfile");
+    %this.content.add(%this.background);
+
 	%this.assetScene = new Scene();
 	%this.assetScene.setScenePause(true);
 
@@ -135,9 +227,9 @@ function AssetAdmin::buildAssetWindow(%this)
 		class = AssetWindow;
 		profile = ThemeManager.activeTheme.overlayProfile;
 		position = "0 0";
-		extent = "700 444";
-		HorizSizing="width";
-		VertSizing="height";
+		extent = %this.background.extent;
+        HorizSizing = "width";
+        VertSizing = "height";
 		minExtent = "0 0";
 		cameraPosition = "0 0";
 		cameraSize = "175 111";
@@ -156,7 +248,7 @@ function AssetAdmin::buildAssetWindow(%this)
 	%this.assetWindow.setShowScrollBar(true);
 	%this.assetWindow.setMouseWheelScrolls(false);
 
-	return %this.assetWindow;
+    %this.background.add(%this.assetWindow);
 }
 
 function AssetAdmin::buildAudioPlayButton(%this)
@@ -164,7 +256,7 @@ function AssetAdmin::buildAudioPlayButton(%this)
 	%this.audioPlayButtonContainer = new GuiControl()
 	{
 		position = "0 0";
-		extent = "700 444";
+		extent = %this.background.extent;
 		HorizSizing="width";
 		VertSizing="height";
 		Visible="0";
@@ -182,7 +274,7 @@ function AssetAdmin::buildAudioPlayButton(%this)
 	ThemeManager.setProfile(%this.audioPlayButton, "buttonProfile");
 	%this.audioPlayButtonContainer.add(%this.audioPlayButton);
 
-	return %this.audioPlayButtonContainer;
+	%this.background.add(%this.audioPlayButtonContainer);
 }
 
 function AssetAdmin::destroy(%this)

+ 4 - 0
editor/AssetAdmin/AssetDictionary.cs

@@ -27,6 +27,8 @@ function AssetDictionary::onAdd(%this)
 		class = "NewAssetButton";
 		Position = "5 27";
 		Extent = "300 30";
+		HorizSizing = "width";
+		VertSizing = "height";
 		Text = "New";
 	};
 	ThemeManager.setProfile(%this.newButton, "buttonProfile");
@@ -36,6 +38,8 @@ function AssetDictionary::onAdd(%this)
 	{
 		Position="0 62";
 		Extent = "310 50";
+		HorizSizing = "width";
+		VertSizing = "height";
 		CellSizeX = 60;
 		CellSizeY = 60;
 		CellModeX = variable;

+ 6 - 7
editor/AssetAdmin/AssetInspector.cs

@@ -25,10 +25,10 @@ function AssetInspector::onAdd(%this)
 	%this.titlebar = new GuiControl()
 	{
 		HorizSizing="width";
-		VertSizing="top";
+		VertSizing="bottom";
 		Position="0 0";
 		Extent="700 34";
-		MinExtent="350 34";
+		MinExtent="0 34";
 		Text = "";
 	};
 	ThemeManager.setProfile(%this.titlebar, "panelProfile");
@@ -88,8 +88,7 @@ function AssetInspector::onAdd(%this)
 		HorizSizing = width;
 		VertSizing = height;
 		Position = "0 34";
-		Extent = "700 290";
-		MinExtent="350 290";
+		Extent = "700 320";
 		TabPosition = top;
 		Visible = false;
 	};
@@ -128,7 +127,7 @@ function AssetInspector::createTabPage(%this, %name, %class, %superClass)
 		HorizSizing = width;
 		VertSizing = height;
 		Position = "0 0";
-		Extent = "700 290";
+		Extent = "700 320";
 		Text = %name;
 	};
 	ThemeManager.setProfile(%page, "tabPageProfile");
@@ -143,7 +142,7 @@ function AssetInspector::createScroller(%this)
 		HorizSizing="width";
 		VertSizing="height";
 		Position="0 0";
-		Extent="700 290";
+		Extent="700 320";
 		hScrollBar="alwaysOff";
 		vScrollBar="alwaysOn";
 		constantThumbHeight="0";
@@ -165,7 +164,7 @@ function AssetInspector::createInspector(%this)
 		HorizSizing="width";
 		VertSizing="height";
 		Position="0 0";
-		Extent="686 290";
+		Extent="686 320";
 		FieldCellSize="300 40";
 		ControlOffset="10 18";
 		ConstantThumbHeight=false;

+ 3 - 3
editor/EditorCore/EditorIconButton.cs

@@ -13,7 +13,7 @@ function EditorIconButton::onAdd(%this)
 		constrainProportions = "1";
 		fullSize = "0";
 		Image = "EditorCore:EditorIcons16";
-		ImageSize = "18 18";
+		ImageSize = "16 16";
 		ImageColor = ThemeManager.activeTheme.iconButtonProfile.FontColor;
 		Frame = %this.frame;
 		Tooltip = %this.Tooltip;
@@ -32,13 +32,13 @@ function EditorIconButton::onAdd(%this)
 function EditorIconButton::onTouchEnter(%this)
 {
 	%this.icon.fadeTo(ThemeManager.activeTheme.iconButtonProfile.fontColorHL, 200, "EaseInOut");
-	%this.icon.growTo("20 20", 200, "EaseInOut");
+	%this.icon.growTo("18 18", 200, "EaseInOut");
 }
 
 function EditorIconButton::onTouchLeave(%this)
 {
 	%this.icon.fadeTo(ThemeManager.activeTheme.iconButtonProfile.fontColor, 200, "EaseInOut");
-	%this.icon.growTo("18 18", 200, "EaseInOut");
+	%this.icon.growTo("16 16", 200, "EaseInOut");
 }
 
 function EditorIconButton::onTouchDown(%this)

+ 4 - 0
editor/EditorCore/images/editorGrid.asset.taml

@@ -0,0 +1,4 @@
+<ImageAsset
+    AssetName="editorGrid"
+    ImageFile="editorGrid.png"
+	AssetInternal="1" />

BIN
editor/EditorCore/images/editorGrid.png


+ 39 - 30
editor/GuiEditor/GuiEditor.cs

@@ -35,35 +35,7 @@ function GuiEditor::create( %this )
 
 	%this.guiPage = EditorCore.RegisterEditor("Gui Editor", %this);
 
-    %this.content = new GuiFrameSetCtrl() {
-		HorizSizing = "width";
-        VertSizing = "height";
-        Position = "0 0";
-        Extent = %this.guiPage.getExtent();
-        DividerThickness = 6;
-	};
-    ThemeManager.setProfile(%this.content, "frameSetProfile");
-    ThemeManager.setProfile(%this.content, "dropButtonProfile", "dropButtonProfile");
-    ThemeManager.setProfile(%this.content, "frameSetTabBookProfile", "tabBookProfile");
-    ThemeManager.setProfile(%this.content, "frameSetTabProfile", "tabProfile");
-    ThemeManager.setProfile(%this.content, "frameSetTabPageProfile", "tabPageProfile");
-    %this.guiPage.add(%this.content);
-
-    %idList = %this.content.createHorizontalSplit(1);
-    %leftID = getWord(%idList, 0);
-    %rightID = getWord(%idList, 1);
-    %this.content.anchorFrame(%rightID);
-    %this.content.setFrameSize(%rightID, 300);
-    
-    %ids = %this.content.createHorizontalSplit(%leftID);
-    %inspectorFrameID = getWord(%ids, 0);
-    %centerFrameID = getWord(%ids, 1);
-    %this.content.setFrameSize(%inspectorFrameID, 360);
-    
-    %ids = %this.content.createVerticalSplit(%rightID);
-    %toolFrameID = getWord(%ids, 0);
-    %explorerFrameID = getWord(%ids, 1);
-    %this.content.setFrameSize(%toolFrameID, 380);
+    %this.content = %this.createFrameSet();
 
     %this.brain = new GuiEditCtrl()
     {
@@ -105,7 +77,7 @@ function GuiEditor::create( %this )
         Position = "0 0";
         Extent = "100 100";
 		imageColor = "255 255 255 255";
-        bitmap = "./images/gridTiny2";
+        Image = "EditorCore:editorGrid";
 		singleFrameBitmap = "1";
 		tileImage = "1";
 		positionOffset = "0 0";
@@ -210,6 +182,43 @@ function GuiEditor::create( %this )
     EditorCore.FinishRegistration(%this.guiPage);
 }
 
+
+
+function GuiEditor::createFrameSet(%this)
+{
+	%content = new GuiFrameSetCtrl() {
+		HorizSizing = "width";
+        VertSizing = "height";
+        Position = "0 0";
+        Extent = %this.guiPage.getExtent();
+        DividerThickness = 6;
+	};
+    ThemeManager.setProfile(%content, "frameSetProfile");
+    ThemeManager.setProfile(%content, "dropButtonProfile", "dropButtonProfile");
+    ThemeManager.setProfile(%content, "frameSetTabBookProfile", "tabBookProfile");
+    ThemeManager.setProfile(%content, "frameSetTabProfile", "tabProfile");
+    ThemeManager.setProfile(%content, "frameSetTabPageProfile", "tabPageProfile");
+    %this.guiPage.add(%content);
+
+    %idList = %content.createHorizontalSplit(1);
+    %leftID = getWord(%idList, 0);
+    %rightID = getWord(%idList, 1);
+    %content.anchorFrame(%rightID);
+    %content.setFrameSize(%rightID, 300);
+    
+    %ids = %content.createHorizontalSplit(%leftID);
+    %inspectorFrameID = getWord(%ids, 0);
+    %centerFrameID = getWord(%ids, 1);
+    %content.setFrameSize(%inspectorFrameID, 360);
+    
+    %ids = %content.createVerticalSplit(%rightID);
+    %toolFrameID = getWord(%ids, 0);
+    %explorerFrameID = getWord(%ids, 1);
+    %content.setFrameSize(%toolFrameID, 380);
+
+    return %content;
+}
+
 //-----------------------------------------------------------------------------
 
 function GuiEditor::destroy( %this )

BIN
editor/GuiEditor/images/gridTiny2.PNG


+ 5 - 1
engine/source/gui/buttons/guiButtonCtrl.cc

@@ -40,6 +40,9 @@ GuiButtonCtrl::GuiButtonCtrl()
 	mBounds.extent.set(140, 30);
 	mText = StringTable->insert("Button");
 	mTextID = StringTable->EmptyString;
+	mProfile = NULL;
+
+	setField("profile", "GuiButtonProfile");
 }
 
 void GuiButtonCtrl::initPersistFields()
@@ -285,7 +288,8 @@ void GuiButtonCtrl::onRender(Point2I offset, const RectI& updateRect)
 	renderText(contentRect.point, contentRect.extent, mText, mProfile);
 
 	//Render the childen
-	renderChildControls(offset, contentRect, updateRect);
+	if(size() > 0)
+		renderChildControls(offset, contentRect, updateRect);
 }
 
 void GuiButtonCtrl::setScriptValue(const char *value)

+ 8 - 3
engine/source/gui/guiControl.cc

@@ -416,15 +416,16 @@ void GuiControl::resize(const Point2I &newPosition, const Point2I &newExtent)
 	Point2I oldPosition = mBounds.point;
     Point2I actualNewPosition = Point2I(newPosition);
     GuiControl* parent = getParent();
-    if (parent)
+    if (parent && parent->mProfile)
     {
+		Point2I parentInnerExtent = parent->getInnerRect().extent;
         if (mHorizSizing == horizResizeCenter)
         {
-            actualNewPosition.x = (parent->mBounds.extent.x - actualNewExtent.x) / 2;
+            actualNewPosition.x = (parentInnerExtent.x - actualNewExtent.x) / 2;
         }
         if (mVertSizing == vertResizeCenter)
         {
-            actualNewPosition.y = (parent->mBounds.extent.y - actualNewExtent.y) / 2;
+            actualNewPosition.y = (parentInnerExtent.y - actualNewExtent.y) / 2;
         }
     }
 
@@ -736,6 +737,10 @@ RectI GuiControl::getInnerRect(Point2I& offset, GuiControlState currentState)
 
 RectI GuiControl::getInnerRect(Point2I &offset, Point2I &extent, GuiControlState currentState, GuiControlProfile *profile)
 {
+	if (!profile)
+	{
+		return mBounds;
+	}
 	//Get the border profiles
 	GuiBorderProfile *leftProfile = profile->getLeftBorder();
 	GuiBorderProfile *rightProfile = profile->getRightBorder();