Resolving merge conflicts.

This commit is contained in:
BDisp
2023-03-03 17:55:22 +00:00
17 changed files with 72 additions and 82 deletions

View File

@@ -2,9 +2,9 @@ name: Build & Test Terminal.Gui with .NET Core
on:
push:
branches: [ main, develop ]
branches: [ main, develop, v2_develop ]
pull_request:
branches: [ main, develop ]
branches: [ main, develop, v2_develop ]
jobs:
build:

View File

@@ -5,10 +5,10 @@
<!-- Version numbers are automatically updated by gitversion when a release is released -->
<!-- In the source tree the version will always be 1.0 for all projects. -->
<!-- Do not modify these. -->
<AssemblyVersion>1.0</AssemblyVersion>
<FileVersion>1.0</FileVersion>
<Version>1.0</Version>
<InformationalVersion>1.0</InformationalVersion>
<AssemblyVersion>2.0</AssemblyVersion>
<FileVersion>2.0</FileVersion>
<Version>2.0</Version>
<InformationalVersion>2.0</InformationalVersion>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Terminal.Gui\Terminal.Gui.csproj" />

View File

@@ -6,10 +6,12 @@
[![License](https://img.shields.io/github/license/gui-cs/gui.cs.svg)](LICENSE)
![Bugs](https://img.shields.io/github/issues/gui-cs/gui.cs/bug)
# Terminal.Gui - Cross Platform Terminal UI toolkit for .NET
# Terminal.Gui v2.x - Cross Platform Terminal UI toolkit for .NET
A toolkit for building rich console apps for .NET, .NET Core, and Mono that works on Windows, the Mac, and Linux/Unix.
NOTE: This is the WORK IN PROGRESS `v2.x` branch. The `main` branch is the stable `v1.x` branch.
![Sample app](docfx/images/sample.gif)
## Quick Start

View File

@@ -5,10 +5,10 @@
<!-- Version numbers are automatically updated by gitversion when a release is released -->
<!-- In the source tree the version will always be 2.0 for all projects. -->
<!-- Do not modify these. -->
<AssemblyVersion>1.0</AssemblyVersion>
<FileVersion>1.0</FileVersion>
<Version>1.0</Version>
<InformationalVersion>1.0</InformationalVersion>
<AssemblyVersion>2.0</AssemblyVersion>
<FileVersion>2.0</FileVersion>
<Version>2.0</Version>
<InformationalVersion>2.0</InformationalVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ReactiveUI.Fody" Version="18.4.22" />

View File

@@ -490,21 +490,20 @@ namespace Terminal.Gui.Configuration {
/// <summary>
/// Loads all settings found in the various configuration storage locations to
/// the <see cref="ConfigurationManager"/>. Optionally,
/// resets all settings attributed with <see cref="SerializableConfigurationProperty"/> to the defaults
/// defined in <see cref="LoadAppResources"/>.
/// resets all settings attributed with <see cref="SerializableConfigurationProperty"/> to the defaults.
/// </summary>
/// <remarks>
/// Use <see cref="Apply"/> to cause the loaded settings to be applied to the running application.
/// </remarks>
/// <param name="reset">If <see langword="true"/> the state of <see cref="ConfigurationManager"/> will
/// be reset to the defaults defined in <see cref="LoadAppResources"/>.</param>
/// be reset to the defaults.</param>
public static void Load (bool reset = false)
{
Debug.WriteLine ($"ConfigurationManager.Load()");
if (reset) Reset ();
// LibraryResoruces is always loaded by Reset
// LibraryResources is always loaded by Reset
if (Locations == ConfigLocations.All) {
var embeddedStylesResourceName = Assembly.GetEntryAssembly ()?
.GetManifestResourceNames ().FirstOrDefault (x => x.EndsWith (_configFilename));

View File

@@ -34,6 +34,9 @@ namespace Terminal.Gui.Configuration {
[JsonInclude, JsonPropertyName ("$schema")]
public string Schema { get; set; } = "https://gui-cs.github.io/Terminal.Gui/schemas/tui-config-schema.json";
/// <summary>
/// The list of paths to the configuration files.
/// </summary>
public List<string> Sources = new List<string> ();
/// <summary>

View File

@@ -331,12 +331,11 @@ namespace Terminal.Gui {
private Point effect3DOffset = new Point (1, 1);
private Attribute? effect3DBrush;
private ustring title = ustring.Empty;
private View child;
/// <summary>
/// Specifies the <see cref="Gui.BorderStyle"/> for a view.
/// </summary>
[JsonInclude, JsonConverter (typeof(JsonStringEnumConverter))]
[JsonInclude, JsonConverter (typeof (JsonStringEnumConverter))]
public BorderStyle BorderStyle {
get => borderStyle;
set {
@@ -651,7 +650,7 @@ namespace Terminal.Gui {
Child.Clear (borderRect);
}
driver.SetAttribute (new Attribute (BorderBrush, Background));
driver.SetAttribute (savedAttribute);
// Draw margin frame
if (DrawMarginFrame) {
@@ -675,7 +674,6 @@ namespace Terminal.Gui {
driver.DrawWindowFrame (borderRect, 1, 1, 1, 1, BorderStyle != BorderStyle.None, fill: true, this);
}
}
driver.SetAttribute (savedAttribute);
}
private void DrawChildBorder (Rect frame, bool fill = true)
@@ -788,7 +786,7 @@ namespace Terminal.Gui {
}
}
driver.SetAttribute (new Attribute (BorderBrush, Background));
driver.SetAttribute (savedAttribute);
// Draw the MarginFrame
if (DrawMarginFrame) {
@@ -985,7 +983,7 @@ namespace Terminal.Gui {
}
}
driver.SetAttribute (new Attribute (BorderBrush, Background));
driver.SetAttribute (savedAttribute);
// Draw the MarginFrame
if (DrawMarginFrame) {
@@ -1079,7 +1077,7 @@ namespace Terminal.Gui {
driver.DrawWindowTitle (scrRect, Title, 0, 0, 0, 0);
} else {
scrRect = view.ViewToScreen (new Rect (0, 0, view.Frame.Width, view.Frame.Height));
driver.DrawWindowTitle (scrRect, Parent.Border.Title,
driver.DrawWindowTitle (scrRect, Title,
padding.Left, padding.Top, padding.Right, padding.Bottom);
}
}
@@ -1095,9 +1093,9 @@ namespace Terminal.Gui {
{
var driver = Application.Driver;
if (DrawMarginFrame) {
driver.SetAttribute (new Attribute (BorderBrush, Background));
driver.SetAttribute (view.GetNormalColor ());
if (view.HasFocus) {
driver.SetAttribute (new Attribute (view.ColorScheme.HotNormal.Foreground, Background));
driver.SetAttribute (view.ColorScheme.HotNormal);
}
var padding = Parent.Border.GetSumThickness ();
var scrRect = Parent.ViewToScreen (new Rect (0, 0, rect.Width, rect.Height));

View File

@@ -904,4 +904,4 @@ namespace Terminal.Gui {
return null;
}
}
}
}

View File

@@ -1,27 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using NStack;
namespace Terminal.Gui {
public class View2 : View, ISupportInitializeNotification {
public Thickness Margin { get; set; }
void DrawThickness (Thickness thickness)
{
}
public override void Redraw (Rect bounds)
{
base.Redraw (bounds);
DrawThickness (Margin);
}
}
}

View File

@@ -308,6 +308,7 @@ namespace Terminal.Gui {
ClearNeedsDisplay ();
Driver.SetAttribute (GetNormalColor ());
Border.Title = Title; // not sure why Title is getting un-set
Border.DrawContent (this, false);
}

View File

@@ -10,10 +10,10 @@
<!-- Version numbers are automatically updated by gitversion when a release is released -->
<!-- In the source tree the version will always be 1.0 for all projects. -->
<!-- Do not modify these. Do NOT commit after manually running `dotnet-gitversion /updateprojectfiles` -->
<AssemblyVersion>1.0</AssemblyVersion>
<FileVersion>1.0</FileVersion>
<Version>1.0</Version>
<InformationalVersion>1.0</InformationalVersion>
<AssemblyVersion>2.0</AssemblyVersion>
<FileVersion>2.0</FileVersion>
<Version>2.0</Version>
<InformationalVersion>2.0</InformationalVersion>
</PropertyGroup>
<ItemGroup>
<None Remove="Resources\config.json" />
@@ -22,9 +22,13 @@
<EmbeddedResource Include="Resources\config.json" />
</ItemGroup>
<ItemGroup>
<!-- Enable Nuget Source Link for github -->
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="all" />
<PackageReference Include="NStack.Core" Version="1.0.7" />
<PackageReference Include="System.Text.Json" Version="7.0.1" />
<PackageReference Include="System.Management" Version="7.0.0" />
<InternalsVisibleTo Include="UnitTests" />
</ItemGroup>
<!-- Uncomment the RestoreSources element to have dotnet restore pull NStack from a local dir for testing -->

View File

@@ -268,8 +268,12 @@ namespace Terminal.Gui {
///<inheritdoc/>
public override void Redraw (Rect bounds)
{
var padding = Border.GetSumThickness ();
var scrRect = ViewToScreen (new Rect (0, 0, Frame.Width, Frame.Height));
if (!NeedDisplay.IsEmpty) {
Driver.SetAttribute (GetNormalColor ());
//Driver.DrawWindowFrame (scrRect, padding + 1, padding + 1, padding + 1, padding + 1, border: true, fill: true);
Clear ();
}
@@ -277,7 +281,6 @@ namespace Terminal.Gui {
contentView.Redraw (!NeedDisplay.IsEmpty ? contentView.Bounds : bounds);
Driver.Clip = savedClip;
ClearLayoutNeeded ();
ClearNeedsDisplay ();
if (!IgnoreBorderPropertyOnRedraw) {

View File

@@ -104,6 +104,8 @@ namespace UICatalog {
_aboutMessage.AppendLine (@" | | __/ | | | | | | | | | | | (_| | || |__| | |_| | | ");
_aboutMessage.AppendLine (@" |_|\___|_| |_| |_| |_|_|_| |_|\__,_|_(_)_____|\__,_|_| ");
_aboutMessage.AppendLine (@"");
_aboutMessage.AppendLine (@"v2 - Work in Progress");
_aboutMessage.AppendLine (@"");
_aboutMessage.AppendLine (@"https://github.com/gui-cs/Terminal.Gui");
Scenario scenario;
@@ -194,7 +196,7 @@ namespace UICatalog {
// a Scenario was selected. Otherwise, the user wants to exit UI Catalog.
Application.Init ();
Application.EnableConsoleScrolling = _enableConsoleScrolling;
//Application.EnableConsoleScrolling = _enableConsoleScrolling;
Application.Run<UICatalogTopLevel> ();
Application.Shutdown ();

View File

@@ -7,10 +7,10 @@
<!-- Version numbers are automatically updated by gitversion when a release is released -->
<!-- In the source tree the version will always be 2.0 for all projects. -->
<!-- Do not modify these. -->
<AssemblyVersion>1.0</AssemblyVersion>
<FileVersion>1.0</FileVersion>
<Version>1.0</Version>
<InformationalVersion>1.0</InformationalVersion>
<AssemblyVersion>2.0</AssemblyVersion>
<FileVersion>2.0</FileVersion>
<Version>2.0</Version>
<InformationalVersion>2.0</InformationalVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DefineConstants>TRACE</DefineConstants>
@@ -28,7 +28,7 @@
<None Update="./Scenarios/Spinning_globe_dark_small.gif" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="SixLabors.ImageSharp" Version="2.1.3" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.0.0" />
<PackageReference Include="CsvHelper" Version="30.0.1" />
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
</ItemGroup>

View File

@@ -230,7 +230,7 @@ namespace Terminal.Gui.CoreTests {
var rune = (Rune)driver.Contents [r, c, 0];
if (r == frame.Y - drawMarginFrame || r == frame.Bottom + drawMarginFrame - 1
|| c == frame.X - drawMarginFrame || c == frame.Right + drawMarginFrame - 1) {
Assert.Equal (Color.BrightGreen, color.Background);
Assert.Equal (Color.Black, color.Background); // because of #2345 - Border: can't change border color in window by Border.BorderBrush.
} else {
Assert.Equal (Color.Black, color.Background);
}
@@ -464,7 +464,7 @@ namespace Terminal.Gui.CoreTests {
var rune = (Rune)driver.Contents [r, c, 0];
if (r == frame.Y + sumThickness.Top || r == frame.Bottom - sumThickness.Bottom - 1
|| c == frame.X + sumThickness.Left || c == frame.Right - sumThickness.Right - 1) {
Assert.Equal (Color.BrightGreen, color.Background);
Assert.Equal (Color.Black, color.Background); // because of #2345 - Border: can't change border color in window by Border.BorderBrush.
} else {
Assert.Equal (Color.Black, color.Background);
}

View File

@@ -102,8 +102,8 @@ namespace Terminal.Gui.DriverTests {
[Fact, AutoInitShutdown (useFakeClipboard: false)]
public void IsSupported_Get ()
{
if (Clipboard.IsSupported) Assert.True (Clipboard.IsSupported);
else Assert.False (Clipboard.IsSupported);
if (Clipboard.IsSupported) Assert.True (Clipboard.IsSupported);
else Assert.False (Clipboard.IsSupported);
}
[Fact, AutoInitShutdown (useFakeClipboard: false)]
@@ -129,18 +129,19 @@ else Assert.False (Clipboard.IsSupported);
public void TrySetClipboardData_Sets_The_OS_Clipboard ()
{
var clipText = "The TrySetClipboardData_Sets_The_OS_Clipboard unit test pasted this to the OS clipboard.";
if (Clipboard.IsSupported) Assert.True (Clipboard.TrySetClipboardData (clipText));
else Assert.False (Clipboard.TrySetClipboardData (clipText));
if (Clipboard.IsSupported) Assert.True (Clipboard.TrySetClipboardData (clipText));
else Assert.False (Clipboard.TrySetClipboardData (clipText));
Application.Iteration += () => Application.RequestStop ();
Application.Run ();
if (Clipboard.IsSupported) Assert.Equal (clipText, Clipboard.Contents);
else Assert.NotEqual (clipText, Clipboard.Contents);
if (Clipboard.IsSupported) Assert.Equal (clipText, Clipboard.Contents);
else Assert.NotEqual (clipText, Clipboard.Contents);
}
// Disabling this test for now because it is not reliable
#if false
[Fact, AutoInitShutdown (useFakeClipboard: false)]
public void Contents_Copies_From_OS_Clipboard ()
{
@@ -262,12 +263,13 @@ else Assert.NotEqual (clipText, Clipboard.Contents);
Application.RequestStop ();
};
Application.Run ();
if (!failed) Assert.Equal (clipText, clipReadText.TrimEnd ());
}
#endif
bool Is_WSL_Platform ()
{
@@ -284,5 +286,6 @@ else Assert.NotEqual (clipText, Clipboard.Contents);
return false;
}
}
}
}

View File

@@ -149,7 +149,9 @@ namespace Terminal.Gui.TopLevelTests {
[AutoInitShutdown]
public void Internal_Tests ()
{
Toplevel.dragPosition = null; // dragPosition is `static` and must be reset for each instance or unit tests will fail?
var top = new Toplevel ();
var eventInvoked = "";
top.ChildUnloaded += (e) => eventInvoked = "ChildUnloaded";
@@ -898,9 +900,9 @@ namespace Terminal.Gui.TopLevelTests {
TestHelpers.AssertDriverContentsWithFrameAre (@"
File
┌────┐
│ │
└────┘
┌────
└────
@@ -908,7 +910,7 @@ namespace Terminal.Gui.TopLevelTests {
CTRL-N New", output);
Assert.Equal (win, Application.MouseGrabView);
Assert.Equal (new Rect (4, 2, 6, 3), Application.MouseGrabView.Frame);
Assert.Equal (new Rect (4, 2, 7, 3), Application.MouseGrabView.Frame);
} else if (iterations == 3) {
Assert.Equal (win, Application.MouseGrabView);
@@ -929,10 +931,10 @@ namespace Terminal.Gui.TopLevelTests {
TestHelpers.AssertDriverContentsWithFrameAre (@"
File
┌────┐
│ │
│ │
└────┘
┌────
└─────┘
@@ -940,7 +942,7 @@ namespace Terminal.Gui.TopLevelTests {
CTRL-N New", output);
Assert.Equal (win, Application.MouseGrabView);
Assert.Equal (new Rect (4, 1, 6, 4), Application.MouseGrabView.Frame);
Assert.Equal (new Rect (4, 1, 7, 3), Application.MouseGrabView.Frame);
} else if (iterations == 5) {
Assert.Equal (win, Application.MouseGrabView);