Browse Source

Mouse support for ListViews; ProgressBar; Fix MainLoop's timers

Miguel de Icaza 7 năm trước cách đây
mục cha
commit
c4e1266326

+ 1 - 0
README.md

@@ -17,6 +17,7 @@ The toolkit contains various controls for building text user interfaces:
 * [Menus](https://migueldeicaza.github.io/gui.cs/api/Terminal.Gui/Terminal.Gui.MenuBar.html)
 * [ListViews](https://migueldeicaza.github.io/gui.cs/api/Terminal.Gui/Terminal.Gui.ListView.html)
 * [Frames](https://migueldeicaza.github.io/gui.cs/api/Terminal.Gui/Terminal.Gui.FrameView.html)
+* [ProgressBars](https://migueldeicaza.github.io/gui.cs/api/Terminal.Gui/Terminal.Gui.ProgressBar.html)
 * [Scroll views](https://migueldeicaza.github.io/gui.cs/api/Terminal.Gui/Terminal.Gui.ScrollView.html) and [Scrollbars](https://migueldeicaza.github.io/gui.cs/api/Terminal.Gui/Terminal.Gui.ScrollBarView.html)
 
 All visible UI elements are subclasses of the

+ 5 - 5
Terminal.Gui/MonoCurses/mainloop.cs

@@ -253,12 +253,12 @@ namespace Mono.Terminal {
 			var copy = timeouts;
 			timeouts = new SortedList<double,Timeout> ();
 			foreach (var k in copy.Keys){
-				if (k >= now)
-					break;
-
 				var timeout = copy [k];
-				if (timeout.Callback (this))
-					AddTimeout (timeout.Span, timeout);
+				if (k < now) {
+					if (timeout.Callback (this))
+						AddTimeout (timeout.Span, timeout);
+				} else
+					timeouts.Add (k, timeout);
 			}
 		}
 

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

@@ -68,6 +68,7 @@
     <Compile Include="Views\FrameView.cs" />
     <Compile Include="Views\ListView.cs" />
     <Compile Include="Views\Clipboard.cs" />
+    <Compile Include="Views\ProgressBar.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="packages.config" />

+ 16 - 0
Terminal.Gui/Views/ListView.cs

@@ -363,5 +363,21 @@ namespace Terminal.Gui {
 		{
 			Driver.Move (0, selected);
 		}
+
+		public override bool MouseEvent(MouseEvent me)
+		{
+			if (!me.Flags.HasFlag (MouseFlags.Button1Clicked))
+				return false;
+
+			if (!HasFocus) 
+				SuperView.SetFocus (this);
+
+			if (me.Y + top >= source.Count)
+				return true;
+
+			selected = top + me.Y;
+			SetNeedsDisplay ();
+			return true;
+		}
 	}
 }

+ 98 - 0
Terminal.Gui/Views/ProgressBar.cs

@@ -0,0 +1,98 @@
+using System;
+namespace Terminal.Gui {
+
+	/// <summary>
+	/// Progress bar can indicate progress of an activity visually.
+	/// </summary>
+	/// <remarks>
+	///   <para>
+	///     The progressbar can operate in two modes, percentage mode, or
+	///     activity mode.  The progress bar starts in percentage mode and
+	///     setting the Fraction property will reflect on the UI the progress 
+	///     made so far.   Activity mode is used when the application has no 
+	///     way of knowing how much time is left, and is started when you invoke
+	///     the Pulse() method.    You should call the Pulse method repeatedly as
+	///     your application makes progress.
+	///   </para>
+	/// </remarks>
+	public class ProgressBar : View {
+		bool isActivity;
+		int activityPos, delta;
+		float progress;
+
+		/// <summary>
+		/// Initializes a new instance of the <see cref="T:Terminal.Gui.ProgressBar"/> class, starts in percentage mode.
+		/// </summary>
+		/// <param name="rect">Rect.</param>
+		public ProgressBar (Rect rect) : base (rect)
+		{
+			CanFocus = false;
+			progress = 0;
+		}
+
+		float fraction;
+
+		/// <summary>
+		/// Gets or sets the progress indicator fraction to display, must be a value between 0 and 1.
+		/// </summary>
+		/// <value>The fraction representing the progress.</value>
+		public float Fraction {
+			get => fraction;
+			set {
+				fraction = value;
+				isActivity = false;
+				SetNeedsDisplay ();
+			}
+		}
+
+		/// <summary>
+		/// Notifies the progress bar that some progress has taken place.
+		/// </summary>
+		/// <remarks>
+		/// If the ProgressBar is is percentage mode, it switches to activity
+		/// mode.   If is in activity mode, the marker is moved.
+		/// </remarks>
+		public void Pulse ()
+		{
+			if (!isActivity) {
+				isActivity = true;
+				activityPos = 0;
+				delta = 1;
+			} else {
+				activityPos += delta;
+				if (activityPos < 0) {
+					activityPos = 1;
+					delta = 1;
+				} else if (activityPos >= Frame.Width) {
+					activityPos = Frame.Width - 2;
+					delta = -1;
+				}
+			}
+
+			SetNeedsDisplay ();
+		}
+
+		public override void Redraw(Rect region)
+		{
+			Driver.SetAttribute (ColorScheme.Normal);
+
+			int top = Frame.Width;
+			if (isActivity) {
+				Move (0, 0);
+				for (int i = 0; i < top; i++)
+					if (i == activityPos)
+						Driver.AddSpecial (SpecialChar.Stipple);
+					else
+						Driver.AddRune (' ');
+			} else {
+				Move (0, 0);
+				int mid = (int)(fraction * top);
+				int i;
+				for (i = 0; i < mid; i++)
+					Driver.AddSpecial (SpecialChar.Stipple);
+				for (; i < top; i++)
+					Driver.AddRune (' ');
+			}
+		}
+	}
+}

+ 1 - 0
XmlYamlMapping.json

@@ -26,6 +26,7 @@
   "/cvs/gui.cs/ecmadocs/en/Terminal.Gui/ListView.xml": "/cvs/gui.cs/docfx/api/Terminal.Gui/Terminal.Gui.ListView.yml",
   "/cvs/gui.cs/ecmadocs/en/Terminal.Gui/SpecialChar.xml": "/cvs/gui.cs/docfx/api/Terminal.Gui/Terminal.Gui.SpecialChar.yml",
   "/cvs/gui.cs/ecmadocs/en/Terminal.Gui/FrameView.xml": "/cvs/gui.cs/docfx/api/Terminal.Gui/Terminal.Gui.FrameView.yml",
+  "/cvs/gui.cs/ecmadocs/en/Terminal.Gui/ProgressBar.xml": "/cvs/gui.cs/docfx/api/Terminal.Gui/Terminal.Gui.ProgressBar.yml",
   "/cvs/gui.cs/ecmadocs/en/Terminal.Gui/Toplevel.xml": "/cvs/gui.cs/docfx/api/Terminal.Gui/Terminal.Gui.Toplevel.yml",
   "/cvs/gui.cs/ecmadocs/en/Terminal.Gui/MouseFlags.xml": "/cvs/gui.cs/docfx/api/Terminal.Gui/Terminal.Gui.MouseFlags.yml",
   "/cvs/gui.cs/ecmadocs/en/Terminal.Gui/MenuBarItem.xml": "/cvs/gui.cs/docfx/api/Terminal.Gui/Terminal.Gui.MenuBarItem.yml",

+ 11 - 0
demo.cs

@@ -1,5 +1,6 @@
 using Terminal.Gui;
 using System;
+using Mono.Terminal;
 
 class Demo {
 	class Box10x : View {
@@ -82,6 +83,14 @@ class Demo {
 			ShowHorizontalScrollIndicator = true
 		};
 		scrollView2.Add (new Box10x (0, 0));
+		var progress = new ProgressBar (new Rect (68, 1, 10, 1));
+		bool timer (MainLoop caller)
+		{
+			progress.Pulse ();
+			return true;
+		}
+
+		Application.MainLoop.AddTimeout (TimeSpan.FromMilliseconds (300), timer);
 
 		// Add some content
 		container.Add (
@@ -106,6 +115,7 @@ class Demo {
 			//scrollView2,
 			new Button (3, 19, "Ok"),
 			new Button (10, 19, "Cancel"),
+			progress,
 			new Label (3, 22, "Press ESC and 9 to activate the menubar")
 		);
 
@@ -139,6 +149,7 @@ class Demo {
 	static void Main ()
 	{
 		Application.Init ();
+
 		var top = Application.Top;
 		var tframe = top.Frame;
 

+ 7 - 0
docfx/api/Terminal.Gui.yml

@@ -27,6 +27,7 @@ items:
   - Terminal.Gui.MouseEvent
   - Terminal.Gui.MouseFlags
   - Terminal.Gui.Point
+  - Terminal.Gui.ProgressBar
   - Terminal.Gui.RadioGroup
   - Terminal.Gui.Rect
   - Terminal.Gui.Responder
@@ -190,6 +191,12 @@ references:
   name: Point
   nameWithType: Point
   fullName: Terminal.Gui.Point
+- uid: Terminal.Gui.ProgressBar
+  parent: Terminal.Gui
+  isExternal: false
+  name: ProgressBar
+  nameWithType: ProgressBar
+  fullName: Terminal.Gui.ProgressBar
 - uid: Terminal.Gui.RadioGroup
   parent: Terminal.Gui
   isExternal: false

+ 2 - 1
docfx/api/Terminal.Gui/Terminal.Gui.Attribute.yml

@@ -37,8 +37,9 @@ items:
   assemblies:
   - Terminal.Gui
   namespace: Terminal.Gui
+  summary: Initializes a new instance of the <xref href="Terminal.Gui.Attribute"></xref> struct.
   syntax:
-    content: public Attribute (int v);
+    content: public Attribute (int value);
     parameters:
     - id: v
       type: System.Int32

+ 78 - 17
docfx/api/Terminal.Gui/Terminal.Gui.ListView.yml

@@ -6,6 +6,8 @@ items:
   - Terminal.Gui.ListView.#ctor(Terminal.Gui.Rect,System.Collections.IList)
   - Terminal.Gui.ListView.#ctor(Terminal.Gui.Rect,Terminal.Gui.IListDataSource)
   - Terminal.Gui.ListView.AllowsMarking
+  - Terminal.Gui.ListView.MouseEvent(Terminal.Gui.MouseEvent)
+  - Terminal.Gui.ListView.PositionCursor
   - Terminal.Gui.ListView.ProcessKey(Terminal.Gui.KeyEvent)
   - Terminal.Gui.ListView.Redraw(Terminal.Gui.Rect)
   - Terminal.Gui.ListView.SelectedChanged
@@ -32,7 +34,6 @@ items:
   implements: []
   inheritedMembers:
   - Terminal.Gui.Responder.CanFocus
-  - Terminal.Gui.Responder.MouseEvent(Terminal.Gui.MouseEvent)
   - Terminal.Gui.View.Add(Terminal.Gui.View)
   - Terminal.Gui.View.Add(Terminal.Gui.View[])
   - Terminal.Gui.View.AddCh(System.Int32,System.Int32,System.Int32)
@@ -64,7 +65,6 @@ items:
   - Terminal.Gui.View.LayoutSubviews
   - Terminal.Gui.View.MostFocused
   - Terminal.Gui.View.Move(System.Int32,System.Int32)
-  - Terminal.Gui.View.PositionCursor
   - Terminal.Gui.View.ProcessColdKey(Terminal.Gui.KeyEvent)
   - Terminal.Gui.View.ProcessHotKey(Terminal.Gui.KeyEvent)
   - Terminal.Gui.View.Remove(Terminal.Gui.View)
@@ -146,6 +146,47 @@ items:
       description: <code>true</code> if allows marking elements of the list; otherwise, <code>false</code>.
   overload: Terminal.Gui.ListView.AllowsMarking*
   exceptions: []
+- uid: Terminal.Gui.ListView.MouseEvent(Terminal.Gui.MouseEvent)
+  id: MouseEvent(Terminal.Gui.MouseEvent)
+  parent: Terminal.Gui.ListView
+  langs:
+  - csharp
+  name: MouseEvent(MouseEvent)
+  nameWithType: ListView.MouseEvent(MouseEvent)
+  fullName: ListView.MouseEvent(MouseEvent)
+  type: Method
+  assemblies:
+  - Terminal.Gui
+  namespace: Terminal.Gui
+  syntax:
+    content: public override bool MouseEvent (Terminal.Gui.MouseEvent me);
+    parameters:
+    - id: me
+      type: Terminal.Gui.MouseEvent
+      description: To be added.
+    return:
+      type: System.Boolean
+      description: To be added.
+  overload: Terminal.Gui.ListView.MouseEvent*
+  exceptions: []
+- uid: Terminal.Gui.ListView.PositionCursor
+  id: PositionCursor
+  parent: Terminal.Gui.ListView
+  langs:
+  - csharp
+  name: PositionCursor()
+  nameWithType: ListView.PositionCursor()
+  fullName: ListView.PositionCursor()
+  type: Method
+  assemblies:
+  - Terminal.Gui
+  namespace: Terminal.Gui
+  summary: Positions the cursor in this view
+  syntax:
+    content: public override void PositionCursor ();
+    parameters: []
+  overload: Terminal.Gui.ListView.PositionCursor*
+  exceptions: []
 - uid: Terminal.Gui.ListView.ProcessKey(Terminal.Gui.KeyEvent)
   id: ProcessKey(Terminal.Gui.KeyEvent)
   parent: Terminal.Gui.ListView
@@ -158,15 +199,16 @@ items:
   assemblies:
   - Terminal.Gui
   namespace: Terminal.Gui
+  summary: Handles cursor movement for this view, passes all other events.
   syntax:
     content: public override bool ProcessKey (Terminal.Gui.KeyEvent kb);
     parameters:
     - id: kb
       type: Terminal.Gui.KeyEvent
-      description: To be added.
+      description: Keyboard event.
     return:
       type: System.Boolean
-      description: To be added.
+      description: <code>true</code>, if key was processed, <code>false</code> otherwise.
   overload: Terminal.Gui.ListView.ProcessKey*
   exceptions: []
 - uid: Terminal.Gui.ListView.Redraw(Terminal.Gui.Rect)
@@ -181,12 +223,13 @@ items:
   assemblies:
   - Terminal.Gui
   namespace: Terminal.Gui
+  summary: Redraws the ListView
   syntax:
     content: public override void Redraw (Terminal.Gui.Rect region);
     parameters:
     - id: region
       type: Terminal.Gui.Rect
-      description: To be added.
+      description: Region.
   overload: Terminal.Gui.ListView.Redraw*
   exceptions: []
 - uid: Terminal.Gui.ListView.SelectedChanged
@@ -338,6 +381,24 @@ references:
   name: Boolean
   nameWithType: Boolean
   fullName: System.Boolean
+- uid: Terminal.Gui.ListView.MouseEvent(Terminal.Gui.MouseEvent)
+  parent: Terminal.Gui.ListView
+  isExternal: false
+  name: MouseEvent(MouseEvent)
+  nameWithType: ListView.MouseEvent(MouseEvent)
+  fullName: ListView.MouseEvent(MouseEvent)
+- uid: Terminal.Gui.MouseEvent
+  parent: Terminal.Gui
+  isExternal: false
+  name: MouseEvent
+  nameWithType: MouseEvent
+  fullName: Terminal.Gui.MouseEvent
+- uid: Terminal.Gui.ListView.PositionCursor
+  parent: Terminal.Gui.ListView
+  isExternal: false
+  name: PositionCursor()
+  nameWithType: ListView.PositionCursor()
+  fullName: ListView.PositionCursor()
 - uid: Terminal.Gui.ListView.ProcessKey(Terminal.Gui.KeyEvent)
   parent: Terminal.Gui.ListView
   isExternal: false
@@ -410,6 +471,18 @@ references:
   name: AllowsMarking
   nameWithType: ListView.AllowsMarking
   fullName: ListView.AllowsMarking
+- uid: Terminal.Gui.ListView.MouseEvent*
+  parent: Terminal.Gui.ListView
+  isExternal: false
+  name: MouseEvent
+  nameWithType: ListView.MouseEvent
+  fullName: ListView.MouseEvent
+- uid: Terminal.Gui.ListView.PositionCursor*
+  parent: Terminal.Gui.ListView
+  isExternal: false
+  name: PositionCursor
+  nameWithType: ListView.PositionCursor
+  fullName: ListView.PositionCursor
 - uid: Terminal.Gui.ListView.ProcessKey*
   parent: Terminal.Gui.ListView
   isExternal: false
@@ -458,12 +531,6 @@ references:
   name: HasFocus
   nameWithType: View.HasFocus
   fullName: View.HasFocus
-- uid: Terminal.Gui.Responder.MouseEvent(Terminal.Gui.MouseEvent)
-  parent: Terminal.Gui.Responder
-  isExternal: false
-  name: MouseEvent(MouseEvent)
-  nameWithType: Responder.MouseEvent(MouseEvent)
-  fullName: Responder.MouseEvent(MouseEvent)
 - uid: Terminal.Gui.View.ProcessColdKey(Terminal.Gui.KeyEvent)
   parent: Terminal.Gui.View
   isExternal: false
@@ -656,12 +723,6 @@ references:
   name: Move(Int32, Int32)
   nameWithType: View.Move(Int32, Int32)
   fullName: View.Move(Int32, Int32)
-- uid: Terminal.Gui.View.PositionCursor
-  parent: Terminal.Gui.View
-  isExternal: false
-  name: PositionCursor()
-  nameWithType: View.PositionCursor()
-  fullName: View.PositionCursor()
 - uid: Terminal.Gui.View.Remove(Terminal.Gui.View)
   parent: Terminal.Gui.View
   isExternal: false

+ 3 - 2
docfx/api/Terminal.Gui/Terminal.Gui.Responder.yml

@@ -94,15 +94,16 @@ items:
   assemblies:
   - Terminal.Gui
   namespace: Terminal.Gui
+  summary: Method invoked when a mouse event is generated
   syntax:
     content: public virtual bool MouseEvent (Terminal.Gui.MouseEvent me);
     parameters:
     - id: me
       type: Terminal.Gui.MouseEvent
-      description: To be added.
+      description: Me.
     return:
       type: System.Boolean
-      description: To be added.
+      description: <code>true</code>, if the event was handled, <code>false</code> otherwise.
   overload: Terminal.Gui.Responder.MouseEvent*
   exceptions: []
 - uid: Terminal.Gui.Responder.ProcessColdKey(Terminal.Gui.KeyEvent)

+ 1 - 0
docfx/api/Terminal.Gui/Terminal.Gui.View.yml

@@ -74,6 +74,7 @@ items:
   - Terminal.Gui.Label
   - Terminal.Gui.ListView
   - Terminal.Gui.MenuBar
+  - Terminal.Gui.ProgressBar
   - Terminal.Gui.RadioGroup
   - Terminal.Gui.ScrollBarView
   - Terminal.Gui.ScrollView

+ 2 - 0
docfx/api/toc.yml

@@ -57,6 +57,8 @@
     name: MouseFlags
   - uid: Terminal.Gui.Point
     name: Point
+  - uid: Terminal.Gui.ProgressBar
+    name: ProgressBar
   - uid: Terminal.Gui.RadioGroup
     name: RadioGroup
   - uid: Terminal.Gui.Rect

+ 3 - 0
docs/api/Terminal.Gui.html

@@ -125,6 +125,9 @@
 </section>
       <h4><a class="xref" href="Terminal.Gui/Terminal.Gui.MessageBox.html">MessageBox</a></h4>
       <section><p>Message box displays a modal message to the user, with a title, a message and a series of options that the user can choose from.</p>
+</section>
+      <h4><a class="xref" href="Terminal.Gui/Terminal.Gui.ProgressBar.html">ProgressBar</a></h4>
+      <section><p>Progress bar can indicate progress of an activity visually.</p>
 </section>
       <h4><a class="xref" href="Terminal.Gui/Terminal.Gui.RadioGroup.html">RadioGroup</a></h4>
       <section><p>Radio group shows a group of labels, only one of those can be selected at a given time</p>

+ 3 - 2
docs/api/Terminal.Gui/Terminal.Gui.Attribute.html

@@ -92,11 +92,12 @@
   
   <a id="Terminal_Gui_Attribute__ctor_" data-uid="Terminal.Gui.Attribute.#ctor*"></a>
   <h4 id="Terminal_Gui_Attribute__ctor_System_Int32_" data-uid="Terminal.Gui.Attribute.#ctor(System.Int32)">Attribute(Int32)</h4>
-  <div class="markdown level1 summary"></div>
+  <div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Terminal.Gui.Attribute.html">Attribute</a> struct.</p>
+</div>
   <div class="markdown level1 conceptual"></div>
   <h5 class="decalaration">Declaration</h5>
   <div class="codewrapper">
-    <pre><code class="lang-csharp hljs">public Attribute (int v);</code></pre>
+    <pre><code class="lang-csharp hljs">public Attribute (int value);</code></pre>
   </div>
   <h5 class="parameters">Parameters</h5>
   <table class="table table-bordered table-striped table-condensed">

+ 62 - 11
docs/api/Terminal.Gui/Terminal.Gui.ListView.html

@@ -87,9 +87,6 @@
     <div>
       <a class="xref" href="Terminal.Gui.Responder.html#Terminal_Gui_Responder_CanFocus">Responder.CanFocus</a>
     </div>
-    <div>
-      <a class="xref" href="Terminal.Gui.Responder.html#Terminal_Gui_Responder_MouseEvent_Terminal_Gui_MouseEvent_">Responder.MouseEvent(MouseEvent)</a>
-    </div>
     <div>
       <a class="xref" href="Terminal.Gui.View.html#Terminal_Gui_View_Add_Terminal_Gui_View_">View.Add(View)</a>
     </div>
@@ -183,9 +180,6 @@
     <div>
       <a class="xref" href="Terminal.Gui.View.html#Terminal_Gui_View_Move_System_Int32_System_Int32_">View.Move(Int32, Int32)</a>
     </div>
-    <div>
-      <a class="xref" href="Terminal.Gui.View.html#Terminal_Gui_View_PositionCursor">View.PositionCursor()</a>
-    </div>
     <div>
       <a class="xref" href="Terminal.Gui.View.html#Terminal_Gui_View_ProcessColdKey_Terminal_Gui_KeyEvent_">View.ProcessColdKey(KeyEvent)</a>
     </div>
@@ -418,9 +412,65 @@
   </h3>
   
   
+  <a id="Terminal_Gui_ListView_MouseEvent_" data-uid="Terminal.Gui.ListView.MouseEvent*"></a>
+  <h4 id="Terminal_Gui_ListView_MouseEvent_Terminal_Gui_MouseEvent_" data-uid="Terminal.Gui.ListView.MouseEvent(Terminal.Gui.MouseEvent)">MouseEvent(MouseEvent)</h4>
+  <div class="markdown level1 summary"></div>
+  <div class="markdown level1 conceptual"></div>
+  <h5 class="decalaration">Declaration</h5>
+  <div class="codewrapper">
+    <pre><code class="lang-csharp hljs">public override bool MouseEvent (Terminal.Gui.MouseEvent me);</code></pre>
+  </div>
+  <h5 class="parameters">Parameters</h5>
+  <table class="table table-bordered table-striped table-condensed">
+    <thead>
+      <tr>
+        <th>Type</th>
+        <th>Name</th>
+        <th>Description</th>
+      </tr>
+    </thead>
+    <tbody>
+      <tr>
+        <td><a class="xref" href="Terminal.Gui.MouseEvent.html">MouseEvent</a></td>
+        <td><span class="parametername">me</span></td>
+        <td><p>To be added.</p>
+</td>
+      </tr>
+    </tbody>
+  </table>
+  <h5 class="returns">Returns</h5>
+  <table class="table table-bordered table-striped table-condensed">
+    <thead>
+      <tr>
+        <th>Type</th>
+        <th>Description</th>
+      </tr>
+    </thead>
+    <tbody>
+      <tr>
+        <td><span class="xref">System.Boolean</span></td>
+        <td><p>To be added.</p>
+</td>
+      </tr>
+    </tbody>
+  </table>
+  
+  
+  <a id="Terminal_Gui_ListView_PositionCursor_" data-uid="Terminal.Gui.ListView.PositionCursor*"></a>
+  <h4 id="Terminal_Gui_ListView_PositionCursor" data-uid="Terminal.Gui.ListView.PositionCursor">PositionCursor()</h4>
+  <div class="markdown level1 summary"><p>Positions the cursor in this view</p>
+</div>
+  <div class="markdown level1 conceptual"></div>
+  <h5 class="decalaration">Declaration</h5>
+  <div class="codewrapper">
+    <pre><code class="lang-csharp hljs">public override void PositionCursor ();</code></pre>
+  </div>
+  
+  
   <a id="Terminal_Gui_ListView_ProcessKey_" data-uid="Terminal.Gui.ListView.ProcessKey*"></a>
   <h4 id="Terminal_Gui_ListView_ProcessKey_Terminal_Gui_KeyEvent_" data-uid="Terminal.Gui.ListView.ProcessKey(Terminal.Gui.KeyEvent)">ProcessKey(KeyEvent)</h4>
-  <div class="markdown level1 summary"></div>
+  <div class="markdown level1 summary"><p>Handles cursor movement for this view, passes all other events.</p>
+</div>
   <div class="markdown level1 conceptual"></div>
   <h5 class="decalaration">Declaration</h5>
   <div class="codewrapper">
@@ -439,7 +489,7 @@
       <tr>
         <td><a class="xref" href="Terminal.Gui.KeyEvent.html">KeyEvent</a></td>
         <td><span class="parametername">kb</span></td>
-        <td><p>To be added.</p>
+        <td><p>Keyboard event.</p>
 </td>
       </tr>
     </tbody>
@@ -455,7 +505,7 @@
     <tbody>
       <tr>
         <td><span class="xref">System.Boolean</span></td>
-        <td><p>To be added.</p>
+        <td><p><code>true</code>, if key was processed, <code>false</code> otherwise.</p>
 </td>
       </tr>
     </tbody>
@@ -464,7 +514,8 @@
   
   <a id="Terminal_Gui_ListView_Redraw_" data-uid="Terminal.Gui.ListView.Redraw*"></a>
   <h4 id="Terminal_Gui_ListView_Redraw_Terminal_Gui_Rect_" data-uid="Terminal.Gui.ListView.Redraw(Terminal.Gui.Rect)">Redraw(Rect)</h4>
-  <div class="markdown level1 summary"></div>
+  <div class="markdown level1 summary"><p>Redraws the ListView</p>
+</div>
   <div class="markdown level1 conceptual"></div>
   <h5 class="decalaration">Declaration</h5>
   <div class="codewrapper">
@@ -483,7 +534,7 @@
       <tr>
         <td><a class="xref" href="Terminal.Gui.Rect.html">Rect</a></td>
         <td><span class="parametername">region</span></td>
-        <td><p>To be added.</p>
+        <td><p>Region.</p>
 </td>
       </tr>
     </tbody>

+ 4 - 3
docs/api/Terminal.Gui/Terminal.Gui.Responder.html

@@ -158,7 +158,8 @@
   
   <a id="Terminal_Gui_Responder_MouseEvent_" data-uid="Terminal.Gui.Responder.MouseEvent*"></a>
   <h4 id="Terminal_Gui_Responder_MouseEvent_Terminal_Gui_MouseEvent_" data-uid="Terminal.Gui.Responder.MouseEvent(Terminal.Gui.MouseEvent)">MouseEvent(MouseEvent)</h4>
-  <div class="markdown level1 summary"></div>
+  <div class="markdown level1 summary"><p>Method invoked when a mouse event is generated</p>
+</div>
   <div class="markdown level1 conceptual"></div>
   <h5 class="decalaration">Declaration</h5>
   <div class="codewrapper">
@@ -177,7 +178,7 @@
       <tr>
         <td><a class="xref" href="Terminal.Gui.MouseEvent.html">MouseEvent</a></td>
         <td><span class="parametername">me</span></td>
-        <td><p>To be added.</p>
+        <td><p>Me.</p>
 </td>
       </tr>
     </tbody>
@@ -193,7 +194,7 @@
     <tbody>
       <tr>
         <td><span class="xref">System.Boolean</span></td>
-        <td><p>To be added.</p>
+        <td><p><code>true</code>, if the event was handled, <code>false</code> otherwise.</p>
 </td>
       </tr>
     </tbody>

+ 1 - 0
docs/api/Terminal.Gui/Terminal.Gui.View.html

@@ -87,6 +87,7 @@
       <div class="level3"><a class="xref" href="Terminal.Gui.Label.html">Label</a></div>
       <div class="level3"><a class="xref" href="Terminal.Gui.ListView.html">ListView</a></div>
       <div class="level3"><a class="xref" href="Terminal.Gui.MenuBar.html">MenuBar</a></div>
+      <div class="level3"><a class="xref" href="Terminal.Gui.ProgressBar.html">ProgressBar</a></div>
       <div class="level3"><a class="xref" href="Terminal.Gui.RadioGroup.html">RadioGroup</a></div>
       <div class="level3"><a class="xref" href="Terminal.Gui.ScrollBarView.html">ScrollBarView</a></div>
       <div class="level3"><a class="xref" href="Terminal.Gui.ScrollView.html">ScrollView</a></div>

+ 3 - 0
docs/api/toc.html

@@ -160,6 +160,9 @@
                   <li>
                     <a href="Terminal.Gui/Terminal.Gui.Point.html" name="" title="Point">Point</a>
                   </li>
+                  <li>
+                    <a href="Terminal.Gui/Terminal.Gui.ProgressBar.html" name="" title="ProgressBar">ProgressBar</a>
+                  </li>
                   <li>
                     <a href="Terminal.Gui/Terminal.Gui.RadioGroup.html" name="" title="RadioGroup">RadioGroup</a>
                   </li>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
docs/manifest.json


+ 65 - 0
docs/xrefmap.yml

@@ -2586,6 +2586,26 @@ references:
   href: api/Terminal.Gui/Terminal.Gui.ListView.html#Terminal_Gui_ListView_AllowsMarking_
   fullName: ListView.AllowsMarking
   nameWithType: ListView.AllowsMarking
+- uid: Terminal.Gui.ListView.MouseEvent(Terminal.Gui.MouseEvent)
+  name: MouseEvent(MouseEvent)
+  href: api/Terminal.Gui/Terminal.Gui.ListView.html#Terminal_Gui_ListView_MouseEvent_Terminal_Gui_MouseEvent_
+  fullName: ListView.MouseEvent(MouseEvent)
+  nameWithType: ListView.MouseEvent(MouseEvent)
+- uid: Terminal.Gui.ListView.MouseEvent*
+  name: MouseEvent
+  href: api/Terminal.Gui/Terminal.Gui.ListView.html#Terminal_Gui_ListView_MouseEvent_
+  fullName: ListView.MouseEvent
+  nameWithType: ListView.MouseEvent
+- uid: Terminal.Gui.ListView.PositionCursor
+  name: PositionCursor()
+  href: api/Terminal.Gui/Terminal.Gui.ListView.html#Terminal_Gui_ListView_PositionCursor
+  fullName: ListView.PositionCursor()
+  nameWithType: ListView.PositionCursor()
+- uid: Terminal.Gui.ListView.PositionCursor*
+  name: PositionCursor
+  href: api/Terminal.Gui/Terminal.Gui.ListView.html#Terminal_Gui_ListView_PositionCursor_
+  fullName: ListView.PositionCursor
+  nameWithType: ListView.PositionCursor
 - uid: Terminal.Gui.ListView.ProcessKey(Terminal.Gui.KeyEvent)
   name: ProcessKey(KeyEvent)
   href: api/Terminal.Gui/Terminal.Gui.ListView.html#Terminal_Gui_ListView_ProcessKey_Terminal_Gui_KeyEvent_
@@ -3176,6 +3196,51 @@ references:
   href: api/Terminal.Gui/Terminal.Gui.Point.html#Terminal_Gui_Point_Y
   fullName: Point.Y
   nameWithType: Point.Y
+- uid: Terminal.Gui.ProgressBar
+  name: ProgressBar
+  href: api/Terminal.Gui/Terminal.Gui.ProgressBar.html
+  fullName: Terminal.Gui.ProgressBar
+  nameWithType: ProgressBar
+- uid: Terminal.Gui.ProgressBar.#ctor(Terminal.Gui.Rect)
+  name: ProgressBar(Rect)
+  href: api/Terminal.Gui/Terminal.Gui.ProgressBar.html#Terminal_Gui_ProgressBar__ctor_Terminal_Gui_Rect_
+  fullName: ProgressBar.ProgressBar(Rect)
+  nameWithType: ProgressBar.ProgressBar(Rect)
+- uid: Terminal.Gui.ProgressBar.#ctor*
+  name: ProgressBar
+  href: api/Terminal.Gui/Terminal.Gui.ProgressBar.html#Terminal_Gui_ProgressBar__ctor_
+  fullName: ProgressBar.ProgressBar
+  nameWithType: ProgressBar.ProgressBar
+- uid: Terminal.Gui.ProgressBar.Fraction
+  name: Fraction
+  href: api/Terminal.Gui/Terminal.Gui.ProgressBar.html#Terminal_Gui_ProgressBar_Fraction
+  fullName: ProgressBar.Fraction
+  nameWithType: ProgressBar.Fraction
+- uid: Terminal.Gui.ProgressBar.Fraction*
+  name: Fraction
+  href: api/Terminal.Gui/Terminal.Gui.ProgressBar.html#Terminal_Gui_ProgressBar_Fraction_
+  fullName: ProgressBar.Fraction
+  nameWithType: ProgressBar.Fraction
+- uid: Terminal.Gui.ProgressBar.Pulse
+  name: Pulse()
+  href: api/Terminal.Gui/Terminal.Gui.ProgressBar.html#Terminal_Gui_ProgressBar_Pulse
+  fullName: ProgressBar.Pulse()
+  nameWithType: ProgressBar.Pulse()
+- uid: Terminal.Gui.ProgressBar.Pulse*
+  name: Pulse
+  href: api/Terminal.Gui/Terminal.Gui.ProgressBar.html#Terminal_Gui_ProgressBar_Pulse_
+  fullName: ProgressBar.Pulse
+  nameWithType: ProgressBar.Pulse
+- uid: Terminal.Gui.ProgressBar.Redraw(Terminal.Gui.Rect)
+  name: Redraw(Rect)
+  href: api/Terminal.Gui/Terminal.Gui.ProgressBar.html#Terminal_Gui_ProgressBar_Redraw_Terminal_Gui_Rect_
+  fullName: ProgressBar.Redraw(Rect)
+  nameWithType: ProgressBar.Redraw(Rect)
+- uid: Terminal.Gui.ProgressBar.Redraw*
+  name: Redraw
+  href: api/Terminal.Gui/Terminal.Gui.ProgressBar.html#Terminal_Gui_ProgressBar_Redraw_
+  fullName: ProgressBar.Redraw
+  nameWithType: ProgressBar.Redraw
 - uid: Terminal.Gui.RadioGroup
   name: RadioGroup
   href: api/Terminal.Gui/Terminal.Gui.RadioGroup.html

+ 6 - 4
ecmadocs/en/Terminal.Gui/Attribute.xml

@@ -21,8 +21,8 @@
   </Docs>
   <Members>
     <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public Attribute (int v);" />
-      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 v) cil managed" />
+      <MemberSignature Language="C#" Value="public Attribute (int value);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 value) cil managed" />
       <MemberType>Constructor</MemberType>
       <AssemblyInfo>
         <AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -31,8 +31,10 @@
         <Parameter Name="v" Type="System.Int32" />
       </Parameters>
       <Docs>
-        <param name="v">To be added.</param>
-        <summary>To be added.</summary>
+        <param name="value">Value.</param>
+        <summary>
+            Initializes a new instance of the <see cref="T:Terminal.Gui.Attribute" /> struct.
+            </summary>
         <remarks>To be added.</remarks>
       </Docs>
     </Member>

+ 48 - 5
ecmadocs/en/Terminal.Gui/ListView.xml

@@ -75,6 +75,44 @@
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
+    <Member MemberName="MouseEvent">
+      <MemberSignature Language="C#" Value="public override bool MouseEvent (Terminal.Gui.MouseEvent me);" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance bool MouseEvent(valuetype Terminal.Gui.MouseEvent me) cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="me" Type="Terminal.Gui.MouseEvent" />
+      </Parameters>
+      <Docs>
+        <param name="me">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PositionCursor">
+      <MemberSignature Language="C#" Value="public override void PositionCursor ();" />
+      <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void PositionCursor() cil managed" />
+      <MemberType>Method</MemberType>
+      <AssemblyInfo>
+        <AssemblyVersion>0.0.0.0</AssemblyVersion>
+      </AssemblyInfo>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>
+            Positions the cursor in this view
+            </summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="ProcessKey">
       <MemberSignature Language="C#" Value="public override bool ProcessKey (Terminal.Gui.KeyEvent kb);" />
       <MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance bool ProcessKey(valuetype Terminal.Gui.KeyEvent kb) cil managed" />
@@ -89,9 +127,12 @@
         <Parameter Name="kb" Type="Terminal.Gui.KeyEvent" />
       </Parameters>
       <Docs>
-        <param name="kb">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
+        <param name="kb">Keyboard event.</param>
+        <summary>
+            Handles cursor movement for this view, passes all other events.
+            </summary>
+        <returns>
+          <c>true</c>, if key was processed, <c>false</c> otherwise.</returns>
         <remarks>To be added.</remarks>
       </Docs>
     </Member>
@@ -109,8 +150,10 @@
         <Parameter Name="region" Type="Terminal.Gui.Rect" />
       </Parameters>
       <Docs>
-        <param name="region">To be added.</param>
-        <summary>To be added.</summary>
+        <param name="region">Region.</param>
+        <summary>
+            Redraws the ListView
+            </summary>
         <remarks>To be added.</remarks>
       </Docs>
     </Member>

+ 17 - 0
ecmadocs/en/Terminal.Gui/MessageBox.xml

@@ -14,6 +14,23 @@
             Message box displays a modal message to the user, with a title, a message and a series of options that the user can choose from.
             </summary>
     <remarks>To be added.</remarks>
+    <para>
+              The difference between the Query and ErrorQuery method is the default set of colors used for the message box.
+            </para>
+    <para>
+            The following example pops up a Message Box with 50 columns, and 7 lines, with the specified title and text, plus two buttons.
+            The value -1 is returned when the user cancels the dialog by pressing the ESC key.
+            </para>
+    <example>
+      <code lang="c#">
+            var n = MessageBox.Query (50, 7, "Quit Demo", "Are you sure you want to quit this demo?", "Yes", "No");
+            if (n == 0)
+               quit = true;
+            else
+               quit = false;
+            
+            </code>
+    </example>
   </Docs>
   <Members>
     <Member MemberName=".ctor">

+ 6 - 3
ecmadocs/en/Terminal.Gui/Responder.xml

@@ -73,9 +73,12 @@
         <Parameter Name="me" Type="Terminal.Gui.MouseEvent" />
       </Parameters>
       <Docs>
-        <param name="me">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
+        <param name="me">Me.</param>
+        <summary>
+            Method invoked when a mouse event is generated
+            </summary>
+        <returns>
+          <c>true</c>, if the event was handled, <c>false</c> otherwise.</returns>
         <remarks>To be added.</remarks>
       </Docs>
     </Member>

+ 1 - 0
ecmadocs/en/index.xml

@@ -51,6 +51,7 @@
       <Type Name="MouseEvent" Kind="Structure" />
       <Type Name="MouseFlags" Kind="Enumeration" />
       <Type Name="Point" Kind="Structure" />
+      <Type Name="ProgressBar" Kind="Class" />
       <Type Name="RadioGroup" Kind="Class" />
       <Type Name="Rect" Kind="Structure" />
       <Type Name="Responder" Kind="Class" />

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác