mirror of
https://github.com/microsoft/terminal.git
synced 2026-05-19 03:10:49 +00:00
Compare commits
51 Commits
dev/cazamo
...
dev/migrie
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0c09178d7a | ||
|
|
056925eb42 | ||
|
|
0a3fbdefb3 | ||
|
|
9f0cd70ae9 | ||
|
|
127775118d | ||
|
|
343db95021 | ||
|
|
f20c549d15 | ||
|
|
300bc2b513 | ||
|
|
b6375cc028 | ||
|
|
67669a35c5 | ||
|
|
e20e1f7bf9 | ||
|
|
c81c66b406 | ||
|
|
83b9569ce0 | ||
|
|
830935d500 | ||
|
|
bc4e6129ef | ||
|
|
d9d824a840 | ||
|
|
c310e0280f | ||
|
|
1f85191baf | ||
|
|
ed5b59d248 | ||
|
|
527b369de7 | ||
|
|
7798d2e958 | ||
|
|
0c5ec71e62 | ||
|
|
497bb2f7d1 | ||
|
|
c05cb107e5 | ||
|
|
5f1ecb005a | ||
|
|
692f06beb6 | ||
|
|
21754fabf2 | ||
|
|
8e4642dc13 | ||
|
|
3e912e78a7 | ||
|
|
61f86e1116 | ||
|
|
27aae1f245 | ||
|
|
89d82638ab | ||
|
|
a449899789 | ||
|
|
cdf4bd9209 | ||
|
|
8f3d1d8d01 | ||
|
|
3ec372c176 | ||
|
|
71409f84f7 | ||
|
|
6723ca2239 | ||
|
|
c8549bebed | ||
|
|
8d94edd7b0 | ||
|
|
e8971c80ae | ||
|
|
0ee3cfb3fd | ||
|
|
a528141fe6 | ||
|
|
c4557594ce | ||
|
|
04bcba39ae | ||
|
|
726c8f0cef | ||
|
|
a0c79b59e6 | ||
|
|
e9a8301e73 | ||
|
|
b668fd5188 | ||
|
|
dfd11cf0cf | ||
|
|
58f1f3b312 |
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,4 +1,4 @@
|
||||
blank_issues_enabled: true
|
||||
blank_issues_enabled: false
|
||||
|
||||
contact_links:
|
||||
- name: Microsoft Security Response Center 🔐
|
||||
|
||||
2
.github/actions/spelling/allow/allow.txt
vendored
2
.github/actions/spelling/allow/allow.txt
vendored
@@ -71,7 +71,9 @@ sustainability
|
||||
sxn
|
||||
Tencent
|
||||
toolset
|
||||
Uids
|
||||
UEFI
|
||||
UIDs
|
||||
uiatextrange
|
||||
und
|
||||
vsdevcmd
|
||||
|
||||
7
.github/actions/spelling/expect/expect.txt
vendored
7
.github/actions/spelling/expect/expect.txt
vendored
@@ -141,6 +141,7 @@ BValue
|
||||
Cacafire
|
||||
CALLCONV
|
||||
CANDRABINDU
|
||||
CANTCALLOUT
|
||||
capslock
|
||||
CARETBLINKINGENABLED
|
||||
CARRIAGERETURN
|
||||
@@ -255,7 +256,6 @@ conterm
|
||||
contsf
|
||||
contypes
|
||||
conwinuserrefs
|
||||
coordnew
|
||||
COPYCOLOR
|
||||
COPYDATA
|
||||
COPYDATASTRUCT
|
||||
@@ -621,7 +621,6 @@ fuzzmap
|
||||
fuzzwrapper
|
||||
fwdecl
|
||||
fwe
|
||||
fwlink
|
||||
fzf
|
||||
gci
|
||||
gcx
|
||||
@@ -808,6 +807,7 @@ INCONTEXT
|
||||
INDEXID
|
||||
INFOEX
|
||||
inheritcursor
|
||||
ININPUTSYNCCALL
|
||||
INITCOMMONCONTROLSEX
|
||||
INITDIALOG
|
||||
INITGUID
|
||||
@@ -864,6 +864,7 @@ KILLACTIVE
|
||||
KILLFOCUS
|
||||
kinda
|
||||
KIYEOK
|
||||
KKP
|
||||
KLF
|
||||
KLMNO
|
||||
KOK
|
||||
@@ -883,6 +884,7 @@ LBUTTONDOWN
|
||||
LBUTTONUP
|
||||
lcb
|
||||
lci
|
||||
LCMAP
|
||||
LCONTROL
|
||||
LCTRL
|
||||
lcx
|
||||
@@ -1062,6 +1064,7 @@ Mypair
|
||||
Myval
|
||||
NAMELENGTH
|
||||
namestream
|
||||
NCACTIVATE
|
||||
NCCALCSIZE
|
||||
NCCREATE
|
||||
NCLBUTTONDOWN
|
||||
|
||||
@@ -28,7 +28,7 @@ extends:
|
||||
official: true
|
||||
branding: Canary
|
||||
buildTerminal: true
|
||||
pgoBuildMode: None # BODGY - OneBranch is on VS 17.10, which is known to be the worst
|
||||
pgoBuildMode: Optimize
|
||||
codeSign: true
|
||||
signingIdentity:
|
||||
serviceName: $(SigningServiceName)
|
||||
|
||||
@@ -50,6 +50,7 @@ stages:
|
||||
buildEverything: true
|
||||
pgoBuildMode: Instrument
|
||||
artifactStem: -instrumentation
|
||||
keepAllExpensiveBuildOutputs: false # the ARM64 build agent runs out of memory downloading the artifacts...
|
||||
|
||||
- stage: RunPGO
|
||||
displayName: Run PGO
|
||||
|
||||
@@ -26,6 +26,7 @@ jobs:
|
||||
pgoToolsPath: $(Build.SourcesDirectory)\build\PGO
|
||||
nuspecPath: $(pgoToolsPath)\NuSpecs
|
||||
nuspecFilename: PGO.nuspec
|
||||
nugetFeed: "https://pkgs.dev.azure.com/shine-oss/terminal/_packaging/TerminalDependencies/nuget/v3/index.json"
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
@@ -45,7 +46,8 @@ jobs:
|
||||
|
||||
- task: NuGetAuthenticate@1
|
||||
inputs:
|
||||
nuGetServiceConnections: 'Terminal Public Artifact Feed'
|
||||
azureDevOpsServiceConnection: 'Terminal Public Artifact Feed'
|
||||
feedUrl: $(nugetFeed)
|
||||
|
||||
# In the Microsoft Azure DevOps tenant, NuGetCommand is ambiguous.
|
||||
# This should be `task: NuGetCommand@2`
|
||||
@@ -68,15 +70,7 @@ jobs:
|
||||
artifact: pgo-nupkg-${{ parameters.buildConfiguration }}${{ parameters.artifactStem }}
|
||||
displayName: "Publish Pipeline Artifact"
|
||||
|
||||
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2
|
||||
displayName: 'NuGet push'
|
||||
inputs:
|
||||
command: push
|
||||
nuGetFeedType: external
|
||||
packagesToPush: $(Build.ArtifactStagingDirectory)/*.nupkg
|
||||
# The actual URL and PAT for this feed is configured at
|
||||
# https://microsoft.visualstudio.com/Dart/_settings/adminservices
|
||||
# This is the name of that connection
|
||||
publishFeedCredentials: 'Terminal Public Artifact Feed'
|
||||
feedsToUse: config
|
||||
nugetConfigPath: '$(Build.SourcesDirectory)/NuGet.config'
|
||||
- pwsh: |-
|
||||
$nupkg = Get-Item "$(Build.ArtifactStagingDirectory)/*.nupkg"
|
||||
& nuget push -ApiKey az -Source "$(nugetFeed)" "$nupkg"
|
||||
displayName: NuGet push
|
||||
|
||||
@@ -45,6 +45,10 @@ jobs:
|
||||
displayName: Extract the unpackaged build for PGO
|
||||
|
||||
- template: steps-ensure-nuget-version.yml
|
||||
parameters:
|
||||
${{ if eq(parameters.buildPlatform, 'arm64') }}:
|
||||
# The ARM64 agents do not seem to have NuGet installed
|
||||
forceNugetInstallation: true
|
||||
|
||||
- powershell: |-
|
||||
$Package = 'Microsoft.Internal.Windows.Terminal.TestContent'
|
||||
|
||||
@@ -210,6 +210,8 @@ extends:
|
||||
ob_createvpack_taskLogVerbosity: Detailed
|
||||
ob_createvpack_verbose: true
|
||||
ob_createvpack_vpackdirectory: '$(JobOutputDirectory)\vpack'
|
||||
ob_createvpack_versionAs: string
|
||||
ob_createvpack_version: '$(XES_APPXMANIFESTVERSION)'
|
||||
ob_updateOSManifest_gitcheckinConfigPath: '$(Build.SourcesDirectory)\build\config\GitCheckin.json'
|
||||
# We're skipping the 'fetch' part of the OneBranch rules, but that doesn't mean
|
||||
# that it doesn't expect to have downloaded a manifest directly to some 'destination'
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
parameters:
|
||||
- name: forceNugetInstallation
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
steps:
|
||||
- ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}:
|
||||
- ${{ if and(ne(parameters.forceNugetInstallation, true), eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564')) }}:
|
||||
- pwsh: |-
|
||||
Write-Host "Assuming NuGet is already installed..."
|
||||
& nuget.exe help
|
||||
@@ -7,6 +12,6 @@ steps:
|
||||
|
||||
- ${{ else }}:
|
||||
- task: NuGetToolInstaller@1
|
||||
displayName: Use NuGet 6.6.1
|
||||
displayName: Use NuGet 7.0.1
|
||||
inputs:
|
||||
versionSpec: 6.6.1
|
||||
versionSpec: 7.0.1
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
From c3be070b7ee42639554555c27dce10c9de7af76c Mon Sep 17 00:00:00 2001
|
||||
From: "J. Berger" <mail@janaberger.de>
|
||||
Date: Sat, 1 Nov 2025 17:38:30 +0100
|
||||
Subject: [PATCH] When using MSVC x86 to compile v12.0.0 or v12.1.0,
|
||||
conversions from __int64 to a 32bit unsigned int trigger warnings. (#4594)
|
||||
|
||||
This is a follow-up for PR #4572.
|
||||
---
|
||||
include/fmt/format.h | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/include/fmt/format.h b/include/fmt/format.h
|
||||
index 4a653007..65e19d2d 100644
|
||||
--- a/include/fmt/format.h
|
||||
+++ b/include/fmt/format.h
|
||||
@@ -2534,7 +2534,7 @@ FMT_CONSTEXPR20 auto write_fixed(OutputIt out, const DecimalFP& f,
|
||||
auto grouping = Grouping(loc, specs.localized());
|
||||
size += grouping.count_separators(exp);
|
||||
return write_padded<Char, align::right>(
|
||||
- out, specs, to_unsigned(size), [&](iterator it) {
|
||||
+ out, specs, static_cast<size_t>(size), [&](iterator it) {
|
||||
if (s != sign::none) *it++ = detail::getsign<Char>(s);
|
||||
it = write_significand(it, f.significand, significand_size, exp,
|
||||
decimal_point, grouping);
|
||||
@@ -2550,7 +2550,7 @@ FMT_CONSTEXPR20 auto write_fixed(OutputIt out, const DecimalFP& f,
|
||||
bool pointy = num_zeros != 0 || significand_size != 0 || specs.alt();
|
||||
size += 1 + (pointy ? 1 : 0) + num_zeros;
|
||||
return write_padded<Char, align::right>(
|
||||
- out, specs, to_unsigned(size), [&](iterator it) {
|
||||
+ out, specs, static_cast<size_t>(size), [&](iterator it) {
|
||||
if (s != sign::none) *it++ = detail::getsign<Char>(s);
|
||||
*it++ = Char('0');
|
||||
if (!pointy) return it;
|
||||
@@ -2594,7 +2594,7 @@ FMT_CONSTEXPR20 auto do_write_float(OutputIt out, const DecimalFP& f,
|
||||
*it++ = Char(exp_char);
|
||||
return write_exponent<Char>(exp, it);
|
||||
};
|
||||
- auto usize = to_unsigned(size);
|
||||
+ size_t usize = static_cast<size_t>(size);
|
||||
return specs.width > 0
|
||||
? write_padded<Char, align::right>(out, specs, usize, write)
|
||||
: base_iterator(out, write(reserve(out, usize)));
|
||||
--
|
||||
2.52.0.vfs.0.5
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 88c12148..967b53dd 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -260,7 +260,7 @@ if (FMT_MASTER_PROJECT AND CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
join(netfxpath
|
||||
"C:\\Program Files\\Reference Assemblies\\Microsoft\\Framework\\"
|
||||
".NETFramework\\v4.0")
|
||||
- file(WRITE run-msbuild.bat "
|
||||
+ file(WRITE "${CMAKE_BINARY_DIR}/run-msbuild.bat" "
|
||||
${MSBUILD_SETUP}
|
||||
${CMAKE_MAKE_PROGRAM} -p:FrameworkPathOverride=\"${netfxpath}\" %*")
|
||||
endif ()
|
||||
@@ -2,10 +2,10 @@ vcpkg_from_github(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
REPO fmtlib/fmt
|
||||
REF "${VERSION}"
|
||||
SHA512 573b7de1bd224b7b1b60d44808a843db35d4bc4634f72a9edcb52cf68e99ca66c744fd5d5c97b4336ba70b94abdabac5fc253b245d0d5cd8bbe2a096bf941e39
|
||||
SHA512 f0da82c545b01692e9fd30fdfb613dbb8dd9716983dcd0ff19ac2a8d36f74beb5540ef38072fdecc1e34191b3682a8542ecbf3a61ef287dbba0a2679d4e023f2
|
||||
HEAD_REF master
|
||||
PATCHES
|
||||
fix-write-batch.patch
|
||||
0001-When-using-MSVC-x86-to-compile-v12.0.0-or-v12.1.0-co.patch
|
||||
)
|
||||
|
||||
vcpkg_cmake_configure(
|
||||
@@ -22,13 +22,6 @@ vcpkg_cmake_config_fixup()
|
||||
vcpkg_fixup_pkgconfig()
|
||||
vcpkg_copy_pdbs()
|
||||
|
||||
if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
|
||||
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/fmt/base.h"
|
||||
"defined(FMT_SHARED)"
|
||||
"1"
|
||||
)
|
||||
endif()
|
||||
|
||||
file(REMOVE_RECURSE
|
||||
"${CURRENT_PACKAGES_DIR}/debug/include"
|
||||
"${CURRENT_PACKAGES_DIR}/debug/share"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "fmt",
|
||||
"version": "11.1.4",
|
||||
"version": "12.1.0",
|
||||
"description": "{fmt} is an open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams.",
|
||||
"homepage": "https://github.com/fmtlib/fmt",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
From fae5556fd4d4850f948aeabee25ddf0280494725 Mon Sep 17 00:00:00 2001
|
||||
From: lizz <lizz@sensetime.com>
|
||||
Date: Fri, 10 Apr 2020 23:02:21 +0800
|
||||
Subject: [PATCH] No trailing space for BuiltStyledStreamWriter
|
||||
|
||||
Signed-off-by: lizz <lizz@sensetime.com>
|
||||
---
|
||||
src/lib_json/json_writer.cpp | 10 +++++++++-
|
||||
src/test_lib_json/main.cpp | 4 ++--
|
||||
2 files changed, 11 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp
|
||||
index ee45c43..e22eb17 100644
|
||||
--- a/src/lib_json/json_writer.cpp
|
||||
+++ b/src/lib_json/json_writer.cpp
|
||||
@@ -990,7 +990,15 @@ void BuiltStyledStreamWriter::writeValue(Value const& value) {
|
||||
writeCommentBeforeValue(childValue);
|
||||
writeWithIndent(
|
||||
valueToQuotedStringN(name.data(), name.length(), emitUTF8_));
|
||||
- *sout_ << colonSymbol_;
|
||||
+ size_t n = colonSymbol_.size();
|
||||
+ if ((childValue.type() == objectValue && !childValue.empty()) ||
|
||||
+ (childValue.type() == arrayValue && !childValue.empty() &&
|
||||
+ ((cs_ == CommentStyle::All) || isMultilineArray(childValue)))) {
|
||||
+ // Line-ending colon, so trim any trailing space from it
|
||||
+ for (; n && colonSymbol_[n - 1] == ' '; --n)
|
||||
+ ;
|
||||
+ }
|
||||
+ sout_->write(colonSymbol_.data(), n);
|
||||
writeValue(childValue);
|
||||
if (++it == members.end()) {
|
||||
writeCommentAfterValueOnSameLine(childValue);
|
||||
diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp
|
||||
index 55ab224..28cb043 100644
|
||||
--- a/src/test_lib_json/main.cpp
|
||||
+++ b/src/test_lib_json/main.cpp
|
||||
@@ -2533,7 +2533,7 @@ JSONTEST_FIXTURE_LOCAL(StreamWriterTest, writeNumericValue) {
|
||||
JSONTEST_FIXTURE_LOCAL(StreamWriterTest, writeArrays) {
|
||||
Json::StreamWriterBuilder writer;
|
||||
const Json::String expected("{\n"
|
||||
- "\t\"property1\" : \n"
|
||||
+ "\t\"property1\" :\n"
|
||||
"\t[\n"
|
||||
"\t\t\"value1\",\n"
|
||||
"\t\t\"value2\"\n"
|
||||
@@ -2553,7 +2553,7 @@ JSONTEST_FIXTURE_LOCAL(StreamWriterTest, writeArrays) {
|
||||
JSONTEST_FIXTURE_LOCAL(StreamWriterTest, writeNestedObjects) {
|
||||
Json::StreamWriterBuilder writer;
|
||||
const Json::String expected("{\n"
|
||||
- "\t\"object1\" : \n"
|
||||
+ "\t\"object1\" :\n"
|
||||
"\t{\n"
|
||||
"\t\t\"bool\" : true,\n"
|
||||
"\t\t\"nested\" : 123\n"
|
||||
--
|
||||
2.52.0.vfs.0.5
|
||||
|
||||
36
dep/vcpkg-overlay-ports/jsoncpp/portfile.cmake
Normal file
36
dep/vcpkg-overlay-ports/jsoncpp/portfile.cmake
Normal file
@@ -0,0 +1,36 @@
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
REPO open-source-parsers/jsoncpp
|
||||
REF "${VERSION}"
|
||||
SHA512 006d81f9f723dcfe875ebc2147449c07c5246bf97dd7b9eee1909decc914b051d6f3f06feb5c3dfa143d28773fb310aabb04a81dc447cc61513309df8eba8b08
|
||||
HEAD_REF master
|
||||
PATCHES
|
||||
0001-No-trailing-space-for-BuildStyledStreamWriter.patch
|
||||
)
|
||||
|
||||
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" JSONCPP_STATIC)
|
||||
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" STATIC_CRT)
|
||||
|
||||
vcpkg_cmake_configure(
|
||||
SOURCE_PATH "${SOURCE_PATH}"
|
||||
OPTIONS
|
||||
-DJSONCPP_WITH_CMAKE_PACKAGE=ON
|
||||
-DBUILD_STATIC_LIBS=${JSONCPP_STATIC}
|
||||
-DJSONCPP_STATIC_WINDOWS_RUNTIME=${STATIC_CRT}
|
||||
-DJSONCPP_WITH_PKGCONFIG_SUPPORT=ON
|
||||
-DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF
|
||||
-DJSONCPP_WITH_TESTS=OFF
|
||||
-DJSONCPP_WITH_EXAMPLE=OFF
|
||||
-DBUILD_OBJECT_LIBS=OFF
|
||||
)
|
||||
|
||||
vcpkg_cmake_install()
|
||||
|
||||
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/jsoncpp)
|
||||
|
||||
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
|
||||
|
||||
vcpkg_copy_pdbs()
|
||||
vcpkg_fixup_pkgconfig()
|
||||
|
||||
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
|
||||
17
dep/vcpkg-overlay-ports/jsoncpp/vcpkg.json
Normal file
17
dep/vcpkg-overlay-ports/jsoncpp/vcpkg.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "jsoncpp",
|
||||
"version": "1.9.6",
|
||||
"description": "JsonCpp is a C++ library that allows manipulating JSON values, including serialization and deserialization to and from strings. It can also preserve existing comment in unserialization/serialization steps, making it a convenient format to store user input files.",
|
||||
"homepage": "https://github.com/open-source-parsers/jsoncpp",
|
||||
"license": "MIT",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "vcpkg-cmake",
|
||||
"host": true
|
||||
},
|
||||
{
|
||||
"name": "vcpkg-cmake-config",
|
||||
"host": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -27,6 +27,7 @@ Two new properties should be added in the json settings file:
|
||||
|
||||
2. Both X value and Y values are optional. If any one of them is missing, or the value is invalid, system default value will be used. Examples:
|
||||
|
||||
"1000" equals (1000, 1000)
|
||||
", 1000" equals (default, 1000)
|
||||
"1000, " equals (1000, default)
|
||||
"," equals (default, default)
|
||||
|
||||
@@ -600,90 +600,6 @@ namespace
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
#pragma region TAEF hookup for the test case array above
|
||||
struct ArrayIndexTaefAdapterRow : public Microsoft::WRL::RuntimeClass<Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom | Microsoft::WRL::InhibitFtmBase>, IDataRow>
|
||||
{
|
||||
HRESULT RuntimeClassInitialize(const size_t index)
|
||||
{
|
||||
_index = index;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP GetTestData(BSTR /*pszName*/, SAFEARRAY** ppData) override
|
||||
{
|
||||
const auto indexString{ wil::str_printf<std::wstring>(L"%zu", _index) };
|
||||
auto safeArray{ SafeArrayCreateVector(VT_BSTR, 0, 1) };
|
||||
LONG index{ 0 };
|
||||
auto indexBstr{ wil::make_bstr(indexString.c_str()) };
|
||||
(void)SafeArrayPutElement(safeArray, &index, indexBstr.release());
|
||||
*ppData = safeArray;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP GetMetadataNames(SAFEARRAY** ppMetadataNames) override
|
||||
{
|
||||
*ppMetadataNames = nullptr;
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
STDMETHODIMP GetMetadata(BSTR /*pszName*/, SAFEARRAY** ppData) override
|
||||
{
|
||||
*ppData = nullptr;
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
STDMETHODIMP GetName(BSTR* ppszRowName) override
|
||||
{
|
||||
*ppszRowName = nullptr;
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
private:
|
||||
size_t _index;
|
||||
};
|
||||
|
||||
struct ArrayIndexTaefAdapterSource : public Microsoft::WRL::RuntimeClass<Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom | Microsoft::WRL::InhibitFtmBase>, IDataSource>
|
||||
{
|
||||
STDMETHODIMP Advance(IDataRow** ppDataRow) override
|
||||
{
|
||||
if (_index < std::extent_v<decltype(testCases)>)
|
||||
{
|
||||
Microsoft::WRL::MakeAndInitialize<ArrayIndexTaefAdapterRow>(ppDataRow, _index++);
|
||||
}
|
||||
else
|
||||
{
|
||||
*ppDataRow = nullptr;
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP Reset() override
|
||||
{
|
||||
_index = 0;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP GetTestDataNames(SAFEARRAY** names) override
|
||||
{
|
||||
auto safeArray{ SafeArrayCreateVector(VT_BSTR, 0, 1) };
|
||||
LONG index{ 0 };
|
||||
auto dataNameBstr{ wil::make_bstr(L"index") };
|
||||
(void)SafeArrayPutElement(safeArray, &index, dataNameBstr.release());
|
||||
*names = safeArray;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP GetTestDataType(BSTR /*name*/, BSTR* type) override
|
||||
{
|
||||
*type = nullptr;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
private:
|
||||
size_t _index{ 0 };
|
||||
};
|
||||
#pragma endregion
|
||||
}
|
||||
|
||||
extern "C" HRESULT __declspec(dllexport) __cdecl ReflowTestDataSource(IDataSource** ppDataSource, void*)
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
<uap3:Name>com.microsoft.windows.terminal.settings</uap3:Name>
|
||||
</uap3:AppExtensionHost>
|
||||
</uap3:Extension>
|
||||
<uap3:Extension Category="windows.appExtension">
|
||||
<!-- <uap3:Extension Category="windows.appExtension">
|
||||
<uap3:AppExtension Name="com.microsoft.windows.console.host"
|
||||
Id="OpenConsole-Dev"
|
||||
DisplayName="OpenConsole Dev"
|
||||
@@ -111,7 +111,7 @@
|
||||
<com:ComInterface>
|
||||
<com:ProxyStub Id="DEC4804D-56D1-4F73-9FBE-6828E7C85C56" DisplayName="OpenConsoleHandoffProxy" Path="OpenConsoleProxy.dll"/>
|
||||
<com:Interface Id="E686C757-9A35-4A1C-B3CE-0BCC8B5C69F4" ProxyStubClsid="DEC4804D-56D1-4F73-9FBE-6828E7C85C56"/>
|
||||
<com:Interface Id="6F23DA90-15C5-4203-9DB0-64E73F1B1B00" ProxyStubClsid="DEC4804D-56D1-4F73-9FBE-6828E7C85C56"/> <!-- ITerminalHandoff3 -->
|
||||
<com:Interface Id="6F23DA90-15C5-4203-9DB0-64E73F1B1B00" ProxyStubClsid="DEC4804D-56D1-4F73-9FBE-6828E7C85C56"/>
|
||||
<com:Interface Id="746E6BC0-AB05-4E38-AB14-71E86763141F" ProxyStubClsid="DEC4804D-56D1-4F73-9FBE-6828E7C85C56"/>
|
||||
</com:ComInterface>
|
||||
</com:Extension>
|
||||
@@ -137,7 +137,7 @@
|
||||
<desktop5:Verb Id="OpenTerminalDev" Clsid="52065414-e077-47ec-a3ac-1cc5455e1b54" />
|
||||
</desktop5:ItemType>
|
||||
</desktop4:FileExplorerContextMenus>
|
||||
</desktop4:Extension>
|
||||
</desktop4:Extension> -->
|
||||
|
||||
</Extensions>
|
||||
|
||||
|
||||
@@ -823,7 +823,7 @@ namespace TerminalAppLocalTests
|
||||
VERIFY_ARE_EQUAL(3u, command.NestedCommands().Size());
|
||||
_logCommandNames(command.NestedCommands());
|
||||
{
|
||||
winrt::hstring childCommandName{ fmt::format(L"Split pane, profile: {}", name) };
|
||||
const auto childCommandName = fmt::format(FMT_COMPILE(L"Split pane, profile: {}"), name);
|
||||
auto childCommand = command.NestedCommands().Lookup(childCommandName);
|
||||
VERIFY_IS_NOT_NULL(childCommand);
|
||||
auto childActionAndArgs = childCommand.ActionAndArgs();
|
||||
@@ -845,7 +845,7 @@ namespace TerminalAppLocalTests
|
||||
VERIFY_IS_FALSE(childCommand.HasNestedCommands());
|
||||
}
|
||||
{
|
||||
winrt::hstring childCommandName{ fmt::format(L"Split pane, split: down, profile: {}", name) };
|
||||
const auto childCommandName = fmt::format(FMT_COMPILE(L"Split pane, split: down, profile: {}"), name);
|
||||
auto childCommand = command.NestedCommands().Lookup(childCommandName);
|
||||
VERIFY_IS_NOT_NULL(childCommand);
|
||||
auto childActionAndArgs = childCommand.ActionAndArgs();
|
||||
@@ -867,7 +867,7 @@ namespace TerminalAppLocalTests
|
||||
VERIFY_IS_FALSE(childCommand.HasNestedCommands());
|
||||
}
|
||||
{
|
||||
winrt::hstring childCommandName{ fmt::format(L"Split pane, split: right, profile: {}", name) };
|
||||
const auto childCommandName = fmt::format(FMT_COMPILE(L"Split pane, split: right, profile: {}"), name);
|
||||
auto childCommand = command.NestedCommands().Lookup(childCommandName);
|
||||
VERIFY_IS_NOT_NULL(childCommand);
|
||||
auto childActionAndArgs = childCommand.ActionAndArgs();
|
||||
@@ -960,8 +960,8 @@ namespace TerminalAppLocalTests
|
||||
|
||||
for (auto name : std::vector<std::wstring>({ L"profile0", L"profile1", L"profile2" }))
|
||||
{
|
||||
winrt::hstring commandName{ fmt::format(L"New tab, profile: {}", name) };
|
||||
auto command = rootCommand.NestedCommands().Lookup(commandName);
|
||||
const auto childCommandName = fmt::format(FMT_COMPILE(L"New tab, profile: {}"), name);
|
||||
auto command = rootCommand.NestedCommands().Lookup(childCommandName);
|
||||
VERIFY_IS_NOT_NULL(command);
|
||||
auto actionAndArgs = command.ActionAndArgs();
|
||||
VERIFY_IS_NOT_NULL(actionAndArgs);
|
||||
@@ -1078,7 +1078,7 @@ namespace TerminalAppLocalTests
|
||||
|
||||
_logCommandNames(command.NestedCommands());
|
||||
{
|
||||
winrt::hstring childCommandName{ fmt::format(L"Split pane, profile: {}", name) };
|
||||
const auto childCommandName = fmt::format(FMT_COMPILE(L"Split pane, profile: {}"), name);
|
||||
auto childCommand = command.NestedCommands().Lookup(childCommandName);
|
||||
VERIFY_IS_NOT_NULL(childCommand);
|
||||
auto childActionAndArgs = childCommand.ActionAndArgs();
|
||||
@@ -1100,7 +1100,7 @@ namespace TerminalAppLocalTests
|
||||
VERIFY_IS_FALSE(childCommand.HasNestedCommands());
|
||||
}
|
||||
{
|
||||
winrt::hstring childCommandName{ fmt::format(L"Split pane, split: down, profile: {}", name) };
|
||||
const auto childCommandName = fmt::format(FMT_COMPILE(L"Split pane, split: down, profile: {}"), name);
|
||||
auto childCommand = command.NestedCommands().Lookup(childCommandName);
|
||||
VERIFY_IS_NOT_NULL(childCommand);
|
||||
auto childActionAndArgs = childCommand.ActionAndArgs();
|
||||
@@ -1122,7 +1122,7 @@ namespace TerminalAppLocalTests
|
||||
VERIFY_IS_FALSE(childCommand.HasNestedCommands());
|
||||
}
|
||||
{
|
||||
winrt::hstring childCommandName{ fmt::format(L"Split pane, split: right, profile: {}", name) };
|
||||
const auto childCommandName = fmt::format(FMT_COMPILE(L"Split pane, split: right, profile: {}"), name);
|
||||
auto childCommand = command.NestedCommands().Lookup(childCommandName);
|
||||
VERIFY_IS_NOT_NULL(childCommand);
|
||||
auto childActionAndArgs = childCommand.ActionAndArgs();
|
||||
|
||||
@@ -34,7 +34,7 @@ struct
|
||||
#else // DEV
|
||||
__declspec(uuid("52065414-e077-47ec-a3ac-1cc5455e1b54"))
|
||||
#endif
|
||||
OpenTerminalHere : public RuntimeClass<RuntimeClassFlags<ClassicCom | InhibitFtmBase>, IExplorerCommand, IObjectWithSite>
|
||||
OpenTerminalHere : public RuntimeClass<RuntimeClassFlags<ClassicCom | InhibitFtmBase>, IExplorerCommand, IObjectWithSite>
|
||||
{
|
||||
#pragma region IExplorerCommand
|
||||
STDMETHODIMP Invoke(IShellItemArray* psiItemArray,
|
||||
|
||||
@@ -245,6 +245,7 @@
|
||||
</ResourceDictionary>
|
||||
|
||||
<ResourceDictionary Source="ms-resource:///Files/TerminalApp/HighlightedTextControlStyle.xaml" />
|
||||
<ResourceDictionary Source="ms-resource:///Files/TerminalApp/VerticalTabViewStyle.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
|
||||
|
||||
@@ -903,7 +903,10 @@ namespace winrt::TerminalApp::implementation
|
||||
co_return;
|
||||
}
|
||||
|
||||
// Hop to the BG thread
|
||||
// ShellExecuteExW may block, so do it on a background thread.
|
||||
//
|
||||
// NOTE: All remaining code of this function doesn't touch `this`, so we don't need weak/strong_ref.
|
||||
// NOTE NOTE: Don't touch `this` when you make changes here.
|
||||
co_await winrt::resume_background();
|
||||
|
||||
// This will get us the correct exe for dev/preview/release. If you
|
||||
@@ -914,7 +917,7 @@ namespace winrt::TerminalApp::implementation
|
||||
// Build the commandline to pass to wt for this set of NewTerminalArgs
|
||||
// `-w -1` will ensure a new window is created.
|
||||
const auto commandline = terminalArgs.ToCommandline();
|
||||
winrt::hstring cmdline{ fmt::format(FMT_COMPILE(L"-w -1 new-tab {}"), commandline) };
|
||||
const auto cmdline = fmt::format(FMT_COMPILE(L"-w -1 new-tab {}"), commandline);
|
||||
|
||||
// Build the args to ShellExecuteEx. We need to use ShellExecuteEx so we
|
||||
// can pass the SEE_MASK_NOASYNC flag. That flag allows us to safely
|
||||
@@ -1456,6 +1459,8 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
safe_void_coroutine TerminalPage::_doHandleSuggestions(SuggestionsArgs realArgs)
|
||||
{
|
||||
const auto weak = get_weak();
|
||||
const auto dispatcher = Dispatcher();
|
||||
const auto source = realArgs.Source();
|
||||
std::vector<Command> commandsCollection;
|
||||
Control::CommandHistoryContext context{ nullptr };
|
||||
@@ -1522,7 +1527,12 @@ namespace winrt::TerminalApp::implementation
|
||||
}
|
||||
}
|
||||
|
||||
co_await wil::resume_foreground(Dispatcher());
|
||||
co_await wil::resume_foreground(dispatcher);
|
||||
const auto strong = weak.get();
|
||||
if (!strong)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
|
||||
// Open the palette with all these commands in it.
|
||||
_OpenSuggestions(_GetActiveControl(),
|
||||
|
||||
@@ -149,7 +149,9 @@ namespace winrt::TerminalApp::implementation
|
||||
});
|
||||
|
||||
_languageProfileNotifier = winrt::make_self<LanguageProfileNotifier>([this]() {
|
||||
_reloadSettings->Run();
|
||||
// TODO: This is really bad, because we reset any current user customizations.
|
||||
// See GH#11522.
|
||||
ReloadSettingsThrottled();
|
||||
});
|
||||
|
||||
// Do this here, rather than at the top of main. This will prevent us from
|
||||
@@ -329,7 +331,7 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
if (modifiedBasename == settingsBasename)
|
||||
{
|
||||
_reloadSettings->Run();
|
||||
ReloadSettingsThrottled();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -435,6 +437,11 @@ namespace winrt::TerminalApp::implementation
|
||||
SettingsChanged.raise(*this, *ev);
|
||||
}
|
||||
|
||||
void AppLogic::ReloadSettingsThrottled()
|
||||
{
|
||||
_reloadSettings->Run();
|
||||
}
|
||||
|
||||
// This is a continuation of AppLogic::Create() and includes the more expensive parts.
|
||||
void AppLogic::NotifyRootInitialized()
|
||||
{
|
||||
|
||||
@@ -36,6 +36,7 @@ namespace winrt::TerminalApp::implementation
|
||||
bool IsRunningElevated() const noexcept;
|
||||
bool CanDragDrop() const noexcept;
|
||||
void ReloadSettings();
|
||||
void ReloadSettingsThrottled();
|
||||
void NotifyRootInitialized();
|
||||
|
||||
bool HasSettingsStartupActions() const noexcept;
|
||||
@@ -80,7 +81,6 @@ namespace winrt::TerminalApp::implementation
|
||||
[[nodiscard]] HRESULT _TryLoadSettings() noexcept;
|
||||
void _ProcessLazySettingsChanges();
|
||||
void _RegisterSettingsChange();
|
||||
safe_void_coroutine _DispatchReloadSettings();
|
||||
|
||||
void _setupFolderPathEnvVar();
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace TerminalApp
|
||||
Boolean HasSettingsStartupActions();
|
||||
|
||||
void ReloadSettings();
|
||||
void ReloadSettingsThrottled();
|
||||
Microsoft.Terminal.Settings.Model.CascadiaSettings Settings { get; };
|
||||
|
||||
TerminalWindow CreateNewWindow();
|
||||
|
||||
@@ -928,6 +928,17 @@ namespace winrt::TerminalApp::implementation
|
||||
void CommandPalette::_filterTextChanged(const IInspectable& /*sender*/,
|
||||
const Windows::UI::Xaml::RoutedEventArgs& /*args*/)
|
||||
{
|
||||
// GH#18737: Only respond to this change if we are visible:
|
||||
// _close calls _searchBox().Text(L"") to reset the search text, which lands us
|
||||
// in here after the command palette is dismissed. Since we have a code path here that
|
||||
// could potentially lead to an action being previewed (specifically if there is a
|
||||
// preview-able action as the first entry in the command list), that preview will
|
||||
// appear after the palette is dismissed without this check.
|
||||
if (Visibility() != Visibility::Visible)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// When we are executing the _SelectNextTab in the TabManagement.cpp, this method
|
||||
// is getting triggered because we set up the default value for that CommandPalette
|
||||
// with an empty string. Therefore, to avoid the reset of the index when executing
|
||||
|
||||
@@ -34,9 +34,15 @@ namespace winrt::Microsoft::TerminalApp::implementation
|
||||
// before actually starting the connection to the client app. This
|
||||
// will ensure both controls are initialized before the client app
|
||||
// is.
|
||||
const auto weak = get_weak();
|
||||
co_await winrt::resume_background();
|
||||
_pairedTap->_start.wait();
|
||||
const auto strong = weak.get();
|
||||
if (!strong)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
|
||||
_pairedTap->_start.wait();
|
||||
_wrappedConnection.Start();
|
||||
}
|
||||
void WriteInput(const winrt::array_view<const char16_t> buffer)
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace winrt::Microsoft::TerminalApp::implementation
|
||||
{
|
||||
public:
|
||||
explicit DebugTapConnection(Microsoft::Terminal::TerminalConnection::ITerminalConnection wrappedConnection);
|
||||
void Initialize(const Windows::Foundation::Collections::ValueSet& /*settings*/){};
|
||||
void Initialize(const Windows::Foundation::Collections::ValueSet& /*settings*/) {};
|
||||
~DebugTapConnection();
|
||||
void Start();
|
||||
void WriteInput(const winrt::array_view<const char16_t> data);
|
||||
|
||||
@@ -43,6 +43,9 @@ safe_void_coroutine Jumplist::UpdateJumplist(const CascadiaSettings& settings) n
|
||||
// make sure to capture the settings _before_ the co_await
|
||||
const auto strongSettings = settings;
|
||||
|
||||
// Explorer APIs may block, so do it on a background thread.
|
||||
//
|
||||
// NOTE: Jumplist has no members, so we don't need to hold onto `this` here.
|
||||
co_await winrt::resume_background();
|
||||
|
||||
try
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace winrt::TerminalApp::implementation
|
||||
#pragma region IPaneContent
|
||||
winrt::Windows::UI::Xaml::FrameworkElement GetRoot();
|
||||
|
||||
void UpdateSettings(const winrt::Microsoft::Terminal::Settings::Model::CascadiaSettings&){};
|
||||
void UpdateSettings(const winrt::Microsoft::Terminal::Settings::Model::CascadiaSettings&) {};
|
||||
|
||||
winrt::Windows::Foundation::Size MinimumSize() { return { 1, 1 }; };
|
||||
void Focus(winrt::Windows::UI::Xaml::FocusState reason = winrt::Windows::UI::Xaml::FocusState::Programmatic) { reason; };
|
||||
|
||||
@@ -88,6 +88,18 @@ namespace winrt::TerminalApp::implementation
|
||||
CloseClick.raise(*this, e);
|
||||
}
|
||||
|
||||
bool MinMaxCloseControl::Focused() const
|
||||
{
|
||||
return _focused;
|
||||
}
|
||||
|
||||
void MinMaxCloseControl::Focused(bool focused)
|
||||
{
|
||||
_focused = focused;
|
||||
|
||||
ReleaseButtons();
|
||||
}
|
||||
|
||||
void MinMaxCloseControl::SetWindowVisualState(WindowVisualState visualState)
|
||||
{
|
||||
// Look up the heights we should use for the caption buttons from our
|
||||
@@ -169,25 +181,25 @@ namespace winrt::TerminalApp::implementation
|
||||
// animate the fade in/out transition between colors.
|
||||
case CaptionButton::Minimize:
|
||||
VisualStateManager::GoToState(MinimizeButton(), L"PointerOver", true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(CloseButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), _normalState(), true);
|
||||
VisualStateManager::GoToState(CloseButton(), _normalState(), true);
|
||||
|
||||
_displayToolTip->Run(MinimizeButton());
|
||||
closeToolTipForButton(MaximizeButton());
|
||||
closeToolTipForButton(CloseButton());
|
||||
break;
|
||||
case CaptionButton::Maximize:
|
||||
VisualStateManager::GoToState(MinimizeButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(MinimizeButton(), _normalState(), true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), L"PointerOver", true);
|
||||
VisualStateManager::GoToState(CloseButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(CloseButton(), _normalState(), true);
|
||||
|
||||
closeToolTipForButton(MinimizeButton());
|
||||
_displayToolTip->Run(MaximizeButton());
|
||||
closeToolTipForButton(CloseButton());
|
||||
break;
|
||||
case CaptionButton::Close:
|
||||
VisualStateManager::GoToState(MinimizeButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(MinimizeButton(), _normalState(), true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), _normalState(), true);
|
||||
VisualStateManager::GoToState(CloseButton(), L"PointerOver", true);
|
||||
|
||||
closeToolTipForButton(MinimizeButton());
|
||||
@@ -210,17 +222,17 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
case CaptionButton::Minimize:
|
||||
VisualStateManager::GoToState(MinimizeButton(), L"Pressed", true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(CloseButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), _normalState(), true);
|
||||
VisualStateManager::GoToState(CloseButton(), _normalState(), true);
|
||||
break;
|
||||
case CaptionButton::Maximize:
|
||||
VisualStateManager::GoToState(MinimizeButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(MinimizeButton(), _normalState(), true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), L"Pressed", true);
|
||||
VisualStateManager::GoToState(CloseButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(CloseButton(), _normalState(), true);
|
||||
break;
|
||||
case CaptionButton::Close:
|
||||
VisualStateManager::GoToState(MinimizeButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(MinimizeButton(), _normalState(), true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), _normalState(), true);
|
||||
VisualStateManager::GoToState(CloseButton(), L"Pressed", true);
|
||||
break;
|
||||
}
|
||||
@@ -233,9 +245,9 @@ namespace winrt::TerminalApp::implementation
|
||||
void MinMaxCloseControl::ReleaseButtons()
|
||||
{
|
||||
_displayToolTip->Run(nullptr);
|
||||
VisualStateManager::GoToState(MinimizeButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(CloseButton(), L"Normal", true);
|
||||
VisualStateManager::GoToState(MinimizeButton(), _normalState(), true);
|
||||
VisualStateManager::GoToState(MaximizeButton(), _normalState(), true);
|
||||
VisualStateManager::GoToState(CloseButton(), _normalState(), true);
|
||||
|
||||
closeToolTipForButton(MinimizeButton());
|
||||
closeToolTipForButton(MaximizeButton());
|
||||
@@ -243,4 +255,11 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
_lastPressedButton = std::nullopt;
|
||||
}
|
||||
|
||||
const winrt::param::hstring& MinMaxCloseControl::_normalState() const
|
||||
{
|
||||
static const winrt::param::hstring normal = L"Normal";
|
||||
static const winrt::param::hstring unfocused = L"Unfocused";
|
||||
return (_focused ? normal : unfocused);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,9 @@ namespace winrt::TerminalApp::implementation
|
||||
void PressButton(CaptionButton button);
|
||||
void ReleaseButtons();
|
||||
|
||||
bool Focused() const;
|
||||
void Focused(bool focused);
|
||||
|
||||
void _MinimizeClick(const winrt::Windows::Foundation::IInspectable& sender,
|
||||
const winrt::Windows::UI::Xaml::RoutedEventArgs& e);
|
||||
void _MaximizeClick(const winrt::Windows::Foundation::IInspectable& sender,
|
||||
@@ -32,8 +35,12 @@ namespace winrt::TerminalApp::implementation
|
||||
til::typed_event<TerminalApp::MinMaxCloseControl, winrt::Windows::UI::Xaml::RoutedEventArgs> MaximizeClick;
|
||||
til::typed_event<TerminalApp::MinMaxCloseControl, winrt::Windows::UI::Xaml::RoutedEventArgs> CloseClick;
|
||||
|
||||
bool _focused{ false };
|
||||
std::shared_ptr<ThrottledFunc<winrt::Windows::UI::Xaml::Controls::Button>> _displayToolTip{ nullptr };
|
||||
std::optional<CaptionButton> _lastPressedButton{ std::nullopt };
|
||||
|
||||
private:
|
||||
const winrt::param::hstring& _normalState() const;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace TerminalApp
|
||||
void HoverButton(CaptionButton button);
|
||||
void PressButton(CaptionButton button);
|
||||
void ReleaseButtons();
|
||||
Boolean Focused { get; set; };
|
||||
|
||||
event Windows.Foundation.TypedEventHandler<MinMaxCloseControl, Windows.UI.Xaml.RoutedEventArgs> MinimizeClick;
|
||||
event Windows.Foundation.TypedEventHandler<MinMaxCloseControl, Windows.UI.Xaml.RoutedEventArgs> MaximizeClick;
|
||||
|
||||
@@ -32,6 +32,10 @@
|
||||
ResourceKey="SystemControlForegroundBaseHighBrush" />
|
||||
<StaticResource x:Key="CaptionButtonForegroundPressed"
|
||||
ResourceKey="SystemControlForegroundBaseHighBrush" />
|
||||
<StaticResource x:Key="CaptionButtonForegroundUnfocusedColor"
|
||||
ResourceKey="TextFillColorDisabled" />
|
||||
<SolidColorBrush x:Key="CaptionButtonForegroundUnfocused"
|
||||
Color="{ThemeResource CaptionButtonForegroundUnfocusedColor}" />
|
||||
<SolidColorBrush x:Key="CaptionButtonBackground"
|
||||
Color="Transparent" />
|
||||
<Color x:Key="CaptionButtonBackgroundColor">Transparent</Color>
|
||||
@@ -66,6 +70,10 @@
|
||||
ResourceKey="SystemControlForegroundBaseHighBrush" />
|
||||
<StaticResource x:Key="CaptionButtonForegroundPressed"
|
||||
ResourceKey="SystemControlForegroundBaseHighBrush" />
|
||||
<StaticResource x:Key="CaptionButtonForegroundUnfocusedColor"
|
||||
ResourceKey="TextFillColorDisabled" />
|
||||
<SolidColorBrush x:Key="CaptionButtonForegroundUnfocused"
|
||||
Color="{ThemeResource CaptionButtonForegroundUnfocusedColor}" />
|
||||
<SolidColorBrush x:Key="CaptionButtonBackground"
|
||||
Color="Transparent" />
|
||||
<Color x:Key="CaptionButtonBackgroundColor">Transparent</Color>
|
||||
@@ -103,6 +111,10 @@
|
||||
Color="{ThemeResource SystemColorHighlightTextColor}" />
|
||||
<SolidColorBrush x:Key="CaptionButtonForegroundPressed"
|
||||
Color="{ThemeResource SystemColorHighlightTextColor}" />
|
||||
<SolidColorBrush x:Key="CaptionButtonForegroundUnfocused"
|
||||
Color="{ThemeResource SystemColorButtonTextColor}" />
|
||||
<StaticResource x:Key="CaptionButtonForegroundUnfocusedColor"
|
||||
ResourceKey="SystemColorButtonTextColor" />
|
||||
<SolidColorBrush x:Key="CloseButtonBackgroundPointerOver"
|
||||
Color="{ThemeResource SystemColorHighlightColor}" />
|
||||
<SolidColorBrush x:Key="CloseButtonForegroundPointerOver"
|
||||
@@ -189,6 +201,20 @@
|
||||
Duration="0:0:0.1" />
|
||||
</Storyboard>
|
||||
</VisualTransition>
|
||||
|
||||
<VisualTransition From="PointerOver"
|
||||
To="Unfocused">
|
||||
<Storyboard>
|
||||
<ColorAnimation Storyboard.TargetName="ButtonBaseElement"
|
||||
Storyboard.TargetProperty="(UIElement.Background).(SolidColorBrush.Color)"
|
||||
To="{ThemeResource CaptionButtonBackgroundColor}"
|
||||
Duration="0:0:0.15" />
|
||||
<ColorAnimation Storyboard.TargetName="ButtonIcon"
|
||||
Storyboard.TargetProperty="(UIElement.Foreground).(SolidColorBrush.Color)"
|
||||
To="{ThemeResource CaptionButtonForegroundUnfocusedColor}"
|
||||
Duration="0:0:0.1" />
|
||||
</Storyboard>
|
||||
</VisualTransition>
|
||||
</VisualStateGroup.Transitions>
|
||||
|
||||
<VisualState x:Name="Normal">
|
||||
@@ -198,6 +224,13 @@
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
<VisualState x:Name="Unfocused">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ButtonBaseElement.Background" Value="{ThemeResource CaptionButtonBackground}" />
|
||||
<Setter Target="ButtonIcon.Foreground" Value="{ThemeResource CaptionButtonForegroundUnfocused}" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
<VisualState x:Name="PointerOver">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ButtonBaseElement.Background" Value="{ThemeResource CaptionButtonBackgroundPointerOver}" />
|
||||
|
||||
@@ -152,12 +152,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>Beim Laden von Benutzereinstellungen sind Fehler aufgetreten</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>Warnung:</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>Der "{0}" wird nicht auf Ihrem Computer ausgeführt. Dies kann verhindern, dass die Terminal Tastatur Eingaben empfangen.</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -171,21 +165,9 @@
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>Info</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>Feedback</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>Einstellungen</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Abbrechen</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>Alle schließen</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Beenden</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Mehrere Bereiche</value>
|
||||
</data>
|
||||
@@ -292,13 +274,6 @@
|
||||
<value>• Das angegebene "Design" wurde in der Liste der Designs nicht gefunden. Vorübergehender Fallback auf den Standardwert.</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>Die Eigenschaft "globals" ist veraltet. Möglicherweise müssen Sie Ihre Einstellungen aktualisieren. </value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>Weitere Informationen hierzu finden Sie auf dieser Webseite.</value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>Fehler beim Erweitern eines Befehls mit "iterateOn". Dieser Befehl wird ignoriert.</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -479,21 +454,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>STRG+Klicken, um als Administrator zu öffnen</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Schließen</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Schließen</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Schließen</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Maximieren</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Minimieren</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Minimieren</value>
|
||||
</data>
|
||||
@@ -513,10 +479,6 @@
|
||||
<value>Version:</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>Erste Schritte</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>Quellcode</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -792,18 +754,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>Text exportieren</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>Exportieren des Terminalinhalts fehlgeschlagen</value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>Terminalinhalt wurde erfolgreich exportiert</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>Suchen</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>Unformatierter Text</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>Das Beendigungsverhalten kann in den erweiterten Profileinstellungen konfiguriert werden.</value>
|
||||
</data>
|
||||
@@ -909,10 +862,6 @@
|
||||
<value>Registerkarte „{0}“ an Position „{1}“ verschoben</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>Der aktive Bereich wurde in "{1}" Fenster auf "{0}" Registerkarte verschoben.</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>Der aktive Bereich wurde in das Fenster "{0}" verschoben</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
|
||||
@@ -442,6 +442,10 @@
|
||||
<data name="NewTabRun.Text" xml:space="preserve">
|
||||
<value>Open a new tab</value>
|
||||
</data>
|
||||
<data name="TabNewButtonText" xml:space="preserve">
|
||||
<value>New tab</value>
|
||||
<comment>Label for the new tab button in vertical tab strip mode.</comment>
|
||||
</data>
|
||||
<data name="NewPaneRun.Text" xml:space="preserve">
|
||||
<value>Alt+Click to split the current window</value>
|
||||
</data>
|
||||
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>Se detectaron errores al cargar la configuración de usuario</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>Aceptar</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>Advertencia:</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>El "{0}" no se está ejecutando en el equipo. Esto puede impedir que el terminal reciba entradas del teclado.</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -168,21 +162,9 @@
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>Acerca de</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>Comentarios</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>Configuración</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Cancelar</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>Cerrar todo</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Salir</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Varios paneles</value>
|
||||
</data>
|
||||
@@ -289,13 +271,6 @@
|
||||
<value>• No se encontró el "tema" especificado en la lista de temas. Revirtiendo temporalmente al valor predeterminado.</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>La propiedad "globals" está en desuso, es posible que tengas que actualizar la configuración. </value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>Para más información, consulta esta página web.</value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>No se pudo expandir un comando con el conjunto de "iterateOn". Este comando se omitirá.</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -476,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>Ctrl+Clic para abrir como administrador</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Cerrar</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Cerrar</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Cerrar</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Maximizar</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Minimizar</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Minimizar</value>
|
||||
</data>
|
||||
@@ -510,10 +476,6 @@
|
||||
<value>Versión:</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>Introducción</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>Código fuente</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -789,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>Exportar texto</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>No se pudo exportar el contenido del terminal</value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>El contenido del terminal se exportó correctamente</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>Buscar</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>Texto sin formato</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>El comportamiento de finalización se puede configurar en la configuración avanzada del perfil.</value>
|
||||
</data>
|
||||
@@ -906,10 +859,6 @@
|
||||
<value>La pestaña "{0}" se movió a la posición "{1}"</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>El panel activo se movió a la pestaña "{0}" en "{1}" ventana</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>Panel activo movido a la ventana "{0}"</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>Erreurs rencontrées lors du chargement des paramètres utilisateur</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>Avertissement :</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>Le "{0}" n’est pas en cours d’exécution sur votre ordinateur. Cela peut empêcher le terminal de recevoir l’entrée au clavier.</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -168,21 +162,9 @@
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>À propos de</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>Commentaires</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>Paramètres</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Annuler</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>Fermer tout</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Quitter</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Volets multiples</value>
|
||||
</data>
|
||||
@@ -289,13 +271,6 @@
|
||||
<value>• Le « thème » spécifié est introuvable dans la liste des thèmes. Retour temporaire à la valeur par défaut.</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>La propriété "globals" est déconseillée. Vos paramètres nécessiteront peut-être une mise à jour. </value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>Pour plus d’informations, voir cette page web.</value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>Echec du développement d’une commande avec "iterateOn". Cette commande sera ignorée.</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -476,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>Ctrl+Clic pour ouvrir en tant qu’administrateur</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Fermer</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Fermer</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Fermer</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Agrandir</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Réduire</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Réduire</value>
|
||||
</data>
|
||||
@@ -510,10 +476,6 @@
|
||||
<value>Version :</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>Bien démarrer</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>Code source</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -789,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>Exporter le texte</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>Échec de l’exportation du contenu du terminal</value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>Le contenu du terminal a été exporté.</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>Rechercher</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>Texte brut</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>Le comportement d’arrêt peut être configuré dans les paramètres de profil avancés.</value>
|
||||
</data>
|
||||
@@ -906,10 +859,6 @@
|
||||
<value>Onglet « {0} » déplacé vers la position « {1} »</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>Volet actif déplacé vers l’onglet "{0}" dans "{1}" fenêtre</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>Volet actif déplacé vers l’onglet « {0} »</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>Si sono verificati errori durante il caricamento delle impostazioni utente</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>Avvertenza:</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>Il "{0}" non è in esecuzione nel computer. Ciò può impedire al terminale di ricevere l'input da tastiera.</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -168,21 +162,9 @@
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>Informazioni</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>Feedback</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>Impostazioni</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Annulla</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>Chiudi tutto</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Esci</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Più riquadri</value>
|
||||
</data>
|
||||
@@ -289,13 +271,6 @@
|
||||
<value>• Impossibile trovare il "tema" specificato nell'elenco dei temi. Fallback temporaneo al valore predefinito.</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>La proprietà "globals" è deprecata: potrebbe essere necessario aggiornare le impostazioni. </value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>Per altre informazioni, visita questa pagina Web.</value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>Impossibile espandere un comando con "iterateOn" impostato. Il comando verrà ignorato.</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -476,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>CTRL+CLIC per aprire come amministratore</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Chiudi</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Chiudi</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Chiudi</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Ingrandisci</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Riduci a icona</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Riduci a icona</value>
|
||||
</data>
|
||||
@@ -510,10 +476,6 @@
|
||||
<value>Versione:</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>Introduzione</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>Codice sorgente</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -789,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>Esporta testo</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>Non è stato possibile esportare il contenuto del terminale</value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>Il contenuto del terminale è stato esportato</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>Trova</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>Testo normale</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>È possibile configurare il comportamento di terminazione nelle impostazioni avanzate del profilo.</value>
|
||||
</data>
|
||||
@@ -906,10 +859,6 @@
|
||||
<value>Scheda "{0}" spostata nella posizione "{1}"</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>Riquadro attivo spostato nella scheda "{0}" nella finestra "{1}"</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>Riquadro attivo spostato nella finestra "{0}"</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
|
||||
@@ -150,12 +150,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>ユーザー設定の読み込み中にエラーが発生しました</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>警告:</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>"{0}" がお使いのマシンで実行されていません。 これにより、ターミナルがキーボード入力を受信できなくなる可能性があります。</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -169,21 +163,9 @@
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>バージョン情報</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>フィードバック</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>設定</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>キャンセル</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>すべて閉じる</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>終了</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>複数ペイン</value>
|
||||
</data>
|
||||
@@ -290,13 +272,6 @@
|
||||
<value>• 指定された "テーマ" がテーマの一覧に見つかりませんでした。一時的に既定値にフォールバックしています。</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>"globals" プロパティは廃止されました。設定を更新する必要がある場合があります。 </value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>詳細については、この Web ページを参照してください。</value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>"iterateOn" セットを使用してコマンドを展開できませんでした。このコマンドは無視されます。</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -477,21 +452,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>Ctrl + クリックして管理者として開く</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>閉じる</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>閉じる</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>閉じる</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>最大化</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>最小化</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>最小化</value>
|
||||
</data>
|
||||
@@ -511,10 +477,6 @@
|
||||
<value>バージョン:</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>はじめに</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>ソース コード</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -790,18 +752,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>テキストのエクスポート</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>ターミナルのコンテンツをエクスポートできませんでした</value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>ターミナルのコンテンツが正常にエクスポートされました</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>検索する</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>テキスト</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>終了動作は、プロファイルの詳細設定で構成できます。</value>
|
||||
</data>
|
||||
@@ -907,10 +860,6 @@
|
||||
<value>[{0}] タブを "{1}" の位置に移動しました</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>アクティブなペインを "{1}" ウィンドウの [{0}] タブに移動しました</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>アクティブなペインを "{0}" ウィンドウに移動しました</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>사용자 설정을 로드하는 동안 오류가 발생했습니다.</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>확인</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>경고</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>"{0}" 컴퓨터에서 실행되고 있지 않습니다. 단자가 키보드 입력을 수신할 수 없게 됩니다.</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -168,21 +162,9 @@
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>정보</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>피드백</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>설정</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>취소</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>모두 닫기</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>끝내기</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>여러 창</value>
|
||||
</data>
|
||||
@@ -289,13 +271,6 @@
|
||||
<value>• 지정한 "테마"를 테마 목록에서 찾을 수 없습니다. 일시적으로 기본값으로 대체됩니다.</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>"globals" 속성은 더 이상 사용되지 않습니다. 설정을 업데이트해야 할 수 있습니다. </value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>추가 정보는 이 웹 페이지를 참조하세요.</value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>"iterateOn" 집합으로 명령을 확장하지 못했습니다. 이 명령은 무시됩니다.</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -476,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>Ctrl 키를 누르고 클릭하여 관리자로 엽니다.</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>닫기</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>닫기</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>닫기</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>최대화</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>최소화</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>최소화</value>
|
||||
</data>
|
||||
@@ -510,10 +476,6 @@
|
||||
<value>버전:</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>시작</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>원본 코드</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -789,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>텍스트 내보내기</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>터미널 콘텐츠를 내보내지 못함</value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>터미널 콘텐츠를 내보냄</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>찾기</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>일반 텍스트</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>고급 프로필 설정에서 종료 동작을 구성할 수 있습니다.</value>
|
||||
</data>
|
||||
@@ -906,10 +859,6 @@
|
||||
<value>"{0}" 탭이 위치 "{1}"(으)로 이동했습니다.</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>활성 창이 "{1}" 창의 "{0}" 탭으로 이동되었습니다.</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>활성 창이 "{0}" 창으로 이동됨</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>Erros encontrados durante o carregamento das configurações do usuário</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>Aviso:</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>O "{0}" não está sendo executado no seu computador. Isso pode impedir que o terminal receba entrada de teclado.</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -168,21 +162,9 @@
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>Sobre</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>Comentários</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>Configurações</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Cancelar</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>Fechar tudo</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Encerrar</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Vários painéis</value>
|
||||
</data>
|
||||
@@ -289,13 +271,6 @@
|
||||
<value>• O "tema" especificado não foi encontrado na lista de temas. Voltando temporariamente para o valor padrão.</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>A propriedade "globals" foi preterida - talvez suas configurações precisem ser atualizadas. </value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>Para saber mais, confira esta página da Web.</value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>Falha ao expandir um comando com conjunto de "iterateOn". Este comando será ignorado.</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -476,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>Ctrl+Clique para abrir como administrador</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Fechar</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Fechar</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Fechar</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Maximizar</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Minimizar</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Minimizar</value>
|
||||
</data>
|
||||
@@ -510,10 +476,6 @@
|
||||
<value>Versão:</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>Introdução</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>Código-fonte</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -789,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>Exportar texto</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>Falha ao exportar o conteúdo do terminal</value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>Conteúdo do terminal exportado com êxito</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>Localizar</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>Texto sem formatação</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>O comportamento de término pode ser configurado nas configurações avançadas do perfil.</value>
|
||||
</data>
|
||||
@@ -906,10 +859,6 @@
|
||||
<value>Guia "{0}" movida para posição "{1}"</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>Painel ativo movido para "{0}" guia na "{1}" janela</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>Painel ativo movido para a janela "{0}"</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>Εŋĉőųņŧзяëď зяѓōяś ŵħΐļê ŀθαðĩήġ ùŝéѓ śзťŧĭпģŝ !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>ÓΚ </value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>Ŵаґήĩήģ: !!</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>Ŧħє "{0}" ĭşп'ţ řμллĭиġ оʼn ўόùг мàςĥįńë. Ŧħїś ¢áⁿ φřэνєńτ тнэ Тэґмïñăĺ ƒŕöm ŗеς℮íνίиĝ ķēỳвŏαŗδ ĭⁿрΰţ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -165,28 +159,12 @@
|
||||
<data name="ReloadJsonParseErrorTitle" xml:space="preserve">
|
||||
<value>₣áĭļèđ ťσ ѓéłøǻð şèŧŧíпĝŝ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="FeedbackUriValue" xml:space="preserve">
|
||||
<value>https://go.microsoft.com/fwlink/?linkid=2125419</value>
|
||||
<comment>{Locked}This is a FWLink, so it will be localized with the fwlink tool</comment>
|
||||
</data>
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>∆вòΰŧ !</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>₣ęęðъâçќ !!</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>Śêŧťіňğŝ !!</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Ĉάπςеŀ !</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>Ċľθŝє αŀļ !!!</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Qùíт !</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Мµļтíрłĕ φдпėŝ !!! !</value>
|
||||
</data>
|
||||
@@ -293,17 +271,6 @@
|
||||
<value>• Тћë ѕрèçїƒĭёď "τћ℮мé" ώαѕ ήøţ ƒόûπđ ΐл ťћê ℓíŝť σƒ ťнεmέѕ. Ŧěмрǿŕдѓΐļγ ƒдℓłίńģ вà¢ĸ τő ŧнě đέƒαùŀŧ νǻľΰê. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>Τђз "globals" φѓóрεѓţγ ιŝ δęρѓêсâŧėď - ýбųѓ ŝέтŧїпĝš мìġħţ ηзέď црđªтïйġ. !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefUrl" xml:space="preserve">
|
||||
<value>https://go.microsoft.com/fwlink/?linkid=2128258</value>
|
||||
<comment>{Locked}This is a FWLink, so it will be localized with the fwlink tool</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>₣οř мòŕе îήƒθ, şéэ ţħìѕ ŵєь рąġé. !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>₣ăіľέđ ţö ехρåņď ǻ çǿммãηδ ẃìţĥ "iterateOn" şετ. Ťĥīš ćōmмåиď щΐℓĺ ве ĭģňóѓëđ. !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -484,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>€ţŕł+Čℓїčķ τõ ορêņ αŝ аðmìñĩѕτŕăţòг !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Ćℓőŝз !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ĉļøşз !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Ĉļόѕě !</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Μджįmïźэ !!</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Μïиιmіžё !!</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Μîⁿĩmĩż℮ !!</value>
|
||||
</data>
|
||||
@@ -518,10 +476,6 @@
|
||||
<value>Véяšîõп: !!</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>Ġеťтΐñĝ ѕτдŗτęď !!! !</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>Ѕοџŗсė ¢ŏđе !!!</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -797,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>Ė×φōŗŧ ţєхŧ !!!</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>₣ăìľεď ťθ эхроґт ţеґmίñдļ ¢ōйт℮лť !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>Ŝūĉčєšśƒυłłγ ĕ×φòŗтэð тēгмïʼnãℓ ĉοʼnťëⁿţ !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>₣ìпđ !</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>Ρĺáīň тěхт !!!</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>Ťéямїлâŧîόň ь℮ћäνįőř čªή вĕ ċοñƒĩġџřèδ įŋ ăδνåл¢êð ряòƒιļє şėŧтіиĝś. !!! !!! !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
@@ -914,10 +859,6 @@
|
||||
<value>"{0}" ŧαв мονĕđ το φóŝїŧíŏñ "{1}" !!! !!! !!! </value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>Α¢ťϊνë рãņє môνέď τō "{0}" ţâъ ĭή "{1}" ẃĩńδθш !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>Λςťìνє рáиė mόνéð ťб "{0}" ŵîńđθω !!! !!! !!! </value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
@@ -982,4 +923,4 @@
|
||||
<data name="InvalidRegex" xml:space="preserve">
|
||||
<value>Дʼn ΐňνãľîδ ŗěğµℓдř ë×ρяēѕšιбή ẃăѕ ƒοůʼnđ. !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>Εŋĉőųņŧзяëď зяѓōяś ŵħΐļê ŀθαðĩήġ ùŝéѓ śзťŧĭпģŝ !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>ÓΚ </value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>Ŵаґήĩήģ: !!</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>Ŧħє "{0}" ĭşп'ţ řμллĭиġ оʼn ўόùг мàςĥįńë. Ŧħїś ¢áⁿ φřэνєńτ тнэ Тэґмïñăĺ ƒŕöm ŗеς℮íνίиĝ ķēỳвŏαŗδ ĭⁿрΰţ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -165,28 +159,12 @@
|
||||
<data name="ReloadJsonParseErrorTitle" xml:space="preserve">
|
||||
<value>₣áĭļèđ ťσ ѓéłøǻð şèŧŧíпĝŝ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="FeedbackUriValue" xml:space="preserve">
|
||||
<value>https://go.microsoft.com/fwlink/?linkid=2125419</value>
|
||||
<comment>{Locked}This is a FWLink, so it will be localized with the fwlink tool</comment>
|
||||
</data>
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>∆вòΰŧ !</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>₣ęęðъâçќ !!</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>Śêŧťіňğŝ !!</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Ĉάπςеŀ !</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>Ċľθŝє αŀļ !!!</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Qùíт !</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Мµļтíрłĕ φдпėŝ !!! !</value>
|
||||
</data>
|
||||
@@ -293,17 +271,6 @@
|
||||
<value>• Тћë ѕрèçїƒĭёď "τћ℮мé" ώαѕ ήøţ ƒόûπđ ΐл ťћê ℓíŝť σƒ ťнεmέѕ. Ŧěмрǿŕдѓΐļγ ƒдℓłίńģ вà¢ĸ τő ŧнě đέƒαùŀŧ νǻľΰê. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>Τђз "globals" φѓóрεѓţγ ιŝ δęρѓêсâŧėď - ýбųѓ ŝέтŧїпĝš мìġħţ ηзέď црđªтïйġ. !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefUrl" xml:space="preserve">
|
||||
<value>https://go.microsoft.com/fwlink/?linkid=2128258</value>
|
||||
<comment>{Locked}This is a FWLink, so it will be localized with the fwlink tool</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>₣οř мòŕе îήƒθ, şéэ ţħìѕ ŵєь рąġé. !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>₣ăіľέđ ţö ехρåņď ǻ çǿммãηδ ẃìţĥ "iterateOn" şετ. Ťĥīš ćōmмåиď щΐℓĺ ве ĭģňóѓëđ. !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -484,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>€ţŕł+Čℓїčķ τõ ορêņ αŝ аðmìñĩѕτŕăţòг !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Ćℓőŝз !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ĉļøşз !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Ĉļόѕě !</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Μджįmïźэ !!</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Μïиιmіžё !!</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Μîⁿĩmĩż℮ !!</value>
|
||||
</data>
|
||||
@@ -518,10 +476,6 @@
|
||||
<value>Véяšîõп: !!</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>Ġеťтΐñĝ ѕτдŗτęď !!! !</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>Ѕοџŗсė ¢ŏđе !!!</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -797,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>Ė×φōŗŧ ţєхŧ !!!</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>₣ăìľεď ťθ эхроґт ţеґmίñдļ ¢ōйт℮лť !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>Ŝūĉčєšśƒυłłγ ĕ×φòŗтэð тēгмïʼnãℓ ĉοʼnťëⁿţ !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>₣ìпđ !</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>Ρĺáīň тěхт !!!</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>Ťéямїлâŧîόň ь℮ћäνįőř čªή вĕ ċοñƒĩġџřèδ įŋ ăδνåл¢êð ряòƒιļє şėŧтіиĝś. !!! !!! !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
@@ -914,10 +859,6 @@
|
||||
<value>"{0}" ŧαв мονĕđ το φóŝїŧíŏñ "{1}" !!! !!! !!! </value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>Α¢ťϊνë рãņє môνέď τō "{0}" ţâъ ĭή "{1}" ẃĩńδθш !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>Λςťìνє рáиė mόνéð ťб "{0}" ŵîńđθω !!! !!! !!! </value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
@@ -982,4 +923,4 @@
|
||||
<data name="InvalidRegex" xml:space="preserve">
|
||||
<value>Дʼn ΐňνãľîδ ŗěğµℓдř ë×ρяēѕšιбή ẃăѕ ƒοůʼnđ. !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>Εŋĉőųņŧзяëď зяѓōяś ŵħΐļê ŀθαðĩήġ ùŝéѓ śзťŧĭпģŝ !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>ÓΚ </value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>Ŵаґήĩήģ: !!</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>Ŧħє "{0}" ĭşп'ţ řμллĭиġ оʼn ўόùг мàςĥįńë. Ŧħїś ¢áⁿ φřэνєńτ тнэ Тэґмïñăĺ ƒŕöm ŗеς℮íνίиĝ ķēỳвŏαŗδ ĭⁿрΰţ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -165,28 +159,12 @@
|
||||
<data name="ReloadJsonParseErrorTitle" xml:space="preserve">
|
||||
<value>₣áĭļèđ ťσ ѓéłøǻð şèŧŧíпĝŝ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="FeedbackUriValue" xml:space="preserve">
|
||||
<value>https://go.microsoft.com/fwlink/?linkid=2125419</value>
|
||||
<comment>{Locked}This is a FWLink, so it will be localized with the fwlink tool</comment>
|
||||
</data>
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>∆вòΰŧ !</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>₣ęęðъâçќ !!</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>Śêŧťіňğŝ !!</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Ĉάπςеŀ !</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>Ċľθŝє αŀļ !!!</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Qùíт !</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Мµļтíрłĕ φдпėŝ !!! !</value>
|
||||
</data>
|
||||
@@ -293,17 +271,6 @@
|
||||
<value>• Тћë ѕрèçїƒĭёď "τћ℮мé" ώαѕ ήøţ ƒόûπđ ΐл ťћê ℓíŝť σƒ ťнεmέѕ. Ŧěмрǿŕдѓΐļγ ƒдℓłίńģ вà¢ĸ τő ŧнě đέƒαùŀŧ νǻľΰê. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>Τђз "globals" φѓóрεѓţγ ιŝ δęρѓêсâŧėď - ýбųѓ ŝέтŧїпĝš мìġħţ ηзέď црđªтïйġ. !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefUrl" xml:space="preserve">
|
||||
<value>https://go.microsoft.com/fwlink/?linkid=2128258</value>
|
||||
<comment>{Locked}This is a FWLink, so it will be localized with the fwlink tool</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>₣οř мòŕе îήƒθ, şéэ ţħìѕ ŵєь рąġé. !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>₣ăіľέđ ţö ехρåņď ǻ çǿммãηδ ẃìţĥ "iterateOn" şετ. Ťĥīš ćōmмåиď щΐℓĺ ве ĭģňóѓëđ. !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -484,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>€ţŕł+Čℓїčķ τõ ορêņ αŝ аðmìñĩѕτŕăţòг !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Ćℓőŝз !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ĉļøşз !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Ĉļόѕě !</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Μджįmïźэ !!</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Μïиιmіžё !!</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Μîⁿĩmĩż℮ !!</value>
|
||||
</data>
|
||||
@@ -518,10 +476,6 @@
|
||||
<value>Véяšîõп: !!</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>Ġеťтΐñĝ ѕτдŗτęď !!! !</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>Ѕοџŗсė ¢ŏđе !!!</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -797,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>Ė×φōŗŧ ţєхŧ !!!</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>₣ăìľεď ťθ эхроґт ţеґmίñдļ ¢ōйт℮лť !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>Ŝūĉčєšśƒυłłγ ĕ×φòŗтэð тēгмïʼnãℓ ĉοʼnťëⁿţ !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>₣ìпđ !</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>Ρĺáīň тěхт !!!</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>Ťéямїлâŧîόň ь℮ћäνįőř čªή вĕ ċοñƒĩġџřèδ įŋ ăδνåл¢êð ряòƒιļє şėŧтіиĝś. !!! !!! !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
@@ -914,10 +859,6 @@
|
||||
<value>"{0}" ŧαв мονĕđ το φóŝїŧíŏñ "{1}" !!! !!! !!! </value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>Α¢ťϊνë рãņє môνέď τō "{0}" ţâъ ĭή "{1}" ẃĩńδθш !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>Λςťìνє рáиė mόνéð ťб "{0}" ŵîńđθω !!! !!! !!! </value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
@@ -982,4 +923,4 @@
|
||||
<data name="InvalidRegex" xml:space="preserve">
|
||||
<value>Дʼn ΐňνãľîδ ŗěğµℓдř ë×ρяēѕšιбή ẃăѕ ƒοůʼnđ. !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>При загрузке параметров пользователя возникли ошибки</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>ОК</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>Внимание!</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>"{0}" не работает на вашем компьютере. Это может помешать терминалу получать ввод с клавиатуры.</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -168,21 +162,9 @@
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>О программе</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>Отзыв</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>Параметры</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Отмена</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>Закрыть все</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Выход</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Несколько областей</value>
|
||||
</data>
|
||||
@@ -289,13 +271,6 @@
|
||||
<value>• Указанная тема не найдена в списке тем. Временно восстанавливается значение по умолчанию.</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>Свойство "globals" устарело. Вашим параметрам может требоваться обновление. </value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>Дополнительные сведения см. на этой веб-странице.</value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>Не удалось расширить команду с помощью набора "iterateOn". Эта команда будет пропущена.</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -476,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>Щелкните мышью с нажатой клавишей CTRL, чтобы открыть от имени администратора</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Закрыть</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Закрыть</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Закрыть</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Развернуть</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Свернуть</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Свернуть</value>
|
||||
</data>
|
||||
@@ -510,10 +476,6 @@
|
||||
<value>Версия:</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>Приступая к работе</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>Исходный код</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -789,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>Экспорт текста</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>Не удалось экспортировать содержимое терминала</value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>Содержимое терминала экспортировано</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>Найти</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>Обычный текст</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>Поведение завершения можно настроить в дополнительных параметрах профиля.</value>
|
||||
</data>
|
||||
@@ -906,10 +859,6 @@
|
||||
<value>Вкладка "{0}" перемещена в позицию "{1}"</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>Активная область перемещена на вкладку "{0}" в "{1}" окна</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>Активная область перемещена в окно "{0}"</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
@@ -118,7 +118,7 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="InitialJsonParseErrorText" xml:space="preserve">
|
||||
<value>Подешавања нису могла да се учитау из фајла. Проверите има ли синтаксних грешака, укључујући запете на крају реда.</value>
|
||||
<value>Подешавања нису могла да се учитају из фајла. Проверите има ли синтаксних грешака, укључујући запете на крају реда.</value>
|
||||
</data>
|
||||
<data name="MissingDefaultProfileText" xml:space="preserve">
|
||||
<value>У листи профила није могао да се пронађе ваш подразумевани профил - користи се први профил. Проверите да ли се "defaultProfile" подудара са GUID неког од ваших профила.</value>
|
||||
@@ -141,7 +141,7 @@
|
||||
<value>Подешавања нису могла поново да се учитају из фајла. Проверите има ли синтаксних грешака, укључујући запете на крају реда.</value>
|
||||
</data>
|
||||
<data name="UsingDefaultSettingsText" xml:space="preserve">
|
||||
<value>Привремено се користе подразумевана подешавања Windows Терминала.</value>
|
||||
<value>Привремено се користе подразумевана подешавања апликације Windows Терминал.</value>
|
||||
</data>
|
||||
<data name="InitialJsonParseErrorTitle" xml:space="preserve">
|
||||
<value>Није успело учитавање подешавања</value>
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>Наишло се на грешке током учитавања корисничких подешавања</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>ОК</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>Упозорење:</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>„{0}” се не извршава на вашој машини. Због тога Терминал можда неће моћи да прима улаз са тастатуре.</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -165,28 +159,12 @@
|
||||
<data name="ReloadJsonParseErrorTitle" xml:space="preserve">
|
||||
<value>Није успело поновно учитавање подешавања</value>
|
||||
</data>
|
||||
<data name="FeedbackUriValue" xml:space="preserve">
|
||||
<value>https://go.microsoft.com/fwlink/?linkid=2125419</value>
|
||||
<comment>{Locked}This is a FWLink, so it will be localized with the fwlink tool</comment>
|
||||
</data>
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>О програму</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>Повратне информације</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>Подешавања</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Откажи</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>Затвори све</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Напусти</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Више панела</value>
|
||||
</data>
|
||||
@@ -293,17 +271,6 @@
|
||||
<value>• Наведена "theme" није пронађена у листи тема. Привремено се употребљава подразумевана вредност.</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>Особина "globals" је застарела - ваша подешавања би требало да се ажурирају. </value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefUrl" xml:space="preserve">
|
||||
<value>https://go.microsoft.com/fwlink/?linkid=2128258</value>
|
||||
<comment>{Locked}This is a FWLink, so it will be localized with the fwlink tool</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>За више информација, погледајте следећу веб страницу.</value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>Није успело развијање команде којој је постављено "iterateOn". Ова команда ће се игнорисати.</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -484,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>Ctrl+Клик да отворите као администратор</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Затвори</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Затвори</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Затвори</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Увећај</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Умањи</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Умањи</value>
|
||||
</data>
|
||||
@@ -518,10 +476,6 @@
|
||||
<value>Верзија:</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>Брзи почетак</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>Изворни кôд</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -600,7 +554,7 @@
|
||||
<value>Откуцајте име команде...</value>
|
||||
</data>
|
||||
<data name="CommandPalette_NoMatchesText.Text" xml:space="preserve">
|
||||
<value>Нема команди које се подударају</value>
|
||||
<value>Ниједна команда се не подудара</value>
|
||||
</data>
|
||||
<data name="CommandPaletteModeAnnouncement_ActionMode" xml:space="preserve">
|
||||
<value>Акција режим претраге</value>
|
||||
@@ -797,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>Извези текст</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>Није успео извоз садржаја терминала</value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>Успешно је извезен садржај терминала</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>Пронађи</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>Чисти текст</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>Понашање при прекиду извршавања може да се подеси у напредним подешавањима профила.</value>
|
||||
</data>
|
||||
@@ -914,10 +859,6 @@
|
||||
<value>Картица "{0}" је премештена на позицију "{1}"</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>Активни панел је премештен у картицу "{0}" у прозору "{1}"</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>Активни панел је премештен у прозор "{0}"</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>加载用户设置时遇到错误</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>确定</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>警告: </value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>你的计算机上未运行 "{0}"。这可能会阻止终端接收键盘输入。</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -168,21 +162,9 @@
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>关于</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>反馈</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>设置</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>取消</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>全部关闭</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>退出</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>多个窗格</value>
|
||||
</data>
|
||||
@@ -289,13 +271,6 @@
|
||||
<value>• 在主题列表中找不到指定的“主题”。暂时回退到默认值。</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>已弃用 "globals" 属性 - 你的设置可能需要更新。</value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>有关详细信息,请参阅此网页。</value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>无法展开包含 "iterateOn" 集的命令。此命令将被忽略。</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -476,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>按住 Ctrl 并单击以管理员身份打开</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>关闭</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>关闭</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>关闭</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>最大化</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>最小化</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>最小化</value>
|
||||
</data>
|
||||
@@ -510,10 +476,6 @@
|
||||
<value>版本:</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>入门</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>源代码</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -789,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>导出文本</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>无法导出终端内容</value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>已成功导出终端内容</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>查找</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>纯文本</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>可以在高级配置文件设置中配置终止行为。</value>
|
||||
</data>
|
||||
@@ -906,10 +859,6 @@
|
||||
<value>“{0}”选项卡已移动到位置“{1}”</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>活动窗格已移动到“{1}”窗口中的“{0}”选项卡</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>活动窗格已移动到“{0}”选项卡</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
|
||||
@@ -149,12 +149,6 @@
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>載入使用者設定時發生錯誤</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>確定</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>警告:</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>"{0}" 未在您的電腦上執行。這可能會讓終端機無法接收鍵盤輸入。</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
@@ -168,21 +162,9 @@
|
||||
<data name="AboutMenuItem" xml:space="preserve">
|
||||
<value>關於</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>意見反應</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>設定</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>取消</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>全部關閉</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>結束</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>多個窗格</value>
|
||||
</data>
|
||||
@@ -289,13 +271,6 @@
|
||||
<value>• 主題清單中找不到指定的「主題」。暫時回到預設值。</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsProperty" xml:space="preserve">
|
||||
<value>["globals"] 屬性受到取代 - 您的設定可能需要更新。</value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefLabel" xml:space="preserve">
|
||||
<value>如需詳細資訊,請參閱此網頁。</value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>無法在設定 "iterateOn" 的情況下展開命令。將忽略此命令。</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
@@ -476,21 +451,12 @@
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>Ctrl+按一下以系統管理員身分開啟</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>關閉</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>關閉</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>關閉</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>最大化</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>最小化</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>最小化</value>
|
||||
</data>
|
||||
@@ -510,10 +476,6 @@
|
||||
<value>版本:</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
<value>開始使用</value>
|
||||
<comment>A hyperlink name for a guide on how to get started using Terminal</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_SourceCodeLink.Content" xml:space="preserve">
|
||||
<value>原始碼</value>
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
@@ -789,18 +751,9 @@
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>匯出文字</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>無法匯出終端機內容</value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>已成功匯出終端機內容</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>尋找</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>純文字</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>您可以在進階設定檔設定中設定終止行為。</value>
|
||||
</data>
|
||||
@@ -906,10 +859,6 @@
|
||||
<value>「{0}」索引標籤已移至位置「{1}」</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab. {1} is the new tab index in the tab row.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow" xml:space="preserve">
|
||||
<value>活動窗格已移至 "{1}" 視窗中的 "{0}" 索引標籤</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the tab the pane was moved to. {1} is the name of the window the pane was moved to. Replaced in 1.19 by TerminalPage_PaneMovedAnnouncement_ExistingWindow2</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingWindow2" xml:space="preserve">
|
||||
<value>活動窗格已移動至「{0}」視窗</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful pane movement. {0} is the name of the window the pane was moved to.</comment>
|
||||
|
||||
@@ -48,13 +48,22 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
_settings = settings;
|
||||
|
||||
const auto dispatcher = Dispatcher();
|
||||
const auto weak = get_weak();
|
||||
|
||||
// You'd think that `FilterToSendInput(queryString)` would work. It
|
||||
// doesn't! That uses the queryString as the current command the user
|
||||
// has typed, then relies on the suggestions UI to _also_ filter with that
|
||||
// string.
|
||||
|
||||
const auto tasks = co_await _settings.GlobalSettings().ActionMap().FilterToSnippets(winrt::hstring{}, winrt::hstring{}); // IVector<Model::Command>
|
||||
co_await wil::resume_foreground(Dispatcher());
|
||||
co_await wil::resume_foreground(dispatcher);
|
||||
|
||||
const auto strong = weak.get();
|
||||
if (!strong)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
|
||||
_allTasks.Clear();
|
||||
for (const auto& t : tasks)
|
||||
|
||||
@@ -1114,7 +1114,7 @@ namespace winrt::TerminalApp::implementation
|
||||
[dispatcher, weakThis](auto&&, auto&&) -> safe_void_coroutine {
|
||||
const auto weakThisCopy = weakThis;
|
||||
co_await wil::resume_foreground(dispatcher);
|
||||
if (auto tab{ weakThis.get() })
|
||||
if (auto tab{ weakThisCopy.get() })
|
||||
{
|
||||
tab->_RecalculateAndApplyReadOnly();
|
||||
}
|
||||
@@ -2137,7 +2137,7 @@ namespace winrt::TerminalApp::implementation
|
||||
const auto profileName{ profile.Name() };
|
||||
if (profileName != Title())
|
||||
{
|
||||
return winrt::hstring{ fmt::format(FMT_COMPILE(L"{}: {}"), profileName, Title()) };
|
||||
return til::hstring_format(FMT_COMPILE(L"{}: {}"), profileName, Title());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -255,9 +255,38 @@ namespace winrt::TerminalApp::implementation
|
||||
}
|
||||
if (_tabRow)
|
||||
{
|
||||
// collapse/show the row that the tabs are in.
|
||||
// NaN is the special value XAML uses for "Auto" sizing.
|
||||
_tabRow.Height(isVisible ? NAN : 0);
|
||||
if (_tabPosition == Settings::Model::TabPosition::Left ||
|
||||
_tabPosition == Settings::Model::TabPosition::Right)
|
||||
{
|
||||
// For left/right positions, collapse the column width instead of row height.
|
||||
// Also hide the splitter.
|
||||
_tabRow.Width(isVisible ? std::numeric_limits<double>::quiet_NaN() : 0);
|
||||
if (_tabStripSplitter)
|
||||
{
|
||||
_tabStripSplitter.Visibility(isVisible ? Visibility::Visible : Visibility::Collapsed);
|
||||
}
|
||||
// Collapse or restore the tab strip column
|
||||
auto tabStripColIdx = (_tabPosition == Settings::Model::TabPosition::Left) ? 0u : 2u;
|
||||
auto root = this->Root();
|
||||
if (root.ColumnDefinitions().Size() > tabStripColIdx)
|
||||
{
|
||||
auto col = root.ColumnDefinitions().GetAt(tabStripColIdx);
|
||||
if (isVisible)
|
||||
{
|
||||
col.Width(WUX::GridLengthHelper::FromPixels(200));
|
||||
}
|
||||
else
|
||||
{
|
||||
col.Width(WUX::GridLengthHelper::FromPixels(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Top/Bottom: collapse/show the row that the tabs are in.
|
||||
// NaN is the special value XAML uses for "Auto" sizing.
|
||||
_tabRow.Height(isVisible ? NAN : 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -396,12 +425,18 @@ namespace winrt::TerminalApp::implementation
|
||||
// - tab: the tab to remove
|
||||
winrt::Windows::Foundation::IAsyncAction TerminalPage::_HandleCloseTabRequested(winrt::TerminalApp::Tab tab)
|
||||
{
|
||||
winrt::com_ptr<TerminalPage> strong;
|
||||
|
||||
if (tab.ReadOnly())
|
||||
{
|
||||
const auto weak = get_weak();
|
||||
|
||||
auto warningResult = co_await _ShowCloseReadOnlyDialog();
|
||||
|
||||
strong = weak.get();
|
||||
|
||||
// If the user didn't explicitly click on close tab - leave
|
||||
if (warningResult != ContentDialogResult::Primary)
|
||||
if (!strong || warningResult != ContentDialogResult::Primary)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
@@ -710,10 +745,14 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
if (pane->ContainsReadOnly())
|
||||
{
|
||||
const auto weak = get_weak();
|
||||
|
||||
auto warningResult = co_await _ShowCloseReadOnlyDialog();
|
||||
|
||||
const auto strong = weak.get();
|
||||
|
||||
// If the user didn't explicitly click on close tab - leave
|
||||
if (warningResult != ContentDialogResult::Primary)
|
||||
if (!strong || warningResult != ContentDialogResult::Primary)
|
||||
{
|
||||
co_return false;
|
||||
}
|
||||
@@ -771,9 +810,13 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
if (const auto pane{ activeTab->GetActivePane() })
|
||||
{
|
||||
const auto weak = get_weak();
|
||||
if (co_await _PaneConfirmCloseReadOnly(pane))
|
||||
{
|
||||
_HandleClosePaneRequested(pane);
|
||||
if (const auto strong = weak.get())
|
||||
{
|
||||
_HandleClosePaneRequested(pane);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -831,9 +874,22 @@ namespace winrt::TerminalApp::implementation
|
||||
// - tabs - tabs to remove
|
||||
safe_void_coroutine TerminalPage::_RemoveTabs(const std::vector<winrt::TerminalApp::Tab> tabs)
|
||||
{
|
||||
const auto weak = get_weak();
|
||||
|
||||
for (auto& tab : tabs)
|
||||
{
|
||||
co_await _HandleCloseTabRequested(tab);
|
||||
winrt::Windows::Foundation::IAsyncAction action{ nullptr };
|
||||
if (const auto strong = weak.get())
|
||||
{
|
||||
action = _HandleCloseTabRequested(tab);
|
||||
}
|
||||
|
||||
if (!action)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
|
||||
co_await action;
|
||||
}
|
||||
}
|
||||
// Method Description:
|
||||
@@ -917,8 +973,13 @@ namespace winrt::TerminalApp::implementation
|
||||
// WinUI asynchronously updates its tab view items, so it may happen that we're given a
|
||||
// `TabViewItem` that still contains a `Tab` which has actually already been removed.
|
||||
// First we must yield once, to flush out whatever TabView is currently doing.
|
||||
const auto strong = get_strong();
|
||||
const auto weak = get_weak();
|
||||
co_await wil::resume_foreground(Dispatcher());
|
||||
const auto strong = weak.get();
|
||||
if (!strong)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
|
||||
const auto tab = _GetTabByTabViewItem(sender);
|
||||
if (!tab)
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
// Default to unset, 0%.
|
||||
TaskbarState::TaskbarState() :
|
||||
TaskbarState(0, 0){};
|
||||
TaskbarState(0, 0) {};
|
||||
|
||||
TaskbarState::TaskbarState(const uint64_t dispatchTypesState, const uint64_t progressParam) :
|
||||
_State{ dispatchTypesState },
|
||||
|
||||
@@ -65,6 +65,10 @@
|
||||
<Type>DefaultStyle</Type>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="VerticalTabViewStyle.xaml">
|
||||
<Type>DefaultStyle</Type>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="ColorPickupFlyout.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
@@ -134,7 +138,7 @@
|
||||
</ClInclude>
|
||||
<ClInclude Include="FilteredCommand.h" />
|
||||
<ClInclude Include="Pane.h" />
|
||||
<ClInclude Include="fzf/fzf.h" />
|
||||
<ClInclude Include="../fzf/fzf.h" />
|
||||
<ClInclude Include="pch.h" />
|
||||
<ClInclude Include="ShortcutActionDispatch.h">
|
||||
<DependentUpon>ShortcutActionDispatch.idl</DependentUpon>
|
||||
@@ -204,7 +208,7 @@
|
||||
<ClCompile Include="Tab.cpp">
|
||||
<DependentUpon>Tab.idl</DependentUpon>
|
||||
</ClCompile>
|
||||
<ClCompile Include="fzf/fzf.cpp" />
|
||||
<ClCompile Include="../fzf/fzf.cpp" />
|
||||
<ClCompile Include="TaskbarState.cpp">
|
||||
<DependentUpon>TaskbarState.idl</DependentUpon>
|
||||
</ClCompile>
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Natvis Include="$(SolutionDir)tools\ConsoleTypes.natvis" />
|
||||
<Natvis Include="$(MSBuildThisFileDirectory)..\..\natvis\wil.natvis" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PRIResource Include="Resources\en-US\Resources.resw" />
|
||||
@@ -33,8 +32,7 @@
|
||||
</ClCompile>
|
||||
<ClCompile Include="Toast.cpp" />
|
||||
<ClCompile Include="LanguageProfileNotifier.cpp" />
|
||||
<ClCompile Include="Monarch.cpp" />
|
||||
<ClCompile Include="Peasant.cpp" />
|
||||
<ClCompile Include="TerminalSettingsCache.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h" />
|
||||
@@ -60,14 +58,10 @@
|
||||
<ClInclude Include="fzf/fzf.h">
|
||||
<Filter>fzf</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="fzf/LICENSE">
|
||||
<Filter>fzf</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Toast.h" />
|
||||
<ClInclude Include="LanguageProfileNotifier.h" />
|
||||
<ClInclude Include="WindowsPackageManagerFactory.h" />
|
||||
<ClInclude Include="Monarch.h" />
|
||||
<ClInclude Include="Peasant.h" />
|
||||
<ClInclude Include="TerminalSettingsCache.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Midl Include="AppLogic.idl">
|
||||
@@ -90,7 +84,8 @@
|
||||
<Midl Include="TerminalWindow.idl" />
|
||||
<Midl Include="TaskbarState.idl" />
|
||||
<Midl Include="IPaneContent.idl" />
|
||||
<Midl Include="Monarch.idl" />
|
||||
<Midl Include="Remoting.idl" />
|
||||
<Midl Include="HighlightedTextControl.idl" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Include="MinMaxCloseControl.xaml">
|
||||
@@ -123,6 +118,7 @@
|
||||
<Page Include="AboutDialog.xaml" />
|
||||
<Page Include="SuggestionsControl.xaml" />
|
||||
<Page Include="SnippetsPaneContent.xaml" />
|
||||
<Page Include="MarkdownPaneContent.xaml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Filter Include="app">
|
||||
|
||||
@@ -38,7 +38,6 @@ using namespace winrt::Microsoft::Terminal;
|
||||
using namespace winrt::Windows::ApplicationModel::DataTransfer;
|
||||
using namespace winrt::Windows::Foundation::Collections;
|
||||
using namespace winrt::Windows::System;
|
||||
using namespace winrt::Windows::System;
|
||||
using namespace winrt::Windows::UI;
|
||||
using namespace winrt::Windows::UI::Core;
|
||||
using namespace winrt::Windows::UI::Text;
|
||||
@@ -316,6 +315,307 @@ namespace winrt::TerminalApp::implementation
|
||||
return true;
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
// - Rearranges the TerminalPage's root grid to place the tab strip at the
|
||||
// position indicated by the current theme's TabPosition property. For Top,
|
||||
// the existing behavior is preserved (tabs in titlebar or Row 0). For
|
||||
// Bottom, the tab row goes in the last row. For Left/Right, an outer
|
||||
// 3-column grid is created with a resizable splitter between the tab strip
|
||||
// and the content area.
|
||||
void TerminalPage::_ApplyTabPosition()
|
||||
{
|
||||
// Read the tab position from the theme
|
||||
if (const auto theme = _settings.GlobalSettings().CurrentTheme())
|
||||
{
|
||||
if (const auto window = theme.Window())
|
||||
{
|
||||
_tabPosition = window.TabPosition();
|
||||
}
|
||||
}
|
||||
|
||||
auto root = this->Root();
|
||||
auto infoBarPanel = this->InfoBarPanel();
|
||||
|
||||
switch (_tabPosition)
|
||||
{
|
||||
case TabPosition::Top:
|
||||
{
|
||||
// Default XAML layout: Row 0=TabRow(Auto), Row 1=InfoBars(Auto), Row 2=TabContent(*)
|
||||
// If ShowTabsInTitlebar, remove the tab row from the grid and raise SetTitleBarContent
|
||||
if (_settings.GlobalSettings().ShowTabsInTitlebar())
|
||||
{
|
||||
uint32_t index = 0;
|
||||
if (root.Children().IndexOf(_tabRow, index))
|
||||
{
|
||||
root.Children().RemoveAt(index);
|
||||
}
|
||||
SetTitleBarContent.raise(*this, _tabRow);
|
||||
|
||||
const auto transparent = Media::SolidColorBrush();
|
||||
transparent.Color(Windows::UI::Colors::Transparent());
|
||||
_tabRow.Background(transparent);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TabPosition::Bottom:
|
||||
{
|
||||
// Rearrange to: Row 0=InfoBars(Auto), Row 1=TabContent(*), Row 2=TabRow(Auto)
|
||||
// Remove only the three layout elements; leave deferred-load stubs
|
||||
// (CommandPalette, SuggestionsControl, dialogs, etc.) in the tree
|
||||
// so that FindName() can still locate them later.
|
||||
uint32_t idx;
|
||||
if (root.Children().IndexOf(_tabRow, idx))
|
||||
root.Children().RemoveAt(idx);
|
||||
if (root.Children().IndexOf(infoBarPanel, idx))
|
||||
root.Children().RemoveAt(idx);
|
||||
if (root.Children().IndexOf(_tabContent, idx))
|
||||
root.Children().RemoveAt(idx);
|
||||
|
||||
root.RowDefinitions().Clear();
|
||||
|
||||
WUX::Controls::RowDefinition row0;
|
||||
row0.Height(WUX::GridLengthHelper::FromValueAndType(1, WUX::GridUnitType::Auto));
|
||||
WUX::Controls::RowDefinition row1;
|
||||
row1.Height(WUX::GridLengthHelper::FromValueAndType(1, WUX::GridUnitType::Star));
|
||||
WUX::Controls::RowDefinition row2;
|
||||
row2.Height(WUX::GridLengthHelper::FromValueAndType(1, WUX::GridUnitType::Auto));
|
||||
root.RowDefinitions().Append(row0);
|
||||
root.RowDefinitions().Append(row1);
|
||||
root.RowDefinitions().Append(row2);
|
||||
|
||||
WUX::Controls::Grid::SetRow(infoBarPanel, 0);
|
||||
WUX::Controls::Grid::SetRow(_tabContent, 1);
|
||||
WUX::Controls::Grid::SetRow(_tabRow, 2);
|
||||
|
||||
// Insert layout elements at the front so overlay elements
|
||||
// (command palette, dialogs) remain on top in z-order.
|
||||
root.Children().InsertAt(0, infoBarPanel);
|
||||
root.Children().InsertAt(1, _tabContent);
|
||||
root.Children().InsertAt(2, _tabRow);
|
||||
|
||||
// Update overlay elements: the ones that had Grid.Row="2" in XAML
|
||||
// should now target Row 1 (the content area) instead of Row 2
|
||||
// (which is the tab row in this layout). Iterate the remaining
|
||||
// children (index 3+) and reassign any that were on row 2.
|
||||
for (uint32_t i = 3; i < root.Children().Size(); ++i)
|
||||
{
|
||||
auto child = root.Children().GetAt(i);
|
||||
if (const auto& fwe { child.try_as<WUX::FrameworkElement>() })
|
||||
{
|
||||
if (WUX::Controls::Grid::GetRow(fwe) == 2)
|
||||
{
|
||||
WUX::Controls::Grid::SetRow(fwe, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TabPosition::Left:
|
||||
case TabPosition::Right:
|
||||
{
|
||||
// Build a 3-column layout: [tabstrip | splitter | content] or reversed.
|
||||
// Remove only the three layout elements; leave deferred-load stubs
|
||||
// (CommandPalette, SuggestionsControl, dialogs, etc.) in the tree
|
||||
// so that FindName() can still locate them later.
|
||||
uint32_t removeIdx;
|
||||
if (root.Children().IndexOf(_tabRow, removeIdx))
|
||||
root.Children().RemoveAt(removeIdx);
|
||||
if (root.Children().IndexOf(infoBarPanel, removeIdx))
|
||||
root.Children().RemoveAt(removeIdx);
|
||||
if (root.Children().IndexOf(_tabContent, removeIdx))
|
||||
root.Children().RemoveAt(removeIdx);
|
||||
|
||||
root.RowDefinitions().Clear();
|
||||
|
||||
// Create column definitions
|
||||
WUX::Controls::ColumnDefinition tabStripCol;
|
||||
tabStripCol.Width(WUX::GridLengthHelper::FromPixels(200));
|
||||
tabStripCol.MinWidth(100);
|
||||
tabStripCol.MaxWidth(400);
|
||||
|
||||
WUX::Controls::ColumnDefinition splitterCol;
|
||||
splitterCol.Width(WUX::GridLengthHelper::FromValueAndType(1, WUX::GridUnitType::Auto));
|
||||
|
||||
WUX::Controls::ColumnDefinition contentCol;
|
||||
contentCol.Width(WUX::GridLengthHelper::FromValueAndType(1, WUX::GridUnitType::Star));
|
||||
|
||||
// Create internal content grid (infobars + tab content stacked vertically)
|
||||
WUX::Controls::Grid contentGrid;
|
||||
WUX::Controls::RowDefinition infoRow;
|
||||
infoRow.Height(WUX::GridLengthHelper::FromValueAndType(1, WUX::GridUnitType::Auto));
|
||||
WUX::Controls::RowDefinition mainRow;
|
||||
mainRow.Height(WUX::GridLengthHelper::FromValueAndType(1, WUX::GridUnitType::Star));
|
||||
contentGrid.RowDefinitions().Append(infoRow);
|
||||
contentGrid.RowDefinitions().Append(mainRow);
|
||||
|
||||
WUX::Controls::Grid::SetRow(infoBarPanel, 0);
|
||||
WUX::Controls::Grid::SetRow(_tabContent, 1);
|
||||
contentGrid.Children().Append(infoBarPanel);
|
||||
contentGrid.Children().Append(_tabContent);
|
||||
|
||||
// Create the splitter border
|
||||
_tabStripSplitter = WUX::Controls::Border();
|
||||
_tabStripSplitter.Width(4);
|
||||
// the BG color will get set in _updatePaneResources
|
||||
|
||||
// Use a custom cursor via InputSystemCursorShape
|
||||
_tabStripSplitter.ManipulationMode(WUX::Input::ManipulationModes::None);
|
||||
|
||||
// Wire up pointer events for the splitter
|
||||
_tabStripSplitter.PointerEntered([](const auto& /*sender*/, const auto&) {
|
||||
if (const auto coreWindow = Windows::UI::Core::CoreWindow::GetForCurrentThread())
|
||||
{
|
||||
coreWindow.PointerCursor(
|
||||
Windows::UI::Core::CoreCursor{ Windows::UI::Core::CoreCursorType::SizeWestEast, 0 });
|
||||
}
|
||||
});
|
||||
_tabStripSplitter.PointerExited([](const auto& /*sender*/, const auto&) {
|
||||
if (const auto coreWindow = Windows::UI::Core::CoreWindow::GetForCurrentThread())
|
||||
{
|
||||
coreWindow.PointerCursor(
|
||||
Windows::UI::Core::CoreCursor{ Windows::UI::Core::CoreCursorType::Arrow, 0 });
|
||||
}
|
||||
});
|
||||
_tabStripSplitter.PointerPressed([weakThis{ get_weak() }](const auto& sender, const WUX::Input::PointerRoutedEventArgs& args) {
|
||||
if (auto page{ weakThis.get() })
|
||||
{
|
||||
auto border = sender.template as<WUX::Controls::Border>();
|
||||
border.CapturePointer(args.Pointer());
|
||||
page->_splitterDragging = true;
|
||||
page->_splitterDragStartX = args.GetCurrentPoint(page->Root()).Position().X;
|
||||
// Find the tab strip column width
|
||||
auto tabStripColIdx = (page->_tabPosition == TabPosition::Left) ? 0u : 2u;
|
||||
page->_splitterDragStartWidth = page->Root().ColumnDefinitions().GetAt(tabStripColIdx).ActualWidth();
|
||||
args.Handled(true);
|
||||
}
|
||||
});
|
||||
_tabStripSplitter.PointerMoved([weakThis{ get_weak() }](const auto& /*sender*/, const WUX::Input::PointerRoutedEventArgs& args) {
|
||||
if (auto page{ weakThis.get() })
|
||||
{
|
||||
if (!page->_splitterDragging)
|
||||
return;
|
||||
auto currentX = args.GetCurrentPoint(page->Root()).Position().X;
|
||||
auto delta = currentX - page->_splitterDragStartX;
|
||||
auto tabStripColIdx = (page->_tabPosition == TabPosition::Left) ? 0u : 2u;
|
||||
auto newWidth = (page->_tabPosition == TabPosition::Left) ? (page->_splitterDragStartWidth + delta) : (page->_splitterDragStartWidth - delta);
|
||||
newWidth = std::clamp(newWidth, 100.0, 400.0);
|
||||
page->Root().ColumnDefinitions().GetAt(tabStripColIdx).Width(WUX::GridLengthHelper::FromPixels(newWidth));
|
||||
args.Handled(true);
|
||||
}
|
||||
});
|
||||
_tabStripSplitter.PointerReleased([weakThis{ get_weak() }](const auto& sender, const WUX::Input::PointerRoutedEventArgs& args) {
|
||||
if (auto page{ weakThis.get() })
|
||||
{
|
||||
if (page->_splitterDragging)
|
||||
{
|
||||
page->_splitterDragging = false;
|
||||
auto border = sender.template as<WUX::Controls::Border>();
|
||||
border.ReleasePointerCapture(args.Pointer());
|
||||
args.Handled(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (_tabPosition == TabPosition::Left)
|
||||
{
|
||||
root.ColumnDefinitions().Append(tabStripCol);
|
||||
root.ColumnDefinitions().Append(splitterCol);
|
||||
root.ColumnDefinitions().Append(contentCol);
|
||||
|
||||
WUX::Controls::Grid::SetColumn(_tabRow, 0);
|
||||
WUX::Controls::Grid::SetColumn(_tabStripSplitter, 1);
|
||||
WUX::Controls::Grid::SetColumn(contentGrid, 2);
|
||||
}
|
||||
else // Right
|
||||
{
|
||||
root.ColumnDefinitions().Append(contentCol);
|
||||
root.ColumnDefinitions().Append(splitterCol);
|
||||
root.ColumnDefinitions().Append(tabStripCol);
|
||||
|
||||
WUX::Controls::Grid::SetColumn(contentGrid, 0);
|
||||
WUX::Controls::Grid::SetColumn(_tabStripSplitter, 1);
|
||||
WUX::Controls::Grid::SetColumn(_tabRow, 2);
|
||||
}
|
||||
|
||||
// Clear any row assignments from XAML
|
||||
WUX::Controls::Grid::SetRow(_tabRow, 0);
|
||||
|
||||
// Insert layout elements at the front so overlay elements
|
||||
// (command palette, dialogs) remain on top in z-order.
|
||||
root.Children().InsertAt(0, _tabRow);
|
||||
root.Children().InsertAt(1, _tabStripSplitter);
|
||||
root.Children().InsertAt(2, contentGrid);
|
||||
|
||||
// Update remaining overlay children (deferred-load stubs for
|
||||
// CommandPalette, SuggestionsControl, dialogs, InfoBars,
|
||||
// TeachingTips, etc.) so they span all 3 columns and cover the
|
||||
// full width of the page, not just the tab strip column.
|
||||
for (uint32_t i = 3; i < root.Children().Size(); ++i)
|
||||
{
|
||||
auto child = root.Children().GetAt(i);
|
||||
if (const auto& fwe { child.try_as<WUX::FrameworkElement>() })
|
||||
{
|
||||
WUX::Controls::Grid::SetColumn(fwe, 0);
|
||||
WUX::Controls::Grid::SetColumnSpan(fwe, 3);
|
||||
WUX::Controls::Grid::SetRow(fwe, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// Apply vertical styles to the TabView from our resource dictionary
|
||||
if (const auto res = Application::Current().Resources())
|
||||
{
|
||||
if (const auto verticalTabViewStyle = res.Lookup(winrt::box_value(L"VerticalTabViewStyle")))
|
||||
{
|
||||
_tabView.Style(verticalTabViewStyle.as<WUX::Style>());
|
||||
}
|
||||
// Apply the vertical TabViewItem style as an implicit style
|
||||
// on the TabRow's resources so new tab items pick it up.
|
||||
if (const auto verticalItemStyle = res.Lookup(winrt::box_value(L"VerticalTabViewItemStyle")))
|
||||
{
|
||||
auto tabRowResources = _tabRow.Resources();
|
||||
if (!tabRowResources)
|
||||
{
|
||||
tabRowResources = WUX::ResourceDictionary{};
|
||||
_tabRow.Resources(tabRowResources);
|
||||
}
|
||||
auto itemStyleType = winrt::xaml_typename<MUX::Controls::TabViewItem>();
|
||||
tabRowResources.Insert(winrt::box_value(itemStyleType), verticalItemStyle);
|
||||
}
|
||||
}
|
||||
|
||||
// Bug fix: TabRowControl.xaml sets VerticalAlignment="Bottom" on
|
||||
// the TabView for the default horizontal mode. Override to Top so
|
||||
// tabs start at the top of the vertical strip.
|
||||
_tabView.VerticalAlignment(WUX::VerticalAlignment::Top);
|
||||
|
||||
// Bug fix: In vertical mode, give the "new tab" button a text
|
||||
// label ("New tab") next to its "+" icon so it reads naturally
|
||||
// in the wider sidebar.
|
||||
if (_newTabButton)
|
||||
{
|
||||
auto panel = WUX::Controls::StackPanel();
|
||||
panel.Orientation(WUX::Controls::Orientation::Horizontal);
|
||||
panel.Spacing(8);
|
||||
|
||||
WUX::Controls::FontIcon plusIcon{};
|
||||
plusIcon.Glyph(L"\uE710");
|
||||
plusIcon.FontFamily(WUX::Media::FontFamily{ L"Segoe Fluent Icons, Segoe MDL2 Assets" });
|
||||
plusIcon.FontSize(12);
|
||||
panel.Children().Append(plusIcon);
|
||||
|
||||
WUX::Controls::TextBlock label{};
|
||||
label.Text(RS_(L"TabNewButtonText"));
|
||||
label.VerticalAlignment(WUX::VerticalAlignment::Center);
|
||||
label.FontFamily(WUX::Media::FontFamily{ L"Segoe UI" });
|
||||
panel.Children().Append(label);
|
||||
|
||||
_newTabButton.Content(panel);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TerminalPage::Create()
|
||||
{
|
||||
// Hookup the key bindings
|
||||
@@ -336,37 +636,10 @@ namespace winrt::TerminalApp::implementation
|
||||
auto tabRowImpl = winrt::get_self<implementation::TabRowControl>(_tabRow);
|
||||
_newTabButton = tabRowImpl->NewTabButton();
|
||||
|
||||
if (_settings.GlobalSettings().ShowTabsInTitlebar())
|
||||
{
|
||||
// Remove the TabView from the page. We'll hang on to it, we need to
|
||||
// put it in the titlebar.
|
||||
uint32_t index = 0;
|
||||
if (this->Root().Children().IndexOf(_tabRow, index))
|
||||
{
|
||||
this->Root().Children().RemoveAt(index);
|
||||
}
|
||||
// Apply the tab position from the theme. This rearranges the grid
|
||||
// layout and potentially moves the tab row into the titlebar (for Top).
|
||||
_ApplyTabPosition();
|
||||
|
||||
// Inform the host that our titlebar content has changed.
|
||||
SetTitleBarContent.raise(*this, _tabRow);
|
||||
|
||||
// GH#13143 Manually set the tab row's background to transparent here.
|
||||
//
|
||||
// We're doing it this way because ThemeResources are tricky. We
|
||||
// default in XAML to using the appropriate ThemeResource background
|
||||
// color for our TabRow. When tabs in the titlebar are _disabled_,
|
||||
// this will ensure that the tab row has the correct theme-dependent
|
||||
// value. When tabs in the titlebar are _enabled_ (the default),
|
||||
// we'll switch the BG to Transparent, to let the Titlebar Control's
|
||||
// background be used as the BG for the tab row.
|
||||
//
|
||||
// We can't do it the other way around (default to Transparent, only
|
||||
// switch to a color when disabling tabs in the titlebar), because
|
||||
// looking up the correct ThemeResource from and App dictionary is a
|
||||
// capital-H Hard problem.
|
||||
const auto transparent = Media::SolidColorBrush();
|
||||
transparent.Color(Windows::UI::Colors::Transparent());
|
||||
_tabRow.Background(transparent);
|
||||
}
|
||||
_updateThemeColors();
|
||||
|
||||
// Initialize the state of the CloseButtonOverlayMode property of
|
||||
@@ -2207,7 +2480,15 @@ namespace winrt::TerminalApp::implementation
|
||||
if (!_displayingCloseDialog)
|
||||
{
|
||||
_displayingCloseDialog = true;
|
||||
|
||||
const auto weak = get_weak();
|
||||
auto warningResult = co_await _ShowQuitDialog();
|
||||
const auto strong = weak.get();
|
||||
if (!strong)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
|
||||
_displayingCloseDialog = false;
|
||||
|
||||
if (warningResult != ContentDialogResult::Primary)
|
||||
@@ -2934,7 +3215,7 @@ namespace winrt::TerminalApp::implementation
|
||||
// - Does some of this in a background thread, as to not hang/crash the UI thread.
|
||||
// Arguments:
|
||||
// - eventArgs: the PasteFromClipboard event sent from the TermControl
|
||||
safe_void_coroutine TerminalPage::_PasteFromClipboardHandler(const IInspectable /*sender*/, const PasteFromClipboardEventArgs eventArgs)
|
||||
safe_void_coroutine TerminalPage::_PasteFromClipboardHandler(const IInspectable sender, const PasteFromClipboardEventArgs eventArgs)
|
||||
try
|
||||
{
|
||||
// The old Win32 clipboard API as used below is somewhere in the order of 300-1000x faster than
|
||||
@@ -2943,6 +3224,7 @@ namespace winrt::TerminalApp::implementation
|
||||
const auto dispatcher = Dispatcher();
|
||||
const auto globalSettings = _settings.GlobalSettings();
|
||||
const auto bracketedPaste = eventArgs.BracketedPasteEnabled();
|
||||
const auto sourceId = sender.try_as<ControlInteractivity>().Id();
|
||||
|
||||
// GetClipboardData might block for up to 30s for delay-rendered contents.
|
||||
co_await winrt::resume_background();
|
||||
@@ -3040,7 +3322,30 @@ namespace winrt::TerminalApp::implementation
|
||||
// This will end up calling ConptyConnection::WriteInput which calls WriteFile which may block for
|
||||
// an indefinite amount of time. Avoid freezes and deadlocks by running this on a background thread.
|
||||
assert(!dispatcher.HasThreadAccess());
|
||||
eventArgs.HandleClipboardData(std::move(text));
|
||||
eventArgs.HandleClipboardData(text);
|
||||
|
||||
// GH#18821: If broadcast input is active, paste the same text into all other
|
||||
// panes on the tab. We do this here (rather than re-reading the
|
||||
// clipboard per-pane) so that only one paste warning is shown.
|
||||
co_await wil::resume_foreground(dispatcher);
|
||||
if (const auto strongThis = weakThis.get())
|
||||
{
|
||||
if (const auto& tab{ strongThis->_GetFocusedTabImpl() })
|
||||
{
|
||||
if (tab->TabStatus().IsInputBroadcastActive())
|
||||
{
|
||||
tab->GetRootPane()->WalkTree([&](auto&& pane) {
|
||||
if (const auto control = pane->GetTerminalControl())
|
||||
{
|
||||
if (control.ContentId() != sourceId && !control.ReadOnly())
|
||||
{
|
||||
control.RawWriteString(text);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
CATCH_LOG();
|
||||
|
||||
@@ -3205,8 +3510,12 @@ namespace winrt::TerminalApp::implementation
|
||||
// - eventArgs: the arguments specifying how to set the progress indicator
|
||||
safe_void_coroutine TerminalPage::_SetTaskbarProgressHandler(const IInspectable /*sender*/, const IInspectable /*eventArgs*/)
|
||||
{
|
||||
const auto weak = get_weak();
|
||||
co_await wil::resume_foreground(Dispatcher());
|
||||
SetTaskbarProgress.raise(*this, nullptr);
|
||||
if (const auto strong = weak.get())
|
||||
{
|
||||
SetTaskbarProgress.raise(*this, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
@@ -3263,6 +3572,12 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
|
||||
const auto weak = get_weak();
|
||||
const auto dispatcher = Dispatcher();
|
||||
|
||||
// All of the code until resume_foreground is static and
|
||||
// doesn't touch `this`, so we don't need weak/strong_ref.
|
||||
co_await winrt::resume_background();
|
||||
|
||||
// no packages were found, nothing to suggest
|
||||
@@ -3280,7 +3595,12 @@ namespace winrt::TerminalApp::implementation
|
||||
suggestions.emplace_back(fmt::format(FMT_COMPILE(L"winget install --id {} -s winget"), pkg.CatalogPackage().Id()));
|
||||
}
|
||||
|
||||
co_await wil::resume_foreground(Dispatcher());
|
||||
co_await wil::resume_foreground(dispatcher);
|
||||
const auto strong = weak.get();
|
||||
if (!strong)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
|
||||
auto term = _GetActiveControl();
|
||||
if (!term)
|
||||
@@ -3335,24 +3655,6 @@ namespace winrt::TerminalApp::implementation
|
||||
// - Paste text from the Windows Clipboard to the focused terminal
|
||||
void TerminalPage::_PasteText()
|
||||
{
|
||||
// First, check if we're in broadcast input mode. If so, let's tell all
|
||||
// the controls to paste.
|
||||
if (const auto& tab{ _GetFocusedTabImpl() })
|
||||
{
|
||||
if (tab->TabStatus().IsInputBroadcastActive())
|
||||
{
|
||||
tab->GetRootPane()->WalkTree([](auto&& pane) {
|
||||
if (auto control = pane->GetTerminalControl())
|
||||
{
|
||||
control.PasteTextFromClipboard();
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// The focused tab wasn't in broadcast mode. No matter. Just ask the
|
||||
// current one to paste.
|
||||
if (const auto& control{ _GetActiveControl() })
|
||||
{
|
||||
control.PasteTextFromClipboard();
|
||||
@@ -3375,6 +3677,9 @@ namespace winrt::TerminalApp::implementation
|
||||
// UI) thread. This is IMPORTANT, because the Windows.Storage API's
|
||||
// (used for retrieving the path to the file) will crash on the UI
|
||||
// thread, because the main thread is a STA.
|
||||
//
|
||||
// NOTE: All remaining code of this function doesn't touch `this`, so we don't need weak/strong_ref.
|
||||
// NOTE NOTE: Don't touch `this` when you make changes here.
|
||||
co_await winrt::resume_background();
|
||||
|
||||
auto openFile = [](const auto& filePath) {
|
||||
@@ -4066,12 +4371,12 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
constexpr auto lightnessThreshold = 0.6f;
|
||||
// TODO GH#3327: Look at what to do with the tab button when we have XAML theming
|
||||
const auto IsBrightColor = ColorFix::GetLightness(color) >= lightnessThreshold;
|
||||
const auto isBrightColor = ColorFix::GetLightness(color) >= lightnessThreshold;
|
||||
const auto isLightAccentColor = ColorFix::GetLightness(accentColor) >= lightnessThreshold;
|
||||
const auto hoverColorAdjustment = isLightAccentColor ? -0.05f : 0.05f;
|
||||
const auto pressedColorAdjustment = isLightAccentColor ? -0.1f : 0.1f;
|
||||
|
||||
const auto foregroundColor = IsBrightColor ? Colors::Black() : Colors::White();
|
||||
const auto foregroundColor = isBrightColor ? Colors::Black() : Colors::White();
|
||||
const auto hoverColor = til::color{ ColorFix::AdjustLightness(accentColor, hoverColorAdjustment) };
|
||||
const auto pressedColor = til::color{ ColorFix::AdjustLightness(accentColor, pressedColorAdjustment) };
|
||||
|
||||
@@ -4736,12 +5041,18 @@ namespace winrt::TerminalApp::implementation
|
||||
// - sender: the ICoreState instance containing the connection state
|
||||
// Return Value:
|
||||
// - <none>
|
||||
safe_void_coroutine TerminalPage::_ConnectionStateChangedHandler(const IInspectable& sender, const IInspectable& /*args*/) const
|
||||
safe_void_coroutine TerminalPage::_ConnectionStateChangedHandler(const IInspectable& sender, const IInspectable& /*args*/)
|
||||
{
|
||||
if (const auto coreState{ sender.try_as<winrt::Microsoft::Terminal::Control::ICoreState>() })
|
||||
{
|
||||
const auto newConnectionState = coreState.ConnectionState();
|
||||
const auto weak = get_weak();
|
||||
co_await wil::resume_foreground(Dispatcher());
|
||||
const auto strong = weak.get();
|
||||
if (!strong)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
|
||||
_adjustProcessPriorityThrottled->Run();
|
||||
|
||||
@@ -4914,7 +5225,7 @@ namespace winrt::TerminalApp::implementation
|
||||
TitlebarBrush(backgroundSolidBrush);
|
||||
}
|
||||
|
||||
if (!_settings.GlobalSettings().ShowTabsInTitlebar())
|
||||
if (_tabPosition != TabPosition::Top || !_settings.GlobalSettings().ShowTabsInTitlebar())
|
||||
{
|
||||
_tabRow.Background(TitlebarBrush());
|
||||
}
|
||||
@@ -4985,6 +5296,7 @@ namespace winrt::TerminalApp::implementation
|
||||
// will eat focus.
|
||||
_paneResources.focusedBorderBrush = SolidColorBrush{ Colors::Black() };
|
||||
}
|
||||
_tabStripSplitter.Background(_paneResources.focusedBorderBrush);
|
||||
|
||||
const auto unfocusedBorderBrushKey = winrt::box_value(L"UnfocusedBorderBrush");
|
||||
if (res.HasKey(unfocusedBorderBrushKey))
|
||||
|
||||
@@ -227,6 +227,9 @@ namespace winrt::TerminalApp::implementation
|
||||
Microsoft::UI::Xaml::Controls::SplitButton _newTabButton{ nullptr };
|
||||
winrt::TerminalApp::ColorPickupFlyout _tabColorPicker{ nullptr };
|
||||
|
||||
Microsoft::Terminal::Settings::Model::TabPosition _tabPosition{ Microsoft::Terminal::Settings::Model::TabPosition::Top };
|
||||
Windows::UI::Xaml::Controls::Border _tabStripSplitter{ nullptr };
|
||||
|
||||
Microsoft::Terminal::Settings::Model::CascadiaSettings _settings{ nullptr };
|
||||
|
||||
Windows::Foundation::Collections::IObservableVector<TerminalApp::Tab> _tabs;
|
||||
@@ -243,6 +246,11 @@ namespace winrt::TerminalApp::implementation
|
||||
bool _isAlwaysOnTop{ false };
|
||||
bool _showTabsFullscreen{ false };
|
||||
|
||||
// Splitter drag state for left/right tab positions
|
||||
bool _splitterDragging{ false };
|
||||
double _splitterDragStartX{ 0.0 };
|
||||
double _splitterDragStartWidth{ 0.0 };
|
||||
|
||||
std::optional<uint32_t> _loadFromPersistedLayoutIdx{};
|
||||
|
||||
bool _rearranging{ false };
|
||||
@@ -342,6 +350,7 @@ namespace winrt::TerminalApp::implementation
|
||||
void _UpdateTabIcon(Tab& tab);
|
||||
void _UpdateTabView();
|
||||
void _UpdateTabWidthMode();
|
||||
void _ApplyTabPosition();
|
||||
void _SetBackgroundImage(const winrt::Microsoft::Terminal::Settings::Model::IAppearanceConfig& newAppearance);
|
||||
|
||||
void _DuplicateFocusedTab();
|
||||
@@ -526,7 +535,7 @@ namespace winrt::TerminalApp::implementation
|
||||
const winrt::Microsoft::Terminal::Settings::Model::Profile& profile);
|
||||
void _OpenElevatedWT(winrt::Microsoft::Terminal::Settings::Model::NewTerminalArgs newTerminalArgs);
|
||||
|
||||
safe_void_coroutine _ConnectionStateChangedHandler(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args) const;
|
||||
safe_void_coroutine _ConnectionStateChangedHandler(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args);
|
||||
void _CloseOnExitInfoDismissHandler(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args) const;
|
||||
void _KeyboardServiceWarningInfoDismissHandler(const winrt::Windows::Foundation::IInspectable& sender, const winrt::Windows::Foundation::IInspectable& args) const;
|
||||
static bool _IsMessageDismissed(const winrt::Microsoft::Terminal::Settings::Model::InfoBarMessage& message);
|
||||
@@ -542,7 +551,7 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
void _ShowWindowChangedHandler(const IInspectable sender, const winrt::Microsoft::Terminal::Control::ShowWindowArgs args);
|
||||
Windows::Foundation::IAsyncAction _SearchMissingCommandHandler(const IInspectable sender, const winrt::Microsoft::Terminal::Control::SearchMissingCommandEventArgs args);
|
||||
Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<winrt::Microsoft::Management::Deployment::MatchResult>> _FindPackageAsync(hstring query);
|
||||
static Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<winrt::Microsoft::Management::Deployment::MatchResult>> _FindPackageAsync(hstring query);
|
||||
|
||||
void _WindowSizeChanged(const IInspectable sender, const winrt::Microsoft::Terminal::Control::WindowSizeChangedEventArgs args);
|
||||
void _windowPropertyChanged(const IInspectable& sender, const winrt::Windows::UI::Xaml::Data::PropertyChangedEventArgs& args);
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
Grid.Row="0"
|
||||
KeyUp="_KeyDownHandler" />
|
||||
|
||||
<StackPanel Grid.Row="1"
|
||||
<StackPanel x:Name="InfoBarPanel"
|
||||
Grid.Row="1"
|
||||
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
||||
<mux:InfoBar x:Name="KeyboardServiceWarningInfoBar"
|
||||
x:Load="False"
|
||||
@@ -84,29 +85,34 @@
|
||||
|
||||
<local:AboutDialog x:Name="AboutDialog"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
x:Load="False" />
|
||||
|
||||
<ContentDialog x:Name="QuitDialog"
|
||||
x:Uid="QuitDialog"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
x:Load="False"
|
||||
DefaultButton="Primary" />
|
||||
|
||||
<ContentDialog x:Name="CloseAllDialog"
|
||||
x:Uid="CloseAllDialog"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
x:Load="False"
|
||||
DefaultButton="Primary" />
|
||||
|
||||
<ContentDialog x:Name="CloseReadOnlyDialog"
|
||||
x:Uid="CloseReadOnlyDialog"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
x:Load="False"
|
||||
DefaultButton="Close" />
|
||||
|
||||
<ContentDialog x:Name="MultiLinePasteDialog"
|
||||
x:Uid="MultiLinePasteDialog"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
x:Load="False"
|
||||
DefaultButton="Primary">
|
||||
<StackPanel>
|
||||
@@ -127,12 +133,14 @@
|
||||
<ContentDialog x:Name="LargePasteDialog"
|
||||
x:Uid="LargePasteDialog"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
x:Load="False"
|
||||
DefaultButton="Primary" />
|
||||
|
||||
<ContentDialog x:Name="ControlNoticeDialog"
|
||||
x:Uid="ControlNoticeDialog"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
x:Load="False"
|
||||
DefaultButton="Primary">
|
||||
<TextBlock IsTextSelectionEnabled="True"
|
||||
@@ -147,6 +155,7 @@
|
||||
<ContentDialog x:Name="CouldNotOpenUriDialog"
|
||||
x:Uid="CouldNotOpenUriDialog"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
x:Load="False"
|
||||
DefaultButton="Primary">
|
||||
<TextBlock IsTextSelectionEnabled="True"
|
||||
@@ -162,6 +171,7 @@
|
||||
|
||||
<local:CommandPalette x:Name="CommandPaletteElement"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
VerticalAlignment="Stretch"
|
||||
x:Load="False"
|
||||
PreviewKeyDown="_KeyDownHandler"
|
||||
@@ -169,6 +179,7 @@
|
||||
|
||||
<local:SuggestionsControl x:Name="SuggestionsElement"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Top"
|
||||
x:Load="False"
|
||||
|
||||
@@ -270,6 +270,16 @@ namespace winrt::TerminalApp::implementation
|
||||
return _settings.GlobalSettings().ShowTabsInTitlebar();
|
||||
}
|
||||
|
||||
Microsoft::Terminal::Settings::Model::TabPosition TerminalWindow::GetTabPosition()
|
||||
{
|
||||
auto theme = Theme();
|
||||
if (auto window = theme.Window())
|
||||
{
|
||||
return window.TabPosition();
|
||||
}
|
||||
return Microsoft::Terminal::Settings::Model::TabPosition::Top;
|
||||
}
|
||||
|
||||
bool TerminalWindow::GetInitialAlwaysOnTop()
|
||||
{
|
||||
return _settings.GlobalSettings().AlwaysOnTop();
|
||||
@@ -323,6 +333,10 @@ namespace winrt::TerminalApp::implementation
|
||||
// - an IAsyncOperation with the dialog result
|
||||
winrt::Windows::Foundation::IAsyncOperation<ContentDialogResult> TerminalWindow::ShowDialog(winrt::WUX::Controls::ContentDialog dialog)
|
||||
{
|
||||
const auto weak = get_weak();
|
||||
const auto dispatcher = _root->Dispatcher();
|
||||
const auto root = _root->XamlRoot();
|
||||
|
||||
// As mentioned on s_activeDialog, dismissing the active dialog is necessary.
|
||||
// We repeat it a few times in case the resume_foreground failed to work,
|
||||
// but I found that one iteration will always be enough in practice.
|
||||
@@ -336,7 +350,7 @@ namespace winrt::TerminalApp::implementation
|
||||
s_activeDialog.Hide();
|
||||
|
||||
// Wait for the current dialog to be hidden.
|
||||
co_await wil::resume_foreground(_root->Dispatcher(), CoreDispatcherPriority::Low);
|
||||
co_await wil::resume_foreground(dispatcher, CoreDispatcherPriority::Low);
|
||||
}
|
||||
|
||||
// If two sources call ShowDialog() simultaneously, it may happen that both enter the above loop,
|
||||
@@ -353,7 +367,7 @@ namespace winrt::TerminalApp::implementation
|
||||
// IMPORTANT: This is necessary as documented in the ContentDialog MSDN docs.
|
||||
// Since we're hosting the dialog in a Xaml island, we need to connect it to the
|
||||
// xaml tree somehow.
|
||||
dialog.XamlRoot(_root->XamlRoot());
|
||||
dialog.XamlRoot(root);
|
||||
|
||||
// IMPORTANT: Set the requested theme of the dialog, because the
|
||||
// PopupRoot isn't directly in the Xaml tree of our root. So the dialog
|
||||
@@ -367,14 +381,17 @@ namespace winrt::TerminalApp::implementation
|
||||
// theme on each element up to the root. We're relying a bit on Xaml's implementation
|
||||
// details here, but it does have the desired effect.
|
||||
// It's not enough to set the theme on the dialog alone.
|
||||
auto themingLambda{ [this](const Windows::Foundation::IInspectable& sender, const RoutedEventArgs&) {
|
||||
auto theme{ _settings.GlobalSettings().CurrentTheme() };
|
||||
auto requestedTheme{ theme.RequestedTheme() };
|
||||
auto element{ sender.try_as<winrt::Windows::UI::Xaml::FrameworkElement>() };
|
||||
while (element)
|
||||
auto themingLambda{ [weak](const Windows::Foundation::IInspectable& sender, const RoutedEventArgs&) {
|
||||
if (const auto strong = weak.get())
|
||||
{
|
||||
element.RequestedTheme(requestedTheme);
|
||||
element = element.Parent().try_as<winrt::Windows::UI::Xaml::FrameworkElement>();
|
||||
auto theme{ strong->_settings.GlobalSettings().CurrentTheme() };
|
||||
auto requestedTheme{ theme.RequestedTheme() };
|
||||
auto element{ sender.try_as<winrt::Windows::UI::Xaml::FrameworkElement>() };
|
||||
while (element)
|
||||
{
|
||||
element.RequestedTheme(requestedTheme);
|
||||
element = element.Parent().try_as<winrt::Windows::UI::Xaml::FrameworkElement>();
|
||||
}
|
||||
}
|
||||
} };
|
||||
|
||||
@@ -894,6 +911,11 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
// Manually bubble the OnDirectKeyEvent event up through the focus tree.
|
||||
auto xamlRoot{ _root->XamlRoot() };
|
||||
if (!xamlRoot)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
auto focusedObject{ Windows::UI::Xaml::Input::FocusManager::GetFocusedElement(xamlRoot) };
|
||||
do
|
||||
{
|
||||
@@ -1393,9 +1415,7 @@ namespace winrt::TerminalApp::implementation
|
||||
// - a string for displaying the name of the window.
|
||||
winrt::hstring WindowProperties::WindowIdForDisplay() const noexcept
|
||||
{
|
||||
return winrt::hstring{ fmt::format(FMT_COMPILE(L"{}: {}"),
|
||||
std::wstring_view(RS_(L"WindowIdLabel")),
|
||||
_WindowId) };
|
||||
return til::hstring_format(FMT_COMPILE(L"{}: {}"), std::wstring_view(RS_(L"WindowIdLabel")), _WindowId);
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
@@ -1406,9 +1426,7 @@ namespace winrt::TerminalApp::implementation
|
||||
// - a string for displaying the name of the window.
|
||||
winrt::hstring WindowProperties::WindowNameForDisplay() const noexcept
|
||||
{
|
||||
return _WindowName.empty() ?
|
||||
winrt::hstring{ fmt::format(FMT_COMPILE(L"<{}>"), RS_(L"UnnamedWindowName")) } :
|
||||
_WindowName;
|
||||
return _WindowName.empty() ? til::hstring_format(FMT_COMPILE(L"<{}>"), RS_(L"UnnamedWindowName")) : _WindowName;
|
||||
}
|
||||
|
||||
bool WindowProperties::IsQuakeWindow() const noexcept
|
||||
|
||||
@@ -106,6 +106,7 @@ namespace winrt::TerminalApp::implementation
|
||||
winrt::Windows::UI::Xaml::ElementTheme GetRequestedTheme();
|
||||
Microsoft::Terminal::Settings::Model::LaunchMode GetLaunchMode();
|
||||
bool GetShowTabsInTitlebar();
|
||||
Microsoft::Terminal::Settings::Model::TabPosition GetTabPosition();
|
||||
bool GetInitialAlwaysOnTop();
|
||||
bool GetInitialShowTabsFullscreen();
|
||||
float CalcSnappedDimension(const bool widthOrHeight, const float dimension) const;
|
||||
|
||||
@@ -84,6 +84,7 @@ namespace TerminalApp
|
||||
Windows.UI.Xaml.ElementTheme GetRequestedTheme();
|
||||
Microsoft.Terminal.Settings.Model.LaunchMode GetLaunchMode();
|
||||
Boolean GetShowTabsInTitlebar();
|
||||
Microsoft.Terminal.Settings.Model.TabPosition GetTabPosition();
|
||||
Boolean GetInitialAlwaysOnTop();
|
||||
Boolean GetInitialShowTabsFullscreen();
|
||||
Single CalcSnappedDimension(Boolean widthOrHeight, Single dimension);
|
||||
|
||||
@@ -53,6 +53,16 @@ namespace winrt::TerminalApp::implementation
|
||||
return static_cast<float>(minMaxCloseWidth) / 3.0f;
|
||||
}
|
||||
|
||||
bool TitlebarControl::Focused()
|
||||
{
|
||||
return MinMaxCloseControl().Focused();
|
||||
}
|
||||
|
||||
void TitlebarControl::Focused(bool focused)
|
||||
{
|
||||
MinMaxCloseControl().Focused(focused);
|
||||
}
|
||||
|
||||
IInspectable TitlebarControl::Content()
|
||||
{
|
||||
return ContentRoot().Content();
|
||||
|
||||
@@ -17,6 +17,9 @@ namespace winrt::TerminalApp::implementation
|
||||
void ReleaseButtons();
|
||||
float CaptionButtonWidth();
|
||||
|
||||
bool Focused();
|
||||
void Focused(bool focused);
|
||||
|
||||
IInspectable Content();
|
||||
void Content(IInspectable content);
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ namespace TerminalApp
|
||||
void ClickButton(CaptionButton button);
|
||||
void ReleaseButtons();
|
||||
Single CaptionButtonWidth { get; };
|
||||
Boolean Focused { get; set; };
|
||||
|
||||
IInspectable Content;
|
||||
Windows.UI.Xaml.Controls.Border DragBar { get; };
|
||||
|
||||
268
src/cascadia/TerminalApp/VerticalTabViewStyle.xaml
Normal file
268
src/cascadia/TerminalApp/VerticalTabViewStyle.xaml
Normal file
@@ -0,0 +1,268 @@
|
||||
<!--
|
||||
Copyright (c) Microsoft Corporation. All rights reserved. Licensed under
|
||||
the MIT License. See LICENSE in the project root for license information.
|
||||
|
||||
Retemplated styles for vertical (Left/Right) tab strip orientation.
|
||||
These styles override the horizontal TabView layout to stack tabs vertically
|
||||
in a sidebar configuration.
|
||||
-->
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mux="using:Microsoft.UI.Xaml.Controls"
|
||||
xmlns:primitives="using:Microsoft.UI.Xaml.Controls.Primitives">
|
||||
|
||||
<!--
|
||||
VerticalTabViewListViewStyle:
|
||||
Override the ItemsPanel to use vertical orientation and switch scrolling
|
||||
from horizontal to vertical.
|
||||
-->
|
||||
<Style x:Key="VerticalTabViewListViewStyle"
|
||||
TargetType="primitives:TabViewListView">
|
||||
<Setter Property="TabNavigation" Value="Once" />
|
||||
<Setter Property="IsItemClickEnabled" Value="True" />
|
||||
<Setter Property="IsSwipeEnabled" Value="False" />
|
||||
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
|
||||
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
|
||||
<Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled" />
|
||||
<Setter Property="ScrollViewer.VerticalScrollMode" Value="Enabled" />
|
||||
<Setter Property="ScrollViewer.IsHorizontalRailEnabled" Value="False" />
|
||||
<Setter Property="ScrollViewer.IsVerticalRailEnabled" Value="True" />
|
||||
<Setter Property="SingleSelectionFollowsFocus" Value="False" />
|
||||
<Setter Property="ItemContainerTransitions">
|
||||
<Setter.Value>
|
||||
<TransitionCollection>
|
||||
<AddDeleteThemeTransition />
|
||||
<ContentThemeTransition />
|
||||
<ReorderThemeTransition />
|
||||
</TransitionCollection>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="ItemsPanel">
|
||||
<Setter.Value>
|
||||
<ItemsPanelTemplate>
|
||||
<ItemsStackPanel Orientation="Vertical" />
|
||||
</ItemsPanelTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!--
|
||||
VerticalTabViewStyle:
|
||||
Retemplate the TabView control for a vertical sidebar layout.
|
||||
Instead of 4 columns in TabContainerGrid, we use 3 rows:
|
||||
Row 0 (Auto): Header (elevation shield)
|
||||
Row 1 (*): Tab list (fills vertical space)
|
||||
Row 2 (Auto): Footer (new tab button)
|
||||
The TabContentPresenter is removed — WT doesn't use it.
|
||||
-->
|
||||
<Style x:Key="VerticalTabViewStyle"
|
||||
TargetType="mux:TabView">
|
||||
<Setter Property="VerticalAlignment" Value="Stretch" />
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch" />
|
||||
<Setter Property="IsTabStop" Value="False" />
|
||||
<Setter Property="TabNavigation" Value="Once" />
|
||||
<Setter Property="IsAddTabButtonVisible" Value="False" />
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="mux:TabView">
|
||||
<Grid x:Name="TabContainerGrid">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Header (elevation shield, etc.) -->
|
||||
<ContentPresenter x:Name="LeftContentPresenter"
|
||||
Grid.Row="0"
|
||||
Content="{TemplateBinding TabStripHeader}"
|
||||
ContentTemplate="{TemplateBinding TabStripHeaderTemplate}" />
|
||||
|
||||
<!-- Tab list -->
|
||||
<primitives:TabViewListView x:Name="TabListView"
|
||||
Grid.Row="1"
|
||||
AllowDrop="{TemplateBinding AllowDropTabs}"
|
||||
CanDragItems="{TemplateBinding CanDragTabs}"
|
||||
CanReorderItems="{TemplateBinding CanReorderTabs}"
|
||||
ItemTemplate="{TemplateBinding TabItemTemplate}"
|
||||
ItemTemplateSelector="{TemplateBinding TabItemTemplateSelector}"
|
||||
ItemsSource="{TemplateBinding TabItemsSource}"
|
||||
Style="{StaticResource VerticalTabViewListViewStyle}" />
|
||||
|
||||
<!-- Footer (new tab button) -->
|
||||
<ContentPresenter x:Name="RightContentPresenter"
|
||||
Grid.Row="2"
|
||||
Content="{TemplateBinding TabStripFooter}"
|
||||
ContentTemplate="{TemplateBinding TabStripFooterTemplate}" />
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!--
|
||||
VerticalTabViewItemStyle:
|
||||
Simplified TabViewItem template for vertical tabs.
|
||||
Removes curved corner arcs, replaces with rounded Border and a
|
||||
left-edge accent bar for the selected tab. Tabs fill strip width.
|
||||
-->
|
||||
<Style x:Key="VerticalTabViewItemStyle"
|
||||
TargetType="mux:TabViewItem">
|
||||
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
||||
<Setter Property="UseSystemFocusVisuals" Value="{StaticResource UseSystemFocusVisuals}" />
|
||||
<Setter Property="Padding" Value="8,6,8,6" />
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="mux:TabViewItem">
|
||||
<Grid x:Name="LayoutRoot"
|
||||
Margin="2,1,2,1">
|
||||
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup x:Name="CommonStates">
|
||||
<VisualState x:Name="Normal">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="TabContainer.Background" Value="Transparent" />
|
||||
<Setter Target="SelectedIndicator.Opacity" Value="0" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
<VisualState x:Name="PointerOver">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="TabContainer.Background" Value="{ThemeResource TabViewItemHeaderBackgroundPointerOver}" />
|
||||
<Setter Target="SelectedIndicator.Opacity" Value="0" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
<VisualState x:Name="Pressed">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="TabContainer.Background" Value="{ThemeResource TabViewItemHeaderBackgroundPressed}" />
|
||||
<Setter Target="SelectedIndicator.Opacity" Value="0" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
<VisualState x:Name="Selected">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="TabContainer.Background" Value="{ThemeResource TabViewItemHeaderBackgroundSelected}" />
|
||||
<Setter Target="SelectedIndicator.Opacity" Value="1" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
<VisualState x:Name="PointerOverSelected">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="TabContainer.Background" Value="{ThemeResource TabViewItemHeaderBackgroundSelected}" />
|
||||
<Setter Target="SelectedIndicator.Opacity" Value="1" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
|
||||
<VisualState x:Name="PressedSelected">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="TabContainer.Background" Value="{ThemeResource TabViewItemHeaderBackgroundPressed}" />
|
||||
<Setter Target="SelectedIndicator.Opacity" Value="1" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
|
||||
<VisualStateGroup x:Name="CloseButtonOverlayModeStates">
|
||||
<VisualState x:Name="CloseButtonVisible" />
|
||||
<VisualState x:Name="CloseButtonCollapsed">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="CloseButton.Visibility" Value="Collapsed" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
|
||||
<VisualStateGroup x:Name="TabViewWidthModeStates">
|
||||
<!-- In vertical mode, tabs always stretch to full width -->
|
||||
<VisualState x:Name="StandardWidth" />
|
||||
<VisualState x:Name="Compact" />
|
||||
</VisualStateGroup>
|
||||
|
||||
<VisualStateGroup x:Name="IconStates">
|
||||
<VisualState x:Name="Icon" />
|
||||
<VisualState x:Name="NoIcon">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="IconBox.Visibility" Value="Collapsed" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
|
||||
<VisualStateGroup x:Name="DisabledStates">
|
||||
<VisualState x:Name="Enabled" />
|
||||
<VisualState x:Name="Disabled">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="LayoutRoot.Opacity" Value="{ThemeResource ListViewItemDisabledThemeOpacity}" />
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
|
||||
<!-- Selected tab background -->
|
||||
<Border x:Name="TabContainer"
|
||||
Background="Transparent"
|
||||
CornerRadius="{ThemeResource ControlCornerRadius}"
|
||||
Padding="{TemplateBinding Padding}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition x:Name="IconColumn"
|
||||
Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<!-- Tab icon -->
|
||||
<Viewbox x:Name="IconBox"
|
||||
Grid.Column="0"
|
||||
MaxWidth="16"
|
||||
MaxHeight="16"
|
||||
Margin="0,0,8,0">
|
||||
<ContentControl x:Name="IconControl"
|
||||
Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TabViewTemplateSettings.IconElement}"
|
||||
IsTabStop="False" />
|
||||
</Viewbox>
|
||||
|
||||
<!-- Tab title -->
|
||||
<ContentPresenter x:Name="ContentPresenter"
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
Content="{TemplateBinding Header}"
|
||||
ContentTemplate="{TemplateBinding HeaderTemplate}"
|
||||
ContentTransitions="{TemplateBinding ContentTransitions}"
|
||||
FontWeight="{TemplateBinding FontWeight}"
|
||||
TextWrapping="NoWrap" />
|
||||
|
||||
<!-- Close button -->
|
||||
<Button x:Name="CloseButton"
|
||||
Grid.Column="2"
|
||||
Width="20"
|
||||
Height="20"
|
||||
Margin="4,0,0,0"
|
||||
Padding="0"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Center"
|
||||
Background="Transparent"
|
||||
BorderThickness="0"
|
||||
Content=""
|
||||
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="10"
|
||||
IsTextScaleFactorEnabled="False" />
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<!-- Left-edge accent bar for selected tab -->
|
||||
<Border x:Name="SelectedIndicator"
|
||||
Width="3"
|
||||
Height="16"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
Background="{ThemeResource AccentFillColorDefaultBrush}"
|
||||
CornerRadius="2"
|
||||
Opacity="0" />
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
</ResourceDictionary>
|
||||
@@ -31,7 +31,7 @@ Author(s):
|
||||
using NewHandoffFunction = HRESULT (*)(HANDLE* in, HANDLE* out, HANDLE signal, HANDLE reference, HANDLE server, HANDLE client, const TERMINAL_STARTUP_INFO* startupInfo);
|
||||
|
||||
struct __declspec(uuid(__CLSID_CTerminalHandoff))
|
||||
CTerminalHandoff : public Microsoft::WRL::RuntimeClass<Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::RuntimeClassType::ClassicCom>, ITerminalHandoff3>
|
||||
CTerminalHandoff : public Microsoft::WRL::RuntimeClass<Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::RuntimeClassType::ClassicCom>, ITerminalHandoff3>
|
||||
{
|
||||
#pragma region ITerminalHandoff
|
||||
STDMETHODIMP EstablishPtyHandoff(HANDLE* in, HANDLE* out, HANDLE signal, HANDLE reference, HANDLE server, HANDLE client, const TERMINAL_STARTUP_INFO* startupInfo) override;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
@@ -209,7 +209,7 @@
|
||||
</data>
|
||||
<data name="CtrlDToClose" xml:space="preserve">
|
||||
<value>Сада можете да затворите овај терминал са Ctrl+D, или да притиснете Ентер да га поново покренете.</value>
|
||||
<comment>"Ctrl+D" and "Enter" represent keys the user will press (control+D and Enter).</comment>
|
||||
<comment>"Ctrl+D" and "Enter" represent keys the user will press (control+D and Enter).</comment>
|
||||
</data>
|
||||
<data name="ProcessFailedToLaunch" xml:space="preserve">
|
||||
<value>[грешка {0} приликом покретања `{1}']</value>
|
||||
@@ -220,7 +220,7 @@
|
||||
<value>Не може да се приступи почетном директоријуму „{0}”</value>
|
||||
<comment>The first argument {0} is a path to a directory on the filesystem, as provided by the user.</comment>
|
||||
</data>
|
||||
<data name="ElevationRequired" xml:space="preserve">
|
||||
<data name="ElevationRequired" xml:space="preserve">
|
||||
<value>Тражена операција захтева веће привилегије.</value>
|
||||
</data>
|
||||
<data name="FileNotFound" xml:space="preserve">
|
||||
|
||||
@@ -1736,7 +1736,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
// - resetOnly: If true, only Reset() will be called, if anything. FindNext() will never be called.
|
||||
// Return Value:
|
||||
// - <none>
|
||||
SearchResults ControlCore::Search(SearchRequest request)
|
||||
SearchResults ControlCore::Search(const SearchRequest& request)
|
||||
{
|
||||
const auto lock = _terminal->LockForWriting();
|
||||
|
||||
@@ -1745,15 +1745,9 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
WI_SetFlagIf(flags, SearchFlag::RegularExpression, request.RegularExpression);
|
||||
const auto searchInvalidated = _searcher.IsStale(*_terminal.get(), request.Text, flags);
|
||||
|
||||
if (searchInvalidated || !request.ResetOnly)
|
||||
if (searchInvalidated || request.ExecuteSearch)
|
||||
{
|
||||
std::vector<til::point_span> oldResults;
|
||||
til::point_span oldFocused;
|
||||
|
||||
if (const auto focused = _terminal->GetSearchHighlightFocused())
|
||||
{
|
||||
oldFocused = *focused;
|
||||
}
|
||||
|
||||
if (searchInvalidated)
|
||||
{
|
||||
@@ -1762,18 +1756,18 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
_terminal->SetSearchHighlights(_searcher.Results());
|
||||
}
|
||||
|
||||
if (!request.ResetOnly)
|
||||
if (request.ExecuteSearch)
|
||||
{
|
||||
_searcher.FindNext(!request.GoForward);
|
||||
}
|
||||
|
||||
_terminal->SetSearchHighlightFocused(gsl::narrow<size_t>(std::max<ptrdiff_t>(0, _searcher.CurrentMatch())));
|
||||
_renderer->TriggerSearchHighlight(oldResults);
|
||||
}
|
||||
|
||||
if (const auto focused = _terminal->GetSearchHighlightFocused(); focused && *focused != oldFocused)
|
||||
{
|
||||
_terminal->ScrollToSearchHighlight(request.ScrollOffset);
|
||||
}
|
||||
if (request.ScrollIntoView)
|
||||
{
|
||||
_terminal->ScrollToSearchHighlight(request.ScrollOffset);
|
||||
}
|
||||
|
||||
int32_t totalMatches = 0;
|
||||
|
||||
@@ -225,7 +225,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
void SetSelectionAnchor(const til::point position);
|
||||
void SetEndSelectionPoint(const til::point position);
|
||||
|
||||
SearchResults Search(SearchRequest request);
|
||||
SearchResults Search(const SearchRequest& request);
|
||||
const std::vector<til::point_span>& SearchResultRows() const noexcept;
|
||||
void ClearSearch();
|
||||
|
||||
|
||||
@@ -55,7 +55,8 @@ namespace Microsoft.Terminal.Control
|
||||
Boolean GoForward;
|
||||
Boolean CaseSensitive;
|
||||
Boolean RegularExpression;
|
||||
Boolean ResetOnly;
|
||||
Boolean ExecuteSearch;
|
||||
Boolean ScrollIntoView;
|
||||
Int32 ScrollOffset;
|
||||
};
|
||||
|
||||
|
||||
@@ -958,7 +958,7 @@ void _stdcall TerminalSetTheme(void* terminal, TerminalTheme theme, LPCWSTR font
|
||||
for (size_t tableIndex = 0; tableIndex < 16; tableIndex++)
|
||||
{
|
||||
// It's using gsl::at to check the index is in bounds, but the analyzer still calls this array-to-pointer-decay
|
||||
GSL_SUPPRESS(bounds .3)
|
||||
GSL_SUPPRESS(bounds.3)
|
||||
renderSettings.SetColorTableEntry(tableIndex, gsl::at(theme.ColorTable, tableIndex));
|
||||
}
|
||||
|
||||
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>Ungültiger URI</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>Die ausgewählte Schriftart "{0}" wurde nicht gefunden.
|
||||
|
||||
"{1}" wurde stattdessen ausgewählt.
|
||||
|
||||
Installieren Sie entweder die fehlende Schriftart, oder wählen Sie eine andere aus.</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>Der angegebene Shader „{0}“ wurde nicht gefunden.</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@ Installieren Sie entweder die fehlende Schriftart, oder wählen Sie eine andere
|
||||
<value>Fehler beim Kompilieren des Pixel-Shaders: {0}</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>Unerwarteter Fehler beim Renderer: {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>Die folgenden Schriftarten wurden nicht gefunden: {0}. Installieren Sie sie, oder wählen Sie andere Schriftarten aus.</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@ Installieren Sie entweder die fehlende Schriftart, oder wählen Sie eine andere
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>Der schreibgeschützte Modus ist aktiviert.</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>Ergebnisse gefunden</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>Keine Ergebnisse gefunden</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>Einfügen</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@ Installieren Sie entweder die fehlende Schriftart, oder wählen Sie eine andere
|
||||
<value>Vorgeschlagene Eingabe: {0}</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0} von {1}</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>unbekannt</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>über 999</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -217,14 +217,6 @@
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>Read-only mode is enabled.</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>Results found</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>No results found</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>Paste</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -330,4 +322,16 @@
|
||||
<value>Suggested input: {0}</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
</root>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0} of {1}</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>unknown</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>over 999</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>URI no válido</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>No se puede encontrar la fuente "{0}" seleccionada.
|
||||
|
||||
Se seleccionó "{1}" en su lugar.
|
||||
|
||||
Instale la fuente que falta o elija otra.</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>No se encuentra el sombreador proporcionado "{0}".</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@ Instale la fuente que falta o elija otra.</value>
|
||||
<value>No se pudo compilar el sombreador de píxeles: {0}</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>El representador encontró un error inesperado: {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>No se pueden encontrar las siguientes fuentes: {0}. Instálelas o elija fuentes diferentes.</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@ Instale la fuente que falta o elija otra.</value>
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>El modo de solo lectura está habilitado.</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>Resultados encontrados</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>No se encontraron resultados</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>Pegar</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@ Instale la fuente que falta o elija otra.</value>
|
||||
<value>Entrada sugerida: {0}</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0} de {1}</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>desconocido</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>más de 999</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>URI non valide</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>Désolé # C0 nous ne trouvons pas le "{0}" de police sélectionné.
|
||||
|
||||
"{1}" a été sélectionné à la place.
|
||||
|
||||
Installez la police manquante ou choisissez-en une autre.</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>Désolé... Nous ne pouvons pas trouver le nuanceur "{0}" fourni.</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@ Installez la police manquante ou choisissez-en une autre.</value>
|
||||
<value>La compilation du nuanceur de pixels a échoué : {0}</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>Le convertisseur a rencontré une erreur inattendue : {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>Impossible de trouver les polices suivantes : {0}. Installez-les ou choisissez d’autres polices.</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@ Installez la police manquante ou choisissez-en une autre.</value>
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>Le mode lecture seule est activé.</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>Résultats trouvés</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>Aucun résultat trouvé</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>Coller</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@ Installez la police manquante ou choisissez-en une autre.</value>
|
||||
<value>Entrée suggérée : {0}</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0} sur {1}</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>inconnu</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>plus de 999</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>URI non valido</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>Impossibile trovare il tipo di carattere selezionato "{0}".
|
||||
|
||||
"{1}" selezionata.
|
||||
|
||||
Installare il tipo di carattere mancante o sceglierne un altro.</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>Non è possibile trovare lo shader specificato "{0}".</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@ Installare il tipo di carattere mancante o sceglierne un altro.</value>
|
||||
<value>Non è stato possibile compilare il pixel shader: {0}</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>Il renderer ha rilevato un errore imprevisto: {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>Impossibile trovare i tipi di carattere seguenti: {0}. Installarli o scegliere tipi di carattere diversi.</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@ Installare il tipo di carattere mancante o sceglierne un altro.</value>
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>La modalità di sola lettura è abilitata.</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>Risultati trovati</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>Non sono stati trovati risultati</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>Incolla</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@ Installare il tipo di carattere mancante o sceglierne un altro.</value>
|
||||
<value>Input suggerito: {0}</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0} di {1}</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>sconosciuto</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>oltre 999</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>無効な URI</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>選択されたフォント "{0}" が見つかりません。
|
||||
|
||||
代わりに "{1}" が選択されました。
|
||||
|
||||
不足しているフォントをインストールするか、別のフォントを選択してください。</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>指定されたシェーダー "{0}" が見つかりません。</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@
|
||||
<value>ピクセル シェーダーをコンパイルできませんでした: {0}</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>レンダラーで予期しないエラーが発生しました: {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>次のフォントが見つかりません: {0}。インストールするか、別のフォントを選択してください。</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>読み取り専用モードが有効になっています。</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>検索結果が見つかりました</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>該当する結果は見つかりませんでした</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>貼り付け</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@
|
||||
<value>推奨される入力: {0}</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0}/{1}</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>不明</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>999 を超える</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>잘못된 URI</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>선택한 글꼴 "{0}" 없습니다.
|
||||
|
||||
"{1}" 선택되었습니다.
|
||||
|
||||
누락된 글꼴을 설치하거나 다른 글꼴을 선택하세요.</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>제공된 셰이더 "{0}"을(를) 찾을 수 없습니다.</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@
|
||||
<value>픽셀 셰이더를 컴파일하지 못함: {0}</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>렌더러에서 예기치 않은 오류가 발생했습니다. {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>다음 글꼴을 찾을 수 없습니다. {0}. 설치하거나 다른 글꼴을 선택하세요.</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>읽기 전용 모드가 사용 설정됩니다.</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>결과 발견됨</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>검색 결과 없음</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>붙여넣기</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@
|
||||
<value>제안된 입력: {0}</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0}/{1}</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>알 수 없음</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>999개 이상</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>URI Inválida</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>Não é possível localizar a fonte selecionada "{0}".
|
||||
|
||||
O "{1}" foi selecionado.
|
||||
|
||||
Instale a fonte ausente ou escolha outra.</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>Não foi possível encontrar o sombreador fornecido "{0}".</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@ Instale a fonte ausente ou escolha outra.</value>
|
||||
<value>O sombreador de pixel não pôde ser compilado: {0}</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>O renderizador encontrou um erro inesperado: {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>Não é possível localizar as seguintes fontes: {0}. Instale-os ou escolha fontes diferentes.</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@ Instale a fonte ausente ou escolha outra.</value>
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>O modo somente leitura está habilitado.</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>Resultados encontrados</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>Nenhum resultado encontrado</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>Colar</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@ Instale a fonte ausente ou escolha outra.</value>
|
||||
<value>Entrada sugerida: {0}</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0} de {1}</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>desconhecido</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>mais de 999</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>Íņνãľîđ ÚŔİ !!!</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>Ůʼnäвľė ťö ƒΐńđ τħé şèℓ℮ĉťēδ ƒòñŧ "{0}". !!! !!! !!! !!!
|
||||
|
||||
"{1}" ђàś ъëęñ šеŀесťĕđ ιñśтёąδ. !!! !!! !!!
|
||||
|
||||
Ρℓēάŝę ėїţħěř ĭлşţäļł ťнз mîşśĭηģ ƒóⁿт òґ ¢ћōóşę άηŏťнєѓ ôŋє. !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>Üидьŀэ τθ ƒìņď ťнė ρяóνίðěď ŝђάðèѓ "{0}". !!! !!! !!! !!!</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@
|
||||
<value>Ρϊх℮ļ ŝħдďéг ƒâíłëđ тő čŏмφіļê: {0} !!! !!! !!! !</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>Řєʼnδέгęř зйĉóűňтëř℮δ âη ûⁿėхрєĉţēð ℮ѓґоŗ: {0} !!! !!! !!! !!! !</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>Цйǻьľė ŧò ƒіņð τнė ƒσℓľоŵíпğ ƒŏптš: {0}. Рĺёąšė èìťђėг ïŋŝţăĺℓ тħēm ôѓ ςђоōѕз ðįƒƒеřęʼnţ ƒóπţś. !!! !!! !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>Гėāδ-σπļỳ mőðê īŝ ėńäвļεδ. !!! !!! !</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>Γĕšµľţş ƒбŭⁿð !!! </value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>Ńō гēśџĺŧѕ ƒσúπđ !!! !</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>Рăşţε !</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@
|
||||
<value>Şůğğĕşŧеδ íήρύť: {0} !!! !!!</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
</root>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0} θƒ {1} !!!</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>üńќήöώʼn !!</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>оνэѓ 999 !!</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>Íņνãľîđ ÚŔİ !!!</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>Ůʼnäвľė ťö ƒΐńđ τħé şèℓ℮ĉťēδ ƒòñŧ "{0}". !!! !!! !!! !!!
|
||||
|
||||
"{1}" ђàś ъëęñ šеŀесťĕđ ιñśтёąδ. !!! !!! !!!
|
||||
|
||||
Ρℓēάŝę ėїţħěř ĭлşţäļł ťнз mîşśĭηģ ƒóⁿт òґ ¢ћōóşę άηŏťнєѓ ôŋє. !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>Üидьŀэ τθ ƒìņď ťнė ρяóνίðěď ŝђάðèѓ "{0}". !!! !!! !!! !!!</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@
|
||||
<value>Ρϊх℮ļ ŝħдďéг ƒâíłëđ тő čŏмφіļê: {0} !!! !!! !!! !</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>Řєʼnδέгęř зйĉóűňтëř℮δ âη ûⁿėхрєĉţēð ℮ѓґоŗ: {0} !!! !!! !!! !!! !</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>Цйǻьľė ŧò ƒіņð τнė ƒσℓľоŵíпğ ƒŏптš: {0}. Рĺёąšė èìťђėг ïŋŝţăĺℓ тħēm ôѓ ςђоōѕз ðįƒƒеřęʼnţ ƒóπţś. !!! !!! !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>Гėāδ-σπļỳ mőðê īŝ ėńäвļεδ. !!! !!! !</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>Γĕšµľţş ƒбŭⁿð !!! </value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>Ńō гēśџĺŧѕ ƒσúπđ !!! !</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>Рăşţε !</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@
|
||||
<value>Şůğğĕşŧеδ íήρύť: {0} !!! !!!</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
</root>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0} θƒ {1} !!!</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>üńќήöώʼn !!</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>оνэѓ 999 !!</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>Íņνãľîđ ÚŔİ !!!</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>Ůʼnäвľė ťö ƒΐńđ τħé şèℓ℮ĉťēδ ƒòñŧ "{0}". !!! !!! !!! !!!
|
||||
|
||||
"{1}" ђàś ъëęñ šеŀесťĕđ ιñśтёąδ. !!! !!! !!!
|
||||
|
||||
Ρℓēάŝę ėїţħěř ĭлşţäļł ťнз mîşśĭηģ ƒóⁿт òґ ¢ћōóşę άηŏťнєѓ ôŋє. !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>Üидьŀэ τθ ƒìņď ťнė ρяóνίðěď ŝђάðèѓ "{0}". !!! !!! !!! !!!</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@
|
||||
<value>Ρϊх℮ļ ŝħдďéг ƒâíłëđ тő čŏмφіļê: {0} !!! !!! !!! !</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>Řєʼnδέгęř зйĉóűňтëř℮δ âη ûⁿėхрєĉţēð ℮ѓґоŗ: {0} !!! !!! !!! !!! !</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>Цйǻьľė ŧò ƒіņð τнė ƒσℓľоŵíпğ ƒŏптš: {0}. Рĺёąšė èìťђėг ïŋŝţăĺℓ тħēm ôѓ ςђоōѕз ðįƒƒеřęʼnţ ƒóπţś. !!! !!! !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>Гėāδ-σπļỳ mőðê īŝ ėńäвļεδ. !!! !!! !</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>Γĕšµľţş ƒбŭⁿð !!! </value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>Ńō гēśџĺŧѕ ƒσúπđ !!! !</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>Рăşţε !</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@
|
||||
<value>Şůğğĕşŧеδ íήρύť: {0} !!! !!!</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
</root>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0} θƒ {1} !!!</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>üńќήöώʼn !!</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>оνэѓ 999 !!</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>Недопустимый универсальный код ресурса (URI)</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>Не удалось найти выбранный шрифт "{0}".
|
||||
|
||||
Вместо этого выбран "{1}".
|
||||
|
||||
Либо установите отсутствующий шрифт, либо выберите другой.</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>Не удается найти указанный "{0}" построитель текстуры.</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@
|
||||
<value>Не удалось скомпилировать шейдер: {0}</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>Произошла непредвиденная ошибка обработчика: {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>Не удалось найти следующие шрифты: {0}. Установите их или выберите другие шрифты.</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>Включен режим только для чтения.</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>Найденные результаты</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>Результаты не найдены</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>Вставить</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@
|
||||
<value>Предлагаемые входные данные: {0}</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0} из {1}</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>неизвестно</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>более 999</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>URI 无效</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>找不到所选字体 "{0}"。
|
||||
|
||||
改为选择 "{1}"。
|
||||
|
||||
请安装缺少的字体或选择另一个。</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>找不到所提供的着色器 "{0}"。</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@
|
||||
<value>像素着色器无法编译: {0}</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>呈现器遇到意外错误: {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>找不到以下字体: {0}。请安装它们或选择其他字体。</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>只读模式已启用。</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>已找到结果</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>未找到结果</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>粘贴</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@
|
||||
<value>建议的输入: {0}</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0}/{1}</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>未知</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>超过 999</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -194,14 +194,6 @@
|
||||
<value>無效的 URI</value>
|
||||
<comment>Whenever we encounter an invalid URI or URL we show this string as a warning.</comment>
|
||||
</data>
|
||||
<data name="NoticeFontNotFound" xml:space="preserve">
|
||||
<value>找不到選取的字型 "{0}"。
|
||||
|
||||
已選取 "{1}"。
|
||||
|
||||
請安裝缺少的字型,或選擇另一個字型。</value>
|
||||
<comment>0 and 1 are names of fonts provided by the user and system respectively.</comment>
|
||||
</data>
|
||||
<data name="PixelShaderNotFound" xml:space="preserve">
|
||||
<value>找不到提供的著色器 "{0}"。</value>
|
||||
<comment>{0} is a file name</comment>
|
||||
@@ -210,10 +202,6 @@
|
||||
<value>像素著色器無法編譯: {0}</value>
|
||||
<comment>{0} is the error message generated by the compiler</comment>
|
||||
</data>
|
||||
<data name="UnexpectedRendererError" xml:space="preserve">
|
||||
<value>轉譯器發生意外的錯誤:{0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorFontNotFound" xml:space="preserve">
|
||||
<value>找不到下列字型: {0}。請安裝它們,或選擇其他字型。</value>
|
||||
<comment>{Locked="{0}"} This is a warning dialog shown when the user selects a font that isn't installed.</comment>
|
||||
@@ -229,14 +217,6 @@
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>已啟用唯讀模式。</value>
|
||||
</data>
|
||||
<data name="SearchBox_MatchesAvailable" xml:space="preserve">
|
||||
<value>找到的結果</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="SearchBox_NoMatches" xml:space="preserve">
|
||||
<value>找不到任何結果</value>
|
||||
<comment>Announced to a screen reader when the user searches for some text and there are no matches for that text in the terminal.</comment>
|
||||
</data>
|
||||
<data name="PasteCommandButton.Label" xml:space="preserve">
|
||||
<value>貼上</value>
|
||||
<comment>The label of a button for pasting the contents of the clipboard.</comment>
|
||||
@@ -342,4 +322,16 @@
|
||||
<value>建議的輸入: {0}</value>
|
||||
<comment>{Locked="{0}"} {0} will be replaced with a string of input that is suggested for the user to input</comment>
|
||||
</data>
|
||||
<data name="TermControl_NumResultsAccessible" xml:space="preserve">
|
||||
<value>{0} / {1}</value>
|
||||
<comment>{Locked="{0}"}{Locked="{1}"} Read out by the screen reader to announce number of results from a search query. "{0}" is replaced with index of search result. "{1}" is replaced by total number of results.</comment>
|
||||
</data>
|
||||
<data name="TermControl_UnknownSearchResultIndex" xml:space="preserve">
|
||||
<value>未知</value>
|
||||
<comment>Will be read out by a screen reader when a value for the index of a search result is mismatched and unclear. Displayed as a part of TermControl_NumResultsAccessible.</comment>
|
||||
</data>
|
||||
<data name="TermControl_TooManySearchResults" xml:space="preserve">
|
||||
<value>超過 999</value>
|
||||
<comment>Will be read out by a screen reader when a search returns over 999 search results.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -329,10 +329,14 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
// - bool: whether the current focus is on the search box
|
||||
bool SearchBoxControl::ContainsFocus()
|
||||
{
|
||||
auto focusedElement = Input::FocusManager::GetFocusedElement(this->XamlRoot());
|
||||
if (_focusableElements.count(focusedElement) > 0)
|
||||
// BODGY: It is possible for this to get called with no XAML root. We are unsure why.
|
||||
if (auto root = XamlRoot())
|
||||
{
|
||||
return true;
|
||||
auto focusedElement = Input::FocusManager::GetFocusedElement(root);
|
||||
if (_focusableElements.count(focusedElement) > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -463,9 +467,10 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
// Arguments:
|
||||
// - totalMatches - total number of matches (search results)
|
||||
// - currentMatch - the index of the current match (0-based)
|
||||
// - isAccessible - if true, format the string for screen readers. Defaults to false.
|
||||
// Return Value:
|
||||
// - status message
|
||||
winrt::hstring SearchBoxControl::_FormatStatus(int32_t totalMatches, int32_t currentMatch)
|
||||
winrt::hstring SearchBoxControl::_FormatStatus(int32_t totalMatches, int32_t currentMatch, bool isAccessible)
|
||||
{
|
||||
if (totalMatches < 0)
|
||||
{
|
||||
@@ -482,7 +487,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
|
||||
if (currentMatch < 0 || currentMatch > (MaximumTotalResultsToShowInStatus - 1))
|
||||
{
|
||||
currentString = CurrentIndexTooHighStatus;
|
||||
currentString = isAccessible ? RS_(L"TermControl_UnknownSearchResultIndex") : CurrentIndexTooHighStatus;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -491,13 +496,17 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
|
||||
if (totalMatches > MaximumTotalResultsToShowInStatus)
|
||||
{
|
||||
totalString = TotalResultsTooHighStatus;
|
||||
totalString = isAccessible ? RS_(L"TermControl_TooManySearchResults") : TotalResultsTooHighStatus;
|
||||
}
|
||||
else
|
||||
{
|
||||
totalString = fmt::to_wstring(totalMatches);
|
||||
}
|
||||
|
||||
if (isAccessible)
|
||||
{
|
||||
return winrt::hstring{ RS_fmt(L"TermControl_NumResultsAccessible", currentString, totalString) };
|
||||
}
|
||||
return winrt::hstring{ RS_fmt(L"TermControl_NumResults", currentString, totalString) };
|
||||
}
|
||||
|
||||
@@ -557,10 +566,22 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
StatusBox().Text(status);
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
// - Formats and returns an accessible status message representing the search state.
|
||||
// - Similar to SetStatus but returns a more descriptive string for screen readers.
|
||||
hstring SearchBoxControl::GetAccessibleStatus(int32_t totalMatches, int32_t currentMatch, bool searchRegexInvalid)
|
||||
{
|
||||
if (searchRegexInvalid)
|
||||
{
|
||||
return RS_(L"SearchRegexInvalid");
|
||||
}
|
||||
return _FormatStatus(totalMatches, currentMatch, true);
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
// - Removes the status message in the status box.
|
||||
void SearchBoxControl::ClearStatus()
|
||||
{
|
||||
StatusBox().Text(L"");
|
||||
StatusBox().Text({});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
void PopulateTextbox(const winrt::hstring& text);
|
||||
bool ContainsFocus();
|
||||
void SetStatus(int32_t totalMatches, int32_t currentMatch, bool searchRegexInvalid);
|
||||
winrt::hstring GetAccessibleStatus(int32_t totalMatches, int32_t currentMatch, bool searchRegexInvalid);
|
||||
void ClearStatus();
|
||||
|
||||
void GoBackwardClicked(const winrt::Windows::Foundation::IInspectable& /*sender*/, const winrt::Windows::UI::Xaml::RoutedEventArgs& /*e*/);
|
||||
@@ -77,7 +78,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
void _PlayCloseAnimation();
|
||||
bool _AnimationEnabled();
|
||||
|
||||
static winrt::hstring _FormatStatus(int32_t totalMatches, int32_t currentMatch);
|
||||
static winrt::hstring _FormatStatus(int32_t totalMatches, int32_t currentMatch, bool isAccessible = false);
|
||||
static double _TextWidth(winrt::hstring text, double fontSize);
|
||||
double _GetStatusMaxWidth();
|
||||
|
||||
|
||||
@@ -714,8 +714,15 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto request = SearchRequest{ _searchBox->Text(), goForward, _searchBox->CaseSensitive(), _searchBox->RegularExpression(), false, _searchScrollOffset };
|
||||
_handleSearchResults(_core.Search(request));
|
||||
_handleSearchResults(_core.Search(SearchRequest{
|
||||
.Text = _searchBox->Text(),
|
||||
.GoForward = goForward,
|
||||
.CaseSensitive = _searchBox->CaseSensitive(),
|
||||
.RegularExpression = _searchBox->RegularExpression(),
|
||||
.ExecuteSearch = true,
|
||||
.ScrollIntoView = true,
|
||||
.ScrollOffset = _searchScrollOffset,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -749,8 +756,15 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
{
|
||||
if (_searchBox && _searchBox->IsOpen())
|
||||
{
|
||||
const auto request = SearchRequest{ text, goForward, caseSensitive, regularExpression, false, _searchScrollOffset };
|
||||
_handleSearchResults(_core.Search(request));
|
||||
_handleSearchResults(_core.Search(SearchRequest{
|
||||
.Text = text,
|
||||
.GoForward = goForward,
|
||||
.CaseSensitive = caseSensitive,
|
||||
.RegularExpression = regularExpression,
|
||||
.ExecuteSearch = true,
|
||||
.ScrollIntoView = true,
|
||||
.ScrollOffset = _searchScrollOffset,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -769,11 +783,15 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
{
|
||||
if (_searchBox && _searchBox->IsOpen())
|
||||
{
|
||||
// We only want to update the search results based on the new text. Set
|
||||
// `resetOnly` to true so we don't accidentally update the current match index.
|
||||
const auto request = SearchRequest{ text, goForward, caseSensitive, regularExpression, true, _searchScrollOffset };
|
||||
const auto result = _core.Search(request);
|
||||
_handleSearchResults(result);
|
||||
_handleSearchResults(_core.Search(SearchRequest{
|
||||
.Text = text,
|
||||
.GoForward = goForward,
|
||||
.CaseSensitive = caseSensitive,
|
||||
.RegularExpression = regularExpression,
|
||||
.ExecuteSearch = false,
|
||||
.ScrollIntoView = true,
|
||||
.ScrollOffset = _searchScrollOffset,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3049,12 +3067,17 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
co_return;
|
||||
}
|
||||
|
||||
const auto weak = get_weak();
|
||||
|
||||
if (e.DataView().Contains(StandardDataFormats::ApplicationLink()))
|
||||
{
|
||||
try
|
||||
{
|
||||
auto link{ co_await e.DataView().GetApplicationLinkAsync() };
|
||||
_pasteTextWithBroadcast(link.AbsoluteUri());
|
||||
if (const auto strong = weak.get())
|
||||
{
|
||||
_pasteTextWithBroadcast(link.AbsoluteUri());
|
||||
}
|
||||
}
|
||||
CATCH_LOG();
|
||||
}
|
||||
@@ -3063,7 +3086,10 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
try
|
||||
{
|
||||
auto link{ co_await e.DataView().GetWebLinkAsync() };
|
||||
_pasteTextWithBroadcast(link.AbsoluteUri());
|
||||
if (const auto strong = weak.get())
|
||||
{
|
||||
_pasteTextWithBroadcast(link.AbsoluteUri());
|
||||
}
|
||||
}
|
||||
CATCH_LOG();
|
||||
}
|
||||
@@ -3072,7 +3098,10 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
try
|
||||
{
|
||||
auto text{ co_await e.DataView().GetTextAsync() };
|
||||
_pasteTextWithBroadcast(text);
|
||||
if (const auto strong = weak.get())
|
||||
{
|
||||
_pasteTextWithBroadcast(text);
|
||||
}
|
||||
}
|
||||
CATCH_LOG();
|
||||
}
|
||||
@@ -3134,6 +3163,12 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
}
|
||||
}
|
||||
|
||||
const auto strong = weak.get();
|
||||
if (!strong)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
|
||||
std::wstring allPathsString;
|
||||
for (auto& fullPath : fullPaths)
|
||||
{
|
||||
@@ -3476,9 +3511,14 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
|
||||
safe_void_coroutine TermControl::_updateSelectionMarkers(IInspectable /*sender*/, Control::UpdateSelectionMarkersEventArgs args)
|
||||
{
|
||||
if (!args)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
|
||||
auto weakThis{ get_weak() };
|
||||
co_await resume_foreground(Dispatcher());
|
||||
if (weakThis.get() && args)
|
||||
if (const auto strong = weakThis.get())
|
||||
{
|
||||
if (_core.HasSelection() && !args.ClearMarkers())
|
||||
{
|
||||
@@ -3720,8 +3760,15 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
const auto goForward = _searchBox->GoForward();
|
||||
const auto caseSensitive = _searchBox->CaseSensitive();
|
||||
const auto regularExpression = _searchBox->RegularExpression();
|
||||
const auto request = SearchRequest{ text, goForward, caseSensitive, regularExpression, true, _searchScrollOffset };
|
||||
_handleSearchResults(_core.Search(request));
|
||||
_handleSearchResults(_core.Search(SearchRequest{
|
||||
.Text = text,
|
||||
.GoForward = goForward,
|
||||
.CaseSensitive = caseSensitive,
|
||||
.RegularExpression = regularExpression,
|
||||
.ExecuteSearch = false,
|
||||
.ScrollIntoView = false,
|
||||
.ScrollOffset = _searchScrollOffset,
|
||||
}));
|
||||
}
|
||||
|
||||
void TermControl::_handleSearchResults(SearchResults results)
|
||||
@@ -3754,13 +3801,17 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
};
|
||||
_updateScrollBar->Run(update);
|
||||
}
|
||||
}
|
||||
|
||||
if (auto automationPeer{ FrameworkElementAutomationPeer::FromElement(*this) })
|
||||
if (auto automationPeer{ FrameworkElementAutomationPeer::FromElement(*this) })
|
||||
{
|
||||
const auto status = _searchBox->GetAccessibleStatus(results.TotalMatches, results.CurrentMatch, results.SearchRegexInvalid);
|
||||
if (!status.empty())
|
||||
{
|
||||
automationPeer.RaiseNotificationEvent(
|
||||
AutomationNotificationKind::ActionCompleted,
|
||||
AutomationNotificationProcessing::ImportantMostRecent,
|
||||
results.TotalMatches > 0 ? RS_(L"SearchBox_MatchesAvailable") : RS_(L"SearchBox_NoMatches"), // what to announce if results were found
|
||||
status,
|
||||
L"SearchBoxResultAnnouncement" /* unique name for this group of notifications */);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,6 +121,7 @@ namespace Microsoft.Terminal.Core
|
||||
String WordDelimiters { get; };
|
||||
|
||||
Boolean ForceVTInput { get; };
|
||||
Boolean AllowKittyKeyboardMode { get; };
|
||||
Boolean AllowVtChecksumReport { get; };
|
||||
Boolean AllowVtClipboardWrite { get; };
|
||||
Boolean TrimBlockSelection { get; };
|
||||
|
||||
@@ -98,6 +98,7 @@ void Terminal::UpdateSettings(ICoreSettings settings)
|
||||
}
|
||||
|
||||
_getTerminalInput().ForceDisableWin32InputMode(settings.ForceVTInput());
|
||||
_getTerminalInput().ForceDisableKittyKeyboardProtocol(!settings.AllowKittyKeyboardMode());
|
||||
|
||||
if (settings.TabColor() == nullptr)
|
||||
{
|
||||
|
||||
@@ -349,6 +349,7 @@ namespace winrt::Microsoft::Terminal::Settings
|
||||
_ReloadEnvironmentVariables = profile.ReloadEnvironmentVariables();
|
||||
_RainbowSuggestions = profile.RainbowSuggestions();
|
||||
_ForceVTInput = profile.ForceVTInput();
|
||||
_AllowKittyKeyboardMode = profile.AllowKittyKeyboardMode();
|
||||
_AllowVtChecksumReport = profile.AllowVtChecksumReport();
|
||||
_AllowVtClipboardWrite = profile.AllowVtClipboardWrite();
|
||||
_PathTranslationStyle = profile.PathTranslationStyle();
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "pch.h"
|
||||
#include "Actions.h"
|
||||
#include "Actions.g.cpp"
|
||||
#include "LibraryResources.h"
|
||||
#include "../TerminalSettingsModel/AllShortcutActions.h"
|
||||
|
||||
using namespace winrt::Windows::UI::Xaml;
|
||||
@@ -20,8 +21,8 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void Actions::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_ViewModel = e.Parameter().as<Editor::ActionsViewModel>();
|
||||
_ViewModel.CurrentPage(ActionsSubPage::Base);
|
||||
const auto args = e.Parameter().as<Editor::NavigateToPageArgs>();
|
||||
_ViewModel = args.ViewModel().as<Editor::ActionsViewModel>();
|
||||
auto vmImpl = get_self<ActionsViewModel>(_ViewModel);
|
||||
vmImpl->MarkAsVisited();
|
||||
_layoutUpdatedRevoker = LayoutUpdated(winrt::auto_revoke, [this](auto /*s*/, auto /*e*/) {
|
||||
@@ -30,6 +31,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
AddNewButton().Focus(FocusState::Programmatic);
|
||||
});
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
TraceLoggingWrite(
|
||||
g_hTerminalSettingsEditorProvider,
|
||||
|
||||
@@ -164,17 +164,33 @@
|
||||
Style="{StaticResource KeyBindingNameTextBlockStyle}"
|
||||
Text="{x:Bind DisplayName, Mode=OneWay}" />
|
||||
<!-- Key Chord Text -->
|
||||
<Border Grid.Column="1"
|
||||
Padding="8,4,8,4"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Center"
|
||||
Style="{ThemeResource KeyChordBorderStyle}"
|
||||
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(FirstKeyChordText)}">
|
||||
<TextBlock FontSize="14"
|
||||
Style="{ThemeResource KeyChordTextBlockStyle}"
|
||||
Text="{x:Bind FirstKeyChordText, Mode=OneWay}"
|
||||
TextWrapping="WrapWholeWords" />
|
||||
</Border>
|
||||
<Grid Grid.Column="1"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Center"
|
||||
ColumnSpacing="4">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border Grid.Column="0"
|
||||
Padding="8,4,8,4"
|
||||
Style="{ThemeResource KeyChordBorderStyle}"
|
||||
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(FirstKeyChordText)}">
|
||||
<TextBlock FontSize="14"
|
||||
Style="{ThemeResource KeyChordTextBlockStyle}"
|
||||
Text="{x:Bind FirstKeyChordText, Mode=OneWay}"
|
||||
TextWrapping="WrapWholeWords" />
|
||||
</Border>
|
||||
<Border Grid.Column="1"
|
||||
Padding="8,4,8,4"
|
||||
Style="{ThemeResource KeyChordBorderStyle}"
|
||||
ToolTipService.ToolTip="{x:Bind AdditionalKeyChordTooltipText, Mode=OneWay}"
|
||||
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(AdditionalKeyChordCountText)}">
|
||||
<TextBlock FontSize="14"
|
||||
Style="{ThemeResource KeyChordTextBlockStyle}"
|
||||
Text="{x:Bind AdditionalKeyChordCountText, Mode=OneWay}" />
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ListViewItem>
|
||||
</DataTemplate>
|
||||
@@ -182,8 +198,7 @@
|
||||
</Page.Resources>
|
||||
|
||||
<Border MaxWidth="{StaticResource StandardControlMaxWidth}">
|
||||
<StackPanel MaxWidth="600"
|
||||
HorizontalAlignment="Left"
|
||||
<StackPanel HorizontalAlignment="Stretch"
|
||||
Spacing="8"
|
||||
Style="{StaticResource SettingsStackStyle}">
|
||||
<HyperlinkButton x:Uid="Actions_Disclaimer"
|
||||
|
||||
@@ -137,7 +137,13 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
winrt::hstring CommandViewModel::DisplayNameAndKeyChordAutomationPropName()
|
||||
{
|
||||
return DisplayName() + L", " + FirstKeyChordText();
|
||||
auto result = DisplayName() + L", " + FirstKeyChordText();
|
||||
const auto size = _KeyChordList.Size();
|
||||
if (size > 1)
|
||||
{
|
||||
result = result + L" " + hstring{ RS_fmt(L"Actions_AdditionalKeyChords", winrt::to_hstring(size - 1)) };
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
winrt::hstring CommandViewModel::FirstKeyChordText()
|
||||
@@ -149,6 +155,35 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
return L"";
|
||||
}
|
||||
|
||||
winrt::hstring CommandViewModel::AdditionalKeyChordCountText()
|
||||
{
|
||||
const auto size = _KeyChordList.Size();
|
||||
if (size > 1)
|
||||
{
|
||||
return winrt::hstring{ L"+" + winrt::to_hstring(size - 1) };
|
||||
}
|
||||
return L"";
|
||||
}
|
||||
|
||||
winrt::hstring CommandViewModel::AdditionalKeyChordTooltipText()
|
||||
{
|
||||
const auto size = _KeyChordList.Size();
|
||||
if (size <= 1)
|
||||
{
|
||||
return L"";
|
||||
}
|
||||
std::wstring result;
|
||||
for (uint32_t i = 1; i < size; ++i)
|
||||
{
|
||||
if (!result.empty())
|
||||
{
|
||||
result += L"\n";
|
||||
}
|
||||
result += std::wstring_view{ _KeyChordList.GetAt(i).KeyChordText() };
|
||||
}
|
||||
return winrt::hstring{ result };
|
||||
}
|
||||
|
||||
winrt::hstring CommandViewModel::ID()
|
||||
{
|
||||
return _command.ID();
|
||||
@@ -175,6 +210,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
kbdVM->IsInEditMode(true);
|
||||
_RegisterKeyChordVMEvents(*kbdVM);
|
||||
KeyChordList().Append(*kbdVM);
|
||||
FocusContainer.raise(*this, *kbdVM);
|
||||
}
|
||||
|
||||
winrt::hstring CommandViewModel::ActionNameTextBoxAutomationPropName()
|
||||
@@ -220,7 +256,10 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
break;
|
||||
}
|
||||
}
|
||||
actionsPageVM.DeleteKeyChord(args);
|
||||
if (args)
|
||||
{
|
||||
actionsPageVM.DeleteKeyChord(args);
|
||||
}
|
||||
}
|
||||
});
|
||||
kcVM.PropertyChanged([weakThis{ get_weak() }](const IInspectable& sender, const Windows::UI::Xaml::Data::PropertyChangedEventArgs& args) {
|
||||
@@ -499,7 +538,13 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
auto lifetime = get_strong();
|
||||
|
||||
static constexpr winrt::guid clientGuidFiles{ 0xbd00ae34, 0x839b, 0x43f6, { 0x8b, 0x94, 0x12, 0x37, 0x1a, 0xfe, 0xea, 0xb5 } };
|
||||
const auto parentHwnd{ reinterpret_cast<HWND>(_WindowRoot.GetHostingWindow()) };
|
||||
|
||||
const auto windowRoot = WindowRoot();
|
||||
if (!windowRoot)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
const auto parentHwnd{ reinterpret_cast<HWND>(windowRoot.GetHostingWindow()) };
|
||||
auto path = co_await OpenFilePicker(parentHwnd, [](auto&& dialog) {
|
||||
THROW_IF_FAILED(dialog->SetClientGuid(clientGuidFiles));
|
||||
try
|
||||
@@ -522,8 +567,13 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
auto lifetime = get_strong();
|
||||
|
||||
static constexpr winrt::guid clientGuidFolders{ 0xa611027, 0x42be, 0x4665, { 0xaf, 0xf1, 0x3f, 0x22, 0x26, 0xe9, 0xf7, 0x4d } };
|
||||
;
|
||||
const auto parentHwnd{ reinterpret_cast<HWND>(_WindowRoot.GetHostingWindow()) };
|
||||
|
||||
const auto windowRoot = WindowRoot();
|
||||
if (!windowRoot)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
const auto parentHwnd{ reinterpret_cast<HWND>(windowRoot.GetHostingWindow()) };
|
||||
auto path = co_await OpenFilePicker(parentHwnd, [](auto&& dialog) {
|
||||
THROW_IF_FAILED(dialog->SetClientGuid(clientGuidFolders));
|
||||
try
|
||||
@@ -1032,6 +1082,11 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
// if we're in edit mode, populate the text box with the current keys
|
||||
ProposedKeys(_currentKeys);
|
||||
}
|
||||
else if (!_currentKeys)
|
||||
{
|
||||
// we have left edit mode but don't have any current keys - delete this view model
|
||||
DeleteKeyChord();
|
||||
}
|
||||
}
|
||||
|
||||
void KeyChordViewModel::AcceptChanges()
|
||||
|
||||
@@ -37,7 +37,6 @@ Abstract:
|
||||
#pragma once
|
||||
|
||||
#include "ActionsViewModel.g.h"
|
||||
#include "NavigateToCommandArgs.g.h"
|
||||
#include "CommandViewModel.g.h"
|
||||
#include "ArgWrapper.g.h"
|
||||
#include "ActionArgsViewModel.g.h"
|
||||
@@ -48,21 +47,6 @@ Abstract:
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct NavigateToCommandArgs : NavigateToCommandArgsT<NavigateToCommandArgs>
|
||||
{
|
||||
public:
|
||||
NavigateToCommandArgs(CommandViewModel command, Editor::IHostedInWindow windowRoot) :
|
||||
_Command(command),
|
||||
_WindowRoot(windowRoot) {}
|
||||
|
||||
Editor::IHostedInWindow WindowRoot() const noexcept { return _WindowRoot; }
|
||||
Editor::CommandViewModel Command() const noexcept { return _Command; }
|
||||
|
||||
private:
|
||||
Editor::IHostedInWindow _WindowRoot;
|
||||
Editor::CommandViewModel _Command{ nullptr };
|
||||
};
|
||||
|
||||
struct ModifyKeyChordEventArgs : ModifyKeyChordEventArgsT<ModifyKeyChordEventArgs>
|
||||
{
|
||||
public:
|
||||
@@ -90,6 +74,8 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
winrt::hstring DisplayNameAndKeyChordAutomationPropName();
|
||||
|
||||
winrt::hstring FirstKeyChordText();
|
||||
winrt::hstring AdditionalKeyChordCountText();
|
||||
winrt::hstring AdditionalKeyChordTooltipText();
|
||||
|
||||
winrt::hstring ID();
|
||||
bool IsUserAction();
|
||||
@@ -141,6 +127,8 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
winrt::hstring Type() const noexcept { return _descriptor.Type; };
|
||||
Model::ArgTypeHint TypeHint() const noexcept { return _descriptor.TypeHint; };
|
||||
bool Required() const noexcept { return _descriptor.Required; };
|
||||
Editor::IHostedInWindow WindowRoot() const noexcept { return _WeakWindowRoot.get(); }
|
||||
void WindowRoot(const Editor::IHostedInWindow& value) { _WeakWindowRoot = value; }
|
||||
|
||||
// We cannot use the macro here because we need to implement additional logic for the setter
|
||||
Windows::Foundation::IInspectable EnumValue() const noexcept { return _EnumValue; };
|
||||
@@ -186,10 +174,10 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
VIEW_MODEL_OBSERVABLE_PROPERTY(Editor::ColorSchemeViewModel, DefaultColorScheme, nullptr);
|
||||
VIEW_MODEL_OBSERVABLE_PROPERTY(Windows::Foundation::IInspectable, Value, nullptr);
|
||||
WINRT_PROPERTY(Windows::Foundation::Collections::IVector<winrt::hstring>, ColorSchemeNamesList, nullptr);
|
||||
WINRT_PROPERTY(Editor::IHostedInWindow, WindowRoot, nullptr);
|
||||
|
||||
private:
|
||||
Model::ArgDescriptor _descriptor;
|
||||
winrt::weak_ref<Editor::IHostedInWindow> _WeakWindowRoot{ nullptr };
|
||||
Windows::Foundation::IInspectable _EnumValue{ nullptr };
|
||||
Windows::Foundation::Collections::IObservableVector<Microsoft::Terminal::Settings::Editor::EnumEntry> _EnumList;
|
||||
Windows::Foundation::Collections::IObservableVector<Microsoft::Terminal::Settings::Editor::FlagEntry> _FlagList;
|
||||
|
||||
@@ -35,12 +35,6 @@ namespace Microsoft.Terminal.Settings.Editor
|
||||
CommandViewModel ViewModel { get; };
|
||||
}
|
||||
|
||||
runtimeclass NavigateToCommandArgs
|
||||
{
|
||||
CommandViewModel Command { get; };
|
||||
IHostedInWindow WindowRoot { get; };
|
||||
}
|
||||
|
||||
runtimeclass ModifyKeyChordEventArgs
|
||||
{
|
||||
Microsoft.Terminal.Control.KeyChord OldKeys { get; };
|
||||
@@ -61,6 +55,8 @@ namespace Microsoft.Terminal.Settings.Editor
|
||||
// View-model specific
|
||||
String DisplayName { get; };
|
||||
String FirstKeyChordText { get; };
|
||||
String AdditionalKeyChordCountText { get; };
|
||||
String AdditionalKeyChordTooltipText { get; };
|
||||
String DisplayNameAndKeyChordAutomationPropName { get; };
|
||||
|
||||
// UI side (command list page)
|
||||
|
||||
@@ -26,7 +26,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void AddProfile::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_State = e.Parameter().as<Editor::AddProfilePageNavigationState>();
|
||||
const auto args = e.Parameter().as<Editor::NavigateToPageArgs>();
|
||||
_State = args.ViewModel().as<Editor::AddProfilePageNavigationState>();
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
TraceLoggingWrite(
|
||||
g_hTerminalSettingsEditorProvider,
|
||||
|
||||
@@ -37,7 +37,8 @@
|
||||
</Button>
|
||||
</Border>
|
||||
<StackPanel Margin="{StaticResource StandardControlMargin}">
|
||||
<local:SettingContainer x:Uid="AddProfile_Duplicate">
|
||||
<local:SettingContainer x:Name="DuplicateProfile"
|
||||
x:Uid="AddProfile_Duplicate">
|
||||
<ComboBox x:Name="Profiles"
|
||||
AutomationProperties.AccessibilityView="Content"
|
||||
ItemsSource="{x:Bind State.Settings.AllProfiles, Mode=OneWay}"
|
||||
|
||||
@@ -159,7 +159,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
if (HasLibraryResourceWithName(key))
|
||||
{
|
||||
displayString = GetLibraryResourceString(key);
|
||||
displayString = hstring{ fmt::format(FMT_COMPILE(L"{} ({})"), displayString, std::wstring_view{ tagString }) };
|
||||
displayString = til::hstring_format(FMT_COMPILE(L"{} ({})"), displayString, std::wstring_view{ tagString });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,7 +204,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
winrt::hstring FontKeyValuePair::AutomationName()
|
||||
{
|
||||
return hstring{ fmt::format(FMT_COMPILE(L"{}: {}"), KeyDisplayStringRef(), _value) };
|
||||
return til::hstring_format(FMT_COMPILE(L"{}: {}"), KeyDisplayStringRef(), _value);
|
||||
}
|
||||
|
||||
AppearanceViewModel::AppearanceViewModel(const Model::AppearanceConfig& appearance) :
|
||||
@@ -515,7 +515,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
const auto idx = getLocalizedStringIndex(names.get(), localeName, 0);
|
||||
const auto localizedName = getLocalizedStringByIndex(names.get(), idx);
|
||||
const auto tagString = tagToString(tag);
|
||||
hstring displayString{ fmt::format(FMT_COMPILE(L"{} ({})"), localizedName, std::wstring_view{ tagString }) };
|
||||
const auto displayString = til::hstring_format(FMT_COMPILE(L"{} ({})"), localizedName, std::wstring_view{ tagString });
|
||||
|
||||
const auto value = axesVector[i].value;
|
||||
|
||||
@@ -1138,6 +1138,27 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
INITIALIZE_BINDABLE_ENUM_SETTING(IntenseTextStyle, IntenseTextStyle, winrt::Microsoft::Terminal::Settings::Model::IntenseStyle, L"Appearance_IntenseTextStyle", L"Content");
|
||||
}
|
||||
|
||||
// Appearances doesn't implement HasScrollViewer<T> which normally adds this function.
|
||||
void Appearances::BringIntoViewWhenLoaded(hstring elementToFocus)
|
||||
{
|
||||
if (elementToFocus.empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_loadedRevoker = this->Loaded(winrt::auto_revoke, [weakThis{ get_weak() }, elementToFocus](auto&&, auto&&) {
|
||||
if (const auto strongThis = weakThis.get())
|
||||
{
|
||||
if (const auto& controlToFocus{ strongThis->FindName(elementToFocus).try_as<Controls::Control>() })
|
||||
{
|
||||
controlToFocus.as<FrameworkElement>().StartBringIntoView();
|
||||
controlToFocus.Focus(FocusState::Programmatic);
|
||||
}
|
||||
strongThis->_loadedRevoker.revoke();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
IObservableVector<Editor::Font> Appearances::FilteredFontList()
|
||||
{
|
||||
if (!_filteredFonts)
|
||||
@@ -1193,7 +1214,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
const auto prefix = fontSpecView.substr(0, idx);
|
||||
const auto suffix = std::wstring_view{ fontName };
|
||||
fontSpec = winrt::hstring{ fmt::format(FMT_COMPILE(L"{}, {}"), prefix, suffix) };
|
||||
fontSpec = til::hstring_format(FMT_COMPILE(L"{}, {}"), prefix, suffix);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1423,10 +1444,15 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
safe_void_coroutine Appearances::BackgroundImage_Click(const IInspectable&, const RoutedEventArgs&)
|
||||
{
|
||||
auto lifetime = get_strong();
|
||||
const auto lifetime = get_strong();
|
||||
|
||||
const auto parentHwnd{ reinterpret_cast<HWND>(WindowRoot().GetHostingWindow()) };
|
||||
auto file = co_await OpenImagePicker(parentHwnd);
|
||||
const auto windowRoot = WindowRoot();
|
||||
if (!windowRoot)
|
||||
{
|
||||
co_return;
|
||||
}
|
||||
const auto parentHwnd{ reinterpret_cast<HWND>(windowRoot.GetHostingWindow()) };
|
||||
const auto file = co_await OpenImagePicker(parentHwnd);
|
||||
if (!file.empty())
|
||||
{
|
||||
Appearance().SetBackgroundImagePath(file);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user