using System.Collections.Generic; using BansheeEngine; namespace BansheeEditor { /// /// Renders an inspector for the resource. /// [CustomInspector(typeof (ScriptCode))] internal class ScriptCodeInspector : Inspector { private const int MAX_SHOWN_CHARACTERS = 3000; private GUILabel textLabel = new GUILabel("", EditorStyles.MultiLineLabel, GUIOption.FixedHeight(500)); private GUITexture textBg = new GUITexture(null, EditorStyles.ScrollAreaBg); private GUIToggleField isEditorField = new GUIToggleField(new LocEdString("Is editor script")); private string shownText = ""; /// protected internal override void Initialize() { ScriptCode scriptCode = InspectedObject as ScriptCode; if (scriptCode == null) return; isEditorField.OnChanged += x => { scriptCode.EditorScript = x; EditorApplication.SetDirty(scriptCode); }; GUIPanel textPanel = Layout.AddPanel(); GUILayout textLayoutY = textPanel.AddLayoutY(); textLayoutY.AddSpace(5); GUILayout textLayoutX = textLayoutY.AddLayoutX(); textLayoutX.AddSpace(5); textLayoutX.AddElement(textLabel); textLayoutX.AddSpace(5); textLayoutY.AddSpace(5); GUIPanel textBgPanel = textPanel.AddPanel(1); textBgPanel.AddElement(textBg); Layout.AddElement(isEditorField); } /// protected internal override void Refresh() { ScriptCode scriptCode = InspectedObject as ScriptCode; if (scriptCode == null) return; isEditorField.Value = scriptCode.EditorScript; string newText = scriptCode.Text; string newShownText = scriptCode.Text.Substring(0, MathEx.Min(newText.Length, MAX_SHOWN_CHARACTERS)); if (newShownText != shownText) { textLabel.SetContent(newShownText); shownText = newShownText; } } } }