ViewExperiments.cs 8.1 KB

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