Partially Fixes #2483 - Removes old Border and leverages LineCanvas for Frames, etc... (#2527)

* POC

* View.DrawFrame now uses LineCanvas

* Fixes #2531. Toplevel should redraw only if it's needed.

* Fix toplevel when mdi is enabled preventing clear the screen twice.

* Massive LineCanvis updates

* Fixes #2534. Bounds isn't updating when the Frame is changed.

* Almost everything works!

* Had to disable a few tests but all unit test now pass again

* Deleted ConsoleDriver.DrawWindowFrame; hacked ProgressBar

* Deleted ConsoleDriver.DrawWindowTitle; moved to Frame.DrawTitle

* Renames BorderFrame to Border

* Removed old commented code

* Tweaked scenario

* Added auto convert \r\n to Enviornment.NewLine in TestHelpers.AssertEqual

* Fix merge errors.

* Fix AssertEqual newlines to platform-specific.

* Refactored frames drawing; view adds to its lineview, superview renders them

* New titlebar style based on Border.Top size; fixed bugs

* wzard bug

---------

Co-authored-by: BDisp <bd.bdisp@gmail.com>
This commit is contained in:
Tig
2023-04-13 15:35:01 -06:00
committed by GitHub
parent 5317489a8b
commit 8c59e8255f
49 changed files with 2970 additions and 1789 deletions

View File

