diff --git a/Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs b/Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs index 0f6b48f5a..b5db7847b 100644 --- a/Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs +++ b/Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs @@ -191,7 +191,7 @@ namespace Terminal.Gui { background: MapCursesColor (background)); } - static Attribute MakeColor (Color fore, Color back) + public override Attribute MakeColor (Color fore, Color back) { return MakeColor ((short)MapColor (fore), (short)MapColor (back)); } @@ -890,51 +890,14 @@ namespace Terminal.Gui { //UpArrow = Curses.ACS_UARROW; //DownArrow = Curses.ACS_DARROW; - Colors.TopLevel = new ColorScheme (); - Colors.Base = new ColorScheme (); - Colors.Dialog = new ColorScheme (); - Colors.Menu = new ColorScheme (); - Colors.Error = new ColorScheme (); - if (Curses.HasColors) { Curses.StartColor (); Curses.UseDefaultColors (); - Colors.TopLevel.Normal = MakeColor (Color.Green, Color.Black); - Colors.TopLevel.Focus = MakeColor (Color.White, Color.Cyan); - Colors.TopLevel.HotNormal = MakeColor (Color.Brown, Color.Black); - Colors.TopLevel.HotFocus = MakeColor (Color.Blue, Color.Cyan); - Colors.TopLevel.Disabled = MakeColor (Color.DarkGray, Color.Black); - - Colors.Base.Normal = MakeColor (Color.White, Color.Blue); - Colors.Base.Focus = MakeColor (Color.Black, Color.Gray); - Colors.Base.HotNormal = MakeColor (Color.BrightCyan, Color.Blue); - Colors.Base.HotFocus = MakeColor (Color.BrightBlue, Color.Gray); - Colors.Base.Disabled = MakeColor (Color.DarkGray, Color.Blue); - - // Focused, - // Selected, Hot: Yellow on Black - // Selected, text: white on black - // Unselected, hot: yellow on cyan - // unselected, text: same as unfocused - Colors.Menu.Normal = MakeColor (Color.White, Color.DarkGray); - Colors.Menu.Focus = MakeColor (Color.White, Color.Black); - Colors.Menu.HotNormal = MakeColor (Color.BrightYellow, Color.DarkGray); - Colors.Menu.HotFocus = MakeColor (Color.BrightYellow, Color.Black); - Colors.Menu.Disabled = MakeColor (Color.Gray, Color.DarkGray); - - Colors.Dialog.Normal = MakeColor (Color.Black, Color.Gray); - Colors.Dialog.Focus = MakeColor (Color.White, Color.DarkGray); - Colors.Dialog.HotNormal = MakeColor (Color.Blue, Color.Gray); - Colors.Dialog.HotFocus = MakeColor (Color.Blue, Color.DarkGray); - Colors.Dialog.Disabled = MakeColor (Color.DarkGray, Color.Gray); - - Colors.Error.Normal = MakeColor (Color.Red, Color.White); - Colors.Error.Focus = MakeColor (Color.White, Color.Red); - Colors.Error.HotNormal = MakeColor (Color.Black, Color.White); - Colors.Error.HotFocus = MakeColor (Color.Black, Color.Red); - Colors.Error.Disabled = MakeColor (Color.DarkGray, Color.White); + CreateColors (); } else { + CreateColors (false); + Colors.TopLevel.Normal = Curses.COLOR_GREEN; Colors.TopLevel.Focus = Curses.COLOR_WHITE; Colors.TopLevel.HotNormal = Curses.COLOR_YELLOW; diff --git a/Terminal.Gui/ConsoleDrivers/FakeDriver/FakeDriver.cs b/Terminal.Gui/ConsoleDrivers/FakeDriver/FakeDriver.cs index 0faccb274..50662f364 100644 --- a/Terminal.Gui/ConsoleDrivers/FakeDriver/FakeDriver.cs +++ b/Terminal.Gui/ConsoleDrivers/FakeDriver/FakeDriver.cs @@ -157,6 +157,11 @@ namespace Terminal.Gui { FakeConsole.Clear (); } + public override Attribute MakeColor (Color foreground, Color background) + { + return MakeColor ((ConsoleColor)foreground, (ConsoleColor)background); + } + static Attribute MakeColor (ConsoleColor f, ConsoleColor b) { // Encode the colors into the int value. @@ -177,47 +182,7 @@ namespace Terminal.Gui { ResizeScreen (); UpdateOffScreen (); - Colors.TopLevel = new ColorScheme (); - Colors.Base = new ColorScheme (); - Colors.Dialog = new ColorScheme (); - Colors.Menu = new ColorScheme (); - Colors.Error = new ColorScheme (); - Clip = new Rect (0, 0, Cols, Rows); - - Colors.TopLevel.Normal = MakeColor (ConsoleColor.Green, ConsoleColor.Black); - Colors.TopLevel.Focus = MakeColor (ConsoleColor.White, ConsoleColor.DarkCyan); - Colors.TopLevel.HotNormal = MakeColor (ConsoleColor.DarkYellow, ConsoleColor.Black); - Colors.TopLevel.HotFocus = MakeColor (ConsoleColor.DarkBlue, ConsoleColor.DarkCyan); - Colors.TopLevel.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.Black); - - Colors.Base.Normal = MakeColor (ConsoleColor.White, ConsoleColor.Blue); - Colors.Base.Focus = MakeColor (ConsoleColor.Black, ConsoleColor.Cyan); - Colors.Base.HotNormal = MakeColor (ConsoleColor.Yellow, ConsoleColor.Blue); - Colors.Base.HotFocus = MakeColor (ConsoleColor.Yellow, ConsoleColor.Cyan); - Colors.Base.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.DarkBlue); - - // Focused, - // Selected, Hot: Yellow on Black - // Selected, text: white on black - // Unselected, hot: yellow on cyan - // unselected, text: same as unfocused - Colors.Menu.HotFocus = MakeColor (ConsoleColor.Yellow, ConsoleColor.Black); - Colors.Menu.Focus = MakeColor (ConsoleColor.White, ConsoleColor.Black); - Colors.Menu.HotNormal = MakeColor (ConsoleColor.Yellow, ConsoleColor.Cyan); - Colors.Menu.Normal = MakeColor (ConsoleColor.White, ConsoleColor.Cyan); - Colors.Menu.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.Cyan); - - Colors.Dialog.Normal = MakeColor (ConsoleColor.Black, ConsoleColor.Gray); - Colors.Dialog.Focus = MakeColor (ConsoleColor.Black, ConsoleColor.Cyan); - Colors.Dialog.HotNormal = MakeColor (ConsoleColor.Blue, ConsoleColor.Gray); - Colors.Dialog.HotFocus = MakeColor (ConsoleColor.Blue, ConsoleColor.Cyan); - Colors.Dialog.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.Gray); - - Colors.Error.Normal = MakeColor (ConsoleColor.White, ConsoleColor.Red); - Colors.Error.Focus = MakeColor (ConsoleColor.Black, ConsoleColor.Gray); - Colors.Error.HotNormal = MakeColor (ConsoleColor.Yellow, ConsoleColor.Red); - Colors.Error.HotFocus = Colors.Error.HotNormal; - Colors.Error.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.White); + CreateColors (); //MockConsole.Clear (); } diff --git a/Terminal.Gui/ConsoleDrivers/NetDriver.cs b/Terminal.Gui/ConsoleDrivers/NetDriver.cs index 95e93391a..c6c65caa7 100644 --- a/Terminal.Gui/ConsoleDrivers/NetDriver.cs +++ b/Terminal.Gui/ConsoleDrivers/NetDriver.cs @@ -1309,6 +1309,11 @@ namespace Terminal.Gui { } } + public override Attribute MakeColor (Color foreground, Color background) + { + return MakeColor ((ConsoleColor)foreground, (ConsoleColor)background); + } + static Attribute MakeColor (ConsoleColor f, ConsoleColor b) { // Encode the colors into the int value. @@ -1337,46 +1342,7 @@ namespace Terminal.Gui { StartReportingMouseMoves (); - Colors.TopLevel = new ColorScheme (); - Colors.Base = new ColorScheme (); - Colors.Dialog = new ColorScheme (); - Colors.Menu = new ColorScheme (); - Colors.Error = new ColorScheme (); - - Colors.TopLevel.Normal = MakeColor (ConsoleColor.Green, ConsoleColor.Black); - Colors.TopLevel.Focus = MakeColor (ConsoleColor.White, ConsoleColor.DarkCyan); - Colors.TopLevel.HotNormal = MakeColor (ConsoleColor.DarkYellow, ConsoleColor.Black); - Colors.TopLevel.HotFocus = MakeColor (ConsoleColor.DarkBlue, ConsoleColor.DarkCyan); - Colors.TopLevel.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.Black); - - Colors.Base.Normal = MakeColor (ConsoleColor.White, ConsoleColor.DarkBlue); - Colors.Base.Focus = MakeColor (ConsoleColor.Black, ConsoleColor.Gray); - Colors.Base.HotNormal = MakeColor (ConsoleColor.Cyan, ConsoleColor.DarkBlue); - Colors.Base.HotFocus = MakeColor (ConsoleColor.Blue, ConsoleColor.Gray); - Colors.Base.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.DarkBlue); - - // Focused, - // Selected, Hot: Yellow on Black - // Selected, text: white on black - // Unselected, hot: yellow on cyan - // unselected, text: same as unfocused - Colors.Menu.Normal = MakeColor (ConsoleColor.White, ConsoleColor.DarkGray); - Colors.Menu.Focus = MakeColor (ConsoleColor.White, ConsoleColor.Black); - Colors.Menu.HotNormal = MakeColor (ConsoleColor.Yellow, ConsoleColor.DarkGray); - Colors.Menu.HotFocus = MakeColor (ConsoleColor.Yellow, ConsoleColor.Black); - Colors.Menu.Disabled = MakeColor (ConsoleColor.Gray, ConsoleColor.DarkGray); - - Colors.Dialog.Normal = MakeColor (ConsoleColor.Black, ConsoleColor.Gray); - Colors.Dialog.Focus = MakeColor (ConsoleColor.White, ConsoleColor.DarkGray); - Colors.Dialog.HotNormal = MakeColor (ConsoleColor.DarkBlue, ConsoleColor.Gray); - Colors.Dialog.HotFocus = MakeColor (ConsoleColor.DarkBlue, ConsoleColor.DarkGray); - Colors.Dialog.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.Gray); - - Colors.Error.Normal = MakeColor (ConsoleColor.DarkRed, ConsoleColor.White); - Colors.Error.Focus = MakeColor (ConsoleColor.White, ConsoleColor.DarkRed); - Colors.Error.HotNormal = MakeColor (ConsoleColor.Black, ConsoleColor.White); - Colors.Error.HotFocus = MakeColor (ConsoleColor.Black, ConsoleColor.DarkRed); - Colors.Error.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.White); + CreateColors (); Clear (); } diff --git a/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs b/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs index 21b7a6094..e5f65fbfd 100644 --- a/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs +++ b/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs @@ -1397,41 +1397,7 @@ namespace Terminal.Gui { ResizeScreen (); UpdateOffScreen (); - Colors.TopLevel = new ColorScheme (); - Colors.Base = new ColorScheme (); - Colors.Dialog = new ColorScheme (); - Colors.Menu = new ColorScheme (); - Colors.Error = new ColorScheme (); - - Colors.TopLevel.Normal = MakeColor (ConsoleColor.Green, ConsoleColor.Black); - Colors.TopLevel.Focus = MakeColor (ConsoleColor.White, ConsoleColor.DarkCyan); - Colors.TopLevel.HotNormal = MakeColor (ConsoleColor.DarkYellow, ConsoleColor.Black); - Colors.TopLevel.HotFocus = MakeColor (ConsoleColor.DarkBlue, ConsoleColor.DarkCyan); - Colors.TopLevel.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.Black); - - Colors.Base.Normal = MakeColor (ConsoleColor.White, ConsoleColor.DarkBlue); - Colors.Base.Focus = MakeColor (ConsoleColor.Black, ConsoleColor.Gray); - Colors.Base.HotNormal = MakeColor (ConsoleColor.Cyan, ConsoleColor.DarkBlue); - Colors.Base.HotFocus = MakeColor (ConsoleColor.Blue, ConsoleColor.Gray); - Colors.Base.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.DarkBlue); - - Colors.Menu.Normal = MakeColor (ConsoleColor.White, ConsoleColor.DarkGray); - Colors.Menu.Focus = MakeColor (ConsoleColor.White, ConsoleColor.Black); - Colors.Menu.HotNormal = MakeColor (ConsoleColor.Yellow, ConsoleColor.DarkGray); - Colors.Menu.HotFocus = MakeColor (ConsoleColor.Yellow, ConsoleColor.Black); - Colors.Menu.Disabled = MakeColor (ConsoleColor.Gray, ConsoleColor.DarkGray); - - Colors.Dialog.Normal = MakeColor (ConsoleColor.Black, ConsoleColor.Gray); - Colors.Dialog.Focus = MakeColor (ConsoleColor.White, ConsoleColor.DarkGray); - Colors.Dialog.HotNormal = MakeColor (ConsoleColor.DarkBlue, ConsoleColor.Gray); - Colors.Dialog.HotFocus = MakeColor (ConsoleColor.DarkBlue, ConsoleColor.DarkGray); - Colors.Dialog.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.Gray); - - Colors.Error.Normal = MakeColor (ConsoleColor.DarkRed, ConsoleColor.White); - Colors.Error.Focus = MakeColor (ConsoleColor.White, ConsoleColor.DarkRed); - Colors.Error.HotNormal = MakeColor (ConsoleColor.Black, ConsoleColor.White); - Colors.Error.HotFocus = MakeColor (ConsoleColor.Black, ConsoleColor.DarkRed); - Colors.Error.Disabled = MakeColor (ConsoleColor.DarkGray, ConsoleColor.White); + CreateColors (); } public override void ResizeScreen () @@ -1537,6 +1503,11 @@ namespace Terminal.Gui { currentAttribute = c; } + public override Attribute MakeColor (Color foreground, Color background) + { + return MakeColor ((ConsoleColor)foreground, (ConsoleColor)background); + } + Attribute MakeColor (ConsoleColor f, ConsoleColor b) { // Encode the colors into the int value. diff --git a/Terminal.Gui/Core/ConsoleDriver.cs b/Terminal.Gui/Core/ConsoleDriver.cs index 5116c07ed..873d8398b 100644 --- a/Terminal.Gui/Core/ConsoleDriver.cs +++ b/Terminal.Gui/Core/ConsoleDriver.cs @@ -1338,5 +1338,60 @@ namespace Terminal.Gui { /// /// The current attribute. public abstract Attribute GetAttribute (); + + /// + /// Make the for the . + /// + /// The foreground color. + /// The background color. + /// The attribute for the foreground and background colors. + public abstract Attribute MakeColor (Color foreground, Color background); + + /// + /// Create all with the for the console driver. + /// + /// Flag indicating if colors are supported. + public void CreateColors (bool hasColors = true) + { + Colors.TopLevel = new ColorScheme (); + Colors.Base = new ColorScheme (); + Colors.Dialog = new ColorScheme (); + Colors.Menu = new ColorScheme (); + Colors.Error = new ColorScheme (); + + if (!hasColors) { + return; + } + + Colors.TopLevel.Normal = MakeColor (Color.BrightGreen, Color.Black); + Colors.TopLevel.Focus = MakeColor (Color.White, Color.Cyan); + Colors.TopLevel.HotNormal = MakeColor (Color.Brown, Color.Black); + Colors.TopLevel.HotFocus = MakeColor (Color.Blue, Color.Cyan); + Colors.TopLevel.Disabled = MakeColor (Color.DarkGray, Color.Black); + + Colors.Base.Normal = MakeColor (Color.White, Color.Blue); + Colors.Base.Focus = MakeColor (Color.Black, Color.Gray); + Colors.Base.HotNormal = MakeColor (Color.BrightCyan, Color.Blue); + Colors.Base.HotFocus = MakeColor (Color.BrightBlue, Color.Gray); + Colors.Base.Disabled = MakeColor (Color.DarkGray, Color.Blue); + + Colors.Dialog.Normal = MakeColor (Color.Black, Color.Gray); + Colors.Dialog.Focus = MakeColor (Color.White, Color.DarkGray); + Colors.Dialog.HotNormal = MakeColor (Color.Blue, Color.Gray); + Colors.Dialog.HotFocus = MakeColor (Color.BrightYellow, Color.DarkGray); + Colors.Dialog.Disabled = MakeColor (Color.Gray, Color.DarkGray); + + Colors.Menu.Normal = MakeColor (Color.White, Color.DarkGray); + Colors.Menu.Focus = MakeColor (Color.White, Color.Black); + Colors.Menu.HotNormal = MakeColor (Color.BrightYellow, Color.DarkGray); + Colors.Menu.HotFocus = MakeColor (Color.BrightYellow, Color.Black); + Colors.Menu.Disabled = MakeColor (Color.Gray, Color.DarkGray); + + Colors.Error.Normal = MakeColor (Color.Red, Color.White); + Colors.Error.Focus = MakeColor (Color.Black, Color.BrightRed); + Colors.Error.HotNormal = MakeColor (Color.Black, Color.White); + Colors.Error.HotFocus = MakeColor (Color.BrightRed, Color.Gray); + Colors.Error.Disabled = MakeColor (Color.DarkGray, Color.White); + } } } diff --git a/UICatalog/Scenarios/GraphViewExample.cs b/UICatalog/Scenarios/GraphViewExample.cs index 3e5890a7b..8404f044b 100644 --- a/UICatalog/Scenarios/GraphViewExample.cs +++ b/UICatalog/Scenarios/GraphViewExample.cs @@ -101,7 +101,8 @@ namespace UICatalog.Scenarios { about.Text = "Housing Expenditures by income thirds 1996-2003"; - var black = Application.Driver.MakeAttribute (graphView.ColorScheme.Normal.Foreground, Color.Black); + var fore = graphView.ColorScheme.Normal.Foreground == Color.Black ? Color.White : graphView.ColorScheme.Normal.Foreground; + var black = Application.Driver.MakeAttribute (fore, Color.Black); var cyan = Application.Driver.MakeAttribute (Color.BrightCyan, Color.Black); var magenta = Application.Driver.MakeAttribute (Color.BrightMagenta, Color.Black); var red = Application.Driver.MakeAttribute (Color.BrightRed, Color.Black); @@ -138,7 +139,7 @@ namespace UICatalog.Scenarios { graphView.AxisY.Minimum = 0; - var legend = new LegendAnnotation (new Rect (graphView.Bounds.Width - 20,0, 20, 5)); + var legend = new LegendAnnotation (new Rect (graphView.Bounds.Width - 20, 0, 20, 5)); legend.AddEntry (new GraphCellToRender (stiple, series.SubSeries.ElementAt (0).OverrideBarColor), "Lower Third"); legend.AddEntry (new GraphCellToRender (stiple, series.SubSeries.ElementAt (1).OverrideBarColor), "Middle Third"); legend.AddEntry (new GraphCellToRender (stiple, series.SubSeries.ElementAt (2).OverrideBarColor), "Upper Third"); @@ -540,26 +541,19 @@ namespace UICatalog.Scenarios { var driver = Application.Driver; int x = start.X; - for(int y = end.Y; y <= start.Y; y++) { + for (int y = end.Y; y <= start.Y; y++) { var height = graph.ScreenToGraphSpace (x, y).Y; if (height >= 85) { - driver.SetAttribute(red); - } - else - if (height >= 66) { + driver.SetAttribute (red); + } else if (height >= 66) { driver.SetAttribute (brightred); - } - else - if (height >= 45) { + } else if (height >= 45) { driver.SetAttribute (brightyellow); - } - else - if (height >= 25) { + } else if (height >= 25) { driver.SetAttribute (brightgreen); - } - else{ + } else { driver.SetAttribute (green); } @@ -683,9 +677,8 @@ namespace UICatalog.Scenarios { private void Margin (bool left, bool increase) { if (left) { - graphView.MarginLeft = (uint)Math.Max(0,graphView.MarginLeft + (increase ? 1 : -1)); - } - else { + graphView.MarginLeft = (uint)Math.Max (0, graphView.MarginLeft + (increase ? 1 : -1)); + } else { graphView.MarginBottom = (uint)Math.Max (0, graphView.MarginBottom + (increase ? 1 : -1)); }