Pārlūkot izejas kodu

Merge pull request #950 from tig/remove_ienumerable

POC to remove IEnumerable from View & Window
Charlie Kindel 4 gadi atpakaļ
vecāks
revīzija
295b2ac779

+ 4 - 4
Example/demo.cs

@@ -185,16 +185,16 @@ static class Demo {
 		};
 
 		var tf = new Button (3, 19, "Ok");
+		var frameView = new FrameView (new Rect (3, 10, 25, 6), "Options");
+		frameView.Add (new CheckBox (1, 0, "Remember me"));
+		frameView.Add (new RadioGroup (1, 2, new ustring [] { "_Personal", "_Company" }));
 		// Add some content
 		container.Add (
 			login,
 			loginText,
 			password,
 			passText,
-			new FrameView (new Rect (3, 10, 25, 6), "Options"){
-				new CheckBox (1, 0, "Remember me"),
-				new RadioGroup (1, 2, new ustring [] { "_Personal", "_Company" }),
-			},
+			frameView,
 			new ListView (new Rect (59, 6, 16, 4), new string [] {
 				"First row",
 				"<>",

+ 10 - 10
Terminal.Gui/Core/View.cs

@@ -111,7 +111,7 @@ namespace Terminal.Gui {
 	///    frames for the vies that use <see cref="LayoutStyle.Computed"/>.
 	/// </para>
 	/// </remarks>
-	public partial class View : Responder, IEnumerable, ISupportInitializeNotification {
+	public partial class View : Responder, ISupportInitializeNotification {
 
 		internal enum Direction {
 			Forward,
@@ -386,15 +386,15 @@ namespace Terminal.Gui {
 			}
 		}
 
-		/// <summary>
-		/// Gets an enumerator that enumerates the subviews in this view.
-		/// </summary>
-		/// <returns>The enumerator.</returns>
-		public IEnumerator GetEnumerator ()
-		{
-			foreach (var v in InternalSubviews)
-				yield return v;
-		}
+		///// <summary>
+		///// Gets an enumerator that enumerates the subviews in this view.
+		///// </summary>
+		///// <returns>The enumerator.</returns>
+		//public IEnumerator GetEnumerator ()
+		//{
+		//	foreach (var v in InternalSubviews)
+		//		yield return v;
+		//}
 
 		LayoutStyle layoutStyle;
 

+ 9 - 9
Terminal.Gui/Core/Window.cs

@@ -20,7 +20,7 @@ namespace Terminal.Gui {
 	/// The 'client area' of a <see cref="Window"/> is a rectangle deflated by one or more rows/columns from <see cref="View.Bounds"/>. A this time there is no
 	/// API to determine this rectangle.
 	/// </remarks>
-	public class Window : Toplevel, IEnumerable {
+	public class Window : Toplevel {
 		View contentView;
 		ustring title;
 
@@ -122,14 +122,14 @@ namespace Terminal.Gui {
 			base.Add (contentView);
 		}
 
-		/// <summary>
-		/// Enumerates the various <see cref="View"/>s in the embedded <see cref="ContentView"/>.
-		/// </summary>
-		/// <returns>The enumerator.</returns>
-		public new IEnumerator GetEnumerator ()
-		{
-			return contentView.GetEnumerator ();
-		}
+		///// <summary>
+		///// Enumerates the various <see cref="View"/>s in the embedded <see cref="ContentView"/>.
+		///// </summary>
+		///// <returns>The enumerator.</returns>
+		//public new IEnumerator GetEnumerator ()
+		//{
+		//	return contentView.GetEnumerator ();
+		//}
 
 		/// <inheritdoc/>
 		public override void Add (View view)

+ 3 - 3
Terminal.Gui/Directory.Build.props

@@ -14,9 +14,9 @@
           
        e.g. If AssemblyVersion is 1.2.3.4, Version could be EITHER 1.2.3.4 or 1.2.3-pre.4 depending on whether it's a pre-release or not.
     -->
-    <Version>1.0.0-pre.4</Version>
-    <AssemblyVersion>1.0.0.4</AssemblyVersion>
-    <FileVersion>1.0.0.4</FileVersion>    
+    <Version>1.0.0-pre.5</Version>
+    <AssemblyVersion>1.0.0.5</AssemblyVersion>
+    <FileVersion>1.0.0.5</FileVersion>    
     <Authors>Miguel de Icaza, Charlie Kindel (@tig), @BDisp</Authors>
   </PropertyGroup>
 

+ 2 - 1
Terminal.Gui/Terminal.Gui.csproj

@@ -24,7 +24,8 @@
     <PackageReleaseNotes>
       v1.00 -
       * If StatusBar.Visible is set to false, TopLevel resizes correctly enabling hiding/showing of a StatusBar. UICatalog demonstrates.
-      * New sample/demo app - ReactiveExample - Shows how to use reactive extensions and ReactiveUI with gui.cs.
+      * New sample/demo app - ReactiveExample - Shows how to use reactive extensions and ReactiveUI with gui.cs. (Thanks @worldbeater)
+      * BREAKING API CHANGE - Removed IEnumerable from View and Window. Use Subviews property instead. See #950.
       
       v0.90 - "Feature Complete" pre-release of Terminal.Gui (aka gui.cs) 1.0. This release is a signficant upgrade from the previous published release (0.81). Most of the major changes and bug fixes are listed below. NOTE: This release includes breaking changes to the API; we will strive to avoid any more breaking changes before 1.0.
 

+ 1 - 1
Terminal.Gui/Views/ScrollView.cs

@@ -643,7 +643,7 @@ namespace Terminal.Gui {
 
 		void SetViewsNeedsDisplay ()
 		{
-			foreach (View view in contentView) {
+			foreach (View view in contentView.Subviews) {
 				view.SetNeedsDisplay ();
 			}
 		}

+ 0 - 3
UnitTests/ViewTests.cs

@@ -35,7 +35,6 @@ namespace Terminal.Gui {
 			Assert.Empty (r.Subviews);
 			Assert.False (r.WantContinuousButtonPressed);
 			Assert.False (r.WantMousePositionReports);
-			Assert.Null (r.GetEnumerator ().Current);
 			Assert.Null (r.SuperView);
 			Assert.Null (r.MostFocused);
 
@@ -59,7 +58,6 @@ namespace Terminal.Gui {
 			Assert.Empty (r.Subviews);
 			Assert.False (r.WantContinuousButtonPressed);
 			Assert.False (r.WantMousePositionReports);
-			Assert.Null (r.GetEnumerator ().Current);
 			Assert.Null (r.SuperView);
 			Assert.Null (r.MostFocused);
 
@@ -83,7 +81,6 @@ namespace Terminal.Gui {
 			Assert.Empty (r.Subviews);
 			Assert.False (r.WantContinuousButtonPressed);
 			Assert.False (r.WantMousePositionReports);
-			Assert.Null (r.GetEnumerator ().Current);
 			Assert.Null (r.SuperView);
 			Assert.Null (r.MostFocused);