Goblinfactory.Konsole 6.2.2

Simple console library consisting of ProgressBar, Window, Form, Draw and MockConsole.

There is a newer prerelease version of this package available.
See the version list below for details.
Install-Package Goblinfactory.Konsole -Version 6.2.2
dotnet add package Goblinfactory.Konsole --version 6.2.2
<PackageReference Include="Goblinfactory.Konsole" Version="6.2.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Goblinfactory.Konsole --version 6.2.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Goblinfactory.Konsole, 6.2.2"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Goblinfactory.Konsole as a Cake Addin
#addin nuget:?package=Goblinfactory.Konsole&version=6.2.2

// Install Goblinfactory.Konsole as a Cake Tool
#tool nuget:?package=Goblinfactory.Konsole&version=6.2.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

hotfix

  • #83 Fixed scrolling bug when window created with specific constructor. (merged PR from @PAzureOP)
    • (This is fixed already in 7.x alpha released, hotfix to support 6.x users.)

hotfix

  • #83 Fixed scrolling bug when window created with specific constructor. (merged PR from @PAzureOP)
    • (This is fixed already in 7.x alpha released, hotfix to support 6.x users.)

Release Notes

# Change Log

The format is based on [Keep a Changelog](http://keepachangelog.com/)
## [6.2.2]

### hotfix

- #83 Fixed scrolling bug when window created with specific constructor. (merged PR from @PAzureOP)
 - (This is fixed already in 7.x alpha released, hotfix to support 6.x users.)

## [6.2.1]

### Fixed

- #72 Fix critical bug : Embedded CrLf cause window isolation to break.

## [6.2.0]

### Added

- Form Write now supports fields as well as properties.

## [6.1.0]

### Added

- `Konsole.Platform.Windows.HighSpeedWriter` (native windows driver) now included and no longer an external package.

## [6.0.0]

### Added

- new `IConsole` interfaces for simpler abstractions, see new contract docs [here]

### fixed

- #40 WriteLine conflicts with String.Format, support string containing {0} {json} tokens.
- #41 If a `Write` ends exactly on the last column, then the cursor is not advanced to the next line.

## [5.4.4]

### Added

- Printing objects with nullable fields now prints "Null" for any nullable fields.

### Fixed

- #39 Add double to NumericTypes in FieldReader.

## [5.4.3]

### Fixed

- #43 Form.Write(null) throws exception, new Form().Write(null); should not throw exception. Instead it should write "Null"

## [5.4.2]

### Fixed

- `WhenOpeningInlineShould_open_window_at_current_cursorTop()` : OpenBox (inline) when supplying only a width and a height was not opening the new inline window at the current cursor position.

## [5.4.1]

### Fixed

- `WhenOpeningInlineShould_open_window_at_current_cursorTop()` : OpenBox (inline) when supplying only a width and a height was not opening the new inline window at the current cursor position.

## [5.4.0]

### Added

- `Window.OpenBox` : Open a styled floating or inline window with a lined box border with a title. Styling allows for setting foreground and background color of the Line, Title, and body, as well as the line thickness, single or double. Returns a window instance representing the window inside the box. The returned instance is threadsafe.
- #39 Add double to NumericTypes in FieldReader.

## [5.3.3]

### Fixed

- when not supplying the x,y start position for a window, the window was supposed to be created inline, instead the window was being created at 0, 0. Fixed, now it's created at the starting Y position and left = 0.

## [5.3.2]

### Fixed

- `Window.Open` now returns a threadsafe window. (`ConcurrentWindow` wrapping the newly created window) All static constructors now return threadsafe windows.

## [5.3.1]

### Fixed

- fixed nuget tags

## [5.3.0]

### Added

- `new ConcurrentWriter()` now returns a thread safe concurrent writer that continues writing to the current console as if it were the console. Previously the concurrentwriter required a window instance. That still exists but you can now create a `ConcurrentWriter` without needing to first create a window. This allows for thread safe writing to the console without needing a window. See the new section in the readme under `Threading` for more information and for examples.

## [5.2.0]

### fixed (busy)

- when rendering a window 3 lines tall the second row line char is incorrect.

```
   ┌──── headline ────┐       ┌──── headline ────┐
   ─ content here     ─  =>   │ content here     |
   └──────────────────┘       └──────────────────┘
```

### added

* `myWindow.SplitTopBottom()`
 
- : Split the current window Top and bottom and return a tuple. Default to use a single middle line, instead of the older double. (Was missing from previous release)


## [5.1.0]

### fixed

- `stackoverflow` bug when calling SplitColumns.

### added

- `myWindow.SplitLeftRight()` : Split the current window left and right and return a tuple. Default to use a single middle line, instead of the older double.

```csharp
   void Fill(IConsole con) => {
       con.WriteLine("one");
       con.WriteLine("two");
       con.WriteLine("three");
       con.WriteLine("four");
   }
   (var left, var right) = win.SplitLeftRight("left", "right");
   
   Fill(left);
   Fill(right);
   
   // gives you   ...

   ┌ left ─┬─ right ┐
   │two    │two     │
   │three  │three   │
   │four   │four    │
   └───────┴────────┘    
```


## [5.0.1]

- more tests and small stabilisations.

## [5.0.0]

- full .NET core release! (Konsole is a .NET standard 2.0 package) and (Konsole.Platform.Windows is a .NET framework 4.6.1 package)
- package is built and tested on both Ubuntu and Windows on Github using github actions for devops. (see dotnetcore.yml)

## [4.2]

- #32 : speed, speed, speed! (speed improvements)
- Window.DoCommand made static

## [4.1]

- #33 : add "Disable screen resizing".Available as new method `.LockConsoleResizing()` on `Window`.

## [4.0.1]

- upgrade devops builds to use new Github pipelines, convert to new .net core project format and use dotnet test? possibly include this as key 4.0 update.
- Added SplitRows with wildcard support for creating any shape UI, using rows and columns.
- Move Konsole Layouts and Konsole Forms to main Konsole namespace, so that it's available out of the box and more discoverable, so that users can use SplitLeft, SplitRight, SplitTop, SplitBottom.
- Moved drawing into main Konsole Namespace.

## [3.4.1]

- #28 : fix crash after resize (rough Proof of concept without tests, manual testing only due to complications of testing window resizing, and want to get a patch out quickly)

## [3.4.0]

### Fixed

- #26 : fix bug where ProgressBar and ProgressBarSlim would report incorrect percentage (out by 1%) for some values.

## [3.3.0]

### Fixed

- #18 : Nested floating windows dont scroll properly.

### Added

- New attributes, `AbsoluteX` and `AbsoluteY` to `IConsole` so that you can know the absolute position of a window, in addition to it's relative position to it's parent.
- Added nested window demo code to the sample project.

## [3.2.1]

- had a problem uploading package to nuget, so created a new release to see if I can get past it with a fresh upload. (previous upload was hanging at 17 hours, doh!)

## [3.2.0]

### Fixed

- Correct version number.

##[3.1.0]

- deleted. (the Konsole.dll was given the incorrect version number.)

### Fixed

- [Fixed serious bug write and write-line when scrolling results in first Write's text being lost #12](https://github.com/goblinfactory/konsole/issues/12)
- Accidentally included `Konsole 0.0.2` as a dependancy in the [3.0.1] packages. Removed that.

## [3.0.0] & [3.0.1]

- quite a lot, leaving this blank-ish and will update shortly.
- highlight changes
   - threadsafe progressbars and windows, with tests for thread-safe-ness.
   - new class `ConcurrentWriter` to handle thread sychnonisation.
- More or less, added menus, lots of breaking changes of signatures (cleanups to make easier to understand)
- Highlight change is a new slimline itemless `ProgressBar` with option to revert to old behavior.
- New draft `Menu` with option to have menu items that run as background tasks. (useful for writing simple client-server demo projects with client and server each outputting to different windows.)

### Added

- Menus
- ProgressBarSlim

## [2.1.0] - 2017-05-07

### Added

- `Window.TopHalf()`
- `Window.BottomHalf()`
- `Window.OpenInline(console, height)` : opens a new window 'inline' full width of the console, 'height' rows tall, and moves the cursor to below the window. See `Window.OpenInlineShould` test.
- `MockKeyboard` : Mock keyboard for queueing up keystrokes. Includes Autoreply. Use to simulate user input during unit tests.
- `IReadKeys` : for console input.
- `Menu` with `MenuItem`: for rendering menus and capturing user input, see `Konsole.Sample.Program` for examples.
- Threadsafe windows. Windows opened with `Window.Open` and `Window.OpenInline` are now threadsafe. Specifically you can now reliably create multiple output windows, and have seperate threads e.g. `Task.Run` threads for each window. See `Konsole.Tests`Slow\WindowConcurrencyTests`.
- new Test project `Konsole.Tests.Slow` for slow running tests. Specifically concurrency tests, that take a few seconds each. 3 to 5 seconds on my dev laptop.

## [unreleased]


## [2.0.2] - 2017-03-20

### Added

- Can set `ProgressBar.Max` after creating a progressbar, and UX will be updated.

## [2.0.1] - 2017-03-20

### Fixed - high

- fix `ProgressBar` constructor not threadsafe.
- `ProgressBar.Refresh` with `null` text throws exception.

### Added : medium

- new readonly property `ProgressBar.Y` : Current Console Y position.
- new readonly property `ProgressBar.Line1` : Current Line1 Text.
- new readonly property `ProgressBar.Line2` : Current Line2 text.
- Update Sample  paral`(l)`el test, to use fake directories and fake file names.
-  `TestData.MakeFileNames` : generate random (unique) file names. `public static string[] MakeFileNames(int howMany = 4200, params string[] extensions)`
- `TestData.MakeNames` now supports option to generate names without special characters.
- `TestData.MakeObjectNames` : New test data method to generate believable random object names `public static string[] MakeObjectNames(int howMany = 4200, string format = "{0}{1}")`

## [2.0.0.0] - 2017-03-18

New core `Window` functionality, plus big class renames, main interface `IConsole` has changed from `1.0` and `2.0`.

### Breaking changes
- refactor all constructors, move `IConsole` parameter to 1st param.
- rename `Form.Show` to `Form.Write` (form is written at current cursor position, and position is updated)
- change `IConsole` `WindowWidth` from a `method` to a `property`.
- rename `Console` to `Window`
- rename `ConsoleWriter` to `Writer`
- rename `.LinesText` to `BufferWritten`
- rename `HilighterBuffer` to `BufferHilighted`
- rename `.Buffer` to `BufferWrittenString`
- rename `.TrimmedLines` to `.BufferWrittenTrimmed`
- rename 'echo' to (isMockConsole and invert) or, override behavior and remove altogether from Window.
- `Cell` class gets extra property, `Background`
- `Cell` property rename `.Color` to `.Foreground`

- `BufferedWriter` methods standardised.
 * `.Buffer` `string[]` Get the entire buffer (all the lines) regardless of whether they have been written to or not, untrimmed.
 * `.BufferString` `string` Get the entire buffer (all the lines) regardless of whether they have been written to or not, untrimmed, as a single `crln` concatenated string.
 * `.BufferWritten` `string[]` Get the entire buffer . Only the lines that have been written to, from topmost to bottommost, untrimmed.
 * `.BufferWrittenTrimmed` `string[]` Get the entire buffer . Only the lines that have been written to, from topmost to bottommost, Trimmed.
 * `.BufferWrittenString` `string` Get the entire buffer for all lines written to, as a single `crln` concatenated string.
 * `.BufferHilighted` `string[]` returns an 'approve-able' text buffer where each character is represented by 2 characters with one of of them representing the background color of the buffer.

### Added
- new `Window` class, with significant functionality, ... allowing users to print to windows sections of the screen, including either clipped or scrolling of output when out exceeds window.

```csharp

   var client = new Window(0, 0, 40, 10);
   var server = new Window(41, 0, 40, 10);
   server.WriteLine("Server started, listening on 'tcp://*:10001'.");
   ...
   client.WriteLine("enter commands, exit to quit");
   ...

```
- more demos, and demos now more useful for learning how `Konsole` works. See `Konsole.Sample` project.
- refactored demos to seperate demo classes, seperating functionality being demoed.
- Faster window printing. was printing character by character, very ...VEERY SLOW!) not good enough!
- `BackgroundColor` added to `IConsole`
- new method `BufferString`
- new property `Cell this[int x, int y]` on `BufferedWriter` (allows for interrogating fore and background colour at X,Y position on a buffered writer.)


### Fixed
- fix bug , printing off screen was crashing.
- removed quite a bit of duplication in the unit test code.
- fix : Window sometimes not printing `ForegroundColor` correctly.
- fix clear issues. Demo program not clearing properly.
- fix bug with `PrintAt`, `Write` and `WriteLine` with text that overflows, causing crash.
- fix bug when calling clear on bufferedWriter and crashing. (was not resetting Y position.)
- fix bug, calling `refresh` on progress bar changing cursor position.
- fix bug, Write (not WriteLine) causes progress bar to print from last X position and overflows.
- fix bug with `ProgressBar` not moving cursor down two lines to give `pb` space to display.

## [1.0.0.0] - 2016-03-04


- new very simple TestData `Konsole.Testing.TestData` class to help when building and prototyping console utilities and applications.
- renamed MockConsole to TestConsole. (It's not a mock, it's a real active class with important behavior to help build testable code.)
- Split IConsole into IWriteLine and IConsole to allow for being more specific about your dependancies, .i.e. what exactly your class depend on when you state you require a IWriteLine as a dependancy, tells you a lot more than 'I Need access to the console'. (Most classes often simply need acess to write a few bits and bobs to the console, in which case I expect that IWriteLine will be the most commonly used interface.)



## [0.0.6] - 2017-02-01

### Changed

- oops, sposed to be CamelCase, not pascalCase, i.e. captalise class names in `name.page.ts`, so that `yo gf:i2 test-apple` generates `class TestApplePage`

## [0.0.5] - 2017-02-01

### Added

- Support page names with hyphens, convert the name into camelcase so that the generated `{pagename}Page` class is valid. e.g. `my-games` becomes `class myGamesPage` instead of `class my-gamesPage`.

## [0.0.4] - 2017-02-01

### Changed

- fix incorrect documentation stating that the default command is `yo gf i2 {pagename}` that doesnt work. Correct syntax requires colon i.e. `yo gf:i2 {pagename}`

## [0.0.3] - 2017-01-31

### Added

- first useful generator, `yo gf i2 {pagename}` that generates the 1 folder + 3 files.

  • .NETStandard 2.0

    • No dependencies.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on Goblinfactory.Konsole:

Package Downloads
InEngine.Core
Plugin-based queuing and scheduling command server.
Onsharp
Onsharp is C# wrapper for the Onset Game.
ConsoleUserInteractionHelper
Prompt a user to GetNaturalInt, GetPathFromUser, GetBinaryDecisionFromUser. Also, ShowSpinnerUntilConditionTrue to show spinner progress controll in console.
Goblinfactory.Konsole.Windows
Konsole native Windows driver. (works with .NET Standard or .NET Framework projects only on windows)
MyTqdm
tqdm style wrapper for Goblinfactory.Konsole

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Goblinfactory.Konsole:

Repository Stars
WolvenKit/WolvenKit
Mod editor/creator for RED Engine games. The point is to have an all in one tool for creating mods for the games made with the engine.

Version History

Version Downloads Last updated
7.0.0.7-alpha 150 2/13/2021
7.0.0.6-alpha 84 2/13/2021
7.0.0.5-alpha 78 2/11/2021
7.0.0.3-alpha 84 2/9/2021
7.0.0.2-alpha 76 2/9/2021
7.0.0.1-alpha 80 2/9/2021
6.3.0-alpha 77 2/8/2021
6.2.2 922 4/18/2021
6.2.1 1,683 2/7/2021
6.2.0 9,665 1/24/2020
6.1.0 231 1/23/2020
6.0.0 226 1/23/2020
6.0.0-alpha02 259 1/23/2020
6.0.0-alpha01 224 1/22/2020
5.4.4 432 1/13/2020
5.4.3 340 1/12/2020
5.4.2 326 1/9/2020
5.4.1 268 1/8/2020
5.4.0 218 1/8/2020
5.3.3 452 1/6/2020
5.3.2 325 1/6/2020
5.3.1 294 1/6/2020
5.3.0 375 1/5/2020
5.2.0 259 1/5/2020
5.1.0 431 1/4/2020
5.0.1 337 12/28/2019
5.0.0 330 12/18/2019
5.0.0-alpha09 350 12/18/2019
5.0.0-alpha08 237 12/17/2019
4.1.0 573 12/4/2019
4.0.1 242 12/4/2019
3.4.1 260 12/3/2019
3.4.0 16,703 10/8/2019
3.3.0 20,635 1/30/2018
3.2.1 677 1/28/2018
3.1.0 1,671 10/21/2017
3.0.1 1,031 6/4/2017
3.0.0 588 6/4/2017
2.0.2 872 3/20/2017
2.0.1 861 3/20/2017
2.0.0 814 3/18/2017
1.0.0 972 3/4/2016
0.0.0.3 839 2/29/2016
0.0.0.2 1,057 2/29/2016
0.0.0.1 862 2/28/2016
Show less