ViewExperiments.cs 7.6 KB

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