ViewExperiments.cs 8.2 KB

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