From f2cbc48a9e704da8e86ed659437c1e338e212c50 Mon Sep 17 00:00:00 2001 From: Tedd Hansen Date: Sat, 6 Dec 2008 03:28:34 +0000 Subject: GUI for launching grids. Early version, but should work fine. Will execute all OpenSim services redirect their input/output/errors to the selected "GUI module". This version has following "GUI modules": * Windows Forms * Windows Service (doesn't work yet) * Console * TCP daemon This means that OpenSim can now run in a single console for those who want that. Console functionallity is not too rich yet, but code/framework is there... more to come. :) --- .../OpenSim.GridLaunch/GUI/WinForm/ucLogWindow.cs | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 OpenSim/Tools/OpenSim.GridLaunch/GUI/WinForm/ucLogWindow.cs (limited to 'OpenSim/Tools/OpenSim.GridLaunch/GUI/WinForm/ucLogWindow.cs') diff --git a/OpenSim/Tools/OpenSim.GridLaunch/GUI/WinForm/ucLogWindow.cs b/OpenSim/Tools/OpenSim.GridLaunch/GUI/WinForm/ucLogWindow.cs new file mode 100644 index 0000000..7b35c15 --- /dev/null +++ b/OpenSim/Tools/OpenSim.GridLaunch/GUI/WinForm/ucLogWindow.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Text; +using System.Windows.Forms; + +namespace OpenSim.GridLaunch.GUI.WinForm +{ + public partial class ucLogWindow : UserControl + { + // If text in window is more than this + private static readonly int logWindowMaxTextLength = 20000; + // Remove this much from start of it + private static int logWindowTrunlTextLength = 10000; + + public ucLogWindow() + { + if (logWindowMaxTextLength < logWindowTrunlTextLength) + logWindowTrunlTextLength = logWindowMaxTextLength / 2; + + InitializeComponent(); + } + + public delegate void textWriteDelegate(Color color, string LogText); + public void Write(Color color, string LogText) + { + // Check if we to pass task on to GUI thread + if (this.InvokeRequired) + { + this.Invoke(new textWriteDelegate(Write), color, LogText); + return; + } + // Append to window + try + { + if (!txtLog.IsDisposed) + txtLog.AppendText(LogText); + } catch { } + } + + private void txtLog_TextChanged(object sender, EventArgs e) + { + // Go to bottom of window + txtLog.ScrollToCaret(); + + // Make sure amount of text in window doesn't grow too big + if (txtLog.Text.Length > logWindowMaxTextLength) + txtLog.Text = txtLog.Text.Remove(0, logWindowTrunlTextLength); + } + + } +} -- cgit v1.1