mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
Rlease v1.8.3
This commit is contained in:
@@ -1,24 +1,24 @@
|
||||
# Terminal.Gui Project
|
||||
|
||||
Contains all files required to build the **Terminal.Gui** library (and NuGet package).
|
||||
All files required to build the **Terminal.Gui** library (and NuGet package).
|
||||
|
||||
## Project Folder Structure
|
||||
|
||||
- `Terminal.Gui.sln` - The Visual Studio solution
|
||||
- `Core/` - Source files for all types that comprise the core building blocks of **Terminal-Gui**
|
||||
- `Application` - A `static` class that provides the base 'application driver'. Given it defines a **Terminal.Gui** application it is both logically and literally (because `static`) a singleton. It has direct dependencies on `MainLoop`, `Events.cs` `NetDriver`, `CursesDriver`, `WindowsDriver`, `Responder`, `View`, and `TopLevel` (and nothing else).
|
||||
- `MainLoop` - Defines `IMainLoopDriver` and implements the and `MainLoop` class.
|
||||
- `MainLoop` - Defines `IMainLoopDriver` and implements the `MainLoop` class.
|
||||
- `ConsoleDriver` - Definition for the Console Driver API.
|
||||
- `Events.cs` - Defines keyboard and mouse related structs & classes.
|
||||
- `Events.cs` - Defines keyboard and mouse-related structs & classes.
|
||||
- `PosDim.cs` - Implements *Computed Layout* system. These classes have deep dependencies on `View`.
|
||||
- `Responder` - Base class for the windowing class hierarchy. Implements support for keyboard & mouse input.
|
||||
- `View` - Derived from `Responder`, the base class for non-modal visual elements such as controls.
|
||||
- `Toplevel` - Derived from `View`, the base class for modal visual elements such as top-level windows and dialogs. Supports the concept of `MenuBar` and `StatusBar`.
|
||||
- `Window` - Derived from `TopLevel`; implements top level views with a visible frame and Title.
|
||||
- `Window` - Derived from `TopLevel`; implements toplevel views with a visible frame and Title.
|
||||
- `Types/` - A folder (not namespace) containing implementations of `Point`, `Rect`, and `Size` which are ancient versions of the modern `System.Drawing.Point`, `System.Drawing.Size`, and `System.Drawning.Rectangle`.
|
||||
- `ConsoleDrivers/` - Source files for the three `ConsoleDriver`-based drivers: .NET: `NetDriver`, Unix & Mac: `UnixDriver`, and Windows: `WindowsDriver`.
|
||||
- `Views/` - A folder (not namespace) containing the source for all built-in classes that drive from `View` (non-modals).
|
||||
- `Windows/` - A folder (not namespace) containing the source all built-in classes that derive from `Window`.
|
||||
- `Windows/` - A folder (not namespace) containing the source of all built-in classes that derive from `Window`.
|
||||
|
||||
## Version numbers
|
||||
|
||||
@@ -55,43 +55,35 @@ The `tag` must be of the form `v<major>.<minor>.<patch>`, e.g. `v2.3.4`.
|
||||
|
||||
`patch` can indicate pre-release or not (e.g. `pre`, `beta`, `rc`, etc...).
|
||||
|
||||
### 1) Generate release notes with the list of PRs since the last release
|
||||
### 1) Verify the `develop` branch is ready for release
|
||||
|
||||
Use `gh` to get a list with just titles to make it easy to paste into release notes:
|
||||
* Ensure everything is committed and pushed to the `develop` branch
|
||||
* Ensure your local `develop` branch is up-to-date with `upstream/develop`
|
||||
|
||||
```powershell
|
||||
gh pr list --limit 500 --search "is:pr is:closed is:merged closed:>=2021-05-18"
|
||||
```
|
||||
### 2) Create a pull request for the release in the `develop` branch
|
||||
|
||||
Use the output to update `./Terminal.Gui/Terminal.Gui.csproj` with latest release notes
|
||||
|
||||
### 2) Update the API documentation
|
||||
|
||||
See `./docfx/README.md`.
|
||||
|
||||
### 3) Create a PR for the release in the `develop` branch
|
||||
|
||||
The PR title should be "Release v2.3.4"
|
||||
The PR title should be of the form "Release v2.3.4"
|
||||
|
||||
```powershell
|
||||
git checkout develop
|
||||
git pull -all
|
||||
git pull upstream develop
|
||||
git checkout -b v_2_3_4
|
||||
git merge develop
|
||||
git add .
|
||||
git commit -m "Release v2.3.4"
|
||||
git push
|
||||
```
|
||||
|
||||
### 4) On github.com, verify the build action worked on your fork, then merge the PR
|
||||
### 3) On github.com, verify the build action worked on your fork, then merge the PR
|
||||
|
||||
### 5) Pull the merged `develop` from `upstream`
|
||||
### 4) Pull the merged `develop` from `upstream`
|
||||
|
||||
```powershell
|
||||
git checkout develop
|
||||
git pull upstream develop
|
||||
```
|
||||
|
||||
### 6) Merge `develop` into `main`
|
||||
### 5) Merge `develop` into `main`
|
||||
|
||||
```powershell
|
||||
git checkout main
|
||||
@@ -101,13 +93,13 @@ git merge develop
|
||||
|
||||
Fix any merge errors.
|
||||
|
||||
### 7) Create a new annotated tag for the release
|
||||
### 6) Create a new annotated tag for the release on `main`
|
||||
|
||||
```powershell
|
||||
git tag v2.3.4 -a -m "Release v2.3.4"
|
||||
```
|
||||
|
||||
### 8) Push the new tag to `main` on `origin`
|
||||
### 7) Push the new tag to `main` on `upstream`
|
||||
|
||||
```powershell
|
||||
git push --atomic upstream main v2.3.4
|
||||
@@ -115,16 +107,23 @@ git push --atomic upstream main v2.3.4
|
||||
|
||||
*See https://stackoverflow.com/a/3745250/297526*
|
||||
|
||||
### 9) Monitor Github actions to ensure the Nuget publishing worked.
|
||||
### 8) Monitor Github Actions to ensure the Nuget publishing worked.
|
||||
|
||||
### 10) Check Nuget to see the new package version (wait a few minutes):
|
||||
https://github.com/gui-cs/Terminal.Gui/actions
|
||||
|
||||
### 9) Check Nuget to see the new package version (wait a few minutes)
|
||||
https://www.nuget.org/packages/Terminal.Gui
|
||||
|
||||
### 11) Add a new Release in Github: https://github.com/gui-cs/Terminal.Gui/releases
|
||||
### 10) Add a new Release in Github: https://github.com/gui-cs/Terminal.Gui/releases
|
||||
|
||||
### 12) Tweet about it
|
||||
Generate release notes with the list of PRs since the last release
|
||||
|
||||
### 13) Update the `develop` branch
|
||||
Use `gh` to get a list with just titles to make it easy to paste into release notes:
|
||||
|
||||
```powershell
|
||||
gh pr list --limit 500 --search "is:pr is:closed is:merged closed:>=2021-05-18"
|
||||
```
|
||||
### 11) Update the `develop` branch with the new version
|
||||
|
||||
```powershell
|
||||
git checkout develop
|
||||
|
||||
@@ -74,93 +74,12 @@
|
||||
<PackageIcon>logo.png</PackageIcon>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
<PackageTags>csharp, terminal, c#, f#, gui, toolkit, console, tui</PackageTags>
|
||||
<Description>Cross Platform Terminal UI toolkit for .NET</Description>
|
||||
<Description>Cross platform Terminal UI toolkit for .NET</Description>
|
||||
<Owners>Miguel de Icaza, Charlie Kindel</Owners>
|
||||
<Summary>A toolkit for building rich console apps for .NET that works on Windows, Mac, and Linux/Unix.</Summary>
|
||||
<Title>Terminal.Gui - Cross Platform Terminal user interface toolkit for .NET</Title>
|
||||
<Title>Terminal.Gui - Cross platform Terminal User Interface (TUI) toolkit for .NET</Title>
|
||||
<PackageReleaseNotes>
|
||||
Release v1.8.1
|
||||
* Fixes #2053. MessageBox.Query not wrapping correctly
|
||||
|
||||
Release v1.8.0
|
||||
* Fixes #2043. Update to NStack v1.0.3
|
||||
* Fixes #2045. TrySetClipboardData test must be enclosed with a lock.
|
||||
* Fixes #2025. API Docs are now generated via Github Action - View Source Works
|
||||
* Fixes #1991. Broken link in README
|
||||
* Fixes #2026. Added ClearOnVisibleFalse to flag if the view must be cleared or not.
|
||||
* Fixes #2017 and #2013. MainLoopTests.InvokeLeakTest failures
|
||||
* Fixes #2014. Application mouseGrabView is run twice if return true.
|
||||
* Fixes #2011. Wizard no longer needs to set specific colors, because #1971 has been fixed.
|
||||
* Fixes #2006. ProgressBarStyles isn't disposing the _fractionTimer on quitting if running.
|
||||
* Fixes #2004. TextFormatter.Justified not adding the extra spaces.
|
||||
* Fixes #2002. Added feature to fill the remaining width with spaces.
|
||||
* Fixes #1999. Prevents the mouseGrabView being executed with a null view.
|
||||
* Fixes #1994. BREAKING CHANGE. Ensure only a single IdleHandlers list can exist.
|
||||
* Fixes #1979. MessageBox.Query not wrapping since 1.7.1
|
||||
* Fixes #1989. ListView: Ensures SelectedItem visibility on MoveDown and MoveUp.
|
||||
* Fixes #1987. Textview insert text newline fix
|
||||
* Fixes #1984. Setting Label.Visible to false does not hide the Label
|
||||
* Fixes #820. Added HideDropdownListOnClick property.
|
||||
* Fixes #1981. Added SplitNewLine method to the TextFormatter.
|
||||
* Fixes #1973. Avoid positioning Submenus off screen.
|
||||
* Added abstract MakeColor and CreateColors to create the colors at once.
|
||||
* Fixes #1800. TextView now uses the same colors as TextField.
|
||||
* Fixes #1969. ESC on CursesDriver take to long to being processed.
|
||||
* Fixes #1967. New keys for DeleteAll on TextField and TextView.
|
||||
* Fixes #1962 - Change KeyBindings to allow chaining commands
|
||||
* Fixes #1961 Null reference in Keybindings Scenario and hotkey collision
|
||||
* Fixes #1963. Only remove one character on backspace when wordwrap is on
|
||||
* Fixes #1959. GoToEnd should not fail on an empty TreeView
|
||||
* Fixes #1953. TextView cursor position is not updating by mouse.
|
||||
* Fixes #1951. TextView with selected text doesn't scroll beyond the cursor position.
|
||||
* Fixes #1948. Get unwrapped cursor position when word wrap is enabled on TextView.
|
||||
* Ensures that the isButtonShift flag is disabled in all situations.
|
||||
* Fixes #1943. Mouse ButtonShift is not preserving the text selected.
|
||||
|
||||
Release v1.7.2
|
||||
* Fixes #1773. Base color scheme for ListView hard to read
|
||||
* Fixes #1934. WindowsDriver crash when the height is less than 1 with the VS Debugger
|
||||
|
||||
Release v1.7.1
|
||||
* Fixes #1930. Trailing whitespace makes MessageBox.Query buttons disappear.
|
||||
* Fixes #1921. Mouse continuous button pressed is not working on ScrollView.
|
||||
* Fixes #1924. Wizard: Selected help text is unreadable
|
||||
|
||||
Release v1.7.0
|
||||
* Moved Terminal.Gui (and NStack) to the github.com/gui-cs organization.
|
||||
* Adds multi-step Wizard View for setup experiences (#124)
|
||||
* The synchronization context method Send is now blocking (#1854).
|
||||
* Fixes #1917. Sometimes Clipboard.IsSupported doesn't return the correct
|
||||
* Fixes #1893: Fix URLs to match gui-cs Org
|
||||
* Fixes #1883. Child TopLevels now get Loaded/Ready events.
|
||||
* Fixes #1867, #1866, #1796. TextView enhancements for ReadOnly and WordWrap.
|
||||
* Fixes #1861. Border: Title property is preferable to Text.
|
||||
* Fixes #1855. Window and Frame content view without the margin frame.
|
||||
* Fixes #1848. Mouse clicks in Windows Terminal.
|
||||
* Fixes #1846. TabView now clips to the draw bounds.
|
||||
* Fix TableView multi selections extending to -1 indexes
|
||||
* Fixes #1837. Setting Unix clipboard freezes.
|
||||
* Fixes #1839. Process WindowsDriver click event if location is the same after pressed and released.
|
||||
* Fixes #1830. If "libcoreclr.so" is not present then "libncursesw.so" will be used.
|
||||
* Fixes #1816. MessageBox: Hides underlying dialog when visible
|
||||
* Fixes #1815. Now returns false if WSL clipboard isn't supported.
|
||||
* Fixes #1825. Parent MenuItem stay focused if child MenuItem is empty.
|
||||
* Fixes #1812, #1797, #1791. AutoSize fixes.
|
||||
* Fixes #1818. Adds Title change events to Window.
|
||||
* Fixes #1810. Dialog: Closing event is not fired when ESC is pressed to close dialog.
|
||||
* Fixes #1793. ScrollBarView is hiding if the host fit the available space.
|
||||
* Added Pos/Dim Function feature to automate layout.
|
||||
* Fixes #1786. Windows Terminal is reporting well on mouse button pressed + mouse movement.
|
||||
* Fixes #1777 - Dialog button justification. Adds unit tests.
|
||||
* Fixes #1739. Setting menu UseKeysUpDownAsKeysLeftRight as false by default.
|
||||
* Fixes #1772. Avoids WindowsDriver flickering when resizing.
|
||||
* Fixed TableView always showing selected cell(s) even when not focused
|
||||
* Fixes #1769. Supports a minimum view size for non-automatic size views.
|
||||
* Exposes APIs to support upcoming Web console feature
|
||||
* Fixes some scrolling performance issues
|
||||
* Fixes #1763. Allowing read console inputs before idle handlers.
|
||||
* TableView unicode scenario usability
|
||||
* Added unicode testing code to TableEditor
|
||||
See: https://github.com/gui-cs/Terminal.Gui/releases
|
||||
</PackageReleaseNotes>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -2,8 +2,9 @@
|
||||
|
||||
UI Catalog is a comprehensive sample library for Terminal.Gui. It attempts to satisfy the following goals:
|
||||
|
||||
1. Be an easy to use showcase for Terminal.Gui concepts and features.
|
||||
2. Provide sample code that illustrates how to properly implement said concepts & features.
|
||||
1. Be an easy-to-use showcase for Terminal.Gui concepts and features.
|
||||
2. Provide sample code that illustrates how to properly implement
|
||||
said concepts & features.
|
||||
3. Make it easy for contributors to add additional samples in a structured way.
|
||||
|
||||

|
||||
@@ -51,7 +52,7 @@ To add a new **Scenario** simply:
|
||||
4. Implement the `Setup` override which will be called when a user selects the scenario to run.
|
||||
5. Optionally, implement the `Init` and/or `Run` overrides to provide a custom implementation.
|
||||
|
||||
The sample below is provided in the `Scenarios` directory as a generic sample that can be copied and re-named:
|
||||
The sample below is provided in the `.\UICatalog\Scenarios` directory as a generic sample that can be copied and re-named:
|
||||
|
||||
```csharp
|
||||
using Terminal.Gui;
|
||||
@@ -73,59 +74,23 @@ namespace UICatalog {
|
||||
}
|
||||
```
|
||||
|
||||
`Scenario` provides a `Toplevel` and `Window` the provides a canvas for the Scenario to operate. The default `Window` shows the Scenario name and supports exiting the Scenario through the `Esc` key.
|
||||
`Scenario` provides `Win`, a `Window` object that provides a canvas for the Scenario to operate.
|
||||
|
||||
The default `Window` shows the Scenario name and supports exiting the Scenario through the `Esc` key.
|
||||
|
||||

|
||||
|
||||
To build a more advanced scenario, where control of the `Toplevel` and `Window` is needed (e.g. for scenarios using `MenuBar` or `StatusBar`), simply set the `Top` and `Window` properties as appropriate, as seen in the `UnicodeInMenu` scenario:
|
||||
To build a more advanced scenario, where control of the `Toplevel` and `Window` is needed (e.g. for scenarios using `MenuBar` or `StatusBar`), simply use `Application.Top` per normal Terminal.Gui programming, as seen in the `Notepad` scenario.
|
||||
|
||||
```csharp
|
||||
using Terminal.Gui;
|
||||
|
||||
namespace UICatalog {
|
||||
[ScenarioMetadata (Name: "Unicode In Menu", Description: "Unicode menus per PR #204")]
|
||||
[ScenarioCategory ("Text")]
|
||||
[ScenarioCategory ("Controls")]
|
||||
class UnicodeInMenu : Scenario {
|
||||
public override void Setup ()
|
||||
{
|
||||
Top = new Toplevel (new Rect (0, 0, Application.Driver.Cols, Application.Driver.Rows));
|
||||
var menu = new MenuBar (new MenuBarItem [] {
|
||||
new MenuBarItem ("_Файл", new MenuItem [] {
|
||||
new MenuItem ("_Создать", "Creates new file", null),
|
||||
new MenuItem ("_Открыть", "", null),
|
||||
new MenuItem ("Со_хранить", "", null),
|
||||
new MenuItem ("_Выход", "", () => Application.RequestStop() )
|
||||
}),
|
||||
new MenuBarItem ("_Edit", new MenuItem [] {
|
||||
new MenuItem ("_Copy", "", null),
|
||||
new MenuItem ("C_ut", "", null),
|
||||
new MenuItem ("_Paste", "", null)
|
||||
})
|
||||
});
|
||||
Top.Add (menu);
|
||||
|
||||
Win = new Window ($"Scenario: {GetName ()}") {
|
||||
X = 0,
|
||||
Y = 1,
|
||||
Width = Dim.Fill (),
|
||||
Height = Dim.Fill ()
|
||||
};
|
||||
Top.Add (Win);
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
For complete control, the `Init` and `Run` overrides can be implemented. The `base.Init` assigns `Application.Top` to `Top` and creates `Win`. The `base.Run` simply calls `Application.Run(Top)`.
|
||||
For complete control, the `Init` and `Run` overrides can be implemented. The `base.Init` creates `Win`. The `base.Run` simply calls `Application.Run(Application.Top)`.
|
||||
|
||||
## Contribution Guidelines
|
||||
|
||||
- Provide a terse, descriptive name for `Scenarios`. Keep them short; the `ListView` that displays them dynamically sizes the column width and long names will make it hard for people to use.
|
||||
- Provide a clear description.
|
||||
- Provide a terse, descriptive `Name` for `Scenarios`. Keep them short.
|
||||
- Provide a clear `Description`.
|
||||
- Comment `Scenario` code to describe to others why it's a useful `Scenario`.
|
||||
- Annotate `Scenarios` with `[ScenarioCategory]` attributes. Try to minimize the number of new categories created.
|
||||
- Use the `Bug Rero` Category for `Scnarios` that reproduce bugs.
|
||||
- Annotate `Scenarios` with `[ScenarioCategory]` attributes. Minimize the number of new categories created.
|
||||
- Use the `Bug Repo` Category for `Scenarios` that reproduce bugs.
|
||||
- Include the Github Issue # in the Description.
|
||||
- Once the bug has been fixed in `master` submit another PR to remove the `Scenario` (or modify it to provide a good regression test).
|
||||
- Tag bugs or suggestions for `UI Catalog` as [`Terminal.Gui` Github Issues](https://github.com/gui-cs/Terminal.Gui/issues) with "UICatalog: ".
|
||||
- Once the bug has been fixed in `develop` submit another PR to remove the `Scenario` (or modify it to provide a good regression test/sample).
|
||||
- Tag bugs or suggestions for `UI Catalog` as [`Terminal.Gui` Github Issues](https://github.com/gui-cs/Terminal.Gui/issues) with "UICatalog: ".
|
||||
|
||||
Reference in New Issue
Block a user