@@ -23,7 +23,7 @@ namespace UICatalog.Scenarios {
public ThicknessEditor ()
{
Margin.Thickness = new Thickness (0);
BorderFrame.Thickness = new Thickness (1);
Border.Thickness = new Thickness (1);
}
public override void BeginInit ()
@@ -121,7 +121,7 @@ namespace UICatalog.Scenarios {
Add (copyTop);
//LayoutSubviews ();
Height = Margin.Thickness.Vertical + BorderFrame.Thickness.Vertical + Padding.Thickness.Vertical + 4;
Height = Margin.Thickness.Vertical + Border.Thickness.Vertical + Padding.Thickness.Vertical + 4;
Width = 20;
}
}
@@ -142,16 +142,16 @@ namespace UICatalog.Scenarios {
};
Add (marginEditor);
viewToEdit.BorderFrame.ColorScheme = Colors.ColorSchemes ["Base"];
viewToEdit.Border.ColorScheme = Colors.ColorSchemes ["Base"];
var borderEditor = new ThicknessEditor () {
X = Pos.Right (marginEditor),
Y = 0,
Title = "Border",
Thickness = viewToEdit.BorderFrame.Thickness,
Thickness = viewToEdit.Border.Thickness,
};
borderEditor.Margin.Thickness = new Thickness (0, 0, 1, 0);
borderEditor.ThicknessChanged += (s, a) => {
viewToEdit.BorderFrame.Thickness = a.Thickness;
viewToEdit.Border.Thickness = a.Thickness;
};
Add (borderEditor);
@@ -166,11 +166,11 @@ namespace UICatalog.Scenarios {
e => NStack.ustring.Make (e.ToString ())).ToArray ()) {
X = Pos.Left (styleLabel),
Y = Pos.Bottom (styleLabel),
SelectedItem = (int)viewToEdit.BorderFrame.BorderStyle
SelectedItem = (int)viewToEdit.Border.BorderStyle
};
rbBorderStyle.SelectedItemChanged += (s, e) => {
viewToEdit.BorderFrame.BorderStyle = (LineStyle)e.SelectedItem;
viewToEdit.Border.BorderStyle = (LineStyle)e.SelectedItem;
viewToEdit.SetNeedsDisplay ();
};
Add (rbBorderStyle);
@@ -192,7 +192,7 @@ namespace UICatalog.Scenarios {
//rbBorderStyle.SelectedItemChanged += (e) => {
// viewToEdit.BorderFrame.BorderStyle = (BorderStyle)e.SelectedItem;
// viewToEdit.Border.BorderStyle = (BorderStyle)e.SelectedItem;
// viewToEdit.SetNeedsDisplay ();
//};
@@ -275,69 +275,68 @@ namespace UICatalog.Scenarios {
view.Margin.Thickness = new Thickness (2, 2, 2, 2);
view.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
view.Margin.Data = "Margin";
view.BorderFrame.Thickness = new Thickness (2);
view.BorderFrame.BorderStyle = LineStyle.Single;
view.BorderFrame.ColorScheme = view.ColorScheme;
view.BorderFrame.Data = "BorderFrame";
view.Border.Thickness = new Thickness (2);
view.Border.BorderStyle = LineStyle.Single;
view.Border.ColorScheme = view.ColorScheme;
view.Border.Data = "Border";
view.Padding.Thickness = new Thickness (2);
view.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
view.Padding.Data = "Padding";
var view2 = new View () {
var window1 = new Window () {
X = 2,
Y = 3,
Height = 7,
Width = 17,
Title = "View2",
Text = "View #2",
Title = "Window 1",
Text = "Window #2",
TextAlignment = TextAlignment.Centered
};
//view2.InitializeFrames ();
view2.Margin.Thickness = new Thickness (1);
view2.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
view2.Margin.Data = "Margin";
view2.BorderFrame.Thickness = new Thickness (1);
view2.BorderFrame.BorderStyle = LineStyle.Single;
view2.BorderFrame.ColorScheme = view.ColorScheme;
view2.BorderFrame.Data = "BorderFrame";
view2.Padding.Thickness = new Thickness (1);
view2.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
view2.Padding.Data = "Padding";
window1.Margin.Thickness = new Thickness (0);
window1.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
window1.Margin.Data = "Margin";
window1.Border.Thickness = new Thickness (1);
window1.Border.BorderStyle = LineStyle.Single;
window1.Border.ColorScheme = view.ColorScheme;
window1.Border.Data = "Border";
window1.Padding.Thickness = new Thickness (0);
window1.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
window1.Padding.Data = "Padding";
view.Add (view2);
view.Add (window1);
var view3 = new View () {
X = Pos.Right (view2) + 1,
var window2 = new Window () {
X = Pos.Right (window1) + 1,
Y = 3,
Height = 5,
Width = 37,
Title = "View3",
Text = "View #3 (Right(view2)+1",
Title = "Window2",
Text = "Window #2 (Right(window1)+1",
TextAlignment = TextAlignment.Centered
};
//view3.InitializeFrames ();
view3.Margin.Thickness = new Thickness (1, 1, 0, 0);
view3.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
view3.Margin.Data = "Margin";
view3.BorderFrame.Thickness = new Thickness (1, 1, 1, 1);
view3.BorderFrame.BorderStyle = LineStyle.Single;
view3.BorderFrame.ColorScheme = view.ColorScheme;
view3.BorderFrame.Data = "BorderFrame";
view3.Padding.Thickness = new Thickness (1, 1, 0, 0);
view3.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
view3.Padding.Data = "Padding";
window2.Margin.Thickness = new Thickness (1, 1, 0, 0);
window2.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
window2.Margin.Data = "Margin";
window2.Border.Thickness = new Thickness (1, 1, 1, 1);
window2.Border.BorderStyle = LineStyle.Single;
window2.Border.ColorScheme = view.ColorScheme;
window2.Border.Data = "Border";
window2.Padding.Thickness = new Thickness (1, 1, 0, 0);
window2.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
window2.Padding.Data = "Padding";
view.Add (view3);
view.Add (window2);
var view4 = new View () {
X = Pos.Right (view3) + 1,
X = Pos.Right (window2) + 1,
Y = 3,
Height = 5,
Width = 37,
Title = "View4",
Text = "View #4 (Right(view3)+1",
Text = "View #4 (Right(window2)+1",
TextAlignment = TextAlignment.Centered
};
@@ -345,10 +344,10 @@ namespace UICatalog.Scenarios {
view4.Margin.Thickness = new Thickness (0, 0, 1, 1);
view4.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
view4.Margin.Data = "Margin";
view4.BorderFrame.Thickness = new Thickness (1, 1, 1, 1);
view4.BorderFrame.BorderStyle = LineStyle.Single;
view4.BorderFrame.ColorScheme = view.ColorScheme;
view4.BorderFrame.Data = "BorderFrame";
view4.Border.Thickness = new Thickness (1, 1, 1, 1);
view4.Border.BorderStyle = LineStyle.Single;
view4.Border.ColorScheme = view.ColorScheme;
view4.Border.Data = "Border";
view4.Padding.Thickness = new Thickness (0, 0, 1, 1);
view4.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
view4.Padding.Data = "Padding";
@@ -368,10 +367,10 @@ namespace UICatalog.Scenarios {
view5.Margin.Thickness = new Thickness (0, 0, 0, 0);
view5.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
view5.Margin.Data = "Margin";
view5.BorderFrame.Thickness = new Thickness (1, 1, 1, 1);
view5.BorderFrame.BorderStyle = LineStyle.Single;
view5.BorderFrame.ColorScheme = view.ColorScheme;
view5.BorderFrame.Data = "BorderFrame";
view5.Border.Thickness = new Thickness (1, 1, 1, 1);
view5.Border.BorderStyle = LineStyle.Single;
view5.Border.ColorScheme = view.ColorScheme;
view5.Border.Data = "Border";
view5.Padding.Thickness = new Thickness (0, 0, 0, 0);
view5.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
view5.Padding.Data = "Padding";