Commit Graph

7881 Commits

Author SHA1 Message Date
M3Logic
ece4fee8f8 Allow hotkey specifier to be at any position in label (#4067)
Allow hotkey specifier to be at any position in label

"D_irectory" doesn't work because hotPos is hardcoded 0
2025-05-09 08:52:50 -06:00
Thomas Nind
d0bfa5ef13 Fixes #4035 - FileDialog keeps path when selecting folder (optionally) (#4065)
* WIP keep path

* Make new 'sticky filename' behaviour optional

* Tests for new behaviour when selecting in TreeView

* Add more tests, this time for table view navigation

* Add the new style option into UICatalog scenario
2025-05-09 08:47:04 -06:00
Brandon G
b46b7781f1 Update getting-started.md (#4063) 2025-04-29 19:26:25 -06:00
Tig
8e5d2eeafd Fixes #4051 - Adds cancellable_work_pattern.md (#4052)
* touching publish.yml

* Updated md files

* Updated md files 2

* Updated md files 3

* Updated API docs to point

* commmand->command

* Update Terminal.Gui/View/View.Command.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-04-28 06:40:24 -06:00
Thomas Nind
3f38d8104e Fixes #4027. Add collection search matcher (#4029)
* Add collection search matcher

* Fix naming

* fix naming

* Move FileDialogCollectionNavigator to its own file (no longer private class)
Add class diagram for collectionNavigation

* Add ICollectionNavigator interface

* Move to separate file IListCollectionNavigator

* Update class diagram

* update class diagram

* Add tests for overriding ICollectionNavigatorMatcher

* xmldoc and nullability warning fixes

* Code Cleanup

* Make requested changes to naming and terminology

* Move to seperate namespace

* Update class diagram and change TreeView to reference the interface not concrete class

* Switch to implicit new

* highlight that this class also works with tree view

* Apply tig patch to ensure keybindings get priority over navigator

See: https://github.com/gui-cs/Terminal.Gui/issues/4027#issuecomment-2810020893

* Apply 'keybinding has priority' fix to TreeView too

* Apply 'keybindngs priority over navigation' fix to TableView

* Remove entire branch for selectively returning false now that it is default when there is a keybinding collision

* Make classes internal and remove 'custom' navigator that was configured in UICatlaogToplevel

* Change logging in collection navigator from Trace to Debug

* Switch to NewKeyDownEvent and directly setting HasFocus

* Remove application top dependency

* Remove references to application

* Remove Application

* Move new tests to parallel

---------

Co-authored-by: Tig <tig@users.noreply.github.com>
2025-04-28 06:39:11 -06:00
Tig
0baa881dc5 Fixes #4046 - Moves examples into ./Examples and fixes ./Tests (#4047)
* touching publish.yml

* Moved Examples into ./Examples

* Moved Benchmarks into ./Tests

* Moved Benchmarks into ./Tests

* Moved UICatalog into ./Examples

* Moved UICatalog into ./Examples 2

* Moved tests into ./Tests

* Updated nuget
2025-04-25 09:49:33 -06:00
Thomas Nind
dca3923491 Goblin fighter (#4037)
* touching publish.yml

* WIP Investigate how to build random maze

* Fix maze rendering

* Use line canvas for rendering

* Move around the maze

* Code cleanup

* Infinite maze

* Fight goblins

* Generate new npcs on new maps

* Code cleanup

* Make it possible to die

* Fix variable naming

* Refactored Mazing to use Commmands and KeyBindings.
Code cleanup of Mazing.
Refactored Snake to use KeyBindings/Commmands + some code cleanup

* Fix bug where your health would regenerate when reaching end making it impossible to loose.

---------

Co-authored-by: Tig <tig@users.noreply.github.com>
2025-04-24 15:23:09 -06:00
BDisp
06e0ed0f29 Fixes #3966. TextField crashes app when pasting unicode surrogate pair (#3982)
* Add constructor Key(int) and operator for handled with non-Bmp.

* Fix TextField non-BMP issues

* Fix TextField PositionCursor.

* Reformat

* Add IsValidInput method to handle clipboard paste when pressing CTRL+V in WT

* Add handle IsValidInput in FakeDriver and unit tests

* Fixes #3984 - `Margin` w/out shadow should not force draw (#3985)

* shortcut tests

* Generic demos

* Optimize Margin to not defer draw if there's no shadow

* Fixes #4041. WSLClipboard doesn't handles well with surrogate pairs

* Avoid running Clipboard.Contents twice

* Fixes #4042. Microsoft.VisualStudio.TestPlatform.ObjectModel.TestPlatformException: Could not find testhost

* Moving tests to the parallelizable unit tests

* Remove unused folder

* Prevent warnings about not installed nuget packages

* Using Toplevel instead of Application.Top

* Cleanup code

---------

Co-authored-by: Tig <tig@users.noreply.github.com>
2025-04-24 11:00:30 -06:00
Tig
47bcf1bf57 Partial on #2975 - Replaces Menu v1 in many places with v2 (#4040)
* touching publish.yml

* Fixed UICatalog bugs. Added fluent tests.

* marked v1 menu stuff as obsolte

* Tweaks.
Added View.GetSubMenus<type>().

* fixed unit tests

* general messing around

* general messing around

* Playing with Fluent

* ColorScheme tweaks

* WIP: ColorScheme tweaks

* Playing with Fluent

* Merged from laptop2

* Hacky-ish fixes to:
- #4016
- #4014

* Fixed Region bug preventing menus without borders from working

* Tweaks

* Fixed a bunch of CM issues

* Fixed OoptionSelector

* ip

* FixedCM issues

* Fixed CM issues2

* Revert "FixedCM issues"

This reverts commit dd6c6a70a3.

* Reverted stuff

* Found and fixed bug in AllViews_Center_Properly

* Fixed CM issues2

* removed menuv2 onapplied.
Changed how UICatalog Applys CM

* changed test time out to see if it helkps with ubuntu fails

* reset app on fail?

* back to 1500ms

* Made StatusBar nullable.

* Code Cleanup.

* HexEditor Code Cleanup.

* HexEditor Code Cleanup.

* Back to 3000ms. Sigh.

* Trying different logic

* Trying different logic2

* Fixed potential crash in runlop

* Fixed potential crash in runlop2

* Tweaked Spinner stuff

* Removed TabView from TextEffects scenario. Not needed and possible culprit.

* back to 2000ms

* WIP: Revamping menu scenarios

* Menu Scenario refinements.
Fixed a few bugs.
Code cleanup.

* fixed unit test

* Fixed warnings

* Fixed warnings2

* Fixed File.Exit

* WIP: Dealing with QuitKey struggles

* WIP: Dealing with QuitKey struggles 2

* WIP: Dealing with QuitKey struggles 3

* Fixed ListView collection nav bug

* Fixed a bunch of menu stuff.
Fixed Appv2 stuff.

* Lots of refactoring and fixing

* Lots of unit test issues

* Fixed DebugIDisposable issues

* Fixed release build issue

* Fixed release build issue 2

* DebugIDisposable -> EnableDebugIDisposableAsserts and more

* DebugIDisposable -> EnableDebugIDisposableAsserts and more 2

* Fixed Menus scenario - context menu

* Added @bdisp suggested assert. Commented it out as it breaks tests.

* Code cleanup

* Fixed disposed but

* Fixed UICatalog exit

* Fixed Unit test I broke.
Added 'Minimal' Theme that turns off all borders etc...
2025-04-24 05:17:58 -06:00
Thomas Nind
8d3d039fb3 Fixes #4022 file dialog tests and bugfix for cancellation (#4024)
* Add class for detecting information about console in extensible way

* WIP - Create test for reordering

* Change Dictionary to List and preserve TreeBuilder order

* Add test to ensure branch expansion/status remains consistent despite reorder

* Cleanup code

* Fix regression when removed child was the selected one

* Revert "Add class for detecting information about console in extensible way"

This reverts commit 7e4253cf28.

* Code cleanup and enable nullable on Branch

* Remove color scheme and driver from Branch draw

* Add xunit context extensions

* Investigate codegen for xunit

* Getting closer to something that works

* Fix code generation

* Further explore code gen

* Generate all methods in single class for easier extensibility

* Simplify code gen by moving parameter creation to its own method

* Implement asserts A-I

* Add remaining assert calls that are not obsolete

* Fix unit test

* Roll back versions to be compatible with CI version of csharp

* Handle params and ref etc

* Fix null warning

* WIP - start to add integration tests for FileDialog

* Add ability to tab focus to specific control with simple one line delegate

* Clarify test criteria

* Add unit tests for Ok and other ways of canceling dialog

* Fix other buttons also triggering save

* Fix for linux environment tests

* Fix for linux again

* Fix application null race condition - add better way of knowing if stuff is finished

* Better fix for shutdown detection

* Add test that shows #4026 is not an issue

* Switch to `_fileSystem.Directory.GetLogicalDrives ()`

* Don't show duplicate MyDocuments etc
2025-04-16 09:25:07 -06:00
Thomas Nind
e02d57675f Fixes #4009 - fix tree ordering (#4015) 2025-04-05 06:47:39 -06:00
Tig
7ba9e539ed Partially Fixes #2975 - Upgrades UICatalog to Menuv2 (#4011) 2025-04-02 06:27:24 -06:00
Tig
4cc44091f2 Partially Fixes #2975 - Replaces old ContextMenu with new Bar/Shortcut based implementation (#4008)
* touching publish.yml

* Nuked ContextMenuv2 - use PopverMenu instead

* WIP context menu stuff

* More robust dispose

* Removed ConextMenu; use PopoverMenu instead

* Code cleanup

* Code cleanup2
2025-03-31 17:12:55 -06:00
Tig
39d4c7dd3d Fixes #3691 - Adds ViewArrangement.Popover (#3852)
* Added Applicaton.Popover.
Refactored FindDeepestView

* Popover prototype

* Testing highlight

* Fixed click outside issue

* Fixed DialogTests

* Fixed click outside issue (agbain)

* Enabled mouse wheel in Bar

* Enabled mouse wheel in Bar

* Progress. Broke arrangement

* Added popover tests.
Fixed a bunch more CM issues related ot unreliable unit tests.
Updated config.json to include Glyphs.

* Can't set ForceDriver to empty in Resources/config.json.

* added BUGBUG

* Made Position/ScreenPosition clear

* Added View.IsInHierarchy tests

* Added Contextmenuv2 scenario.

* Implemented CM2 in TextView

* Removed unneeded CM stuff from testhelpers

* Shortcut API docs

* Fixed keybinding unit tests

* Fixed mouse handling

* Fighting with CM related unit test failures

* Unit tests pass. I think.

* Shortcut code cleanup

* TextView uses new CM2

* Starting on OnSelect etc...

* Starting on OnSelect etc...

* Fixed ContextMenuv2

* ContextMenu is working again.

* Ugh. ANd fixed button api docs

* Fixed DrawHorizontalShadowTransparent (vertical was already fixed).

* Made Scenarios compatible with #nullable enable

* Undid some keybinding stuff

* Fixed stuff

* Sped up unit tests

* Sped up unit tests 2

* Sped up unit tests 3

* Messing with menus

* merged latest v2_develop

* Added more Popover unit tests

* Added more Popover unit tests2

* Fixed positioning bug

* Fixed mouse bug

* Fixed Bar draw issue

* WIP

* merge v2_develop

* CM2 sorta works

* Enabled Bar subclasses to have IDesignable

* Added ViewportSettings.Transparent

* Region -> nullable enable

* Added ViewportSettigs Editor

* merged v2_develop part 2

* merged v2_develop part 3

* WIP: GetViewsUnderMouse

* WIP: More GetViewsUnderMouse work

* Bars works again

* Added unit tests

* CM now works

* MenuItemv2 POC

* SubMenu POC

* CommandNotBound

* More POC

* Optimize Margin to not defer draw if there's no shadow

* Logger cleanup

* Reverted Generic

* Cascading mostly working

* fixed layout bug

* API docs

* API docs

* Fixed cascade

* Events basically work

* code cleanup

* Fixed IsDefault bug;

* Enabled hotkey support

* Made context-menu-like

* Improved usability

* Refactored ApplicationPopover again

* Cleanup

* Menuv2 POC basically complete

* Code Cleanup

* Made menu API simpler

* Fixed Strings bugs

* Got old ContextMenu scenario mostly working

* ContextMenu scenario now works

* ContextMenu fixes

* ContextMenu fixes

* Tons of menu cleanup

* ContextMenu works in TextView

* Fixed unit tes

* Added unit tests

* Fixed tests

* code cleanup

* More code cleanup

* Deep dive

* scenario

* typos

* Demo colorpicker in a Menu

* Added Region tests proving Region is broken in some Union cases

* fixed v2win/net
2025-03-29 11:30:52 -06:00
Tonttu
1856262b50 Fixes #4000. Named colors as enums. (#4005)
* Add W3C color enum with the RGB as numeric value

* Add transform helper class for W3cColor enum

For the sake of backwards compatibility prioritize parsing 16 color mode color names over the W3C colors because the previous resource-based color names/values had a mix of W3C and 16 color mode RGB values.

Mechanism for choosing/prioritizing one color scheme over the other is currently only available at higher application/driver/output level.

* IColorNameResolver enable null analysis

* Remove obsolete color name related ResourceManagerTests

* Replace remains of W3CColors with direct W3C color name resolver

Temporarily breaks backwards compatibility and tests even further.

* Add ANSI 4-bit (ColorName16) color name resolver

* Add multi-standard color name resolver

Combined resolver for both ANSI 4-bit (ColorName16) and W3C colors while trying to maintain backwards compatibility for ColorPicker.

* Split conditional name resolver test cases

* Change W3C colors tests to be similar to name resolvers

* Change W3cColorsTests to W3cColorNameResolverTests

More consistent when all the tests refer to the color name resolver layer.

* Make W3cColors internal

Color name resolver is the public interface.

* W3cColors: Use Color.Argb instead of individual RGB components

* MultiStandardColorNameResolver: Substitute instead of blocking alternative W3C names

Changes color picker behavior a bit, e.g. Aqua will match to Cyan instead of jumping to Aquamarine.

* Remove leftover color string resources

* Consistent position for IColorNameResolver #nullable enable directive

* Add missing XML comments to ColorScheme.Colors.cs
2025-03-29 11:18:10 -06:00
Tig
df0fcd3d40 touching publish.yml 2025-03-21 09:24:31 +01:00
tznind
09a3a48a2b Update class diagram 2.0.0-prealpha.1835 2025-03-21 08:18:46 +01:00
tznind
4634b35c1b Disable GenerateTestCasesForKeyPresses by default 2025-03-21 08:18:46 +01:00
tznind
15bcf0f451 Revert build props changes 2025-03-21 08:18:46 +01:00
tznind
266f03daef Xmldoc 2025-03-21 08:18:46 +01:00
tznind
bacac70588 Make all tests do both drivers 2025-03-21 08:18:46 +01:00
tznind
a9a9b5bb70 Add net ansi sequences 2025-03-21 08:18:46 +01:00
tznind
7712bc64b1 Work on ability to test both v2net and v2win 2025-03-21 08:18:46 +01:00
tznind
56d3835c37 Cleanup code 2025-03-21 08:18:46 +01:00
tznind
29355c8b63 Add automation test for selecting a submenu item 2025-03-21 08:18:46 +01:00
tznind
e94b8b1bdc Add before and after screenshots 2025-03-21 08:18:46 +01:00
tznind
407c863cb9 Add support for outputting logs from tests #3972 2025-03-21 08:18:46 +01:00
tznind
8c009de9a0 Fix test Same to Equal 2025-03-21 08:18:46 +01:00
tznind
1e40ad3bc9 Add csproj to sln 2025-03-21 08:18:46 +01:00
tznind
0b56a3d63b Remove dependency on fluent assertions and fix folder paths 2025-03-21 08:18:46 +01:00
tznind
79f289ce8f Rename to TerminalGuiFluentTesting 2025-03-21 08:18:46 +01:00
tznind
491140a39a Add timeout to tests and fix race condition to boot 2025-03-21 08:18:46 +01:00
tznind
fd465c3367 Make colon implicit in title 2025-03-21 08:18:46 +01:00
tznind
8d610a0dde Add screenshot method 2025-03-21 08:18:46 +01:00
tznind
f0bd577c98 WIP: try to get context menu to work properly in automation tests 2025-03-21 08:18:46 +01:00
tznind
4316378f6e Make tests pass 2025-03-21 08:18:46 +01:00
tznind
323c624046 WIP: Add fluent assertions and prototype the kind of things that should be possible 2025-03-21 08:18:46 +01:00
tznind
c511101dfe Investigate fluent assertions for testing v2 2025-03-21 08:18:46 +01:00
BDisp
8b5639e5e5 Using SubViews and letting the top-level handle the key if the TabView doesn't handle it 2025-03-21 08:17:37 +01:00
BDisp
2ed7bb76c3 Fixes #3974. TabView steals keypresses from active ContextMenu 2025-03-21 08:17:37 +01:00
Tonttu
9735d8c584 Consistent kilobyte unit in comments v2.0.0-develop.4376 2025-03-17 16:17:46 +01:00
Tonttu
cf2645fa04 StringExtensions.ToString(IEnumerable<Rune>) use rented array as alternative buffer 2025-03-17 16:17:46 +01:00
Tonttu
9b78961a03 StringExtensions.ToString(IEnumerable<Rune>) remove extra rune chars copy 2025-03-17 16:17:46 +01:00
Tonttu
2e4e73a436 Rewrite TextFormatter.RemoveHotKeySpecifier
Uses stackalloc char buffer with fallback to rented array.
2025-03-17 16:17:46 +01:00
Tonttu
5ab51fc08b StringExtensions.ToString(IEnumerable<Rune>) stackalloc char buffer with StringBuilder fallback 2025-03-17 16:17:46 +01:00
Tonttu
b6a5ca1d4e Rewrite StringExtensions.ToString(IEnumerable<Rune>)
Appends rune chars to StringBuilder avoiding intermediate string allocation for each rune append.
2025-03-17 16:17:46 +01:00
Tonttu
aeffe3e36e Add benchmark category to the TextFormatter benchmarks 2025-03-17 16:17:46 +01:00
Tonttu
662e745395 Rewrite TextFormatter.ReplaceCRLFWithSpace
Almost identical to the StripCRLF implementation.
2025-03-17 16:17:46 +01:00
Tonttu
7d317ba550 StripCRLF early exit when no newline to avoid StringBuilder allocation 2025-03-17 16:17:46 +01:00
Tonttu
40d4cab510 More varied text permutations for the StripCRLF benchmark 2025-03-17 16:17:46 +01:00