From aef698ac1f76c3669f781deea95694bf9bb97e0e Mon Sep 17 00:00:00 2001 From: tznind Date: Wed, 30 Dec 2020 19:20:43 +0000 Subject: [PATCH] Added unicode symbols option to UICatalog --- Terminal.Gui/Views/TreeView.cs | 10 ++++++---- UICatalog/Scenarios/TreeViewFileSystem.cs | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Terminal.Gui/Views/TreeView.cs b/Terminal.Gui/Views/TreeView.cs index 2551d0747..afca00762 100644 --- a/Terminal.Gui/Views/TreeView.cs +++ b/Terminal.Gui/Views/TreeView.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Linq; +using NStack; namespace Terminal.Gui { @@ -892,13 +893,13 @@ namespace Terminal.Gui { string lineBody = tree.AspectGetter(Model); // How much space is left after prefix and expansion symbol? - var remainingWidth = availableWidth - (prefix.Length + 1 ); + var remainingWidth = availableWidth - (prefix.Sum(Rune.ColumnWidth) + Rune.ColumnWidth(expansion) ); // If body of line is too long - if(lineBody.Length > remainingWidth) + if(lineBody.Sum(l=>Rune.ColumnWidth(l)) > remainingWidth) { // remaining space is zero and truncate the line - lineBody = lineBody.Substring(0,remainingWidth); + lineBody = new string(lineBody.TakeWhile(c=>(remainingWidth -= Rune.ColumnWidth(c)) > 0).ToArray()); remainingWidth = 0; } else{ @@ -909,8 +910,9 @@ namespace Terminal.Gui { tree.Move(0,y); - foreach(Rune r in prefix) + foreach(Rune r in prefix){ driver.AddRune(r); + } // pick color for expanded symbol if(tree.Style.ColorExpandSymbol || tree.Style.InvertExpandSymbolColors) diff --git a/UICatalog/Scenarios/TreeViewFileSystem.cs b/UICatalog/Scenarios/TreeViewFileSystem.cs index 05de0ad09..1a9526be0 100644 --- a/UICatalog/Scenarios/TreeViewFileSystem.cs +++ b/UICatalog/Scenarios/TreeViewFileSystem.cs @@ -29,6 +29,7 @@ namespace UICatalog.Scenarios { private MenuItem miNoSymbols; private MenuItem miColoredSymbols; private MenuItem miInvertSymbols; + private MenuItem miUnicodeSymbols; private Terminal.Gui.Attribute green; private Terminal.Gui.Attribute red; @@ -51,6 +52,7 @@ namespace UICatalog.Scenarios { miPlusMinus = new MenuItem ("_PlusMinusSymbols", "", () => SetExpandableSymbols('+','-')){Checked = true, CheckType = MenuItemCheckStyle.Radio}, miArrowSymbols = new MenuItem ("_ArrowSymbols", "", () => SetExpandableSymbols('>','v')){Checked = false, CheckType = MenuItemCheckStyle.Radio}, miNoSymbols = new MenuItem ("_NoSymbols", "", () => SetExpandableSymbols(null,null)){Checked = false, CheckType = MenuItemCheckStyle.Radio}, + miUnicodeSymbols = new MenuItem ("_Unicode", "", () => SetExpandableSymbols('ஹ','﷽')){Checked = false, CheckType = MenuItemCheckStyle.Radio}, null /*separator*/, miColoredSymbols = new MenuItem ("_ColoredSymbols", "", () => ShowColoredExpandableSymbols()){Checked = false, CheckType = MenuItemCheckStyle.Checked}, miInvertSymbols = new MenuItem ("_InvertSymbols", "", () => InvertExpandableSymbols()){Checked = false, CheckType = MenuItemCheckStyle.Checked}, @@ -143,6 +145,7 @@ namespace UICatalog.Scenarios { miPlusMinus.Checked = expand == '+'; miArrowSymbols.Checked = expand == '>'; miNoSymbols.Checked = expand == null; + miUnicodeSymbols.Checked = expand == 'ஹ'; treeViewNodes.Style.ExpandableSymbol = expand; treeViewNodes.Style.CollapseableSymbol = collapse;