901a1e1a09
This pull request implements the new `ITerminalConnection::ConnectionState` interface (enum, event) and connects it through TerminalControl to Pane, Tab and App as specified in #2039. It does so to implement `closeOnExit` = `graceful` in addition to the other two normal CoE types. It also: * exposes the singleton `CascadiaSettings` through a function that looks it up by using the current Xaml application's `AppLogic`. * In so doing, we've broken up the weird runaround where App tells TerminalSettings to CloseOnExit and then later another part of App _asks TerminalControl_ to tell it what TerminalSettings said App told it earlier. `:crazy_eyes:` * wires up a bunch of connection state points to `AzureConnection`. This required moving the Azure connection's state machine to use another enum name (oops). * ships a helper class for managing connection state transitions. * contains a bunch of template magic. * introduces `WINRT_CALLBACK`, a oneshot callback like `TYPED_EVENT`. * replaces a bunch of disparate `_connecting` and `_closing` members with just one uberstate. * updates the JSON schema and defaults to prefer closeOnExit: graceful * updates all relevant documentation Specified in #2039 Fixes #2563 Co-authored-by: mcpiroman <38111589+mcpiroman@users.noreply.github.com>
48 lines
1.6 KiB
C++
48 lines
1.6 KiB
C++
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
#include "pch.h"
|
|
|
|
#include <winrt/Microsoft.Terminal.TerminalConnection.h>
|
|
|
|
#include "AzureCloudShellGenerator.h"
|
|
#include "LegacyProfileGeneratorNamespaces.h"
|
|
|
|
#include "../../types/inc/utils.hpp"
|
|
#include "../../inc/DefaultSettings.h"
|
|
#include "Utils.h"
|
|
#include "DefaultProfileUtils.h"
|
|
|
|
using namespace ::TerminalApp;
|
|
|
|
std::wstring_view AzureCloudShellGenerator::GetNamespace()
|
|
{
|
|
return AzureGeneratorNamespace;
|
|
}
|
|
|
|
// Method Description:
|
|
// - Checks if the Azure Cloud shell is available on this platform, and if it
|
|
// is, creates a profile to be able to launch it.
|
|
// Arguments:
|
|
// - <none>
|
|
// Return Value:
|
|
// - a vector with the Azure Cloud Shell connection profile, if available.
|
|
std::vector<TerminalApp::Profile> AzureCloudShellGenerator::GenerateProfiles()
|
|
{
|
|
std::vector<TerminalApp::Profile> profiles;
|
|
|
|
if (winrt::Microsoft::Terminal::TerminalConnection::AzureConnection::IsAzureConnectionAvailable())
|
|
{
|
|
auto azureCloudShellProfile{ CreateDefaultProfile(L"Azure Cloud Shell") };
|
|
azureCloudShellProfile.SetCommandline(L"Azure");
|
|
azureCloudShellProfile.SetStartingDirectory(DEFAULT_STARTING_DIRECTORY);
|
|
azureCloudShellProfile.SetColorScheme({ L"Vintage" });
|
|
azureCloudShellProfile.SetAcrylicOpacity(0.6);
|
|
azureCloudShellProfile.SetUseAcrylic(true);
|
|
azureCloudShellProfile.SetConnectionType(AzureConnectionType);
|
|
profiles.emplace_back(azureCloudShellProfile);
|
|
}
|
|
|
|
return profiles;
|
|
}
|