void OnGUI()
{
if(cmdEval == null) {
Init ();
}
bool didComplete = false;
bool ranCommand = false;
if (Event.current.isKey && Event.current.type == EventType.KeyDown) {
switch(Event.current.keyCode) {
case KeyCode.Return:
cmdEval.Eval();
ranCommand = true;
Event.current.Use();
break;
case KeyCode.Space:
if(Event.current.control) {
didComplete = cmdEval.AutocompleteBuffer();
}
break;
case KeyCode.UpArrow:
didComplete = cmdEval.UpHistory();
break;
case KeyCode.DownArrow:
didComplete = cmdEval.DownHistory();
break;
}
}
EditorGUILayout.BeginVertical();
if(ranCommand) {
scrollPos = new Vector2(0, float.MaxValue);
}
scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Width (position.width), GUILayout.Height (position.height - 30));
var oldFG = GUI.color;
var oldBG = GUI.backgroundColor;
GUI.color = cfg.foreground;
GUI.backgroundColor = cfg.background;
EditorGUILayout.TextArea(cmdEval.consoleText);
EditorGUILayout.EndScrollView();
cmdEval.commandText = GUILayout.TextField(cmdEval.commandText, GUILayout.Height (30));
GUI.color = oldFG;
GUI.backgroundColor = oldBG;
if(didComplete) {
TextEditor te = (TextEditor)GUIUtility.GetStateObject(typeof(TextEditor), GUIUtility.keyboardControl);
if (te != null) {
te.MoveCursorToPosition(new Vector2(5555, 5555));
}
}
EditorGUILayout.EndVertical();
}