ViewExperiments.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. using System;
  2. using System.Linq;
  3. using Terminal.Gui;
  4. namespace UICatalog.Scenarios {
  5. [ScenarioMetadata (Name: "View Experiments", Description: "v2 View Experiments")]
  6. [ScenarioCategory ("Controls"), ScenarioCategory ("Borders"), ScenarioCategory ("Layout"), ScenarioCategory ("Proof of Concept")]
  7. public class ViewExperiments : Scenario {
  8. public override void Init ()
  9. {
  10. Application.Init ();
  11. ConfigurationManager.Themes.Theme = Theme;
  12. ConfigurationManager.Apply ();
  13. Application.Top.ColorScheme = Colors.ColorSchemes [TopLevelColorScheme];
  14. }
  15. public override void Setup ()
  16. {
  17. var containerLabel = new Label () {
  18. X = 0,
  19. Y = 0,
  20. Width = Dim.Fill (),
  21. Height = 3,
  22. };
  23. Application.Top.Add (containerLabel);
  24. var view = new View () {
  25. X = 2,
  26. Y = Pos.Bottom (containerLabel),
  27. Height = Dim.Fill (2),
  28. Width = Dim.Fill (2),
  29. Title = "View with 2xMargin, 2xBorder, & 2xPadding",
  30. ColorScheme = Colors.ColorSchemes ["Base"],
  31. Id = "DaView"
  32. };
  33. //Application.Top.Add (view);
  34. view.Margin.Thickness = new Thickness (2, 2, 2, 2);
  35. view.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
  36. view.Margin.Data = "Margin";
  37. view.Border.Thickness = new Thickness (3);
  38. view.Border.LineStyle = LineStyle.Single;
  39. view.Border.ColorScheme = view.ColorScheme;
  40. view.Border.Data = "Border";
  41. view.Padding.Thickness = new Thickness (2);
  42. view.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
  43. view.Padding.Data = "Padding";
  44. var window1 = new Window () {
  45. X = 2,
  46. Y = 3,
  47. Height = 7,
  48. Width = 17,
  49. Title = "Window 1",
  50. Text = "Window #2",
  51. TextAlignment = TextAlignment.Centered
  52. };
  53. window1.Margin.Thickness = new Thickness (0);
  54. window1.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
  55. window1.Margin.Data = "Margin";
  56. window1.Border.Thickness = new Thickness (1);
  57. window1.Border.LineStyle = LineStyle.Single;
  58. window1.Border.ColorScheme = view.ColorScheme;
  59. window1.Border.Data = "Border";
  60. window1.Padding.Thickness = new Thickness (0);
  61. window1.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
  62. window1.Padding.Data = "Padding";
  63. view.Add (window1);
  64. var window2 = new Window () {
  65. X = Pos.Right (window1) + 1,
  66. Y = 3,
  67. Height = 5,
  68. Width = 37,
  69. Title = "Window2",
  70. Text = "Window #2 (Right(window1)+1",
  71. TextAlignment = TextAlignment.Centered
  72. };
  73. //view3.InitializeFrames ();
  74. window2.Margin.Thickness = new Thickness (1, 1, 0, 0);
  75. window2.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
  76. window2.Margin.Data = "Margin";
  77. window2.Border.Thickness = new Thickness (1, 1, 1, 1);
  78. window2.Border.LineStyle = LineStyle.Single;
  79. window2.Border.ColorScheme = view.ColorScheme;
  80. window2.Border.Data = "Border";
  81. window2.Padding.Thickness = new Thickness (1, 1, 0, 0);
  82. window2.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
  83. window2.Padding.Data = "Padding";
  84. view.Add (window2);
  85. var view4 = new View () {
  86. X = Pos.Right (window2) + 1,
  87. Y = 3,
  88. Height = 5,
  89. Width = 37,
  90. Title = "View4",
  91. Text = "View #4 (Right(window2)+1",
  92. TextAlignment = TextAlignment.Centered
  93. };
  94. //view4.InitializeFrames ();
  95. view4.Margin.Thickness = new Thickness (0, 0, 1, 1);
  96. view4.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
  97. view4.Margin.Data = "Margin";
  98. view4.Border.Thickness = new Thickness (1, 1, 1, 1);
  99. view4.Border.LineStyle = LineStyle.Single;
  100. view4.Border.ColorScheme = view.ColorScheme;
  101. view4.Border.Data = "Border";
  102. view4.Padding.Thickness = new Thickness (0, 0, 1, 1);
  103. view4.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
  104. view4.Padding.Data = "Padding";
  105. view.Add (view4);
  106. var view5 = new View () {
  107. X = Pos.Right (view4) + 1,
  108. Y = 3,
  109. Height = Dim.Fill (2),
  110. Width = Dim.Fill (),
  111. Title = "View5",
  112. Text = "View #5 (Right(view4)+1 Fill",
  113. TextAlignment = TextAlignment.Centered
  114. };
  115. //view5.InitializeFrames ();
  116. view5.Margin.Thickness = new Thickness (0, 0, 0, 0);
  117. view5.Margin.ColorScheme = Colors.ColorSchemes ["Toplevel"];
  118. view5.Margin.Data = "Margin";
  119. view5.Border.Thickness = new Thickness (1, 1, 1, 1);
  120. view5.Border.LineStyle = LineStyle.Single;
  121. view5.Border.ColorScheme = view.ColorScheme;
  122. view5.Border.Data = "Border";
  123. view5.Padding.Thickness = new Thickness (0, 0, 0, 0);
  124. view5.Padding.ColorScheme = Colors.ColorSchemes ["Error"];
  125. view5.Padding.Data = "Padding";
  126. view.Add (view5);
  127. var label = new Label () {
  128. Text = "AutoSize true; 1;1:",
  129. AutoSize = true,
  130. X = 1,
  131. Y = 1,
  132. };
  133. view.Add (label);
  134. var edit = new TextField () {
  135. Text = "Right (label)",
  136. X = Pos.Right (label),
  137. Y = 1,
  138. Width = 15,
  139. Height = 1
  140. };
  141. view.Add (edit);
  142. edit = new TextField () {
  143. Text = "Right (edit) + 1",
  144. X = Pos.Right (edit) + 1,
  145. Y = 1,
  146. Width = 20,
  147. Height = 1
  148. };
  149. view.Add (edit);
  150. var label50 = new View () {
  151. Title = "Border Inherit Demo",
  152. Text = "Center();50%",
  153. X = Pos.Center (),
  154. Y = Pos.Percent (50),
  155. Width = 30,
  156. TextAlignment = TextAlignment.Centered,
  157. //Height = 1
  158. };
  159. label50.Border.Thickness = new Thickness (1, 3, 1, 1);
  160. label50.Height = 5;
  161. view.Add (label50);
  162. edit = new TextField () {
  163. Text = "0 + Percent(50);70%",
  164. X = 0 + Pos.Percent (50),
  165. Y = Pos.Percent (70),
  166. Width = 30,
  167. Height = 1
  168. };
  169. view.Add (edit);
  170. edit = new TextField () {
  171. Text = "AnchorEnd[Right];AnchorEnd (1)",
  172. Y = Pos.AnchorEnd (1),
  173. Width = 30,
  174. Height = 1
  175. };
  176. edit.X = Pos.AnchorEnd () - (Pos.Right (edit) - Pos.Left (edit));
  177. view.Add (edit);
  178. edit = new TextField () {
  179. Text = "Left;AnchorEnd (2)",
  180. X = 0,
  181. Y = Pos.AnchorEnd (2),
  182. Width = 30,
  183. Height = 1
  184. };
  185. view.Add (edit);
  186. view.LayoutComplete += (s, e) => {
  187. containerLabel.Text = $"Container.Frame: {Application.Top.Frame} .Bounds: {Application.Top.Bounds}\nView.Frame: {view.Frame} .Bounds: {view.Bounds} .BoundsOffset: {view.GetBoundsOffset ()}\n .Padding.Frame: {view.Padding.Frame} .Padding.Bounds: {view.Padding.Bounds}";
  188. };
  189. view.X = Pos.Center ();
  190. var editor = new Adornments.AdornmentsEditor () {
  191. Title = $"Adornments Editor",
  192. X = 0,
  193. Y = Pos.Bottom (containerLabel),
  194. Width = Dim.Fill (),
  195. ViewToEdit = view,
  196. };
  197. Application.Top.Add (editor);
  198. view.X = 36;
  199. view.Y = 4;
  200. view.Width = Dim.Fill ();
  201. view.Height = Dim.Fill ();
  202. Application.Top.Add (view);
  203. }
  204. }
  205. }