* Properly manage teardown state in TermControl
This commit introduces a few automatic event revokers and implements
staged Close for TermControl's constituent components.
* Only read the focused control title if there is one
Fixes#1198Fixes#1188
* Start working on adding support for panes
See #1000 for the panes megathread on remaining work.
The functionality will be there, but the keybinding won't be there, so people have to
opt-in to it.
* Code to add WSLProfiles.
* Updates recomended by miniksa
* Corrections from Mauve
* More updates from miniska (clarified WaitForSingleObject errors, and moved the try block to the calling function)
* Added THROW_LAST_ERROR for WAIT_FAILED instead of passing an unhandled exception.
* Migrate STL dependancies to LibraryIncludes.h
* Renamed function to provide more clarity
* Set WSL starting directory.
* Default Linux icon and brackets on new lines.
* Added system path so we don't rely on execution from the PATH environment variable. Removed incorrect error useage. Removed variable that was not required.
* Remove default directory setting.
Switch to using jsoncpp as our json library. This lets us pretty-print the json file by default, and lets users place comments in the json file.
We will now only re-write the file when the actual logical structure of the json object changes, not only when the serialization changes.
Unfortunately, this will remove any existing ordering of profiles, and make the order random. We don't terribly care though, because when #754 lands, this will be less painful.
It also introduces a top-level globals object to hold all the global properties, including keybindings. Existing profiles should gracefully upgrade.
* Highlight the default profile in new-tab flyout
This commit makes the default profile in the new-tab flyout to show up
at the top and gives it bold text.
* Initial code check in for background images
* Cleaning up whitespace
* Whitespace cleanup
* Added/fixed comments
* Fixing tabs
* Reverting erroneous file add
* Removing custom enum for image stretching mode and using Windows::UI::Xaml::Media::Stretch instead.
* Removing now-superfluous static_cast when setting stretch mode.
* Updating code to use wstring_view (per #925)
* One last set of wstring -> wstring_view changes
* Split off brush-intialization function from TermControl::_BackgroundColorChanged and added code to prevent flicker on resetting acrylic or image backgrounds.
* added another method to scroll with keyboard
* set lastscrolloffset to 0
* fixed unused variable
* renamed ViewPort to Viewport
* changed keyBoard to keyboard in the functions, and added expliantion for function
This commit introduces a handful of default icons whose paths will be
emitted into the default profiles.
Icons are named after the profile GUIDs, which for the default profiles
are stable v5 UUIDs based on the name of the profile. The plan is that
we'll never have a duplicate default profile, and if the user wants to
duplicate it they'll need to issue it a new GUID.
Eventually, when icons can be inserted through the settings UI, we can
keep the GUID name (to unique them among all icons for all profiles) and
move them into ms-appdata:///roaming/.
The currently included icons are named for the following profiles:
"cmd" `{0caa0dad-35be-5f56-a8ff-afceeeaa6101}`
"PowerShell Core" `{574e775e-4f2a-5b96-ac1e-a2962a402336}`
"Windows PowerShell" `{61c54bbd-c2c6-5271-96e7-009a87ff44bf}`
"WSL" `{9acb9455-ca41-5af7-950f-6bca1bc9722f}`
The PowerShell profile names aren't being used yet, but this is in
preparation for #918 merging.
Fixes#933.
* Adding vsconfig file for VS2019 help to prompt for missing components requried.
* Adding a keybinding for launching the settings. Suggested fix for #683
* Modified to comma per PR feedback
* Implements 791 for profile and settings shortcuts (most frequent and have shortcuts)
* Quick change for consistency (missed in first checkin due to using ENUM) on using 'Ctrl' instead of 'Control'
* Adding UI shortcut generation to new keybinding mappings. Resolving #791
* Making a few changes on reviewer feedback for shortcut UI.
* Additional reviewer feedback on variable name change (not a member var)
This commit switches the GUIDs for default profiles from being randomly generated to being version 5 UUIDs. More info in #870.
## PR Checklist
* [x] Closes#870
* [x] CLA signed
* [x] Tests added/passed
* [x] Requires documentation to be updated (#883)
* [x] I've discussed this with core contributors already.
## Detailed Description of the Pull Request / Additional comments
This commit has a number of changes that seem ancillary, but they're general goodness. Let me explain:
* I've added a whole new Types test library with only two tests in
* Since UUIDv5 generation requires SHA1, we needed to take a dependency on bcrypt
* I honestly don't think we should have to link bcrypt in conhost, but LTO should take care of that
* I considered adding a new Terminal-specific Utils/Types library, but that seemed like a waste
* The best way to link bcrypt turned out to be in line with a discussion @miniksa and I had, where we decided we both love APISets and think that the console should link against them exclusively... so I've added `onecore_apiset.lib` to the front of the link line, where it will deflect the linker away from most of the other libs automagically.
```
StartGroup: UuidTests::TestV5UuidU8String
Verify: AreEqual(uuidExpected, uuidActual)
EndGroup: UuidTests::TestV5UuidU8String [Passed]
StartGroup: UuidTests::TestV5UuidU16String
Verify: AreEqual(uuidExpected, uuidActual)
EndGroup: UuidTests::TestV5UuidU16String [Passed]
```
* Amend Color array to typed values
* Re-add the original deserialization code.
* Re-added original deserialization
* Update comment spacing
Co-Authored-By: Michael Niksa <miniksa@microsoft.com>
* Replace tabs with spaces
* Replace array definition and update for loops.
* swapped _table calls to use .at()
* added keybindings
* untabfied the files
* fixed spacing issues and renamed termheight
* changed function names and other improvements
* made some auto variables const auto
* fixed tabs
* another try for the broken spacing
* Add One Half Dark & Light color schemes
* WIP: Add One Half Dark/Lite schemes to settings
* Address PR feedback - use gsl::narrow()
* Fix reversed OneHalfLight fg/bg colors
Added in customized colortool scheme colors for last 8 colors
* Improve `startingDirectory` functionality
This commit adds the `startingDirectory` property to the default-created
`cmd` and `powershell` profiles, with the default value
`%HOMEDRIVE%%HOMEPATH%`.
Signed-off-by: Fred Miller <fghzxm@outlook.com>
* Use %USERPROFILE% to replace %HOMEDRIVE%%HOMEPATH%
This commit changes `%USERPROFILE%` in the default profiles to
`%HOMEDRIVE%%HOMEPATH%`.
https://stackoverflow.com/posts/36392591/revisions says `%USERPROFILE%`
is better than `%HOMEDRIVE%%HOMEPATH%`, so changed it.
Signed-off-by: Fred Miller <fghzxm@outlook.com>
* Improve `startingDirectory` functionality
This commit adds the `startingDirectory` property to the default-created
`cmd` and `powershell` profiles, with the default value
`%HOMEDRIVE%%HOMEPATH%`.
Signed-off-by: Fred Miller <fghzxm@outlook.com>
* Use %USERPROFILE% to replace %HOMEDRIVE%%HOMEPATH%
This commit changes `%USERPROFILE%` in the default profiles to
`%HOMEDRIVE%%HOMEPATH%`.
https://stackoverflow.com/posts/36392591/revisions says `%USERPROFILE%`
is better than `%HOMEDRIVE%%HOMEPATH%`, so changed it.
Signed-off-by: Fred Miller <fghzxm@outlook.com>
* Consolidate constant
Refer to the externally defined constant in code.
Signed-off-by: Fred Miller <fghzxm@outlook.com>
* Make powershell the default profile
Sets powershell as the default profile.
* Apply suggestions from code review
Co-Authored-By: Gabriel <gabriel@potter.fr>
* Update src/cascadia/TerminalApp/CascadiaSettings.cpp
Co-Authored-By: Gabriel <gabriel@potter.fr>
* Change profile order