//implementation without RegularExpressions public static void ParseText(string text, ref MyGuiControlMultilineText label) { try { var substrings = text.Split(']'); foreach (var substring in substrings) { var textAndMarkup = substring.Split('['); if (textAndMarkup.Length == 2) { label.AppendText(textAndMarkup[0]); var indexOfSpace = textAndMarkup[1].IndexOf(' '); if (indexOfSpace != -1) { label.AppendLink(textAndMarkup[1].Substring(0, indexOfSpace), textAndMarkup[1].Substring(indexOfSpace + 1)); } else { System.Diagnostics.Debug.Assert(false); label.AppendText(textAndMarkup[1]); } } else { label.AppendText(substring); } } } catch { } }
private static void ParseMarkup(MyGuiControlMultilineText label, string markup) { var s = m_markupRegex.Match(markup); if (s.Value.Contains('|')) { var sub = s.Value.Substring(5); var split = sub.Split('|'); var match = m_digitsRegex.Matches(split[1]); int width, height; if(int.TryParse(match[0].Value, out width) && int.TryParse(match[1].Value, out height)) label.AppendImage(split[0], MyGuiManager.GetNormalizedSizeFromScreenSize(new VRageMath.Vector2(width, height)), Vector4.One); } else label.AppendLink(s.Value.Substring(0, s.Value.IndexOf(' ')), s.Value.Substring(s.Value.IndexOf(' ') + 1)); }