private List <string> RecursiveAddRegisterUseCase(IEnumerable <string> source, List <string> acc) { var(front, middle, rear) = TextSplitter.DivideIntoThree( source, line => line.TrimStart().StartsWith("#region"), line => line.TrimStart().StartsWith("#endregion") ); IEnumerable <string> changedMiddle = middle; var middleHead = middle.FirstOrDefault(); var isTarget = middleHead != null && middleHead.Contains(controllerName); if (isTarget) { changedMiddle = InvokeAddRegisterUseCase(middle); } acc.AddRange(front.Concat(changedMiddle)); if (rear.Any()) { return(RecursiveAddRegisterUseCase(rear, acc)); } else { return(acc); } }
private static void OnHighlighterChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { HighlightedTagsPanel panel = d as HighlightedTagsPanel; if (panel != null) { ITagSource tagsource = panel.TagSource; if (tagsource != null) { TextSplitter highlighter = e.NewValue as TextSplitter; if (highlighter == null) { highlighter = new TextSplitter(); } bool firstMatch = false; int i = 0; foreach (IHighlightableTagDataContext ctx in tagsource.TagDataContextCollection) { ctx.Highlighter = highlighter; Control ctrl = (Control)panel.tagsPanel.Children[i]; if (!firstMatch && ctx.HasHighlights) { ctrl.BringIntoView(); firstMatch = true; } ctrl.Focusable = ctx.HasHighlights; i++; } } } }
/// <summary> /// Create a new instance of a design time view model /// </summary> public FindTaggedPagesDesignerModel() { _scopes = new List <SearchScopeFacade> { new SearchScopeFacade() { Scope = SearchScope.AllNotebooks, ScopeLabel = "All Notebooks" }, new SearchScopeFacade() { Scope = SearchScope.Notebook, ScopeLabel = "Notebooks" } }; _selectedScope = _scopes[0]; TagsAndPages c = new TagsAndPages(null); c.ExtractTags(XDocument.Parse(_strXml), false); TextSplitter splitter = new TextSplitter("Cool"); _pages.AddAll(from TaggedPage tp in c.Pages.Values select new HitHighlightedPageLinkModel(tp, splitter, null)); _tags.AddAll(from t in c.Tags.Values select new TagSelectorModel(t)); }
public void SplitStringTestWhenBrackets(string str) { var result = new TextSplitter().SplitString(str); Assert.AreEqual("привет (буфет)", result.RuStr); Assert.AreEqual("hello", result.EnStr); }
public void CanCheckSingleLineWithoutSplitting() { string text = "kishore 1234567890 1234567890 reddy"; string splitText = TextSplitter.CheckAndSplitText(text, 15); Assert.AreEqual("kishore 1234567890 1234567890 reddy", splitText); }
/// <summary> /// FindTaggedPages pages matching a search criterion in the background. /// </summary> /// <param name="query">query. If null or empty just all page tags are collected</param> /// <param name="scope">Range of the search</param> internal async Task FindPagesAsync(string query, SearchScope scope) { switch (scope) { case SearchScope.Notebook: LastScopeID = OneNoteApp.CurrentNotebookID; break; case SearchScope.SectionGroup: LastScopeID = OneNoteApp.CurrentSectionGroupID; break; case SearchScope.Section: LastScopeID = OneNoteApp.CurrentSectionID; break; default: LastScopeID = String.Empty; break; } if (!string.IsNullOrEmpty(query)) { query = query.Trim().Replace(',', ' '); SearchHistory.Remove(query); SearchHistory.Insert(0, query); // update settings StringBuilder history = new StringBuilder(); for (int i = 0; i < SearchHistory.Count() && i < Properties.Settings.Default.SearchHistory_Size; i++) { if (history.Length > 0) { history.Append(','); } history.Append(SearchHistory[i]); } Properties.Settings.Default.SearchHistory = history.ToString(); // construct the query pattern string[] words = query.Split(new char[] { ',', ' ', ':', ';' }, StringSplitOptions.RemoveEmptyEntries); _highlighter = new TextSplitter(from w in words select w.Replace("'", "").Replace("\"", "")); } else { _highlighter = new TextSplitter(); } await Task.Run(() => _searchResult.Find(query, LastScopeID), _cancelWorker.Token); // restore filter tag selection foreach (string filterTag in _searchResult.Filter) { TagSelectorModel mdl; if (Tags.TryGetValue(filterTag, out mdl)) { mdl.IsChecked = true; } } }
public ScrollingMessageDialog(INativeGraphicsManager nativeGraphicsManager, IGameStateProvider gameStateProvider, IEODialogButtonService eoDialogButtonService) : base(gameStateProvider) { _font = Game.Content.Load <SpriteFont>(Constants.FontSize08); _textSplitter = new TextSplitter("", _font) { LineLength = 275 }; BackgroundTexture = nativeGraphicsManager.TextureFromResource(GFXTypes.PreLoginUI, 40); var smallButtonSheet = eoDialogButtonService.SmallButtonSheet; _ok = new XNAButton(smallButtonSheet, new Vector2(138, 197), eoDialogButtonService.GetSmallDialogButtonOutSource(SmallButton.Ok), eoDialogButtonService.GetSmallDialogButtonOverSource(SmallButton.Ok)); _ok.OnClick += (sender, e) => Close(XNADialogResult.OK); _ok.SetParentControl(this); _scrollBar = new ScrollBar(new Vector2(320, 66), new Vector2(16, 119), ScrollBarColors.LightOnMed, nativeGraphicsManager); _scrollBar.SetParentControl(this); MessageText = ""; CenterInGameView(); }
public void SplitStringTest(string str) { var result = new TextSplitter().SplitString(str); Assert.AreEqual("привет", result.RuStr); Assert.AreEqual("hello", result.EnStr); }
/// <inheritdoc /> public SmsSplittingResult SplitMessageWithWordWrap(string text, bool concatenatedSms = true) { if (text == null) { throw new ArgumentNullException(nameof(text)); } if (text == string.Empty) { return(new SmsSplittingResult { Encoding = SmsEncoding.Gsm7Bit, Parts = new List <SmsPart>() }); } var encoding = GetEncoding(text); var blocks = TextSplitter.Split(text, encoding); var builder = new SmsBuilder(blocks, encoding, concatenatedSms); return(new SmsSplittingResult { Encoding = encoding, Parts = builder.Parts }); }
private IEnumerable <string> AddUsing(IEnumerable <string> arg) { var(usings, rest) = TextSplitter.DivideInto2( arg, text => text == "", false ); var implementsNamespaceUsing = $"using {OnAppendUsingNamespace(controllerName)};"; var normalUsing = $"using UseCase.{controllerName}.{actionName};"; var adjustedUsings = usings.ToList(); if (adjustedUsings.All(x => !x.Contains(implementsNamespaceUsing))) { adjustedUsings.Add(implementsNamespaceUsing); } if (adjustedUsings.All(x => !x.Contains(normalUsing))) { adjustedUsings.Add(normalUsing); } adjustedUsings.Sort(); return(adjustedUsings.Concat(rest)); }
public void CanSplitSingleLongWord() { string longWord = "abcdefghijklmnopqrstuvwxyz"; string splitWord = TextSplitter.SplitWord(longWord, 5, " "); Assert.AreEqual("abcde fghij klmno pqrst uvwxy z", splitWord); }
private IEnumerable <string> SplitInput(string inputText) { if (TextSplitter != null) { return(TextSplitter.Split(inputText)); } return(new[] { inputText }); }
protected override void Apply(TextSplitter<Server> textSplitter) { textSplitter .Map(@"(alert|monitor|check)(ANYTHING)(?<name>staging|prod)(ANYTHING)version(ANYTHING)") .Map(@"(alert|monitor|check)(ANYTHING)version(ANYTHING)(?<name>staging|prod)(ANYTHING)") .Map(@"(alert|monitor|check)(ANYTHING)version(ANYTHING)") .Map(@"(ANYTHING)version(ANYTHING)changes(ANYTHING) "); }
//========================================================================================= internal void SetText(string text) { this.Lines.Clear(); foreach (string sLine in TextSplitter.GetLinesFromText(text)) { this.Lines.Add(new DocumentLine(sLine)); } }
/// <summary> /// create a new instance of the view model. /// </summary> /// <param name="tp">a OneNote page object</param> /// <param name="highlighter">object to generate a highlight description of the link title</param> /// <param name="onenote">OneNote application object proxy</param> internal HitHighlightedPageLinkModel(TaggedPage tp, TextSplitter highlighter, OneNoteProxy onenote) : base(tp.Title, tp.ID) { IsSelected = false; _page = tp; _highlights = highlighter.SplitText(_page.Title); HitCount = _highlights.Count((f) => f.IsMatch); _onenote = onenote; }
//========================================================================================= /// <summary>Разобрать текст "keywords" на слова и указать, что эти ключевые слова должны отображаться в указанном стиле.</summary> protected void LoadKeywordsToGroup(Dictionary <string, TextStyle> dictionary, TextStyle style, string keywords) { foreach (string sWord in TextSplitter.GetWordsFromText(keywords)) { //if (dictionary.ContainsKey(sWord)) // Console.WriteLine(sWord); //else dictionary.Add(sWord, style); } }
public void GetWords_supportsCyrillic() { var textSource = A.Fake<ITextSource>(); A.CallTo(() => textSource.GetText()).Returns( "Это кириллические буквы."); var textSplitter = new TextSplitter(textSource); var words = textSplitter.GetWords(); words.Should().Equal("Это", "кириллические", "буквы"); }
public void GetWords_splitsTextToWords() { var textSource = A.Fake<ITextSource>(); A.CallTo(() => textSource.GetText()).Returns( "Well-written Martin's text (with comment). "); var textSplitter = new TextSplitter(textSource); var words = textSplitter.GetWords(); words.Should().Equal("Well-written", "Martin's", "text", "with", "comment"); }
private void _showForgetAllMessage(Action forgetAllAction) { List <string> drawStrings = new List <string>(); string[] messages = { OldWorld.GetString(EOResourceID.SKILLMASTER_FORGET_ALL), OldWorld.GetString(EOResourceID.SKILLMASTER_FORGET_ALL_MSG_1), OldWorld.GetString(EOResourceID.SKILLMASTER_FORGET_ALL_MSG_2), OldWorld.GetString(EOResourceID.SKILLMASTER_FORGET_ALL_MSG_3), OldWorld.GetString(EOResourceID.SKILLMASTER_CLICK_HERE_TO_FORGET_ALL) }; TextSplitter ts = new TextSplitter("", Game.Content.Load <SpriteFont>(Constants.FontSize08pt5)) { LineLength = 200 }; foreach (string s in messages) { ts.Text = s; if (!ts.NeedsProcessing) { //no text clipping needed drawStrings.Add(s); drawStrings.Add(" "); continue; } drawStrings.AddRange(ts.SplitIntoLines()); drawStrings.Add(" "); } //now need to take the processed draw strings and make an ListDialogItem for each one foreach (string s in drawStrings) { string next = s; bool link = false; if (next.Length > 0 && next[0] == '*') { next = next.Remove(0, 1); link = true; } ListDialogItem nextItem = new ListDialogItem(this, ListDialogItem.ListItemStyle.Small) { Text = next }; if (link) { nextItem.SetPrimaryTextLink(forgetAllAction); } AddItemToList(nextItem, false); } }
public void GetKeywordsFromText() { string sText = " GO\tя12\r\n\tANY "; List <string> words = new List <string>(); foreach (string sWord in TextSplitter.GetWordsFromText(sText)) { words.Add(sWord); } Assert.That(words, Is.EquivalentTo(new string[] { "GO", "я12", "ANY" })); }
public void CanCheckMultiLineWithOutSplitting() { string text = "Famed archaeologist/adventurer Dr. Henry \"Indiana\" Jones" + Environment.NewLine + "is called back into action when he becomes entangled in a " + Environment.NewLine + "Soviet plot to uncover the secret behind mysterious artifacts" + Environment.NewLine + "known as the Crystal Skulls"; string splitText = TextSplitter.CheckAndSplitText(text, 25); Assert.AreEqual(text, splitText); }
public void PositiveCaseLongText( string text, int symbolsCountPerSegment) { TextSplitter splitter = new TextSplitter(text); string[] split = splitter.Split(symbolsCountPerSegment); foreach (var sp in split) { Assert.True(sp.Length <= symbolsCountPerSegment); } }
public void SplitWords_HasPunctuation_ShouldReturnWithoutPunctuation() { // Arrange var targetStr = @"Lorem, ipsum!? dolor; sit: posuere."; var target = new TextSplitter(); // Act var actual = target.SplitWords(targetStr); // Assert actual.ShouldBeEquivalentTo(new[] { "Lorem", "ipsum", "dolor", "sit", "posuere" }); }
public void SplitWords_HasDoubleSpaces_ShouldReturnWithoutSpaces() { // Arrange var targetStr = @"Lorem ipsum dolor sit posuere."; var target = new TextSplitter(); // Act var actual = target.SplitWords(targetStr); // Assert actual.ShouldBeEquivalentTo(new[] { "Lorem", "ipsum", "dolor", "sit", "posuere" }); }
private void _setDialogText() { ClearItemList(); List <string> rows = new List <string>(); TextSplitter ts = new TextSplitter(_pages[_pageIndex], Game.Content.Load <SpriteFont>(Constants.FontSize08pt5)); if (!ts.NeedsProcessing) { rows.Add(_pages[_pageIndex]); } else { rows.AddRange(ts.SplitIntoLines()); } int index = 0; foreach (var row in rows) { ListDialogItem rowItem = new ListDialogItem(this, ListDialogItem.ListItemStyle.Small, index++) { Text = row }; AddItemToList(rowItem, false); } if (_pageIndex < _pages.Count - 1) { return; } ListDialogItem item = new ListDialogItem(this, ListDialogItem.ListItemStyle.Small, index++) { Text = " " }; AddItemToList(item, false); foreach (var link in _links) { ListDialogItem linkItem = new ListDialogItem(this, ListDialogItem.ListItemStyle.Small, index++) { Text = link.Value }; var linkIndex = (byte)link.Key; linkItem.SetPrimaryTextLink(() => _clickLink(linkIndex)); AddItemToList(linkItem, false); } }
private IReadOnlyList <ChatPair> SplitTextIntoLines(string who, IReadOnlyList <string> input) { var retStrings = new List <ChatPair>(); who = who ?? ""; string indentForUserName = "******"; //padding string for additional lines if it is a multi-line message if (!string.IsNullOrEmpty(who)) { while (_chatFont.MeasureString(indentForUserName).X < _chatFont.MeasureString(who).X) { indentForUserName += " "; } } var splitter = new TextSplitter("", _chatFont) { LineLength = LINE_LEN, LineIndent = indentForUserName }; foreach (var text in input) { if (string.IsNullOrWhiteSpace(who) && string.IsNullOrWhiteSpace(text)) { retStrings.Add(new ChatPair { Text = " ", IsFirstLineOfMultilineMessage = true }); continue; } splitter.Text = text; if (!splitter.NeedsProcessing) { retStrings.Add(new ChatPair { Text = text, IsFirstLineOfMultilineMessage = true }); continue; } var stringsToAdd = splitter.SplitIntoLines() .Select((str, i) => new ChatPair { Text = str, IsFirstLineOfMultilineMessage = i == 0 }) .ToList(); retStrings.AddRange(stringsToAdd); } return(retStrings); }
public void DoesNotSplitSingleShortWord() { string longWord = "abcdefghijklmn"; string splitWord = TextSplitter.SplitWord(longWord, 15, " "); Assert.AreEqual("abcdefghijklmn", splitWord); longWord = null; splitWord = TextSplitter.SplitWord(longWord, 15, " "); Assert.IsNull(splitWord); longWord = string.Empty; splitWord = TextSplitter.SplitWord(longWord, 15, " "); Assert.AreEqual(string.Empty, splitWord); }
public ScrollingMessageDialog(string msgText) { textSplitter = new TextSplitter("", EOGame.Instance.DBGFont) { LineLength = 275 }; bgTexture = ((EOGame)Game).GFXManager.TextureFromResource(GFXTypes.PreLoginUI, 40); _setSize(bgTexture.Width, bgTexture.Height); XNAButton ok = new XNAButton(smallButtonSheet, new Vector2(138, 197), _getSmallButtonOut(SmallButton.Ok), _getSmallButtonOver(SmallButton.Ok)); ok.OnClick += (sender, e) => Close(ok, XNADialogResult.OK); ok.SetParent(this); dlgButtons.Add(ok); scrollBar = new ScrollBar(this, new Vector2(320, 66), new Vector2(16, 119), ScrollBarColors.LightOnMed); MessageText = msgText; endConstructor(); }
private static void AddWords(OneToSetMap <string, string> wordsPerAssembly, JetHashSet <string> abbreviations, IAssemblyPsiModule assemblyPsiModule, string name) { var textParts = TextSplitter.Split(name); foreach (var textPart in textParts.Where(tp => tp.Type == TextPartType.Word)) { if (textPart.Text == textPart.Text.ToUpperInvariant()) { abbreviations.Add(textPart.Text); } else { wordsPerAssembly.Add(assemblyPsiModule.Assembly.AssemblyName.Name, textPart.Text); } } }
public void Run() { var file = Path.Combine( param.WebProjectDirectoryFullPath, "ClArc", "DI", OnLauncherFileName() ); var lines = File.ReadAllLines(file); var(front, middle, after) = TextSplitter.DivideIntoThree( lines, line => line.TrimStart().StartsWith("#region ClArc START"), line => line.TrimStart().StartsWith("#endregion ClArc END"), false ); var adjustedFront = AddUsing(front); IEnumerable <string> newMiddle; if (middle.Any(x => x.TrimStart().StartsWith($"#region {param.ControllerName}"))) { var usecaseLines = CreateAddedUsecaseLines(middle); newMiddle = usecaseLines; } else { var appendAfterMiddle = new List <string> { "", $"{Indent}#region {param.ControllerName}", _registerUsecaseText(), $"{Indent}#endregion" }; newMiddle = middle.Concat(appendAfterMiddle); } var splitedMiddles = TextSplitter.Divide(newMiddle, x => x.Contains("#region"), false, true); var middles = splitedMiddles.OrderBy(x => x.First()).Select(x => x.Where(text => !string.IsNullOrWhiteSpace(text))); var newMids = TextJoiner.Join(middles, ""); var result = adjustedFront.Concat(newMids).Concat(after); File.WriteAllLines(file, result, Encoding.UTF8); }
private IEnumerable <string> InvokeAddRegisterUseCase(IEnumerable <string> source) { var(front, middle, rear) = TextSplitter.DivideIntoThree( source, line => line.TrimStart().StartsWith("#region"), line => line.TrimStart().StartsWith("#endregion"), false ); var prefix = controllerName + actionName; var reg = new Regex(@"<(?<request>.*),(?<usecaseInterface>.*),(?<usecaseImplements>.*)>"); var hit = false; foreach (var m in middle) { var matched = reg.Match(m); if (matched.Success) { var request = matched.Groups["request"].Value; if (request.StartsWith(prefix)) { hit = true; } } } if (hit) { return(source); } else { var addedMiddle = new List <string>(middle) { _registerUsecaseText() }; addedMiddle.Sort(); return(front .Concat(addedMiddle) .Concat(rear)); } }
private async Task ResumeAfterRateIsSet( IDialogContext context, IAwaitable <long> argument) { rating = (int)await argument; string message = GetMessageAfterRatingSet(rating); await context.SayAsync(message); var scraper = new ScraperService(); string scrappedText = await scraper.ScrapAsync(link); TextSplitter splitter = new TextSplitter(scrappedText.Trim()); string[] split = splitter.Split(MaxDocumentLength); var textAnalytics = new TextAnalyticsApiService(); var keywords = await textAnalytics.GetKeywordsAsync(split); await context.PostAsync($"Keywords: {String.Join(",", keywords)}"); context.Done <object>(null); }
private void OnTagdataContextCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { ITagSource tagsource = sender as ITagSource; if (tagsource != null) { switch (e.Action) { case NotifyCollectionChangedAction.Add: DataTemplate tpl = TagTemplate; int newItemCount = e.NewItems.Count; TextSplitter highlighter = Highlighter; for (int i = 0; i < newItemCount; i++) { FrameworkElement tagControl = tpl.LoadContent() as FrameworkElement; IHighlightableTagDataContext ctx = e.NewItems[i] as IHighlightableTagDataContext; if (ctx != null) { ctx.Highlighter = highlighter; tagControl.DataContext = ctx; } tagsPanel.Children.Insert(i + e.NewStartingIndex, tagControl); } break; case NotifyCollectionChangedAction.Remove: int oldItemCount = e.OldItems.Count; for (int i = 0; i < oldItemCount; i++) { tagsPanel.Children.RemoveAt(e.OldStartingIndex); } break; case NotifyCollectionChangedAction.Reset: tagsPanel.Children.Clear(); break; } } }
//========================================================================================= internal void PasteText(string text) { this.InitFields(); if (this.HasSelection()) { this.DeleteSelection(); this.InitFields(); } var lines = TextSplitter.SplitTextToLines(text); if (lines.Count == 1) { string sLine = this.CurLine.Insert(this.CurPos.Char, text); this.Doc[this.CurPos.Line].Text = sLine; int iChar = this.CurPos.Char + text.Length; int iCol = this.Viewer.Caret.GetColumn(sLine, iChar); this.Viewer.Caret.MoveToPos(this.CurPos.Line, iCol, true); } else { string sLine = this.CurLine; if (sLine.Length > 0 && this.CurPos.Char < sLine.Length) { sLine = sLine.Remove(this.CurPos.Char); } this.Doc[this.CurPos.Line].Text = sLine + lines[0]; lines.RemoveAt(0); int iChar = lines[lines.Count - 1].Length; lines[lines.Count - 1] += this.CurLine.Substring(this.CurPos.Char); this.Doc.InsertRange(this.CurPos.Line + 1, lines); int iLine = this.CurPos.Line + lines.Count; string sLastPastedLine = this.Doc[iLine].Text; int iCol = this.Viewer.Caret.GetColumn(sLastPastedLine, iChar); this.Viewer.Caret.MoveToPos(iLine, iCol, true); } }
public void SanitizeAndSplitIntoWordReturnsListWithOnlyWords() { // Arrange var text = "Lorem! ££ ipsum* dolor.. sit amet, at elitr habemus consequat quo\n\rLorem didn't"; // act var splitter = new TextSplitter(); var result = splitter.SanitizeAndSplitIntoWords(text).ToList(); // Assert.AreEqual(12, result.Count); Assert.IsTrue(result.Contains("Lorem")); Assert.IsTrue(result.Contains("ipsum")); Assert.IsTrue(result.Contains("dolor")); Assert.IsTrue(result.Contains("sit")); Assert.IsTrue(result.Contains("amet")); Assert.IsTrue(result.Contains("at")); Assert.IsTrue(result.Contains("elitr")); Assert.IsTrue(result.Contains("habemus")); Assert.IsTrue(result.Contains("consequat")); Assert.IsTrue(result.Contains("quo")); Assert.IsTrue(result.Contains("Lorem")); Assert.IsTrue(result.Contains("didn't")); }
/// <summary> /// Adds text to the tab. For multi-line text strings, does text wrapping. For text length > 415 pixels, does text wrapping /// </summary> /// <param name="who">Person that spoke</param> /// <param name="text">Message that was spoken</param> /// <param name="icon">Icon to display next to the chat</param> /// <param name="col">Rendering color (enumerated value)</param> public void AddText(string who, string text, ChatType icon = ChatType.None, ChatColor col = ChatColor.Default) { const int LINE_LEN = 380; //special case: blank line, like in the news panel between news items if (string.IsNullOrWhiteSpace(who) && string.IsNullOrWhiteSpace(text)) { lock(ChatStringsLock) chatStrings.Add(new ChatIndex(chatStrings.Count, icon, who, col), " "); scrollBar.UpdateDimensions(chatStrings.Count); if (chatStrings.Count > 7 && WhichTab != ChatTabs.None) { scrollBar.ScrollToEnd(); } if (!Selected) tabLabel.ForeColor = Color.White; if (!Visible) Visible = true; return; } string whoPadding = " "; //padding string for additional lines if it is a multi-line message if (!string.IsNullOrEmpty(who)) while (EOGame.Instance.DBGFont.MeasureString(whoPadding).X < EOGame.Instance.DBGFont.MeasureString(who).X) whoPadding += " "; TextSplitter ts = new TextSplitter(text, EOGame.Instance.DBGFont) { LineLength = LINE_LEN, LineEnd = "", LineIndent = whoPadding }; if (!ts.NeedsProcessing) { lock (ChatStringsLock) chatStrings.Add(new ChatIndex(chatStrings.Count, icon, who, col), text); } else { List<string> chatStringsToAdd = ts.SplitIntoLines(); for (int i = 0; i < chatStringsToAdd.Count; ++i) { lock (ChatStringsLock) { if (i == 0) chatStrings.Add(new ChatIndex(chatStrings.Count, icon, who, col), chatStringsToAdd[0]); else chatStrings.Add(new ChatIndex(chatStrings.Count, ChatType.None, "", col), chatStringsToAdd[i]); } } } scrollBar.UpdateDimensions(chatStrings.Count); if (chatStrings.Count > 7 && WhichTab != ChatTabs.None) { scrollBar.ScrollToEnd(); } if (!Selected) tabLabel.ForeColor = Color.White; if (!Visible) Visible = true; }
private void _setDialogText() { ClearItemList(); List<string> rows = new List<string>(); TextSplitter ts = new TextSplitter(_pages[_pageIndex], Game.Content.Load<SpriteFont>(Constants.FontSize08pt5)); if (!ts.NeedsProcessing) rows.Add(_pages[_pageIndex]); else rows.AddRange(ts.SplitIntoLines()); int index = 0; foreach (var row in rows) { ListDialogItem rowItem = new ListDialogItem(this, ListDialogItem.ListItemStyle.Small, index++) { Text = row }; AddItemToList(rowItem, false); } if (_pageIndex < _pages.Count - 1) return; ListDialogItem item = new ListDialogItem(this, ListDialogItem.ListItemStyle.Small, index++) { Text = " " }; AddItemToList(item, false); foreach (var link in _links) { ListDialogItem linkItem = new ListDialogItem(this, ListDialogItem.ListItemStyle.Small, index++) { Text = link.Value }; var linkIndex = (byte)link.Key; linkItem.SetPrimaryTextLink(() => _clickLink(linkIndex)); AddItemToList(linkItem, false); } }
private void _showForgetAllMessage(Action forgetAllAction) { List<string> drawStrings = new List<string>(); string[] messages = { World.GetString(DATCONST2.SKILLMASTER_FORGET_ALL), World.GetString(DATCONST2.SKILLMASTER_FORGET_ALL_MSG_1), World.GetString(DATCONST2.SKILLMASTER_FORGET_ALL_MSG_2), World.GetString(DATCONST2.SKILLMASTER_FORGET_ALL_MSG_3), World.GetString(DATCONST2.SKILLMASTER_CLICK_HERE_TO_FORGET_ALL) }; TextSplitter ts = new TextSplitter("", Game.Content.Load<SpriteFont>(Constants.FontSize08pt5)) { LineLength = 200 }; foreach (string s in messages) { ts.Text = s; if (!ts.NeedsProcessing) { //no text clipping needed drawStrings.Add(s); drawStrings.Add(" "); continue; } drawStrings.AddRange(ts.SplitIntoLines()); drawStrings.Add(" "); } //now need to take the processed draw strings and make an ListDialogItem for each one foreach (string s in drawStrings) { string next = s; bool link = false; if (next.Length > 0 && next[0] == '*') { next = next.Remove(0, 1); link = true; } ListDialogItem nextItem = new ListDialogItem(this, ListDialogItem.ListItemStyle.Small) { Text = next }; if (link) nextItem.SetPrimaryTextLink(forgetAllAction); AddItemToList(nextItem, false); } }