Alter commit 3758306 to allow region name to be substituted within a region console prompt

This is to allow broader subsitution in the future.  Currently, the only substitions are \R (for region name) and \\ (for a single backslash)
e.g. "Region (\R) " is the current and continuing default prompt
This renames custom_prompt in [Startup] to ConsolePrompt
remove-scene-viewer
Justin Clark-Casey (justincc) 2011-11-10 22:56:13 +00:00
parent b990914ec4
commit 2d4ac6288d
3 changed files with 43 additions and 9 deletions

View File

@ -31,6 +31,7 @@ using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Timers;
using log4net;
using Nini.Config;
@ -56,7 +57,16 @@ namespace OpenSim
protected bool m_gui = false;
protected string m_consoleType = "local";
protected uint m_consolePort = 0;
protected string m_custom_prompt;
/// <summary>
/// Prompt to use for simulator command line.
/// </summary>
private string m_consolePrompt;
/// <summary>
/// Regex for parsing out special characters in the prompt.
/// </summary>
private Regex m_consolePromptRegex = new Regex(@"([^\\])\\(\w)", RegexOptions.Compiled);
private string m_timedScript = "disabled";
private Timer m_scriptTimer;
@ -111,7 +121,7 @@ namespace OpenSim
Util.FireAndForgetMethod = asyncCallMethod;
stpMaxThreads = startupConfig.GetInt("MaxPoolThreads", 15);
m_custom_prompt = startupConfig.GetString("custom_prompt", "Region");
m_consolePrompt = startupConfig.GetString("console_prompt", @"Region (\R) ");
}
if (Util.FireAndForgetMethod == FireAndForgetMethod.SmartThreadPool)
@ -835,7 +845,22 @@ namespace OpenSim
string regionName = (m_sceneManager.CurrentScene == null ? "root" : m_sceneManager.CurrentScene.RegionInfo.RegionName);
MainConsole.Instance.Output(String.Format("Currently selected region is {0}", regionName));
m_console.DefaultPrompt = String.Format("{0} ({1}) ", m_custom_prompt, regionName);
// m_log.DebugFormat("Original prompt is {0}", m_consolePrompt);
string prompt = m_consolePrompt;
// Replace "\R" with the region name
// Replace "\\" with "\"
prompt = m_consolePromptRegex.Replace(prompt, m =>
{
// m_log.DebugFormat("Matched {0}", m.Groups[2].Value);
if (m.Groups[2].Value == "R")
return m.Groups[1].Value + regionName;
else
return m.Groups[0].Value;
});
m_console.DefaultPrompt = prompt;
m_console.ConsoleScene = m_sceneManager.CurrentScene;
}

View File

@ -36,6 +36,14 @@
[Startup]
;# {ConsolePrompt} {} {ConsolePrompt} {} "Region (\R) "
;; Console prompt
;; Certain special characters can be used to customize the prompt
;; Currently, these are
;; \R - substitute region name
;; \\ - substitute \
; ConsolePrompt = "Region (\R) "
;# {save_crashes} {} {Save crashes to disk?} {true false} false
;; Set this to true if you want to log crashes to disk
;; this can be useful when submitting bug reports.
@ -230,12 +238,6 @@
;; by scripts have changed.
; DeleteScriptsOnStartup = true
;; Custom prompt
;; This value replaces the word "Region" in console prompt
;; (usualy "Region (regionName) # "
;; Useful only if you have to monitor serveral servers
; custom_prompt = "MyServer1"
[SMTP]
;; The SMTP server enabled the email module to send email to external
;; destinations.

View File

@ -3,6 +3,13 @@
[Startup]
; Console prompt
; Certain special characters can be used to customize the prompt
; Currently, these are
; \R - substitute region name
; \\ - substtitue \
ConsolePrompt = "Region (\R) "
; Set this to true if you want to log crashes to disk
; this can be useful when submitting bug reports.
; However, this will only log crashes within OpenSimulator that cause the entire program to exit