tge/example/common/ui/ConsoleDlg.gui
2017-04-17 06:17:10 -06:00

219 lines
6.1 KiB
Plaintext
Executable File

//--- OBJECT WRITE BEGIN ---
new GuiControl(ConsoleDlg) {
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "640 480";
minExtent = "8 2";
visible = "1";
new GuiWindowCtrl(ConsoleDlgWindow) {
profile = "GuiWindowProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "500 300";
minExtent = "8 2";
visible = "1";
text = "Console";
maxLength = "255";
resizeWidth = "1";
resizeHeight = "1";
canMove = "1";
canClose = "1";
canMinimize = "0";
canMaximize = "1";
MinSize = "500 300";
closeCommand = "ToggleConsole(1);";
new GuiScrollCtrl() {
profile = "GuiScrollProfile";
horizSizing = "width";
vertSizing = "height";
position = "3 36";
extent = "494 246";
minExtent = "8 2";
visible = "1";
willFirstRespond = "1";
hScrollBar = "alwaysOn";
vScrollBar = "alwaysOn";
constantThumbHeight = "0";
childMargin = "0 0";
resizeWidth = "1";
resizeHeight = "1";
new GuiConsole() {
profile = "GuiConsoleProfile";
position = "0 0";
};
};
new GuiConsoleEditCtrl(ConsoleEntry) {
profile = "GuiTextEditProfile";
horizSizing = "width";
vertSizing = "top";
position = "3 278";
extent = "494 18";
minExtent = "8 2";
visible = "1";
altCommand = "ConsoleEntry::eval();";
maxLength = "255";
historySize = "20";
password = "0";
tabComplete = "0";
sinkAllKeyEvents = "1";
useSiblingScroller = "1";
};
new GuiPaneControl(ConsoleErrorPane) {
profile = "GuiPaneProfile";
horizSizing = "width";
vertSizing = "bottom";
position = "3 22";
extent = "474 85";
minExtent = "474 10";
visible = "1";
caption = "No script compilation errors occured.";
collapsable = "1";
barBehindText = "1";
new GuiScrollCtrl(ConsoleErrorScroller) {
profile = "GuiScrollProfile";
horizSizing = "width";
vertSizing = "bottom";
position = "0 14";
extent = "474 71";
minExtent = "8 2";
visible = "0";
willFirstRespond = "0";
hScrollBar = "alwaysOff";
vScrollBar = "alwaysOn";
constantThumbHeight = "1";
childMargin = "0 0";
new GuiMLTextCtrl(ConsoleErrorDisplay) {
profile = "GuiMLTextProfile";
horizSizing = "width";
vertSizing = "bottom";
position = "2 2";
extent = "474 14";
minExtent = "8 2";
visible = "1";
lineSpacing = "2";
allowColorChars = "0";
maxChars = "-1";
};
};
};
};
};
//--- OBJECT WRITE END ---
function ConsoleDlg::onWake()
{
%position = $pref::Console::position;
if(%position $= "")
%position = ConsoleDlgWindow.position;
%extent = $pref::Console::extent;
if(getWord(%extent, 0) < getWord(ConsoleDlgWindow.minExtent, 0) ||
getWord(%extent, 1) < getWord(ConsoleDlgWindow.minExtent, 1))
%extent = ConsoleDlgWindow.extent;
ConsoleDlgWindow.resize(getWord(%position, 0), getWord(%position, 1),
getWord(%extent, 0), getWord(%extent, 1));
}
function ConsoleDlg::onSleep()
{
$pref::Console::position = ConsoleDlgWindow.position;
$pref::Console::extent = ConsoleDlgWindow.extent;
}
function ConsoleEntry::eval()
{
%text = trim(ConsoleEntry.getValue());
if(strpos(%text, "(") == -1)
{
if(strpos(%text, "=") == -1 && strpos(%text, " ") == -1)
{
if(strpos(%text, "{") == -1 && strpos(%text, "}") == -1)
{
%text = %text @ "()";
}
}
}
%pos = strlen(%text) - 1;
if(strpos(%text, ";", %pos) == -1 && strpos(%text, "}") == -1)
{
%text = %text @ ";";
}
echo("==>" @ %text);
eval(%text);
ConsoleEntry.setValue("");
// Check for any pending errors to display
updateConsoleErrorWindow();
}
function ToggleConsole(%make)
{
if (%make)
{
if (ConsoleDlg.isAwake())
{
// Deactivate the console.
if ( $enableDirectInput )
activateKeyboard();
Canvas.popDialog(ConsoleDlg);
}
else
{
if ( $enableDirectInput )
deactivateKeyboard();
Canvas.pushDialog(ConsoleDlg, 99);
// Check for any pending errors to display
updateConsoleErrorWindow();
// Collapse the errors if this is the first time...
if(ConsoleErrorPane._initialized == false)
ConsoleErrorPane.setCollapsed(true);
}
}
}
// The first hash is 1000...
$ScriptErrorHashDisplayed = 999;
function updateConsoleErrorWindow()
{
if($ScriptErrorHash != $ScriptErrorHashDisplayed && $ScriptErrorHash != 0)
{
// Hash was different so there must be a new error. Update the display!
%oldText = ConsoleErrorDisplay.getText();
if(%oldText !$= "")
ConsoleErrorDisplay.setText(%oldText @ "\n" @ $ScriptError);
else
ConsoleErrorDisplay.setText($ScriptError);
ConsoleErrorDisplay.setCursorPosition(100000); // Hacka hacka hacka
ConsoleErrorDisplay.scrollToBottom();
// Update the pane caption.
$ConsoleErrorCount += $ScriptErrorHash - $ScriptErrorHashDisplayed;
ConsoleErrorPane.caption = $ConsoleErrorCount @ " script compilation error(s) have occured!";
// Indicate we dealt with this...
$ScriptErrorHashDisplayed = $ScriptErrorHash;
$ScriptError = "";
}
}