Compare commits
46 Commits
selfhost-1
...
release-1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
972464b403 | ||
|
|
60544d783b | ||
|
|
56e96c30b0 | ||
|
|
7e67791f45 | ||
|
|
a8064e7eef | ||
|
|
85e79e9c8d | ||
|
|
a11b37efad | ||
|
|
58073ce869 | ||
|
|
18f564df43 | ||
|
|
30882240a5 | ||
|
|
c318eb9473 | ||
|
|
0e6ecdafef | ||
|
|
72596d9371 | ||
|
|
20d5b843fd | ||
|
|
27fff2c1a3 | ||
|
|
5f3492f8bc | ||
|
|
b02c11b4aa | ||
|
|
fc6f83e086 | ||
|
|
488bef7bca | ||
|
|
c6c078834c | ||
|
|
2c5018db43 | ||
|
|
0cc5194def | ||
|
|
2b156d2efe | ||
|
|
e349130d4e | ||
|
|
42bc7f20a9 | ||
|
|
ed2923ba8c | ||
|
|
345d266350 | ||
|
|
47da9a0502 | ||
|
|
12a5c95b98 | ||
|
|
fa7198de88 | ||
|
|
164df3c959 | ||
|
|
743d5681cf | ||
|
|
464c0a3b3d | ||
|
|
fb3147fd44 | ||
|
|
849766cda3 | ||
|
|
7bb70b0330 | ||
|
|
f442109748 | ||
|
|
8c1316cf09 | ||
|
|
e2a076c038 | ||
|
|
ff99f4b7c4 | ||
|
|
7637e89566 | ||
|
|
8a6941c269 | ||
|
|
c0b2f55b87 | ||
|
|
248665b9bb | ||
|
|
b5b32dad19 | ||
|
|
a2ab91f8a4 |
1
.github/actions/spelling/allow/allow.txt
vendored
@@ -78,6 +78,7 @@ mnt
|
||||
mru
|
||||
nje
|
||||
noreply
|
||||
notwrapped
|
||||
ogonek
|
||||
ok'd
|
||||
overlined
|
||||
|
||||
4
.github/actions/spelling/allow/microsoft.txt
vendored
@@ -1,6 +1,8 @@
|
||||
ACLs
|
||||
ADMINS
|
||||
advapi
|
||||
akv
|
||||
AKV
|
||||
altform
|
||||
altforms
|
||||
appendwttlogging
|
||||
@@ -14,6 +16,7 @@ autoexec
|
||||
backplating
|
||||
bitmaps
|
||||
BOMs
|
||||
checkcflags
|
||||
COMPUTERNAME
|
||||
CPLs
|
||||
cpptools
|
||||
@@ -97,3 +100,4 @@ wtl
|
||||
wtt
|
||||
wttlog
|
||||
Xamarin
|
||||
xfgcheck
|
||||
|
||||
20
.github/actions/spelling/expect/expect.txt
vendored
@@ -19,6 +19,7 @@ AFew
|
||||
AFill
|
||||
AFX
|
||||
AHelper
|
||||
ahicon
|
||||
ahz
|
||||
AImpl
|
||||
AInplace
|
||||
@@ -227,6 +228,7 @@ commandline
|
||||
commctrl
|
||||
commdlg
|
||||
COMMITID
|
||||
commoncontrols
|
||||
componentization
|
||||
conapi
|
||||
conareainfo
|
||||
@@ -283,6 +285,7 @@ convarea
|
||||
conwinuserrefs
|
||||
coordnew
|
||||
COPYCOLOR
|
||||
COPYFROMRESOURCE
|
||||
CORESYSTEM
|
||||
cotaskmem
|
||||
countof
|
||||
@@ -578,6 +581,7 @@ EVENTID
|
||||
eventing
|
||||
evflags
|
||||
evt
|
||||
EXACTSIZEONLY
|
||||
execd
|
||||
executionengine
|
||||
exemain
|
||||
@@ -603,6 +607,7 @@ FEEF
|
||||
fesb
|
||||
FFAF
|
||||
FFDE
|
||||
FFFDb
|
||||
FFrom
|
||||
fgbg
|
||||
FGCOLOR
|
||||
@@ -772,6 +777,7 @@ hhx
|
||||
HIBYTE
|
||||
hicon
|
||||
HIDEWINDOW
|
||||
HIGHQUALITYSCALE
|
||||
hinst
|
||||
HISTORYBUFS
|
||||
HISTORYNODUP
|
||||
@@ -821,6 +827,7 @@ hwnd
|
||||
HWNDPARENT
|
||||
iccex
|
||||
ICONERROR
|
||||
ICONINFO
|
||||
ICONINFORMATION
|
||||
IConsole
|
||||
ICONSTOP
|
||||
@@ -842,7 +849,11 @@ IGNOREEND
|
||||
IGNORELANGUAGE
|
||||
IHosted
|
||||
iid
|
||||
IImage
|
||||
IIo
|
||||
ILC
|
||||
ILCo
|
||||
ILD
|
||||
ime
|
||||
IMPEXP
|
||||
inbox
|
||||
@@ -1116,8 +1127,8 @@ msix
|
||||
msrc
|
||||
MSVCRTD
|
||||
MTSM
|
||||
munges
|
||||
Munged
|
||||
munges
|
||||
murmurhash
|
||||
muxes
|
||||
myapplet
|
||||
@@ -1340,11 +1351,14 @@ pgomgr
|
||||
PGONu
|
||||
pguid
|
||||
phhook
|
||||
phico
|
||||
phicon
|
||||
phwnd
|
||||
pidl
|
||||
PIDLIST
|
||||
pids
|
||||
pii
|
||||
piml
|
||||
pinvoke
|
||||
pipename
|
||||
pipestr
|
||||
@@ -1676,6 +1690,8 @@ slpit
|
||||
SManifest
|
||||
SMARTQUOTE
|
||||
SMTO
|
||||
snapcx
|
||||
snapcy
|
||||
SOLIDBOX
|
||||
Solutiondir
|
||||
somefile
|
||||
@@ -1876,8 +1892,8 @@ UINTs
|
||||
ul
|
||||
ulcch
|
||||
uld
|
||||
uldb
|
||||
uldash
|
||||
uldb
|
||||
ulwave
|
||||
Unadvise
|
||||
unattend
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Optional, defaults to main. Name of the branch which will be used for calculating branch point. -->
|
||||
<PGOBranch>main</PGOBranch>
|
||||
<PGOBranch>release-1.20</PGOBranch>
|
||||
|
||||
<!-- Mandatory. Name of the NuGet package which will contain PGO databases for consumption by build system. -->
|
||||
<PGOPackageName>Microsoft.Internal.Windows.Terminal.PGODatabase</PGOPackageName>
|
||||
|
||||
@@ -75,6 +75,7 @@ steps:
|
||||
rm LocOutputMunged.tar
|
||||
rm -r -fo LocOutput
|
||||
& ./build/scripts/Copy-ContextMenuResourcesToCascadiaPackage.ps1
|
||||
& ./build/scripts/Generate-PseudoLocalizations.ps1
|
||||
displayName: Move Loc files to the right places
|
||||
|
||||
- pwsh: |-
|
||||
|
||||
@@ -30,6 +30,13 @@ extends:
|
||||
buildTerminal: true
|
||||
pgoBuildMode: Optimize
|
||||
codeSign: true
|
||||
signingIdentity:
|
||||
serviceName: $(SigningServiceName)
|
||||
appId: $(SigningAppId)
|
||||
tenantId: $(SigningTenantId)
|
||||
akvName: $(SigningAKVName)
|
||||
authCertName: $(SigningAuthCertName)
|
||||
signCertName: $(SigningSignCertName)
|
||||
publishSymbolsToPublic: true
|
||||
publishVpackToWindows: false
|
||||
symbolExpiryTime: 15
|
||||
|
||||
@@ -78,6 +78,13 @@ extends:
|
||||
buildConfigurations: ${{ parameters.buildConfigurations }}
|
||||
buildPlatforms: ${{ parameters.buildPlatforms }}
|
||||
codeSign: true
|
||||
signingIdentity:
|
||||
serviceName: $(SigningServiceName)
|
||||
appId: $(SigningAppId)
|
||||
tenantId: $(SigningTenantId)
|
||||
akvName: $(SigningAKVName)
|
||||
authCertName: $(SigningAuthCertName)
|
||||
signCertName: $(SigningSignCertName)
|
||||
terminalInternalPackageVersion: ${{ parameters.terminalInternalPackageVersion }}
|
||||
publishSymbolsToPublic: ${{ parameters.publishSymbolsToPublic }}
|
||||
publishVpackToWindows: ${{ parameters.publishVpackToWindows }}
|
||||
|
||||
@@ -27,6 +27,9 @@ parameters:
|
||||
- name: publishArtifacts
|
||||
type: boolean
|
||||
default: true
|
||||
- name: signingIdentity
|
||||
type: object
|
||||
default: {}
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}
|
||||
@@ -97,31 +100,32 @@ jobs:
|
||||
flattenFolders: true
|
||||
|
||||
- ${{ if eq(parameters.codeSign, true) }}:
|
||||
- task: EsrpCodeSigning@3
|
||||
displayName: Submit *.nupkg to ESRP for code signing
|
||||
inputs:
|
||||
ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a
|
||||
FolderPath: $(Build.ArtifactStagingDirectory)/nupkg
|
||||
Pattern: '*.nupkg'
|
||||
UseMinimatch: true
|
||||
signConfigType: inlineSignParams
|
||||
inlineOperation: >-
|
||||
[
|
||||
{
|
||||
"KeyCode": "CP-401405",
|
||||
"OperationCode": "NuGetSign",
|
||||
"Parameters": {},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
},
|
||||
{
|
||||
"KeyCode": "CP-401405",
|
||||
"OperationCode": "NuGetVerify",
|
||||
"Parameters": {},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
}
|
||||
]
|
||||
- template: steps-esrp-signing.yml
|
||||
parameters:
|
||||
displayName: Submit *.nupkg to ESRP for code signing
|
||||
signingIdentity: ${{ parameters.signingIdentity }}
|
||||
inputs:
|
||||
FolderPath: $(Build.ArtifactStagingDirectory)/nupkg
|
||||
Pattern: '*.nupkg'
|
||||
UseMinimatch: true
|
||||
signConfigType: inlineSignParams
|
||||
inlineOperation: >-
|
||||
[
|
||||
{
|
||||
"KeyCode": "CP-401405",
|
||||
"OperationCode": "NuGetSign",
|
||||
"Parameters": {},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
},
|
||||
{
|
||||
"KeyCode": "CP-401405",
|
||||
"OperationCode": "NuGetVerify",
|
||||
"Parameters": {},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
}
|
||||
]
|
||||
|
||||
- ${{ if eq(parameters.generateSbom, true) }}:
|
||||
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
||||
|
||||
@@ -65,6 +65,9 @@ parameters:
|
||||
- name: removeAllNonSignedFiles
|
||||
type: boolean
|
||||
default: false
|
||||
- name: signingIdentity
|
||||
type: object
|
||||
default: {}
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}
|
||||
@@ -235,13 +238,14 @@ jobs:
|
||||
|
||||
# Code-sign everything we just put together.
|
||||
# We run the signing in Terminal.BinDir, because all of the signing batches are relative to the final architecture/configuration output folder.
|
||||
- task: EsrpCodeSigning@3
|
||||
displayName: Submit Signing Request
|
||||
inputs:
|
||||
ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a
|
||||
FolderPath: '$(Terminal.BinDir)'
|
||||
signType: batchSigning
|
||||
batchSignPolicyFile: '$(Build.SourcesDirectory)/ESRPSigningConfig.json'
|
||||
- template: steps-esrp-signing.yml
|
||||
parameters:
|
||||
displayName: Submit Signing Request
|
||||
signingIdentity: ${{ parameters.signingIdentity }}
|
||||
inputs:
|
||||
FolderPath: '$(Terminal.BinDir)'
|
||||
signType: batchSigning
|
||||
batchSignPolicyFile: '$(Build.SourcesDirectory)/ESRPSigningConfig.json'
|
||||
|
||||
# We only need to re-pack the MSIX if we actually signed, so this can stay in the codeSign conditional
|
||||
- ${{ if or(parameters.buildTerminal, parameters.buildEverything) }}:
|
||||
|
||||
@@ -80,7 +80,7 @@ jobs:
|
||||
Install-Module -Verbose -AllowClobber -Force Az.Accounts, Az.Storage, Az.Network, Az.Resources, Az.Compute
|
||||
displayName: Install Azure Module Dependencies
|
||||
|
||||
- task: AzureFileCopy@5
|
||||
- task: AzureFileCopy@6
|
||||
displayName: Publish to Storage Account
|
||||
inputs:
|
||||
sourcePath: _out/*
|
||||
|
||||
@@ -32,6 +32,9 @@ parameters:
|
||||
- name: afterBuildSteps
|
||||
type: stepList
|
||||
default: []
|
||||
- name: signingIdentity
|
||||
type: object
|
||||
default: {}
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}
|
||||
@@ -94,40 +97,41 @@ jobs:
|
||||
displayName: Create msixbundle
|
||||
|
||||
- ${{ if eq(parameters.codeSign, true) }}:
|
||||
- task: EsrpCodeSigning@3
|
||||
displayName: Submit *.msixbundle to ESRP for code signing
|
||||
inputs:
|
||||
ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a
|
||||
FolderPath: $(System.ArtifactsDirectory)\bundle
|
||||
Pattern: $(BundleStemName)*.msixbundle
|
||||
UseMinimatch: true
|
||||
signConfigType: inlineSignParams
|
||||
inlineOperation: >-
|
||||
[
|
||||
{
|
||||
"KeyCode": "Dynamic",
|
||||
"CertTemplateName": "WINMSAPP1ST",
|
||||
"CertSubjectName": "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US",
|
||||
"OperationCode": "SigntoolSign",
|
||||
"Parameters": {
|
||||
"OpusName": "Microsoft",
|
||||
"OpusInfo": "http://www.microsoft.com",
|
||||
"FileDigest": "/fd \"SHA256\"",
|
||||
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
|
||||
},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
},
|
||||
{
|
||||
"KeyCode": "Dynamic",
|
||||
"CertTemplateName": "WINMSAPP1ST",
|
||||
"CertSubjectName": "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US",
|
||||
"OperationCode": "SigntoolVerify",
|
||||
"Parameters": {},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
}
|
||||
]
|
||||
- template: steps-esrp-signing.yml
|
||||
parameters:
|
||||
displayName: Submit *.msixbundle to ESRP for code signing
|
||||
signingIdentity: ${{ parameters.signingIdentity }}
|
||||
inputs:
|
||||
FolderPath: $(System.ArtifactsDirectory)\bundle
|
||||
Pattern: $(BundleStemName)*.msixbundle
|
||||
UseMinimatch: true
|
||||
signConfigType: inlineSignParams
|
||||
inlineOperation: >-
|
||||
[
|
||||
{
|
||||
"KeyCode": "Dynamic",
|
||||
"CertTemplateName": "WINMSAPP1ST",
|
||||
"CertSubjectName": "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US",
|
||||
"OperationCode": "SigntoolSign",
|
||||
"Parameters": {
|
||||
"OpusName": "Microsoft",
|
||||
"OpusInfo": "http://www.microsoft.com",
|
||||
"FileDigest": "/fd \"SHA256\"",
|
||||
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
|
||||
},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
},
|
||||
{
|
||||
"KeyCode": "Dynamic",
|
||||
"CertTemplateName": "WINMSAPP1ST",
|
||||
"CertSubjectName": "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US",
|
||||
"OperationCode": "SigntoolVerify",
|
||||
"Parameters": {},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
}
|
||||
]
|
||||
|
||||
- ${{ if eq(parameters.generateSbom, true) }}:
|
||||
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
||||
|
||||
@@ -27,6 +27,9 @@ parameters:
|
||||
- name: publishArtifacts
|
||||
type: boolean
|
||||
default: true
|
||||
- name: signingIdentity
|
||||
type: object
|
||||
default: {}
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.jobName }}
|
||||
@@ -82,31 +85,32 @@ jobs:
|
||||
versionEnvVar: XES_PACKAGEVERSIONNUMBER
|
||||
|
||||
- ${{ if eq(parameters.codeSign, true) }}:
|
||||
- task: EsrpCodeSigning@3
|
||||
displayName: Submit *.nupkg to ESRP for code signing
|
||||
inputs:
|
||||
ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a
|
||||
FolderPath: $(Build.ArtifactStagingDirectory)/nupkg
|
||||
Pattern: '*.nupkg'
|
||||
UseMinimatch: true
|
||||
signConfigType: inlineSignParams
|
||||
inlineOperation: >-
|
||||
[
|
||||
{
|
||||
"KeyCode": "CP-401405",
|
||||
"OperationCode": "NuGetSign",
|
||||
"Parameters": {},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
},
|
||||
{
|
||||
"KeyCode": "CP-401405",
|
||||
"OperationCode": "NuGetVerify",
|
||||
"Parameters": {},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
}
|
||||
]
|
||||
- template: steps-esrp-signing.yml
|
||||
parameters:
|
||||
displayName: Submit *.nupkg to ESRP for code signing
|
||||
signingIdentity: ${{ parameters.signingIdentity }}
|
||||
inputs:
|
||||
FolderPath: $(Build.ArtifactStagingDirectory)/nupkg
|
||||
Pattern: '*.nupkg'
|
||||
UseMinimatch: true
|
||||
signConfigType: inlineSignParams
|
||||
inlineOperation: >-
|
||||
[
|
||||
{
|
||||
"KeyCode": "CP-401405",
|
||||
"OperationCode": "NuGetSign",
|
||||
"Parameters": {},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
},
|
||||
{
|
||||
"KeyCode": "CP-401405",
|
||||
"OperationCode": "NuGetVerify",
|
||||
"Parameters": {},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
}
|
||||
]
|
||||
|
||||
- ${{ if eq(parameters.generateSbom, true) }}:
|
||||
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
|
||||
|
||||
@@ -33,7 +33,7 @@ parameters:
|
||||
- arm64
|
||||
- name: codeSign
|
||||
type: boolean
|
||||
default: true
|
||||
default: false
|
||||
- name: generateSbom
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
@@ -60,6 +60,9 @@ parameters:
|
||||
- name: extraPublishJobs
|
||||
type: object
|
||||
default: []
|
||||
- name: signingIdentity
|
||||
type: object
|
||||
default: {}
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
@@ -82,6 +85,7 @@ extends:
|
||||
cloudvault: # https://aka.ms/obpipelines/cloudvault
|
||||
enabled: false
|
||||
globalSdl: # https://aka.ms/obpipelines/sdl
|
||||
enableCheckCFlags: false # CheckCFlags is broken and exploding our builds; to remove, :g/BAD-FLAGS/d
|
||||
asyncSdl:
|
||||
enabled: true
|
||||
tsaOptionsFile: 'build/config/tsa.json'
|
||||
@@ -107,6 +111,8 @@ extends:
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
variables:
|
||||
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
|
||||
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(JobOutputDirectory)
|
||||
@@ -122,6 +128,7 @@ extends:
|
||||
generateSbom: false # this is handled by onebranch
|
||||
removeAllNonSignedFiles: true # appease the overlords
|
||||
codeSign: ${{ parameters.codeSign }}
|
||||
signingIdentity: ${{ parameters.signingIdentity }}
|
||||
beforeBuildSteps: # Right before we build, lay down the universal package and localizations
|
||||
- task: PkgESSetupBuild@12
|
||||
displayName: Package ES - Setup Build
|
||||
@@ -141,6 +148,8 @@ extends:
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
variables:
|
||||
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
|
||||
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(JobOutputDirectory)
|
||||
@@ -156,6 +165,7 @@ extends:
|
||||
generateSbom: false # this is handled by onebranch
|
||||
removeAllNonSignedFiles: true # appease the overlords
|
||||
codeSign: ${{ parameters.codeSign }}
|
||||
signingIdentity: ${{ parameters.signingIdentity }}
|
||||
beforeBuildSteps:
|
||||
- task: PkgESSetupBuild@12
|
||||
displayName: Package ES - Setup Build
|
||||
@@ -172,6 +182,8 @@ extends:
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
variables:
|
||||
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
|
||||
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(JobOutputDirectory)
|
||||
@@ -207,6 +219,7 @@ extends:
|
||||
buildPlatforms: ${{ parameters.buildPlatforms }}
|
||||
generateSbom: false # Handled by onebranch
|
||||
codeSign: ${{ parameters.codeSign }}
|
||||
signingIdentity: ${{ parameters.signingIdentity }}
|
||||
afterBuildSteps:
|
||||
# This directory has to exist, even if we aren't using createvpack, because the Guardian rules demand it.
|
||||
- pwsh: |-
|
||||
@@ -223,6 +236,8 @@ extends:
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
variables:
|
||||
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
|
||||
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(JobOutputDirectory)
|
||||
@@ -232,12 +247,15 @@ extends:
|
||||
buildPlatforms: ${{ parameters.buildPlatforms }}
|
||||
generateSbom: false # this is handled by onebranch
|
||||
codeSign: ${{ parameters.codeSign }}
|
||||
signingIdentity: ${{ parameters.signingIdentity }}
|
||||
|
||||
- ${{ if eq(parameters.buildWPF, true) }}:
|
||||
- template: ./build/pipelines/templates-v2/job-build-package-wpf.yml@self
|
||||
parameters:
|
||||
pool: { type: windows }
|
||||
variables:
|
||||
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
|
||||
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(JobOutputDirectory)
|
||||
@@ -247,6 +265,7 @@ extends:
|
||||
buildPlatforms: ${{ parameters.buildPlatforms }}
|
||||
generateSbom: false # this is handled by onebranch
|
||||
codeSign: ${{ parameters.codeSign }}
|
||||
signingIdentity: ${{ parameters.signingIdentity }}
|
||||
|
||||
- stage: Publish
|
||||
displayName: Publish
|
||||
@@ -260,6 +279,8 @@ extends:
|
||||
subscription: ${{ parameters.symbolPublishingSubscription }}
|
||||
symbolProject: ${{ parameters.symbolPublishingProject }}
|
||||
variables:
|
||||
ob_sdl_checkcflags_enabled: false # BAD-FLAGS
|
||||
ob_sdl_xfgcheck_enabled: false # BAD-FLAGS
|
||||
ob_git_checkout: false # This job checks itself out
|
||||
ob_git_skip_checkout_none: true
|
||||
ob_outputDirectory: $(Build.ArtifactStagingDirectory)
|
||||
|
||||
22
build/pipelines/templates-v2/steps-esrp-signing.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
parameters:
|
||||
- name: displayName
|
||||
type: string
|
||||
default: ESRP Code Signing
|
||||
- name: inputs
|
||||
type: object
|
||||
default: {}
|
||||
- name: signingIdentity
|
||||
type: object
|
||||
default: {}
|
||||
|
||||
steps:
|
||||
- task: EsrpCodeSigning@5
|
||||
displayName: ${{ parameters.displayName }}
|
||||
inputs:
|
||||
ConnectedServiceName: ${{ parameters.signingIdentity.serviceName }}
|
||||
AppRegistrationClientId: ${{ parameters.signingIdentity.appId }}
|
||||
AppRegistrationTenantId: ${{ parameters.signingIdentity.tenantId }}
|
||||
AuthAKVName: ${{ parameters.signingIdentity.akvName }}
|
||||
AuthCertName: ${{ parameters.signingIdentity.authCertName }}
|
||||
AuthSignCertName: ${{ parameters.signingIdentity.signCertName }}
|
||||
${{ insert }}: ${{ parameters.inputs }}
|
||||
16
build/scripts/Generate-PseudoLocalizations.ps1
Normal file
@@ -0,0 +1,16 @@
|
||||
Get-ChildItem -Recurse -Filter *.resw
|
||||
| Where-Object { $_.Directory.Name.StartsWith("qps-ploc") }
|
||||
| ForEach-Object {
|
||||
$source = Join-Path $_.Directory "../en-US/$($_.Name)"
|
||||
$target = $_
|
||||
|
||||
$ploc = ./tools/ConvertTo-PseudoLocalization.ps1 -Path $source
|
||||
|
||||
$writerSettings = [System.Xml.XmlWriterSettings]::new()
|
||||
$writerSettings.NewLineChars = "`r`n"
|
||||
$writerSettings.Indent = $true
|
||||
$writer = [System.Xml.XmlWriter]::Create($target, $writerSettings)
|
||||
$ploc.Save($writer)
|
||||
$writer.Flush()
|
||||
$writer.Close()
|
||||
}
|
||||
@@ -618,6 +618,11 @@
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "This will override the profile's `elevate` setting."
|
||||
},
|
||||
"reloadEnvironmentVariables": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "When set to true, a new environment block will be generated when creating a new session. Otherwise, the session will inherit the variables the Terminal was started with."
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
|
||||
@@ -8,5 +8,5 @@ Please consult the [license](https://raw.githubusercontent.com/microsoft/cascadi
|
||||
|
||||
### Fonts Included
|
||||
|
||||
* Cascadia Code, Cascadia Mono (2111.01)
|
||||
* from microsoft/cascadia-code@de36d62e777d34d3bed92a7e23988e5d61e0ba02
|
||||
* Cascadia Code, Cascadia Mono (2404.23)
|
||||
* from microsoft/cascadia-code@1034791e5fc6e060a448d2b29cd94a6c683edb36
|
||||
|
||||
@@ -118,6 +118,6 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AppDescription" xml:space="preserve">
|
||||
<value>А şςѓάţćћ ǻрр ƒθŗ χÂΜĿ Íŝĺąήðş ŧеšτş !!! !!! !!! !</value>
|
||||
<value>Ά śςґàτсн ąρφ ƒоř ΧΆΜĻ Ìŝļàиđś τёşτś !!! !!! !!! !</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -118,6 +118,6 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AppDescription" xml:space="preserve">
|
||||
<value>Ă šςґаτćĥ àρφ ƒǿя ЖΆΜĹ Іѕℓаñďş ťêšţŝ !!! !!! !!! !</value>
|
||||
<value>Ά śςґàτсн ąρφ ƒоř ΧΆΜĻ Ìŝļàиđś τёşτś !!! !!! !!! !</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -118,6 +118,6 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AppDescription" xml:space="preserve">
|
||||
<value>Ă śćяǻт¢н ãрρ ƒσг ХĂМĽ Īşłдήďѕ ťέśτş !!! !!! !!! !</value>
|
||||
<value>Ά śςґàτсн ąρφ ƒоř ΧΆΜĻ Ìŝļàиđś τёşτś !!! !!! !!! !</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -6,19 +6,87 @@
|
||||
|
||||
#include "textBuffer.hpp"
|
||||
|
||||
// All of these are somewhat annoying when trying to implement RefcountBuffer.
|
||||
// You can't stuff a unique_ptr into ut->q (= void*) after all.
|
||||
#pragma warning(disable : 26402) // Return a scoped object instead of a heap-allocated if it has a move constructor (r.3).
|
||||
#pragma warning(disable : 26403) // Reset or explicitly delete an owner<T> pointer '...' (r.3).
|
||||
#pragma warning(disable : 26409) // Avoid calling new and delete explicitly, use std::make_unique<T> instead (r.11).
|
||||
|
||||
struct RowRange
|
||||
{
|
||||
til::CoordType begin;
|
||||
til::CoordType end;
|
||||
};
|
||||
|
||||
struct RefcountBuffer
|
||||
{
|
||||
size_t references;
|
||||
size_t capacity;
|
||||
wchar_t data[1];
|
||||
|
||||
static RefcountBuffer* EnsureCapacityForOverwrite(RefcountBuffer* buffer, size_t capacity)
|
||||
{
|
||||
// We must not just ensure that `buffer` has at least `capacity`, but also that its reference count is <= 1, because otherwise we would resize a shared buffer.
|
||||
if (buffer != nullptr && buffer->references <= 1 && buffer->capacity >= capacity)
|
||||
{
|
||||
return buffer;
|
||||
}
|
||||
|
||||
const auto oldCapacity = buffer ? buffer->capacity << 1 : 0;
|
||||
const auto newCapacity = std::max(capacity + 128, oldCapacity);
|
||||
const auto newBuffer = static_cast<RefcountBuffer*>(::operator new(sizeof(RefcountBuffer) - sizeof(data) + newCapacity * sizeof(wchar_t)));
|
||||
|
||||
if (!newBuffer)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (buffer)
|
||||
{
|
||||
buffer->Release();
|
||||
}
|
||||
|
||||
// Copying the old buffer's data is not necessary because utextAccess() will scribble right over it.
|
||||
newBuffer->references = 1;
|
||||
newBuffer->capacity = newCapacity;
|
||||
return newBuffer;
|
||||
}
|
||||
|
||||
void AddRef() noexcept
|
||||
{
|
||||
// With our usage patterns, either of these two would indicate
|
||||
// an unbalanced AddRef/Release or a memory corruption.
|
||||
assert(references > 0 && references < 1000);
|
||||
references++;
|
||||
}
|
||||
|
||||
void Release() noexcept
|
||||
{
|
||||
// With our usage patterns, either of these two would indicate
|
||||
// an unbalanced AddRef/Release or a memory corruption.
|
||||
assert(references > 0 && references < 1000);
|
||||
if (--references == 0)
|
||||
{
|
||||
::operator delete(this);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
constexpr size_t& accessLength(UText* ut) noexcept
|
||||
{
|
||||
static_assert(sizeof(ut->p) == sizeof(size_t));
|
||||
return *std::bit_cast<size_t*>(&ut->p);
|
||||
}
|
||||
|
||||
constexpr RefcountBuffer*& accessBuffer(UText* ut) noexcept
|
||||
{
|
||||
static_assert(sizeof(ut->q) == sizeof(RefcountBuffer*));
|
||||
return *std::bit_cast<RefcountBuffer**>(&ut->q);
|
||||
}
|
||||
|
||||
constexpr RowRange& accessRowRange(UText* ut) noexcept
|
||||
{
|
||||
static_assert(sizeof(ut->a) == sizeof(RowRange));
|
||||
return *std::bit_cast<RowRange*>(&ut->a);
|
||||
}
|
||||
|
||||
@@ -56,11 +124,16 @@ static UText* U_CALLCONV utextClone(UText* dest, const UText* src, UBool deep, U
|
||||
}
|
||||
|
||||
dest = utext_setup(dest, 0, status);
|
||||
if (*status <= U_ZERO_ERROR)
|
||||
if (*status > U_ZERO_ERROR)
|
||||
{
|
||||
memcpy(dest, src, sizeof(UText));
|
||||
return dest;
|
||||
}
|
||||
|
||||
memcpy(dest, src, sizeof(UText));
|
||||
if (const auto buf = accessBuffer(dest))
|
||||
{
|
||||
buf->AddRef();
|
||||
}
|
||||
return dest;
|
||||
}
|
||||
|
||||
@@ -82,7 +155,9 @@ try
|
||||
|
||||
for (til::CoordType y = range.begin; y < range.end; ++y)
|
||||
{
|
||||
length += textBuffer.GetRowByOffset(y).GetText().size();
|
||||
const auto& row = textBuffer.GetRowByOffset(y);
|
||||
// Later down below we'll add a newline to the text if !wasWrapForced, so we need to account for that here.
|
||||
length += row.GetText().size() + !row.WasWrapForced();
|
||||
}
|
||||
|
||||
accessLength(ut) = length;
|
||||
@@ -111,12 +186,9 @@ catch (...)
|
||||
static UBool U_CALLCONV utextAccess(UText* ut, int64_t nativeIndex, UBool forward) noexcept
|
||||
try
|
||||
{
|
||||
if (nativeIndex < 0)
|
||||
{
|
||||
nativeIndex = 0;
|
||||
}
|
||||
|
||||
auto neededIndex = nativeIndex;
|
||||
// This will make it simpler for us to search the row that contains the nativeIndex,
|
||||
// because we'll now only need to check for `start<=index<limit` and nothing else.
|
||||
if (!forward)
|
||||
{
|
||||
neededIndex--;
|
||||
@@ -124,13 +196,17 @@ try
|
||||
|
||||
const auto& textBuffer = *static_cast<const TextBuffer*>(ut->context);
|
||||
const auto range = accessRowRange(ut);
|
||||
auto start = ut->chunkNativeStart;
|
||||
auto limit = ut->chunkNativeLimit;
|
||||
auto y = accessCurrentRow(ut);
|
||||
std::wstring_view text;
|
||||
const auto startOld = ut->chunkNativeStart;
|
||||
const auto limitOld = ut->chunkNativeLimit;
|
||||
auto start = startOld;
|
||||
auto limit = limitOld;
|
||||
|
||||
if (neededIndex < start || neededIndex >= limit)
|
||||
if (neededIndex < startOld || neededIndex >= limitOld)
|
||||
{
|
||||
auto y = accessCurrentRow(ut);
|
||||
std::wstring_view text;
|
||||
bool wasWrapForced = false;
|
||||
|
||||
if (neededIndex < start)
|
||||
{
|
||||
do
|
||||
@@ -138,12 +214,16 @@ try
|
||||
--y;
|
||||
if (y < range.begin)
|
||||
{
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
text = textBuffer.GetRowByOffset(y).GetText();
|
||||
const auto& row = textBuffer.GetRowByOffset(y);
|
||||
text = row.GetText();
|
||||
wasWrapForced = row.WasWrapForced();
|
||||
|
||||
limit = start;
|
||||
start -= text.size();
|
||||
// Later down below we'll add a newline to the text if !wasWrapForced, so we need to account for that here.
|
||||
start -= text.size() + !wasWrapForced;
|
||||
} while (neededIndex < start);
|
||||
}
|
||||
else
|
||||
@@ -153,35 +233,63 @@ try
|
||||
++y;
|
||||
if (y >= range.end)
|
||||
{
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
text = textBuffer.GetRowByOffset(y).GetText();
|
||||
const auto& row = textBuffer.GetRowByOffset(y);
|
||||
text = row.GetText();
|
||||
wasWrapForced = row.WasWrapForced();
|
||||
|
||||
start = limit;
|
||||
limit += text.size();
|
||||
// Later down below we'll add a newline to the text if !wasWrapForced, so we need to account for that here.
|
||||
limit += text.size() + !wasWrapForced;
|
||||
} while (neededIndex >= limit);
|
||||
}
|
||||
|
||||
accessCurrentRow(ut) = y;
|
||||
ut->chunkNativeStart = start;
|
||||
ut->chunkNativeLimit = limit;
|
||||
ut->chunkLength = gsl::narrow_cast<int32_t>(text.size());
|
||||
assert(start >= 0);
|
||||
// If we have already calculated the total length we can also assert that the limit is in range.
|
||||
assert(ut->p == nullptr || static_cast<size_t>(limit) <= accessLength(ut));
|
||||
|
||||
// Even if we went out-of-bounds, we still need to update the chunkContents to contain the first/last chunk.
|
||||
if (limit != limitOld)
|
||||
{
|
||||
if (!wasWrapForced)
|
||||
{
|
||||
const auto newSize = text.size() + 1;
|
||||
const auto buffer = RefcountBuffer::EnsureCapacityForOverwrite(accessBuffer(ut), newSize);
|
||||
|
||||
memcpy(&buffer->data[0], text.data(), text.size() * sizeof(wchar_t));
|
||||
til::at(buffer->data, text.size()) = L'\n';
|
||||
|
||||
text = { &buffer->data[0], newSize };
|
||||
accessBuffer(ut) = buffer;
|
||||
}
|
||||
|
||||
accessCurrentRow(ut) = y;
|
||||
ut->chunkNativeStart = start;
|
||||
ut->chunkNativeLimit = limit;
|
||||
ut->chunkLength = gsl::narrow_cast<int32_t>(text.size());
|
||||
#pragma warning(suppress : 26490) // Don't use reinterpret_cast (type.1).
|
||||
ut->chunkContents = reinterpret_cast<const char16_t*>(text.data());
|
||||
ut->nativeIndexingLimit = ut->chunkLength;
|
||||
ut->chunkContents = reinterpret_cast<const char16_t*>(text.data());
|
||||
ut->nativeIndexingLimit = ut->chunkLength;
|
||||
}
|
||||
}
|
||||
|
||||
auto offset = gsl::narrow_cast<int32_t>(nativeIndex - start);
|
||||
|
||||
// The ICU documentation is a little bit misleading. It states:
|
||||
// > @param forward [...] If true, start<=index<limit. If false, [...] start<index<=limit.
|
||||
// but that's just for finding the target chunk. The chunkOffset is not actually constrained to that!
|
||||
// std::clamp will perform a<=b<=c, which is what we want.
|
||||
const auto clampedIndex = std::clamp(nativeIndex, start, limit);
|
||||
auto offset = gsl::narrow_cast<int32_t>(clampedIndex - start);
|
||||
// Don't leave the offset on a trailing surrogate pair. See U16_SET_CP_START.
|
||||
// This assumes that the TextBuffer contains valid UTF-16 which may theoretically not be the case.
|
||||
if (offset > 0 && offset < ut->chunkLength && U16_IS_TRAIL(til::at(ut->chunkContents, offset)))
|
||||
{
|
||||
offset--;
|
||||
}
|
||||
|
||||
ut->chunkOffset = offset;
|
||||
return true;
|
||||
|
||||
return neededIndex >= start && neededIndex < limit;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
@@ -256,18 +364,32 @@ catch (...)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void U_CALLCONV utextClose(UText* ut) noexcept
|
||||
{
|
||||
if (const auto buffer = accessBuffer(ut))
|
||||
{
|
||||
buffer->Release();
|
||||
}
|
||||
}
|
||||
|
||||
static constexpr UTextFuncs utextFuncs{
|
||||
.tableSize = sizeof(UTextFuncs),
|
||||
.clone = utextClone,
|
||||
.nativeLength = utextNativeLength,
|
||||
.access = utextAccess,
|
||||
.close = utextClose,
|
||||
};
|
||||
|
||||
// Creates a UText from the given TextBuffer that spans rows [rowBeg,RowEnd).
|
||||
UText Microsoft::Console::ICU::UTextFromTextBuffer(const TextBuffer& textBuffer, til::CoordType rowBeg, til::CoordType rowEnd) noexcept
|
||||
Microsoft::Console::ICU::unique_utext Microsoft::Console::ICU::UTextFromTextBuffer(const TextBuffer& textBuffer, til::CoordType rowBeg, til::CoordType rowEnd) noexcept
|
||||
{
|
||||
#pragma warning(suppress : 26477) // Use 'nullptr' rather than 0 or NULL (es.47).
|
||||
UText ut = UTEXT_INITIALIZER;
|
||||
unique_utext ut{ UTEXT_INITIALIZER };
|
||||
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
utext_setup(&ut, 0, &status);
|
||||
FAIL_FAST_IF(status > U_ZERO_ERROR);
|
||||
|
||||
ut.providerProperties = (1 << UTEXT_PROVIDER_LENGTH_IS_EXPENSIVE) | (1 << UTEXT_PROVIDER_STABLE_CHUNKS);
|
||||
ut.pFuncs = &utextFuncs;
|
||||
ut.context = &textBuffer;
|
||||
|
||||
@@ -10,8 +10,9 @@ class TextBuffer;
|
||||
namespace Microsoft::Console::ICU
|
||||
{
|
||||
using unique_uregex = wistd::unique_ptr<URegularExpression, wil::function_deleter<decltype(&uregex_close), &uregex_close>>;
|
||||
using unique_utext = wil::unique_struct<UText, decltype(&utext_close), &utext_close>;
|
||||
|
||||
UText UTextFromTextBuffer(const TextBuffer& textBuffer, til::CoordType rowBeg, til::CoordType rowEnd) noexcept;
|
||||
unique_utext UTextFromTextBuffer(const TextBuffer& textBuffer, til::CoordType rowBeg, til::CoordType rowEnd) noexcept;
|
||||
unique_uregex CreateRegex(const std::wstring_view& pattern, uint32_t flags, UErrorCode* status) noexcept;
|
||||
til::point_span BufferRangeFromMatch(UText* ut, URegularExpression* re);
|
||||
}
|
||||
|
||||
@@ -111,28 +111,6 @@ const til::point_span* Search::GetCurrent() const noexcept
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Search::HighlightResults() const
|
||||
{
|
||||
std::vector<til::inclusive_rect> toSelect;
|
||||
const auto& textBuffer = _renderData->GetTextBuffer();
|
||||
|
||||
for (const auto& r : _results)
|
||||
{
|
||||
const auto rbStart = textBuffer.BufferToScreenPosition(r.start);
|
||||
const auto rbEnd = textBuffer.BufferToScreenPosition(r.end);
|
||||
|
||||
til::inclusive_rect re;
|
||||
re.top = rbStart.y;
|
||||
re.bottom = rbEnd.y;
|
||||
re.left = rbStart.x;
|
||||
re.right = rbEnd.x;
|
||||
|
||||
toSelect.emplace_back(re);
|
||||
}
|
||||
|
||||
_renderData->SelectSearchRegions(std::move(toSelect));
|
||||
}
|
||||
|
||||
// Routine Description:
|
||||
// - Takes the found word and selects it in the screen buffer
|
||||
|
||||
@@ -149,7 +127,6 @@ bool Search::SelectCurrent() const
|
||||
return true;
|
||||
}
|
||||
|
||||
_renderData->ClearSelection();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ public:
|
||||
void FindNext() noexcept;
|
||||
|
||||
const til::point_span* GetCurrent() const noexcept;
|
||||
void HighlightResults() const;
|
||||
bool SelectCurrent() const;
|
||||
|
||||
const std::vector<til::point_span>& Results() const noexcept;
|
||||
|
||||
@@ -1414,10 +1414,23 @@ til::point TextBuffer::_GetWordStartForSelection(const til::point target, const
|
||||
// expand left until we hit the left boundary or a different delimiter class
|
||||
while (result != bufferSize.Origin() && _GetDelimiterClassAt(result, wordDelimiters) == initialDelimiter)
|
||||
{
|
||||
//prevent selection wrapping on whitespace selection
|
||||
if (isControlChar && result.x == bufferSize.Left())
|
||||
if (result.x == bufferSize.Left())
|
||||
{
|
||||
break;
|
||||
// Prevent wrapping to the previous line if the selection begins on whitespace
|
||||
if (isControlChar)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (result.y > 0)
|
||||
{
|
||||
// Prevent wrapping to the previous line if it was hard-wrapped (e.g. not forced by us to wrap)
|
||||
const auto& priorRow = GetRowByOffset(result.y - 1);
|
||||
if (!priorRow.WasWrapForced())
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
bufferSize.DecrementInBounds(result);
|
||||
}
|
||||
@@ -1537,10 +1550,22 @@ til::point TextBuffer::_GetWordEndForSelection(const til::point target, const st
|
||||
// expand right until we hit the right boundary as a ControlChar or a different delimiter class
|
||||
while (result != bufferSize.BottomRightInclusive() && _GetDelimiterClassAt(result, wordDelimiters) == initialDelimiter)
|
||||
{
|
||||
if (isControlChar && result.x == bufferSize.RightInclusive())
|
||||
if (result.x == bufferSize.RightInclusive())
|
||||
{
|
||||
break;
|
||||
// Prevent wrapping to the next line if the selection begins on whitespace
|
||||
if (isControlChar)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Prevent wrapping to the next line if this one was hard-wrapped (e.g. not forced by us to wrap)
|
||||
const auto& row = GetRowByOffset(result.y);
|
||||
if (!row.WasWrapForced())
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bufferSize.IncrementInBoundsCircular(result);
|
||||
}
|
||||
|
||||
@@ -1969,25 +1994,10 @@ size_t TextBuffer::SpanLength(const til::point coordStart, const til::point coor
|
||||
// - end - where to end getting text
|
||||
// Return Value:
|
||||
// - Just the text.
|
||||
std::wstring TextBuffer::GetPlainText(const til::point& start, const til::point& end) const
|
||||
std::wstring TextBuffer::GetPlainText(const til::point start, const til::point end) const
|
||||
{
|
||||
std::wstring text;
|
||||
auto spanLength = SpanLength(start, end);
|
||||
text.reserve(spanLength);
|
||||
|
||||
auto it = GetCellDataAt(start);
|
||||
|
||||
for (; it && spanLength > 0; ++it, --spanLength)
|
||||
{
|
||||
const auto& cell = *it;
|
||||
if (cell.DbcsAttr() != DbcsAttribute::Trailing)
|
||||
{
|
||||
const auto chars = cell.Chars();
|
||||
text.append(chars);
|
||||
}
|
||||
}
|
||||
|
||||
return text;
|
||||
const auto req = CopyRequest::FromConfig(*this, start, end, true, false, false, false);
|
||||
return GetPlainText(req);
|
||||
}
|
||||
|
||||
// Routine Description:
|
||||
@@ -2702,6 +2712,15 @@ void TextBuffer::Reflow(TextBuffer& oldBuffer, TextBuffer& newBuffer, const View
|
||||
}
|
||||
}
|
||||
|
||||
// The for loop right after this if condition will copy entire rows of attributes at a time.
|
||||
// This assumes of course that the "write cursor" (newX, newY) is at the start of a row.
|
||||
// If we didn't check for this, we may otherwise copy attributes from a later row into a previous one.
|
||||
if (newX != 0)
|
||||
{
|
||||
newX = 0;
|
||||
newY++;
|
||||
}
|
||||
|
||||
// Finish copying buffer attributes to remaining rows below the last
|
||||
// printable character. This is to fix the `color 2f` scenario, where you
|
||||
// change the buffer colors then resize and everything below the last
|
||||
|
||||
@@ -232,7 +232,7 @@ public:
|
||||
|
||||
size_t SpanLength(const til::point coordStart, const til::point coordEnd) const;
|
||||
|
||||
std::wstring GetPlainText(const til::point& start, const til::point& end) const;
|
||||
std::wstring GetPlainText(til::point start, til::point end) const;
|
||||
|
||||
struct CopyRequest
|
||||
{
|
||||
|
||||
@@ -589,13 +589,13 @@ namespace
|
||||
TestBuffer{
|
||||
{ 2, 5 }, // reduce width aggressively
|
||||
{
|
||||
{ L" ", true },
|
||||
{ L" ", true },
|
||||
{ L" ", true },
|
||||
{ L" ", true },
|
||||
{ L" ", false },
|
||||
{ L" ", true },
|
||||
{ L" ", true },
|
||||
{ L" ", true },
|
||||
{ L" ", true },
|
||||
},
|
||||
{ 1, 0 },
|
||||
{ 1, 4 },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
BIN
src/cascadia/CascadiaPackage/ProfileIcons/vs-cmd.scale-100.png
Normal file
|
After Width: | Height: | Size: 433 B |
BIN
src/cascadia/CascadiaPackage/ProfileIcons/vs-cmd.scale-150.png
Normal file
|
After Width: | Height: | Size: 804 B |
BIN
src/cascadia/CascadiaPackage/ProfileIcons/vs-cmd.scale-200.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 758 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
BIN
src/cascadia/CascadiaPackage/ProfileIcons/vs-pwsh.scale-100.png
Normal file
|
After Width: | Height: | Size: 819 B |
BIN
src/cascadia/CascadiaPackage/ProfileIcons/vs-pwsh.scale-150.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
src/cascadia/CascadiaPackage/ProfileIcons/vs-pwsh.scale-200.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
@@ -166,7 +166,7 @@
|
||||
<comment>{Locked=qps-ploc,qps-ploca,qps-plocm}</comment>
|
||||
</data>
|
||||
<data name="AppDescription" xml:space="preserve">
|
||||
<value>Τнĕ Ņëω Ẅίηđŏẃś Ťėŗmįйάĺ !!! !!! !</value>
|
||||
<value>Τĥз Йéщ Ẃįńđôẃѕ Тéѓmĩиâļ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AppDescriptionDev" xml:space="preserve">
|
||||
<value>The Windows Terminal, but Unofficial</value>
|
||||
@@ -177,22 +177,22 @@
|
||||
<comment>{Locked}</comment>
|
||||
</data>
|
||||
<data name="AppDescriptionPre" xml:space="preserve">
|
||||
<value>Ŵíňďōẁŝ Тєřмīπǻļ ωїτĥ å ρѓēνіéŵ θƒ ũφсőмϊπġ ƒєąτΰґёѕ !!! !!! !!! !!! !!! </value>
|
||||
<value>Щΐňδόŵѕ Ŧęřмĭʼnäℓ ẅîťħ à φřеνίëẃ θƒ џрсøмΐʼnğ ƒĕāŧųřэś !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Dev" xml:space="preserve">
|
||||
<value>Open in Terminal (&Dev)</value>
|
||||
<comment>{Locked} The dev build will never be seen in multiple languages</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Canary" xml:space="preserve">
|
||||
<value>Ŏрέи ìη Тèřmīŋªŀ (&Cãńãґγ) !!! !!! !</value>
|
||||
<value>Θρēņ ïη Ţéгmĭηäŀ (&Çäņдѓγ) !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Canary version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Preview" xml:space="preserve">
|
||||
<value>Φφєň ΐñ Ŧéгмϊñаľ &Pŕėνĭ℮ώ !!! !!! !</value>
|
||||
<value>Όрèп ìņ Ţêŕmїʼnåļ &Рѓзνι℮ω !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem" xml:space="preserve">
|
||||
<value>Ωρєⁿ ïπ &Těѓmĭñäĺ !!! !!</value>
|
||||
<value>Óрêп ìл &Ťěѓmιиåĺ !!! !!</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the non-preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -166,7 +166,7 @@
|
||||
<comment>{Locked=qps-ploc,qps-ploca,qps-plocm}</comment>
|
||||
</data>
|
||||
<data name="AppDescription" xml:space="preserve">
|
||||
<value>Ťĥё Ñēщ Шίⁿðоẅś Ťėгмîήāľ !!! !!! !</value>
|
||||
<value>Τĥз Йéщ Ẃįńđôẃѕ Тéѓmĩиâļ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AppDescriptionDev" xml:space="preserve">
|
||||
<value>The Windows Terminal, but Unofficial</value>
|
||||
@@ -177,22 +177,22 @@
|
||||
<comment>{Locked}</comment>
|
||||
</data>
|
||||
<data name="AppDescriptionPre" xml:space="preserve">
|
||||
<value>Шίηđóŵš Ŧĕяmїйàℓ ẁітħ ª φяęνîёщ όƒ ûφĉбмíήĝ ƒêåťµřεŝ !!! !!! !!! !!! !!! </value>
|
||||
<value>Щΐňδόŵѕ Ŧęřмĭʼnäℓ ẅîťħ à φřеνίëẃ θƒ џрсøмΐʼnğ ƒĕāŧųřэś !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Dev" xml:space="preserve">
|
||||
<value>Open in Terminal (&Dev)</value>
|
||||
<comment>{Locked} The dev build will never be seen in multiple languages</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Canary" xml:space="preserve">
|
||||
<value>Óрëπ íи Ťēяmілǻŀ (&Cäηàřÿ) !!! !!! !</value>
|
||||
<value>Θρēņ ïη Ţéгmĭηäŀ (&Çäņдѓγ) !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Canary version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Preview" xml:space="preserve">
|
||||
<value>Óрзń ΐή Ŧěґмιлāℓ &Pѓéνīĕω !!! !!! !</value>
|
||||
<value>Όрèп ìņ Ţêŕmїʼnåļ &Рѓзνι℮ω !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem" xml:space="preserve">
|
||||
<value>Ôрëη ïп &Tēѓмϊŋãł !!! !!</value>
|
||||
<value>Óрêп ìл &Ťěѓmιиåĺ !!! !!</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the non-preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -166,7 +166,7 @@
|
||||
<comment>{Locked=qps-ploc,qps-ploca,qps-plocm}</comment>
|
||||
</data>
|
||||
<data name="AppDescription" xml:space="preserve">
|
||||
<value>Тĥё Ńēẁ Шіπđοωš Тěřмιňαŀ !!! !!! !</value>
|
||||
<value>Τĥз Йéщ Ẃįńđôẃѕ Тéѓmĩиâļ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AppDescriptionDev" xml:space="preserve">
|
||||
<value>The Windows Terminal, but Unofficial</value>
|
||||
@@ -177,22 +177,22 @@
|
||||
<comment>{Locked}</comment>
|
||||
</data>
|
||||
<data name="AppDescriptionPre" xml:space="preserve">
|
||||
<value>Шίήďŏшś Ŧêямĩňāľ ŵíτн ă ρѓëνιêω øƒ ũρčŏмįηğ ƒєáţũŗêš !!! !!! !!! !!! !!! </value>
|
||||
<value>Щΐňδόŵѕ Ŧęřмĭʼnäℓ ẅîťħ à φřеνίëẃ θƒ џрсøмΐʼnğ ƒĕāŧųřэś !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Dev" xml:space="preserve">
|
||||
<value>Open in Terminal (&Dev)</value>
|
||||
<comment>{Locked} The dev build will never be seen in multiple languages</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Canary" xml:space="preserve">
|
||||
<value>Фφěй ĩń Тêřmιπâł (&Cãⁿǻřу) !!! !!! !</value>
|
||||
<value>Θρēņ ïη Ţéгmĭηäŀ (&Çäņдѓγ) !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Canary version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Preview" xml:space="preserve">
|
||||
<value>Óφ℮ʼn ΐŋ Τėřmīйäĺ &Pяєνϊëẃ !!! !!! !</value>
|
||||
<value>Όрèп ìņ Ţêŕmїʼnåļ &Рѓзνι℮ω !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem" xml:space="preserve">
|
||||
<value>Ορέл ϊŋ &Téŕmįñāℓ !!! !!</value>
|
||||
<value>Óрêп ìл &Ťěѓmιиåĺ !!! !!</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the non-preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,5 +0,0 @@
|
||||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT license.
|
||||
#include "pch.h"
|
||||
#include "GetWindowLayoutArgs.h"
|
||||
#include "GetWindowLayoutArgs.g.cpp"
|
||||
@@ -1,31 +0,0 @@
|
||||
/*++
|
||||
Copyright (c) Microsoft Corporation
|
||||
Licensed under the MIT license.
|
||||
|
||||
Class Name:
|
||||
- GetWindowLayoutArgs.h
|
||||
|
||||
Abstract:
|
||||
- This is a helper class for getting the window layout from a peasant.
|
||||
Depending on if we are running on the monarch or on a peasant we might need
|
||||
to switch what thread we are executing on. This gives us the option of
|
||||
either returning the json result synchronously, or as a promise.
|
||||
--*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "GetWindowLayoutArgs.g.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
{
|
||||
struct GetWindowLayoutArgs : public GetWindowLayoutArgsT<GetWindowLayoutArgs>
|
||||
{
|
||||
WINRT_PROPERTY(winrt::hstring, WindowLayoutJson, L"");
|
||||
WINRT_PROPERTY(winrt::Windows::Foundation::IAsyncOperation<winrt::hstring>, WindowLayoutJsonAsync, nullptr)
|
||||
};
|
||||
}
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Remoting::factory_implementation
|
||||
{
|
||||
BASIC_FACTORY(GetWindowLayoutArgs);
|
||||
}
|
||||
@@ -37,12 +37,6 @@
|
||||
<ClInclude Include="WindowActivatedArgs.h">
|
||||
<DependentUpon>Peasant.idl</DependentUpon>
|
||||
</ClInclude>
|
||||
<ClInclude Include="GetWindowLayoutArgs.h">
|
||||
<DependentUpon>Peasant.idl</DependentUpon>
|
||||
</ClInclude>
|
||||
<ClInclude Include="QuitAllRequestedArgs.h">
|
||||
<DependentUpon>Monarch.idl</DependentUpon>
|
||||
</ClInclude>
|
||||
<ClInclude Include="pch.h" />
|
||||
<ClInclude Include="MonarchFactory.h" />
|
||||
<ClInclude Include="Peasant.h">
|
||||
@@ -78,12 +72,6 @@
|
||||
<ClCompile Include="WindowActivatedArgs.cpp">
|
||||
<DependentUpon>Peasant.idl</DependentUpon>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GetWindowLayoutArgs.cpp">
|
||||
<DependentUpon>Peasant.idl</DependentUpon>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QuitAllRequestedArgs.cpp">
|
||||
<DependentUpon>Monarch.idl</DependentUpon>
|
||||
</ClCompile>
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "Monarch.h"
|
||||
#include "CommandlineArgs.h"
|
||||
#include "FindTargetWindowArgs.h"
|
||||
#include "QuitAllRequestedArgs.h"
|
||||
#include "ProposeCommandlineResult.h"
|
||||
|
||||
#include "Monarch.g.cpp"
|
||||
@@ -135,21 +134,13 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
// - <none> used
|
||||
// Return Value:
|
||||
// - <none>
|
||||
winrt::fire_and_forget Monarch::_handleQuitAll(const winrt::Windows::Foundation::IInspectable& /*sender*/,
|
||||
const winrt::Windows::Foundation::IInspectable& /*args*/)
|
||||
void Monarch::_handleQuitAll(const winrt::Windows::Foundation::IInspectable& /*sender*/, const winrt::Windows::Foundation::IInspectable& /*args*/)
|
||||
{
|
||||
// Let the process hosting the monarch run any needed logic before
|
||||
// closing all windows.
|
||||
auto args = winrt::make_self<implementation::QuitAllRequestedArgs>();
|
||||
_QuitAllRequestedHandlers(*this, *args);
|
||||
|
||||
if (const auto action = args->BeforeQuitAllAction())
|
||||
if (_quitting.exchange(true, std::memory_order_relaxed))
|
||||
{
|
||||
co_await action;
|
||||
return;
|
||||
}
|
||||
|
||||
_quitting.store(true);
|
||||
// Tell all peasants to exit.
|
||||
const auto callback = [&](const auto& id, const auto& p) {
|
||||
// We want to tell our peasant to quit last, so that we don't try
|
||||
// to perform a bunch of elections on quit.
|
||||
@@ -197,7 +188,7 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
// If we are quitting we don't care about maintaining our list of
|
||||
// peasants anymore, and don't need to notify the host that something
|
||||
// changed.
|
||||
if (_quitting.load(std::memory_order_acquire))
|
||||
if (_quitting.load(std::memory_order_relaxed))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -1036,30 +1027,6 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
_forEachPeasant(func, onError);
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
// - Ask all peasants to return their window layout as json
|
||||
// Arguments:
|
||||
// - <none>
|
||||
// Return Value:
|
||||
// - The collection of window layouts from each peasant.
|
||||
Windows::Foundation::Collections::IVector<winrt::hstring> Monarch::GetAllWindowLayouts()
|
||||
{
|
||||
std::vector<winrt::hstring> vec;
|
||||
auto callback = [&](const auto& /*id*/, const auto& p) {
|
||||
vec.emplace_back(p.GetWindowLayout());
|
||||
};
|
||||
auto onError = [](auto&& id) {
|
||||
TraceLoggingWrite(g_hRemotingProvider,
|
||||
"Monarch_GetAllWindowLayouts_Failed",
|
||||
TraceLoggingInt64(id, "peasantID", "The ID of the peasant which we could not get a window layout from"),
|
||||
TraceLoggingLevel(WINEVENT_LEVEL_VERBOSE),
|
||||
TraceLoggingKeyword(TIL_KEYWORD_TRACE));
|
||||
};
|
||||
_forEachPeasant(callback, onError);
|
||||
|
||||
return winrt::single_threaded_vector(std::move(vec));
|
||||
}
|
||||
|
||||
void Monarch::RequestMoveContent(winrt::hstring window,
|
||||
winrt::hstring content,
|
||||
uint32_t tabIndex,
|
||||
|
||||
@@ -96,7 +96,6 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
void SummonAllWindows();
|
||||
bool DoesQuakeWindowExist();
|
||||
Windows::Foundation::Collections::IVectorView<winrt::Microsoft::Terminal::Remoting::PeasantInfo> GetPeasantInfos();
|
||||
Windows::Foundation::Collections::IVector<winrt::hstring> GetAllWindowLayouts();
|
||||
|
||||
void RequestMoveContent(winrt::hstring window, winrt::hstring content, uint32_t tabIndex, const Windows::Foundation::IReference<Windows::Foundation::Rect>& windowBounds);
|
||||
void RequestSendContent(const Remoting::RequestReceiveContentArgs& args);
|
||||
@@ -106,8 +105,6 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
TYPED_EVENT(HideNotificationIconRequested, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable);
|
||||
TYPED_EVENT(WindowCreated, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable);
|
||||
TYPED_EVENT(WindowClosed, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable);
|
||||
TYPED_EVENT(QuitAllRequested, winrt::Windows::Foundation::IInspectable, winrt::Microsoft::Terminal::Remoting::QuitAllRequestedArgs);
|
||||
|
||||
TYPED_EVENT(RequestNewWindow, winrt::Windows::Foundation::IInspectable, winrt::Microsoft::Terminal::Remoting::WindowRequestedArgs);
|
||||
|
||||
private:
|
||||
@@ -146,8 +143,8 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
void _renameRequested(const winrt::Windows::Foundation::IInspectable& sender,
|
||||
const winrt::Microsoft::Terminal::Remoting::RenameRequestArgs& args);
|
||||
|
||||
winrt::fire_and_forget _handleQuitAll(const winrt::Windows::Foundation::IInspectable& sender,
|
||||
const winrt::Windows::Foundation::IInspectable& args);
|
||||
void _handleQuitAll(const winrt::Windows::Foundation::IInspectable& sender,
|
||||
const winrt::Windows::Foundation::IInspectable& args);
|
||||
|
||||
// Method Description:
|
||||
// - Helper for doing something on each and every peasant.
|
||||
|
||||
@@ -46,11 +46,6 @@ namespace Microsoft.Terminal.Remoting
|
||||
Windows.Foundation.IReference<UInt64> WindowID;
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass QuitAllRequestedArgs {
|
||||
QuitAllRequestedArgs();
|
||||
Windows.Foundation.IAsyncAction BeforeQuitAllAction;
|
||||
}
|
||||
|
||||
struct PeasantInfo
|
||||
{
|
||||
UInt64 Id;
|
||||
@@ -72,7 +67,6 @@ namespace Microsoft.Terminal.Remoting
|
||||
void SummonAllWindows();
|
||||
Boolean DoesQuakeWindowExist();
|
||||
Windows.Foundation.Collections.IVectorView<PeasantInfo> GetPeasantInfos { get; };
|
||||
Windows.Foundation.Collections.IVector<String> GetAllWindowLayouts();
|
||||
|
||||
void RequestMoveContent(String window, String content, UInt32 tabIndex, Windows.Foundation.IReference<Windows.Foundation.Rect> bounds);
|
||||
void RequestSendContent(RequestReceiveContentArgs args);
|
||||
@@ -82,7 +76,6 @@ namespace Microsoft.Terminal.Remoting
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> HideNotificationIconRequested;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> WindowCreated;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> WindowClosed;
|
||||
event Windows.Foundation.TypedEventHandler<Object, QuitAllRequestedArgs> QuitAllRequested;
|
||||
|
||||
event Windows.Foundation.TypedEventHandler<Object, WindowRequestedArgs> RequestNewWindow;
|
||||
};
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "Peasant.h"
|
||||
#include "CommandlineArgs.h"
|
||||
#include "SummonWindowBehavior.h"
|
||||
#include "GetWindowLayoutArgs.h"
|
||||
#include "Peasant.g.cpp"
|
||||
#include "../../types/inc/utils.hpp"
|
||||
#include "AttachRequest.g.cpp"
|
||||
@@ -309,26 +308,6 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
TraceLoggingKeyword(TIL_KEYWORD_TRACE));
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
// - Request and return the window layout from the current TerminalPage
|
||||
// Arguments:
|
||||
// - <none>
|
||||
// Return Value:
|
||||
// - the window layout as a json string
|
||||
hstring Peasant::GetWindowLayout()
|
||||
{
|
||||
auto args = winrt::make_self<implementation::GetWindowLayoutArgs>();
|
||||
_GetWindowLayoutRequestedHandlers(nullptr, *args);
|
||||
if (const auto op = args->WindowLayoutJsonAsync())
|
||||
{
|
||||
// This will fail if called on the UI thread, so the monarch should
|
||||
// never set WindowLayoutJsonAsync.
|
||||
auto str = op.get();
|
||||
return str;
|
||||
}
|
||||
return args->WindowLayoutJson();
|
||||
}
|
||||
|
||||
void Peasant::SendContent(const Remoting::RequestReceiveContentArgs& args)
|
||||
{
|
||||
_SendContentRequestedHandlers(*this, args);
|
||||
|
||||
@@ -65,7 +65,6 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
|
||||
winrt::Microsoft::Terminal::Remoting::CommandlineArgs InitialArgs();
|
||||
|
||||
winrt::hstring GetWindowLayout();
|
||||
void SendContent(const winrt::Microsoft::Terminal::Remoting::RequestReceiveContentArgs& args);
|
||||
|
||||
WINRT_PROPERTY(winrt::hstring, WindowName);
|
||||
@@ -82,7 +81,6 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
TYPED_EVENT(HideNotificationIconRequested, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable);
|
||||
TYPED_EVENT(QuitAllRequested, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable);
|
||||
TYPED_EVENT(QuitRequested, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable);
|
||||
TYPED_EVENT(GetWindowLayoutRequested, winrt::Windows::Foundation::IInspectable, winrt::Microsoft::Terminal::Remoting::GetWindowLayoutArgs);
|
||||
|
||||
TYPED_EVENT(AttachRequested, winrt::Windows::Foundation::IInspectable, winrt::Microsoft::Terminal::Remoting::AttachRequest);
|
||||
TYPED_EVENT(SendContentRequested, winrt::Windows::Foundation::IInspectable, winrt::Microsoft::Terminal::Remoting::RequestReceiveContentArgs);
|
||||
|
||||
@@ -32,12 +32,6 @@ namespace Microsoft.Terminal.Remoting
|
||||
Windows.Foundation.DateTime ActivatedTime { get; };
|
||||
};
|
||||
|
||||
[default_interface] runtimeclass GetWindowLayoutArgs {
|
||||
GetWindowLayoutArgs();
|
||||
String WindowLayoutJson;
|
||||
Windows.Foundation.IAsyncOperation<String> WindowLayoutJsonAsync;
|
||||
}
|
||||
|
||||
enum MonitorBehavior
|
||||
{
|
||||
InPlace,
|
||||
@@ -88,7 +82,6 @@ namespace Microsoft.Terminal.Remoting
|
||||
void RequestHideNotificationIcon();
|
||||
void RequestQuitAll();
|
||||
void Quit();
|
||||
String GetWindowLayout();
|
||||
|
||||
void AttachContentToWindow(AttachRequest request);
|
||||
void SendContent(RequestReceiveContentArgs args);
|
||||
@@ -102,7 +95,6 @@ namespace Microsoft.Terminal.Remoting
|
||||
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> ShowNotificationIconRequested;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> HideNotificationIconRequested;
|
||||
event Windows.Foundation.TypedEventHandler<Object, GetWindowLayoutArgs> GetWindowLayoutRequested;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> QuitAllRequested;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> QuitRequested;
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT license.
|
||||
#include "pch.h"
|
||||
#include "QuitAllRequestedArgs.h"
|
||||
#include "QuitAllRequestedArgs.g.cpp"
|
||||
@@ -1,29 +0,0 @@
|
||||
/*++
|
||||
Copyright (c) Microsoft Corporation
|
||||
Licensed under the MIT license.
|
||||
|
||||
Class Name:
|
||||
- QuitAllRequestedArgs.h
|
||||
|
||||
Abstract:
|
||||
- This is a helper class for allowing the monarch to run code before telling all
|
||||
peasants to quit. This way the monarch can raise an event and get back a future
|
||||
to wait for before continuing.
|
||||
--*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "QuitAllRequestedArgs.g.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
{
|
||||
struct QuitAllRequestedArgs : public QuitAllRequestedArgsT<QuitAllRequestedArgs>
|
||||
{
|
||||
WINRT_PROPERTY(winrt::Windows::Foundation::IAsyncAction, BeforeQuitAllAction, nullptr)
|
||||
};
|
||||
}
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Remoting::factory_implementation
|
||||
{
|
||||
BASIC_FACTORY(QuitAllRequestedArgs);
|
||||
}
|
||||
@@ -92,8 +92,6 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
_monarch.WindowCreated({ get_weak(), &WindowManager::_WindowCreatedHandlers });
|
||||
_monarch.WindowClosed({ get_weak(), &WindowManager::_WindowClosedHandlers });
|
||||
_monarch.FindTargetWindowRequested({ this, &WindowManager::_raiseFindTargetWindowRequested });
|
||||
_monarch.QuitAllRequested({ get_weak(), &WindowManager::_QuitAllRequestedHandlers });
|
||||
|
||||
_monarch.RequestNewWindow({ get_weak(), &WindowManager::_raiseRequestNewWindow });
|
||||
}
|
||||
|
||||
@@ -131,6 +129,8 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
// We connected to a monarch instance, not us though. This won't hit
|
||||
// in isolated mode.
|
||||
|
||||
LOG_IF_FAILED(CoAllowSetForegroundWindow(winrt::get_unknown(_monarch), nullptr));
|
||||
|
||||
// Send the commandline over to the monarch process
|
||||
if (_proposeToMonarch(args))
|
||||
{
|
||||
@@ -356,8 +356,6 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
|
||||
_monarch.AddPeasant(*p);
|
||||
|
||||
p->GetWindowLayoutRequested({ get_weak(), &WindowManager::_GetWindowLayoutRequestedHandlers });
|
||||
|
||||
TraceLoggingWrite(g_hRemotingProvider,
|
||||
"WindowManager_CreateOurPeasant",
|
||||
TraceLoggingUInt64(p->GetID(), "peasantID", "The ID of our new peasant"),
|
||||
@@ -412,18 +410,6 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
// - Ask the monarch to quit all windows.
|
||||
// Arguments:
|
||||
// - <none>
|
||||
// Return Value:
|
||||
// - <none>
|
||||
winrt::fire_and_forget WindowManager::RequestQuitAll(Remoting::Peasant peasant)
|
||||
{
|
||||
co_await winrt::resume_background();
|
||||
peasant.RequestQuitAll();
|
||||
}
|
||||
|
||||
bool WindowManager::DoesQuakeWindowExist()
|
||||
{
|
||||
return _monarch.DoesQuakeWindowExist();
|
||||
@@ -434,19 +420,6 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
winrt::get_self<implementation::Peasant>(peasant)->ActiveTabTitle(title);
|
||||
}
|
||||
|
||||
Windows::Foundation::Collections::IVector<winrt::hstring> WindowManager::GetAllWindowLayouts()
|
||||
{
|
||||
if (_monarch)
|
||||
{
|
||||
try
|
||||
{
|
||||
return _monarch.GetAllWindowLayouts();
|
||||
}
|
||||
CATCH_LOG()
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
winrt::fire_and_forget WindowManager::RequestMoveContent(winrt::hstring window,
|
||||
winrt::hstring content,
|
||||
uint32_t tabIndex,
|
||||
|
||||
@@ -38,10 +38,8 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
|
||||
uint64_t GetNumberOfPeasants();
|
||||
|
||||
static winrt::fire_and_forget RequestQuitAll(Remoting::Peasant peasant);
|
||||
void UpdateActiveTabTitle(const winrt::hstring& title, const Remoting::Peasant& peasant);
|
||||
|
||||
Windows::Foundation::Collections::IVector<winrt::hstring> GetAllWindowLayouts();
|
||||
bool DoesQuakeWindowExist();
|
||||
|
||||
winrt::fire_and_forget RequestMoveContent(winrt::hstring window, winrt::hstring content, uint32_t tabIndex, Windows::Foundation::IReference<Windows::Foundation::Rect> windowBounds);
|
||||
@@ -51,9 +49,6 @@ namespace winrt::Microsoft::Terminal::Remoting::implementation
|
||||
|
||||
TYPED_EVENT(WindowCreated, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable);
|
||||
TYPED_EVENT(WindowClosed, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable);
|
||||
TYPED_EVENT(QuitAllRequested, winrt::Windows::Foundation::IInspectable, winrt::Microsoft::Terminal::Remoting::QuitAllRequestedArgs);
|
||||
TYPED_EVENT(GetWindowLayoutRequested, winrt::Windows::Foundation::IInspectable, winrt::Microsoft::Terminal::Remoting::GetWindowLayoutArgs);
|
||||
|
||||
TYPED_EVENT(RequestNewWindow, winrt::Windows::Foundation::IInspectable, winrt::Microsoft::Terminal::Remoting::WindowRequestedArgs);
|
||||
|
||||
private:
|
||||
|
||||
@@ -14,12 +14,10 @@ namespace Microsoft.Terminal.Remoting
|
||||
void SignalClose(Peasant p);
|
||||
|
||||
void UpdateActiveTabTitle(String title, Peasant p);
|
||||
static void RequestQuitAll(Peasant p);
|
||||
|
||||
void SummonWindow(SummonWindowSelectionArgs args);
|
||||
void SummonAllWindows();
|
||||
|
||||
Windows.Foundation.Collections.IVector<String> GetAllWindowLayouts();
|
||||
Windows.Foundation.Collections.IVectorView<PeasantInfo> GetPeasantInfos();
|
||||
|
||||
UInt64 GetNumberOfPeasants();
|
||||
@@ -33,8 +31,6 @@ namespace Microsoft.Terminal.Remoting
|
||||
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> WindowCreated;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> WindowClosed;
|
||||
event Windows.Foundation.TypedEventHandler<Object, QuitAllRequestedArgs> QuitAllRequested;
|
||||
event Windows.Foundation.TypedEventHandler<Object, GetWindowLayoutArgs> GetWindowLayoutRequested;
|
||||
|
||||
event Windows.Foundation.TypedEventHandler<Object, WindowRequestedArgs> RequestNewWindow;
|
||||
|
||||
|
||||
@@ -124,8 +124,7 @@ namespace winrt::TerminalApp::implementation
|
||||
return appLogic->GetSettings();
|
||||
}
|
||||
|
||||
AppLogic::AppLogic() :
|
||||
_reloadState{ std::chrono::milliseconds(100), []() { ApplicationState::SharedInstance().Reload(); } }
|
||||
AppLogic::AppLogic()
|
||||
{
|
||||
// For your own sanity, it's better to do setup outside the ctor.
|
||||
// If you do any setup in the ctor that ends up throwing an exception,
|
||||
@@ -150,6 +149,11 @@ namespace winrt::TerminalApp::implementation
|
||||
_languageProfileNotifier = winrt::make_self<LanguageProfileNotifier>([this]() {
|
||||
_reloadSettings->Run();
|
||||
});
|
||||
|
||||
// Do this here, rather than at the top of main. This will prevent us from
|
||||
// including this variable in the vars we serialize in the
|
||||
// Remoting::CommandlineArgs up in HandleCommandlineArgs.
|
||||
_setupFolderPathEnvVar();
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
@@ -327,10 +331,6 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
_reloadSettings->Run();
|
||||
}
|
||||
else if (ApplicationState::SharedInstance().IsStatePath(modifiedBasename))
|
||||
{
|
||||
_reloadState();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -702,22 +702,6 @@ namespace winrt::TerminalApp::implementation
|
||||
return _settings.GlobalSettings().ShouldUsePersistedLayout();
|
||||
}
|
||||
|
||||
void AppLogic::SaveWindowLayoutJsons(const Windows::Foundation::Collections::IVector<hstring>& layouts)
|
||||
{
|
||||
std::vector<WindowLayout> converted;
|
||||
converted.reserve(layouts.Size());
|
||||
|
||||
for (const auto& json : layouts)
|
||||
{
|
||||
if (json != L"")
|
||||
{
|
||||
converted.emplace_back(WindowLayout::FromJson(json));
|
||||
}
|
||||
}
|
||||
|
||||
ApplicationState::SharedInstance().PersistedWindowLayouts(winrt::single_threaded_vector(std::move(converted)));
|
||||
}
|
||||
|
||||
TerminalApp::ParseCommandlineResult AppLogic::GetParseCommandlineMessage(array_view<const winrt::hstring> args)
|
||||
{
|
||||
::TerminalApp::AppCommandlineArgs _appArgs;
|
||||
@@ -725,4 +709,14 @@ namespace winrt::TerminalApp::implementation
|
||||
return TerminalApp::ParseCommandlineResult{ winrt::to_hstring(_appArgs.GetExitMessage()), r };
|
||||
}
|
||||
|
||||
// Function Description
|
||||
// * Adds a `WT_SETTINGS_DIR` env var to our own environment block, that
|
||||
// points at our settings directory. This allows portable installs to
|
||||
// refer to files in the portable install using %WT_SETTINGS_DIR%
|
||||
void AppLogic::_setupFolderPathEnvVar()
|
||||
{
|
||||
std::wstring path{ CascadiaSettings::SettingsPath() };
|
||||
auto folderPath = path.substr(0, path.find_last_of(L"\\"));
|
||||
SetEnvironmentVariableW(L"WT_SETTINGS_DIR", folderPath.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,9 +53,7 @@ namespace winrt::TerminalApp::implementation
|
||||
void NotifyRootInitialized();
|
||||
|
||||
bool HasSettingsStartupActions() const noexcept;
|
||||
|
||||
bool ShouldUsePersistedLayout() const;
|
||||
void SaveWindowLayoutJsons(const Windows::Foundation::Collections::IVector<hstring>& layouts);
|
||||
|
||||
[[nodiscard]] Microsoft::Terminal::Settings::Model::CascadiaSettings GetSettings() const noexcept;
|
||||
|
||||
@@ -91,7 +89,6 @@ namespace winrt::TerminalApp::implementation
|
||||
::TerminalApp::AppCommandlineArgs _settingsAppArgs;
|
||||
|
||||
std::shared_ptr<ThrottledFuncTrailing<>> _reloadSettings;
|
||||
til::throttled_func_trailing<> _reloadState;
|
||||
|
||||
std::vector<Microsoft::Terminal::Settings::Model::SettingsLoadWarnings> _warnings{};
|
||||
|
||||
@@ -113,6 +110,8 @@ namespace winrt::TerminalApp::implementation
|
||||
void _RegisterSettingsChange();
|
||||
fire_and_forget _DispatchReloadSettings();
|
||||
|
||||
void _setupFolderPathEnvVar();
|
||||
|
||||
#ifdef UNIT_TESTING
|
||||
friend class TerminalAppLocalTests::CommandlineTest;
|
||||
#endif
|
||||
|
||||
@@ -37,7 +37,6 @@ namespace TerminalApp
|
||||
Boolean HasSettingsStartupActions();
|
||||
|
||||
Boolean ShouldUsePersistedLayout();
|
||||
void SaveWindowLayoutJsons(Windows.Foundation.Collections.IVector<String> layouts);
|
||||
|
||||
void ReloadSettings();
|
||||
|
||||
|
||||
@@ -116,6 +116,9 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
switch (visualState)
|
||||
{
|
||||
case WindowVisualState::WindowVisualStateIconified:
|
||||
// Iconified (aka minimized) state should preserve the active window styling
|
||||
break;
|
||||
case WindowVisualState::WindowVisualStateMaximized:
|
||||
VisualStateManager::GoToState(MaximizeButton(), L"WindowStateMaximized", false);
|
||||
|
||||
@@ -124,9 +127,7 @@ namespace winrt::TerminalApp::implementation
|
||||
CloseButton().Height(maximizedHeight);
|
||||
MaximizeToolTip().Text(RS_(L"WindowRestoreDownButtonToolTip"));
|
||||
break;
|
||||
|
||||
case WindowVisualState::WindowVisualStateNormal:
|
||||
case WindowVisualState::WindowVisualStateIconified:
|
||||
default:
|
||||
VisualStateManager::GoToState(MaximizeButton(), L"WindowStateNormal", false);
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ using namespace winrt::Microsoft::Terminal::Settings::Model;
|
||||
using namespace winrt::Microsoft::Terminal::Control;
|
||||
using namespace winrt::Microsoft::Terminal::TerminalConnection;
|
||||
using namespace winrt::TerminalApp;
|
||||
using namespace TerminalApp;
|
||||
using namespace winrt::TerminalApp::implementation;
|
||||
|
||||
static const int PaneBorderSize = 2;
|
||||
static const int CombinedPaneBorderSize = 2 * PaneBorderSize;
|
||||
@@ -124,7 +124,7 @@ void Pane::_removeControlEvents()
|
||||
// terminal args.
|
||||
// Return Value:
|
||||
// - Arguments appropriate for a SplitPane or NewTab action
|
||||
NewTerminalArgs Pane::GetTerminalArgsForPane(const bool asContent) const
|
||||
NewTerminalArgs Pane::GetTerminalArgsForPane(BuildStartupKind kind) const
|
||||
{
|
||||
// Leaves are the only things that have controls
|
||||
assert(_IsLeaf());
|
||||
@@ -169,12 +169,17 @@ NewTerminalArgs Pane::GetTerminalArgsForPane(const bool asContent) const
|
||||
// object. That would work for schemes set by the Terminal, but not ones set
|
||||
// by VT, but that seems good enough.
|
||||
|
||||
// Only fill in the ContentId if absolutely needed. If you fill in a number
|
||||
// here (even 0), we'll serialize that number, AND treat that action as an
|
||||
// "attach existing" rather than a "create"
|
||||
if (asContent)
|
||||
switch (kind)
|
||||
{
|
||||
case BuildStartupKind::Content:
|
||||
case BuildStartupKind::MovePane:
|
||||
// Only fill in the ContentId if absolutely needed. If you fill in a number
|
||||
// here (even 0), we'll serialize that number, AND treat that action as an
|
||||
// "attach existing" rather than a "create"
|
||||
args.ContentId(_control.ContentId());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return args;
|
||||
@@ -200,16 +205,13 @@ NewTerminalArgs Pane::GetTerminalArgsForPane(const bool asContent) const
|
||||
// - The state from building the startup actions, includes a vector of commands,
|
||||
// the original root pane, the id of the focused pane, and the number of panes
|
||||
// created.
|
||||
Pane::BuildStartupState Pane::BuildStartupActions(uint32_t currentId,
|
||||
uint32_t nextId,
|
||||
const bool asContent,
|
||||
const bool asMovePane)
|
||||
Pane::BuildStartupState Pane::BuildStartupActions(uint32_t currentId, uint32_t nextId, BuildStartupKind kind)
|
||||
{
|
||||
// Normally, if we're a leaf, return an empt set of actions, because the
|
||||
// parent pane will build the SplitPane action for us. If we're building
|
||||
// actions for a movePane action though, we'll still need to include
|
||||
// ourselves.
|
||||
if (!asMovePane && _IsLeaf())
|
||||
if (kind != BuildStartupKind::MovePane && _IsLeaf())
|
||||
{
|
||||
if (_lastActive)
|
||||
{
|
||||
@@ -223,18 +225,18 @@ Pane::BuildStartupState Pane::BuildStartupActions(uint32_t currentId,
|
||||
auto buildSplitPane = [&](auto newPane) {
|
||||
ActionAndArgs actionAndArgs;
|
||||
actionAndArgs.Action(ShortcutAction::SplitPane);
|
||||
const auto terminalArgs{ newPane->GetTerminalArgsForPane(asContent) };
|
||||
const auto terminalArgs{ newPane->GetTerminalArgsForPane(kind) };
|
||||
// When creating a pane the split size is the size of the new pane
|
||||
// and not position.
|
||||
const auto splitDirection = _splitState == SplitState::Horizontal ? SplitDirection::Down : SplitDirection::Right;
|
||||
const auto splitSize = (asContent && _IsLeaf() ? .5 : 1. - _desiredSplitPosition);
|
||||
const auto splitSize = (kind != BuildStartupKind::None && _IsLeaf() ? .5 : 1. - _desiredSplitPosition);
|
||||
SplitPaneArgs args{ SplitType::Manual, splitDirection, splitSize, terminalArgs };
|
||||
actionAndArgs.Args(args);
|
||||
|
||||
return actionAndArgs;
|
||||
};
|
||||
|
||||
if (asContent && _IsLeaf())
|
||||
if (kind != BuildStartupKind::None && _IsLeaf())
|
||||
{
|
||||
return {
|
||||
.args = { buildSplitPane(shared_from_this()) },
|
||||
@@ -281,10 +283,10 @@ Pane::BuildStartupState Pane::BuildStartupActions(uint32_t currentId,
|
||||
// We now need to execute the commands for each side of the tree
|
||||
// We've done one split, so the first-most child will have currentId, and the
|
||||
// one after it will be incremented.
|
||||
auto firstState = _firstChild->BuildStartupActions(currentId, nextId + 1);
|
||||
auto firstState = _firstChild->BuildStartupActions(currentId, nextId + 1, kind);
|
||||
// the next id for the second branch depends on how many splits were in the
|
||||
// first child.
|
||||
auto secondState = _secondChild->BuildStartupActions(nextId, nextId + firstState.panesCreated + 1);
|
||||
auto secondState = _secondChild->BuildStartupActions(nextId, nextId + firstState.panesCreated + 1, kind);
|
||||
|
||||
std::vector<ActionAndArgs> actions{};
|
||||
actions.reserve(firstState.args.size() + secondState.args.size() + 3);
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace TerminalAppLocalTests
|
||||
namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
struct TerminalTab;
|
||||
enum class BuildStartupKind;
|
||||
}
|
||||
|
||||
enum class Borders : int
|
||||
@@ -99,8 +100,8 @@ public:
|
||||
std::optional<uint32_t> focusedPaneId;
|
||||
uint32_t panesCreated;
|
||||
};
|
||||
BuildStartupState BuildStartupActions(uint32_t currentId, uint32_t nextId, const bool asContent = false, const bool asMovePane = false);
|
||||
winrt::Microsoft::Terminal::Settings::Model::NewTerminalArgs GetTerminalArgsForPane(const bool asContent = false) const;
|
||||
BuildStartupState BuildStartupActions(uint32_t currentId, uint32_t nextId, winrt::TerminalApp::implementation::BuildStartupKind kind);
|
||||
winrt::Microsoft::Terminal::Settings::Model::NewTerminalArgs GetTerminalArgsForPane(winrt::TerminalApp::implementation::BuildStartupKind kind) const;
|
||||
|
||||
void UpdateSettings(const winrt::Microsoft::Terminal::Settings::Model::TerminalSettingsCreateResult& settings,
|
||||
const winrt::Microsoft::Terminal::Settings::Model::Profile& profile);
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
<value>Dividir pestaña</value>
|
||||
</data>
|
||||
<data name="SplitPaneText" xml:space="preserve">
|
||||
<value>Panel dividido</value>
|
||||
<value>Dividir panel</value>
|
||||
</data>
|
||||
<data name="SearchWebText" xml:space="preserve">
|
||||
<value>Búsqueda en la web</value>
|
||||
|
||||
@@ -421,13 +421,13 @@
|
||||
<value>Apri nuova scheda</value>
|
||||
</data>
|
||||
<data name="NewPaneRun.Text" xml:space="preserve">
|
||||
<value>ALT + clic per dividere la finestra corrente</value>
|
||||
<value>ALT+CLIC per dividere la finestra corrente</value>
|
||||
</data>
|
||||
<data name="NewWindowRun.Text" xml:space="preserve">
|
||||
<value>MAIUSC+clic per aprire una nuova finestra</value>
|
||||
<value>MAIUSC+CLIC per aprire una nuova finestra</value>
|
||||
</data>
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>CTRL+Clic per aprire come amministratore</value>
|
||||
<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>
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
<comment>{Locked=qps-ploc,qps-ploca,qps-plocm}</comment>
|
||||
</data>
|
||||
<data name="AppDescription" xml:space="preserve">
|
||||
<value>Τнĕ Ņëω Ẅίηđŏẃś Ťėŗmįйάĺ !!! !!! !</value>
|
||||
<value>Τĥз Йéщ Ẃįńđôẃѕ Тéѓmĩиâļ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AppDescriptionDev" xml:space="preserve">
|
||||
<value>The Windows Terminal, but Unofficial</value>
|
||||
@@ -177,22 +177,22 @@
|
||||
<comment>{Locked}</comment>
|
||||
</data>
|
||||
<data name="AppDescriptionPre" xml:space="preserve">
|
||||
<value>Ŵíňďōẁŝ Тєřмīπǻļ ωїτĥ å ρѓēνіéŵ θƒ ũφсőмϊπġ ƒєąτΰґёѕ !!! !!! !!! !!! !!! </value>
|
||||
<value>Щΐňδόŵѕ Ŧęřмĭʼnäℓ ẅîťħ à φřеνίëẃ θƒ џрсøмΐʼnğ ƒĕāŧųřэś !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Dev" xml:space="preserve">
|
||||
<value>Open in Terminal (&Dev)</value>
|
||||
<comment>{Locked} The dev build will never be seen in multiple languages</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Canary" xml:space="preserve">
|
||||
<value>Ŏрέи ìη Тèřmīŋªŀ (&Cãńãґγ) !!! !!! !</value>
|
||||
<value>Θρēņ ïη Ţéгmĭηäŀ (&Çäņдѓγ) !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Canary version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Preview" xml:space="preserve">
|
||||
<value>Φφєň ΐñ Ŧéгмϊñаľ &Pŕėνĭ℮ώ !!! !!! !</value>
|
||||
<value>Όрèп ìņ Ţêŕmїʼnåļ &Рѓзνι℮ω !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem" xml:space="preserve">
|
||||
<value>Ωρєⁿ ïπ &Těѓmĭñäĺ !!! !!</value>
|
||||
<value>Óрêп ìл &Ťěѓmιиåĺ !!! !!</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the non-preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -118,80 +118,80 @@
|
||||
<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>Şėťŧіηĝѕ ¢ǿΰľď ʼnσŧ ъē ŀоαðзđ ƒŕôм ƒïłê. Сђěćĸ ƒǿŕ šулŧå× ёřґοгş, įήćļůđíʼnğ ťяαΐľίήğ ĉômmāš. !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Şετťĭиġś ςòűłď йσт ьé ŀŏдðéď ƒřǿм ƒīļē. Ĉнėćķ ƒσŗ ŝуήтª× ĕяŗбґş, ιйçľůďĩηĝ тŗāіļīňġ ćǿмmāŝ. !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="MissingDefaultProfileText" xml:space="preserve">
|
||||
<value>Сθŭļď пǿţ ƒīпđ ŷŏúг δєƒǻůŀť ρřŏƒΐļę ій ýŏűя ĺīѕŧ őƒ ряσƒïℓëş - ŭŝĩʼnğ ťнз ƒìŕšτ φѓöƒїℓё. Сħëċķ ťθ маķë ŝύґè ŧћë "defaultProfile" mãтçĥεş τнę ĢŨÎĎ òƒ ǿиé оƒ ÿøųŕ φгоƒìļéş. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ĉōûłδ πбτ ƒΐпď ýǿύѓ ďēƒдûľт ρŕõƒĩłę ìń ўôùґ ļïѕτ ǿƒ φѓôƒĭłеś - µšìήğ ţнε ƒįŗѕт ρřόƒїłê. Ćĥеćķ ťõ måķє şυґę ţнé "defaultProfile" мªţčћéş ťђё ĠŪĨĎ θƒ θŋē оƒ уоùŗ ρґоƒïℓёś. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="\"defaultProfile\""}</comment>
|
||||
</data>
|
||||
<data name="DuplicateProfileText" xml:space="preserve">
|
||||
<value>₣ǿΰʼnđ mųĺŧιρĺě ргöƒїℓęš щϊтħ ţђє ѕάмë ĢЏΊĎ ĩń ÿόůґ ŝεтŧĭлģş ƒíļе - įģиόяīπģ đυφļīčâťзѕ. Мãќĕ ŝúŕ℮ еάсĥ φяòƒĩℓę'ѕ ĜЏĪĎ íş űņíqцэ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<value>₣óŭиď мύŀťìрŀэ φŕσƒïĺєś ẃïτћ ŧнě ѕámĕ ĠŲІÐ įй ўоűя ѕĕţţîήĝš ƒìŀė - įģʼnǿřΐⁿğ δûρľΐçâтéŝ. Мãĸё śμѓέ ĕáĉћ ρяσƒîĺė'ѕ ĢŰĮÐ īş ϋńîqџë. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="UnknownColorSchemeText" xml:space="preserve">
|
||||
<value>₣σцηδ ǻ φѓθƒίłε ŵīŧћ âⁿ īπνâŀϊδ "colorScheme". Ðëƒąŭłтійğ ťђàť φřőƒįĺё τό тђę δěƒαūļт ¢ōℓόřŝ. Макз šūгê тħªť ώĥέл ѕěттΐñğ â "colorScheme", ťĥэ νªℓùέ mάτćђеš ŧĥĕ "name" бƒ ā ċôĺöг ѕĉђęmз įη τђę "schemes" łíšţ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<value>₣ŏúņđ ā ρřόƒįľĕ щĭťћ ǻή ϊпνåŀίď "colorScheme". Ďēƒāúłтіиğ ţħąţ ряόƒίŀе ţŏ тĥέ ðеƒãµľţ çбĺбŗś. Мāκέ śûѓè ťћаτ ŵђéň ŝєŧťίńĝ д "colorScheme", τħε νåĺμě мäτςĥέş τнέ "name" όƒ а čòľбя ѕćн℮mē īń тћέ "schemes" ļίŝт. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>{Locked="\"colorScheme\"","\"name\"","\"schemes\""}</comment>
|
||||
</data>
|
||||
<data name="NoProfilesText" xml:space="preserve">
|
||||
<value>Νб ρяöƒΐłēѕ ẁèŗё ƒбύʼnð îń ўθůг ѕėţтîпĝš. !!! !!! !!! !!!</value>
|
||||
<value>Ňǿ ρяóƒíℓěş щ℮ŕέ ƒòμйδ ϊη ỳοūґ ś℮ŧтĭπģѕ. !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AllProfilesHiddenText" xml:space="preserve">
|
||||
<value>Àĺŀ ρґбƒіłεѕ щзяє ђїđδзʼn įň ýòυѓ šэτţĭήĝś. Ϋóũ mцşť ћàν℮ αť ŀèàşŧ öлě ⁿŏń-ђīδδéη φŗθƒìℓέ. !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Аℓł ρяοƒįłέš ωèяê ђΐđðěʼn îη ўőϋř śěŧτϊиģş. Ϋŏυ müѕŧ ħäνė άţ ļεǻѕτ οñє пóй-ћίďðēʼn φŗóƒįŀē. !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="ReloadJsonParseErrorText" xml:space="preserve">
|
||||
<value>Şèťŧϊņģś сõüℓđ ηбţ ъέ яεłôåδěđ ƒŕόм ƒįļě. Çнэск ƒσя śÿηтå× ēřŕόѓŝ, іпċŀμðîʼnğ тŗǻϊĺīηĝ ¢ǿммãš. !!! !!! !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
<value>Ѕєŧτĩņğš ¢ŏûłď ποţ ьė řëĺбάδзď ƒŕŏм ƒίľе. Çĥэςκ ƒõг şÿπţаж ěгяōŗš, îņ¢ŀύðīⁿğ ťŕăïŀĩπĝ čǿmмãş. !!! !!! !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="UsingDefaultSettingsText" xml:space="preserve">
|
||||
<value>Ťēмφőгάřĩℓу υѕїήģ τħє Ẅĩиδõώѕ Τёřмίпāľ ďēƒάυĺτ š℮τтĭńġѕ. !!! !!! !!! !!! !!! !</value>
|
||||
<value>Ťемрőŗāřĩľŷ űśϊⁿģ ťђё Щìπδоωş Ţεѓмîήäĺ δêƒаμłт şèţτïńġś. !!! !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="InitialJsonParseErrorTitle" xml:space="preserve">
|
||||
<value>₣áίĺėđ ţō ľбаð śэŧťίлğş !!! !!! </value>
|
||||
<value>₣äĩľєď τσ ŀőåð ŝέťţĩⁿģŝ !!! !!! </value>
|
||||
</data>
|
||||
<data name="SettingsValidateErrorTitle" xml:space="preserve">
|
||||
<value>Ëηςσϋлŧëŗėδ эŕřоґš ωĥιļ℮ ℓǿάδϊŋğ ūŝēŗ śετťΐπĝś !!! !!! !!! !!! !</value>
|
||||
<value>Εŋĉőųņŧзяëď зяѓōяś ŵħΐļê ŀθαðĩήġ ùŝéѓ śзťŧĭпģŝ !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>ΩΚ </value>
|
||||
<value>ÓΚ </value>
|
||||
</data>
|
||||
<data name="KeyboardServiceDisabledDialog.Title" xml:space="preserve">
|
||||
<value>Ẅàřñíⁿģ: !!</value>
|
||||
<value>Ŵаґήĩήģ: !!</value>
|
||||
</data>
|
||||
<data name="KeyboardServiceWarningText" xml:space="preserve">
|
||||
<value>Ťнé "{0}" ιŝп'ŧ ŕμňήįŋģ ôń ỳθũŕ mªčђįпέ. Ţћіš čǻń ргëνзⁿţ ťĥε Τеŕmіήáĺ ƒŗøm ґêçэіνĩиģ ќ℮ÿъōåŗδ ìŋφџţ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ŧħє "{0}" ĭşп'ţ řμллĭиġ оʼn ўόùг мàςĥįńë. Ŧħїś ¢áⁿ φřэνєńτ тнэ Тэґмïñăĺ ƒŕöm ŗеς℮íνίиĝ ķēỳвŏαŗδ ĭⁿрΰţ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{0} will be replaced with the OS-localized name of the TabletInputService</comment>
|
||||
</data>
|
||||
<data name="Ok" xml:space="preserve">
|
||||
<value>ÕК </value>
|
||||
<value>ФĶ </value>
|
||||
</data>
|
||||
<data name="ReloadJsonParseErrorTitle" xml:space="preserve">
|
||||
<value>₣ªïļеδ тő ŗεĺòãδ şетţіŋģѕ !!! !!! !</value>
|
||||
<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>
|
||||
<value>∆вòΰŧ !</value>
|
||||
</data>
|
||||
<data name="FeedbackMenuItem" xml:space="preserve">
|
||||
<value>₣ēëďьдćк !!</value>
|
||||
<value>₣ęęðъâçќ !!</value>
|
||||
</data>
|
||||
<data name="SettingsMenuItem" xml:space="preserve">
|
||||
<value>Ѕēţťїñğś !!</value>
|
||||
<value>Śêŧťіňğŝ !!</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Ćäπςèŀ !</value>
|
||||
<value>Ĉάπςеŀ !</value>
|
||||
</data>
|
||||
<data name="CloseAll" xml:space="preserve">
|
||||
<value>Ćļбŝĕ ªľľ !!!</value>
|
||||
<value>Ċľθŝє αŀļ !!!</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Qύîτ !</value>
|
||||
<value>Qùíт !</value>
|
||||
</data>
|
||||
<data name="CloseWindowWarningTitle" xml:space="preserve">
|
||||
<value>Đô ÿòû шªñť τō ςŀθšě ǻľĺ τªвś? !!! !!! !!!</value>
|
||||
<value>Đǿ ÿõű ŵãŋт тŏ ¢ľòŝê ăŀľ ŧãвŝ? !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Μµľťιφļė ρаńêѕ !!! !</value>
|
||||
<value>Мµļтíрłĕ φдпėŝ !!! !</value>
|
||||
</data>
|
||||
<data name="TabCloseSubMenu" xml:space="preserve">
|
||||
<value>Ćļôŝέ !</value>
|
||||
@@ -224,7 +224,7 @@
|
||||
<value>Ċµѕťøм !</value>
|
||||
</data>
|
||||
<data name="TabColorClearButton.Content" xml:space="preserve">
|
||||
<value>Ŕĕšęτ !</value>
|
||||
<value>Яěšěŧ !</value>
|
||||
</data>
|
||||
<data name="RenameTabText" xml:space="preserve">
|
||||
<value>Γεñамē ťãв !!!</value>
|
||||
@@ -233,33 +233,33 @@
|
||||
<value>Ďϋφľіčάтέ τàв !!! </value>
|
||||
</data>
|
||||
<data name="InvalidBackgroundImage" xml:space="preserve">
|
||||
<value>₣οüⁿδ ά ρѓőƒіĺз шιтћ аή îйνåℓīď "backgroundImage". Ðєƒâŭŀťïʼnģ ŧĥäτ рřŏƒīℓë τô ћãνё ñō ьàĉќġяοµπď îмǻġё. Μāκе ŝύґé ŧнàτ ẁћзή šĕτťійğ ά "backgroundImage", ťħē νдļûě íş ä νåĺϊđ ƒìℓę ραтħ ŧб ãή їmаĝē. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>₣σúŋδ ą φѓοƒĩļé ẃϊţħ äй ïηνàĺìď "backgroundImage". Đēƒãųŀŧϊпğ ťнªт φѓőƒĭļè το нªνе πō ьąçќġгθúпδ ιмãġė. Маĸē śμѓē ŧћäţ ẁђēή šêťτϊлġ å "backgroundImage", ţĥě νаłųё ïŝ ά νάľîď ƒĩŀê φąťħ ţŏ άń ΐмąġė. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="\"backgroundImage\""}</comment>
|
||||
</data>
|
||||
<data name="InvalidIcon" xml:space="preserve">
|
||||
<value>₣øμηđ à φŗοƒïľë ŵіŧĥ åň îʼnνăľΐđ "icon". Ðзƒăϋľţĭņġ тĥãт рŗǿƒιℓë тŏ ђǻνê иŏ īсŏń. Мàĸę śϋгë τħáτ ωĥ℮ή ѕěťτΐήĝ åŋ "icon", тђĕ νªļцĕ īş α νάłįδ ƒįŀĕ φăτħ τо аη імäĝз. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
<value>₣ǿũиđ à рřöƒϊℓз ŵĩţн аñ įņνàŀїδ "icon". Ðěƒаúľτīŋğ ţħаτ ρřόƒìŀё тб ђâνє пǿ íčой. Мàĸë ŝùřë ŧĥаţ ωĥĕл ŝеτŧīлĝ ăй "icon", τħε νāłϋë ïŝ ă νàľīđ ƒïŀè рªтн ţő äи ïмäģё. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
<comment>{Locked="\"icon\""} The word "icon" in quotes is locked, the word icon OUTSIDE of quotes should be localized.</comment>
|
||||
</data>
|
||||
<data name="AtLeastOneKeybindingWarning" xml:space="preserve">
|
||||
<value>Ẁâřήîņĝŝ ώёѓè ƒθϋňđ ωђĭĺё φàŕşïпğ γоúг κëўьĭńδįиģš: !!! !!! !!! !!! !!!</value>
|
||||
<value>Щαѓńΐňģš ώĕřе ƒбŭπδ ώħīļë рăяşìⁿġ ўσυŕ κёỳвĩиðīήġş: !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="TooManyKeysForChord" xml:space="preserve">
|
||||
<value>• ₣õųŋð α ķęŷьіʼnδіπġ шϊтђ тŏõ мǻлý ŝτŗΐйģŝ ƒог ťĥě "keys" åřгãў. Ťћ℮ŕ℮ ŝћòџℓđ òиļý ъ℮ ǿлέ ѕтѓїńģ νăľūе ιñ тħě "keys" âŗґάÿ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
<value>• ₣бūήð â ķёуьĩńðīⁿģ шĩŧђ τõб mªńÿ ѕťгίńġŝ ƒóř ţћ℮ "keys" åѓгàÿ. Тħėгē ѕĥōμĺđ бñľў вĕ ŏи℮ ѕтřïлģ νăŀůé ĭʼn ţĥė "keys" άřřàγ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
<comment>{Locked="\"keys\"","•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="FailedToParseSubCommands" xml:space="preserve">
|
||||
<value>• ₣аĭļєδ ţô рąяşё дľĺ šŭвçõммâиðŝ θƒ ηеśŧĕđ ςóммàиď. !!! !!! !!! !!! !!! </value>
|
||||
<value>• ₣ąìļ℮đ ţŏ ρǻŕşε âłľ śцъċőммåиðѕ ōƒ л℮śť℮ď сömmąπđ. !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="MissingRequiredParameter" xml:space="preserve">
|
||||
<value>• ₣оûиð α ќěÿъϊηδīпĝ ţћăť ẁâš mîşŝįŋğ ă řëqцїгéδ рäŕªmзť℮ř νǻℓůé. Ŧћιş ќёуъįпđїлģ ώíľľ вê їĝлσŕèð. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<value>• ₣оůñð ā κėуьίπðîηĝ тħаŧ ẃáś мįѕśϊňģ д ѓ℮qûιŗзð рαřǻмęţεř νăľυë. Тнίѕ кεγьĩņđíņģ щìľļ вє įĝлóяеđ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>{Locked="•"} This glyph is a bullet, used in a bulleted list.</comment>
|
||||
</data>
|
||||
<data name="UnknownTheme" xml:space="preserve">
|
||||
<value>• Ťĥè šφ℮ĉīƒîěð "ťĥèмё" шãѕ ηőţ ƒöυпð ĩń ţнё ŀίѕŧ őƒ ţћęмэś. Ť℮mрøяâґïŀỳ ƒâŀľįⁿĝ ъà¢ĸ τŏ ťħë δēƒàΰļτ ναļūэ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<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" ρŕǿрēřţγ īŝ ð℮рŕêċāţēď - γõűŗ ѕěτŧĩŋĝѕ mīģћτ ηèëδ ϋрđăťіʼnġ. !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Τђз "globals" φѓóрεѓţγ ιŝ δęρѓêсâŧėď - ýбųѓ ŝέтŧїпĝš мìġħţ ηзέď црđªтïйġ. !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="\"globals\""} </comment>
|
||||
</data>
|
||||
<data name="LegacyGlobalsPropertyHrefUrl" xml:space="preserve">
|
||||
@@ -267,208 +267,208 @@
|
||||
<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>
|
||||
<value>₣οř мòŕе îήƒθ, şéэ ţħìѕ ŵєь рąġé. !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="FailedToParseCommandJson" xml:space="preserve">
|
||||
<value>₣ǻįℓέď τǿ зжφáŋδ à ċôмmãŋð щîťħ "iterateOn" šĕŧ. Ţћΐš сбммǻлδ ωĭłľ ьê ĭģήόřèď. !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<value>₣ăіľέđ ţö ехρåņď ǻ çǿммãηδ ẃìţĥ "iterateOn" şετ. Ťĥīš ćōmмåиď щΐℓĺ ве ĭģňóѓëđ. !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>{Locked="\"iterateOn\""} </comment>
|
||||
</data>
|
||||
<data name="InvalidColorSchemeInCmd" xml:space="preserve">
|
||||
<value>₣ôūиď ā ćŏmmάиð ωìτн άή ϊńνåľîđ "colorScheme". Ţћìš сомmáņđ щĭļℓ ьє îģπōřęδ. Мдќĕ šųґз тнãŧ шнěñ ŝέţťîñğ â "colorScheme", тħĕ νāłũē màтсђėѕ ŧĥё "name" σƒ д ćθļσř śсђèмè ιņ ťћē "schemes" ľĭśť. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>₣óŭйď ã сóмmаńδ ẁϊţђ дή îⁿναļīð "colorScheme". Тћîŝ ĉǿмmαήδ ωïĺĺ вε íğлŏгëð. Мâķэ ѕϋŗê τĥāţ ẅћэй šěτťîņġ å "colorScheme", ţĥé νаļΰé мªŧçћєѕ ţħє "name" őƒ ă ¢ôℓôř ŝςђзмê įň тнε "schemes" ľïşŧ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="\"colorScheme\"","\"name\"","\"schemes\""}</comment>
|
||||
</data>
|
||||
<data name="InvalidSplitSize" xml:space="preserve">
|
||||
<value>₣õūńđ à "splitPane" ¢бmmåⁿď ώιťĥ ąή ιηνãļіð "size". Ťђΐŝ ċöммдиđ ẁìℓĺ ъė ιğňõřёď. Μάќę ѕųřé τнз śΐźё îѕ ъėτẃĕεń 0 ǻńð 1, εж¢ĺμŝιν℮. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>₣ŏΰπđ ā "splitPane" ¢ǿммäήđ ŵìтћ ăη îŋνąłιđ "size". Ţђíѕ ċǿммªпđ ŵīĺℓ ьė ìĝñōгёđ. Мăќέ šύгз τĥě śιźê įѕ ъèτшέëπ 0 äⁿð 1, εхčļûŝίνз. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="\"splitPane\"","\"size\""}</comment>
|
||||
</data>
|
||||
<data name="FailedToParseStartupActions" xml:space="preserve">
|
||||
<value>₣ªїľéď тο φдгŝз "startupActions". !!! !!! !!! </value>
|
||||
<value>₣âìľęď ťǿ рαяŝé "startupActions". !!! !!! !!! </value>
|
||||
<comment>{Locked="\"startupActions\""}</comment>
|
||||
</data>
|
||||
<data name="InvalidProfileEnvironmentVariables" xml:space="preserve">
|
||||
<value>₣бūñð мцļťϊφŀĕ ëňνΐгøñм℮ņт νăřīªьłёѕ ẁιţћ тĥé ŝǻмĕ ňάмĕ îй ð탃èяēπт ċãşêѕ (ĺøẃεя/υрφёŗ) - όлℓŷ õⁿє νâℓųε ωĭŀļ ъē џş℮δ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>₣öųñđ múℓтĭφļę èⁿνіŕθлмėňţ ναřίдъľêѕ ẅïτħ ťħз śăмė ήámе їή đїƒƒέřέηт čãşзś (ĺóщěг/ůрρеŕ) - óлℓŷ οиę νǻľµě ẁιľľ вё ųşέď. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="CmdCommandArgDesc" xml:space="preserve">
|
||||
<value>Ǻⁿ öρтîǿήäℓ ĉøммāŋð, ẁіťħ ãŗğúmэлтş, ţõ ьэ ѕρàẃⁿεð ϊη τħ℮ ñ℮ẃ тàв όѓ ρâиз !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
<value>Åʼn ǿртíоñαŀ ċοmмäηď, ẁίŧћ ãŗĝūměʼnтş, ţô вέ šρªẃйèđ įņ ťђė πεẁ ŧав ŏŗ рªņε !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="CmdFocusTabDesc" xml:space="preserve">
|
||||
<value>Μσνε ƒθςúš τô аʼnøŧĥëѓ τăв !!! !!! !</value>
|
||||
<value>Μòνê ƒöčµѕ ŧθ ãņøτнёř τåъ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="CmdFocusTabNextArgDesc" xml:space="preserve">
|
||||
<value>Μōνė ƒøсűš ŧō ŧĥέ ńęхţ τǻв !!! !!! !</value>
|
||||
<value>Мõνè ƒòćüŝ τθ ťћé пĕ×т ťαъ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="CmdFTDesc" xml:space="preserve">
|
||||
<value>Ап ǻℓìάš ƒøř ŧнё "focus-tab" šũвćőмmąйð. !!! !!! !!! !!!</value>
|
||||
<value>Дŋ äℓĭάş ƒоř τћę "focus-tab" šųъčǿммáñđ. !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="\"focus-tab\""}</comment>
|
||||
</data>
|
||||
<data name="CmdFocusTabPrevArgDesc" xml:space="preserve">
|
||||
<value>Мöνё ƒόčŭś тó ťĥę ρřένΐőůš ţåь !!! !!! !!!</value>
|
||||
<value>Μöνє ƒоćüŝ ŧó ţĥë рřěνĩομѕ тãь !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="CmdFocusTabTargetArgDesc" xml:space="preserve">
|
||||
<value>Μøνε ƒοĉцś тнę ţаъ ąŧ ťће ġïνєη їлđέж !!! !!! !!! !!</value>
|
||||
<value>Мονé ƒоćűŝ ťħέ τåь àτ ţĥé ĝįνèň іňďėж !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="CmdMovePaneTabArgDesc" xml:space="preserve">
|
||||
<value>Мõνë ƒøĉύśēđ ρаηз ŧο ţĥз тăь αт ţћę ĝîνёп ĭйďĕж !!! !!! !!! !!! !!</value>
|
||||
<value>Μόνě ƒôçџś℮ď φąπέ τŏ ţħĕ ŧäв ǻτ тћė ģΐνеņ ĭñðěх !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="CmdMovePaneDesc" xml:space="preserve">
|
||||
<value>Μōνё ƒōςúŝéδ рäйě τό ãňøťнεř τάъ !!! !!! !!! </value>
|
||||
<value>Μǿνê ƒõćυѕěð φâή℮ ťθ ǻлοτĥёŗ τąв !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="CmdMPDesc" xml:space="preserve">
|
||||
<value>Ал åľįâѕ ƒоґ ťĥé "move-pane" šύъčοmмäⁿđ. !!! !!! !!! !!!</value>
|
||||
<value>Ăⁿ āℓíąš ƒбŕ тнĕ "move-pane" šúъćбммàⁿδ. !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="\"move-pane\""}</comment>
|
||||
</data>
|
||||
<data name="CmdSplitPaneSizeArgDesc" xml:space="preserve">
|
||||
<value>Ѕрεςίƒỳ ţĥέ şìžз ǻŝ ά ρĕгςěйτāğє бƒ ŧђě рāґεŋť φªñέ. Vàŀįđ ναℓüĕŝ ªяє вεтшêзʼn (0,1), єхčĺūşïνę. !!! !!! !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Ѕрёċϊƒÿ тђĕ ѕîžĕ αѕ ǻ ρēŕċêйτдģе őƒ ŧħě φǻґзйť φàņē. Vдℓίδ νǻŀùзş āŗε ьεтщ℮ёň (0,1), е×ςĺúŝινе. !!! !!! !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="CmdNewTabDesc" xml:space="preserve">
|
||||
<value>Ċѓēαťė ă лєщ тдв !!! !</value>
|
||||
<value>Çґέăťė ã πėш τáв !!! !</value>
|
||||
</data>
|
||||
<data name="CmdNTDesc" xml:space="preserve">
|
||||
<value>Ãņ åļϊåš ƒоř ţĥё "new-tab" şџьĉŏммάňđ. !!! !!! !!! !!</value>
|
||||
<value>Ăи άℓîªŝ ƒōř τħë "new-tab" śμвċόmмãŋδ. !!! !!! !!! !!</value>
|
||||
<comment>{Locked="\"new-tab\""}</comment>
|
||||
</data>
|
||||
<data name="CmdFocusPaneDesc" xml:space="preserve">
|
||||
<value>Мσν℮ ƒόčųš тσ äŋσţћєŕ ραηê !!! !!! !</value>
|
||||
<value>Μǿνé ƒосųŝ тô дπøţћєг рáņė !!! !!! !</value>
|
||||
</data>
|
||||
<data name="CmdFPDesc" xml:space="preserve">
|
||||
<value>∆ń αŀϊäś ƒòř ŧĥе "focus-pane" şüьςømmáⁿð. !!! !!! !!! !!!</value>
|
||||
<value>Áй áℓįãš ƒòŗ тђĕ "focus-pane" şυъĉöммàńđ. !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="\"focus-pane\""}</comment>
|
||||
</data>
|
||||
<data name="CmdFocusPaneTargetArgDesc" xml:space="preserve">
|
||||
<value>₣òсüѕ τђĕ рáńэ αţ ŧђē ğįνēñ їñđę× !!! !!! !!! </value>
|
||||
<value>₣ό¢űѕ тнê φàπĕ аţ тђè ğĭνėй ïŋðεж !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="CmdProfileArgDesc" xml:space="preserve">
|
||||
<value>Ôφёл ŵĭŧћ ŧĥê ğίνèή рŕσƒįľė. Δςċėрťś єιťнёŗ ťђε ήämз θŗ ĜЦΊÐ őƒ а рřόƒιℓē !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
<value>Θφêп шĩτћ ťнě ģìνēή ρѓøƒìĺę. Âćĉеφťś ёĩτĥėŗ τђė йάмє øя ĠŮΪÐ õƒ а φŕóƒίℓè !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="CmdSplitPaneDesc" xml:space="preserve">
|
||||
<value>Ĉŕёåŧë å иèш ѕφℓĭţ φáηě !!! !!! </value>
|
||||
<value>Ĉґéáŧе д ήэẅ ŝφĺĭτ рãňё !!! !!! </value>
|
||||
</data>
|
||||
<data name="CmdSPDesc" xml:space="preserve">
|
||||
<value>Αŋ ąłįǻś ƒоř тĥě "split-pane" ŝυвćοмmǻņð. !!! !!! !!! !!!</value>
|
||||
<value>Āл ªļïâś ƒбг ŧћê "split-pane" ŝύвćőммäňδ. !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="\"split-pane\""}</comment>
|
||||
</data>
|
||||
<data name="CmdSplitPaneHorizontalArgDesc" xml:space="preserve">
|
||||
<value>€řęäţė τђε ⁿëώ ράήê άŝ â ћσŗīźǿⁿťαľ śφłΐт (τħíпќ [-]) !!! !!! !!! !!! !!! </value>
|
||||
<value>Ċŕéάťё ťћè ⁿеẁ рâлè åś ǻ ħôŕîžőņτąŀ śρļίτ (ŧнїπĸ [-]) !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="CmdSplitPaneVerticalArgDesc" xml:space="preserve">
|
||||
<value>Ċŕęâτĕ ţħę ŋęω φåиĕ ǻš á νзŕтĭĉáľ ŝρĺíţ (ŧнϊńĸ [|]) !!! !!! !!! !!! !!!</value>
|
||||
<value>Ċяěªтĕ ŧнέ ⁿèω ρаηе ªš ā νēѓτîčäŀ ѕрĺįť (тĥїπќ [|]) !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="CmdSplitPaneDuplicateArgDesc" xml:space="preserve">
|
||||
<value>Çґэάтє тĥè иĕẅ ρªήз ъý ďúрłίςάтĭʼnğ τће ρŕσƒîłè øƒ ŧħê ƒōςџѕêđ ρäπē !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Ĉřεâте тħè пέẁ φаńè ъỳ ďцрłíçăţιηğ ťħе φгоƒíľз оƒ τĥě ƒőċūşëð рāиē !!! !!! !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="CmdStartingDirArgDesc" xml:space="preserve">
|
||||
<value>Öφéи ΐπ ţћē ğίνęπ ðιŕè¢ťőяγ іпšŧêâð õƒ ţђę φŕόƒΐł℮'ś ѕęţ "startingDirectory" !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Óрεŋ ιŋ τћē ĝіνèή ðіґėсťσŗý ΐńѕţêªđ ôƒ тħ℮ рřоƒĭľė'ŝ şĕŧ "startingDirectory" !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{Locked="\"startingDirectory\""}</comment>
|
||||
</data>
|
||||
<data name="CmdTitleArgDesc" xml:space="preserve">
|
||||
<value>Όρěή ŧħē ţёгмĩņªℓ ŵīţĥ ťħέ рřονΐðęđ ťιťľę їńѕŧзàδ óƒ τћé φŕоƒΐŀë'ѕ šετ "title" !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<value>Òрèи ŧћ℮ тεгміņдľ шįтђ τћз рŕσνϊðэđ ţϊťľё їņšτèāď οƒ ŧħз рѓοƒïℓε'š śēт "title" !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>{Locked="\"title\""}</comment>
|
||||
</data>
|
||||
<data name="CmdTabColorArgDesc" xml:space="preserve">
|
||||
<value>Фφėй τĥě тдв щìŧћ ŧħë şρĕćіƒїéđ ćøĺôґ, ĭⁿ #ŕřğġъв ƒôґмάŧ !!! !!! !!! !!! !!! !</value>
|
||||
<value>Фрєŋ τћę ťāь ẃĭŧĥ ŧĥē ѕρεçíƒĩĕď ċŏĺőŗ, ίʼn #řґģģьь ƒöřмàŧ !!! !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="CmdSuppressApplicationTitleDesc" xml:space="preserve">
|
||||
<value>Òρёп ťђë ŧãь ŵїŧĥ ţάвТїτĺє ōνëгřīďîńĝ đėƒäųĺт ţĭтℓе αήδ šµφφřзśŝïñģ ţįτłè çћªпĝè мêśšǻĝêš ƒřом ťħê àрφľìсåτїöή !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Όрзи тћê тäъ ŵîтн ŧãвŦìтŀέ øνėřѓĩδіиĝ δęƒåυĺŧ тīτłê ǻйď ѕűррŕ℮ѕśìήĝ τĭťℓé ċћаπġё mεśšàğзš ƒŗøм тћê ªрρĺĩčªτĭóņ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="\"tabTitle\""}</comment>
|
||||
</data>
|
||||
<data name="CmdInheritEnvDesc" xml:space="preserve">
|
||||
<value>Ίñћзгíт тħé тзŗмîπâℓ'ŝ оώή зйνїгóⁿměлτ νāŗíαвŀзş ẅĥéʼn сѓ℮äťιηġ ţħè ņ℮ẅ ťάь òѓ рáñę, řãťђег τнаñ ćŕĕâтìʼnġ á ƒřëşђ ëπνїřōпмзлт вℓǿск. Ťћîѕ đ℮ƒāύℓтś ţо śєт шћĕń α "command" įş рąśśėđ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>İηĥегïт ţĥě ťεřmĭʼnǻł'ŝ õώп εņνĩŕόňмěñť νāřĭáьŀĕś ώнēл ĉгėǻтΐʼnġ ţħз πęш ţáь ŏŕ ρäη℮, ŗãŧħёř ťĥªή ¢řēäţіηĝ ǻ ƒŗėśћ èήνιгőŋм℮иť ьļο¢к. Тħїš ďęƒαüłŧŝ τõ ѕёţ ẅħēň ą "command" îş ρãśŝéđ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="\"command\""}</comment>
|
||||
</data>
|
||||
<data name="CmdColorSchemeArgDesc" xml:space="preserve">
|
||||
<value>Öрєή тнè τäь шιţђ τĥέ śφéćīƒįéď çόℓбґ ѕçĥёмė, ίŋşτèàď ǿƒ τћє ρŕòƒïľє'ѕ ŝĕŧ "colorScheme" !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<value>Øρéη ŧĥē ŧаь щïţђ ţнё ѕрě¢ίƒĩеð ¢θℓôя şĉнем℮, īπѕτêåδ òƒ τĥё φřőƒĭľе'ŝ ѕ℮ť "colorScheme" !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>{Locked="\"colorScheme\""}</comment>
|
||||
</data>
|
||||
<data name="CmdVersionDesc" xml:space="preserve">
|
||||
<value>Ďĩѕρłǻў ţĥє άφφľīçäтϊôň νзяšισŋ !!! !!! !!!</value>
|
||||
<value>Ďìśрℓàÿ тћē åφφłîςдťίøп νēřšįóń !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="CmdMaximizedDesc" xml:space="preserve">
|
||||
<value>Ŀдùлçн ţнē ẁίйďσш mα×імїźěδ !!! !!! !!</value>
|
||||
<value>Ļáūńçн тћё ẅïиďоŵ мåжімĩźęð !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="CmdFullscreenDesc" xml:space="preserve">
|
||||
<value>Ľáυŋĉħ ŧĥè ẁīⁿđοẃ ϊπ ƒџŀļşсŕé℮ń мǿδэ !!! !!! !!! !</value>
|
||||
<value>£âµńĉн тнė щίπđощ їʼn ƒûℓŀşċŕėēη мøđè !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="CmdMoveFocusDesc" xml:space="preserve">
|
||||
<value>Μŏνε ƒǿçùš ťο ţћē âďĵã¢ĕñť рąŋĕ ίʼn ŧћε śφёςϊƒΐеδ ðіŕęčŧïоŋ !!! !!! !!! !!! !!! !!</value>
|
||||
<value>Мονë ƒόçцŝ τô ţнε дďјαçéʼnţ φáπέ ίņ τнë ѕрéςĩƒїĕδ δіŗéćťïőп !!! !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="CmdMFDesc" xml:space="preserve">
|
||||
<value>Ąπ ăłιªŝ ƒοґ τĥė "move-focus" şûьĉбмmåʼnď. !!! !!! !!! !!!</value>
|
||||
<value>Åп âℓιāś ƒóř ŧђз "move-focus" šůъçόмmàпð. !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="\"move-focus\""}</comment>
|
||||
</data>
|
||||
<data name="CmdMoveFocusDirectionArgDesc" xml:space="preserve">
|
||||
<value>Τĥê ðîязĉţіби ťò mōνε ƒбçцѕ ϊп !!! !!! !!!</value>
|
||||
<value>Тнê đιřèсţïöп ţό мøνĕ ƒŏčúś ìή !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="CmdSwapPaneDesc" xml:space="preserve">
|
||||
<value>Šẃãρ ťнę ƒóςųşзð φąпё ώīŧђ τĥέ âđĵα¢ёηť рãņε їʼn ŧнē ŝφєςіƒΐĕδ ðĩř℮¢ţïби !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Šшдφ ťĥė ƒоčùšěď рдйê ŵīťђ ŧнё ãđĵă¢èņτ φåиé íŋ ťĥē šρêςīƒĭзδ đìѓз¢ţįőñ !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="CmdSwapPaneDirectionArgDesc" xml:space="preserve">
|
||||
<value>Τĥ℮ δîŕé¢τįòή тθ мõνέ ťћę ƒöċûşêð рãηė їň !!! !!! !!! !!!</value>
|
||||
<value>Тнě διяèċτîõη ţό mōνе ťћë ƒòčϋš℮δ рαπ℮ īп !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="CmdFocusDesc" xml:space="preserve">
|
||||
<value>Łäŭпсћ тћё шïήďŏш ίή ƒòćΰş мøδε !!! !!! !!!</value>
|
||||
<value>Ľãūлçĥ тħέ щíиδσώ ìй ƒô¢ũš мôďз !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="CmdSavedLayoutArgDesc" xml:space="preserve">
|
||||
<value>Тĥîş φąѓáměтëґ ĭš άή їⁿτĕґηäł їmρĺēмéήťάτįõπ đэţãìł ãʼnđ şђòџĺð ⁿõŧ ъе ùŝзð. !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Ŧћїѕ ρąяáмėŧєѓ ĭş āη їňтεŕήåŀ íмφĺêmёņťдţïòπ ďёŧåĩļ дηð šнŏųļδ ñōţ ьë ųšėð. !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="CmdWindowTargetArgDesc" xml:space="preserve">
|
||||
<value>Šрёčĭƒý â ťęґмïπăŀ щìňðöώ ŧб яџń ťћě ğïνèή ¢óмmаπđłįπė ìʼn. "0" дļωªўѕ гεƒёřş ţǿ ŧћë ćυŗřěήт ẁіňđŏŵ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Šрêςĩƒγ а ťĕгmìŋаł ẁϊпðõω τσ ґύŋ τнз ģίνĕи ĉömмαпđľįʼnе їй. "0" āℓώąŷš řеƒěŗş ťσ ŧħė çŭґřęπť ẁįʼnđǿω. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="CmdPositionDesc" xml:space="preserve">
|
||||
<value>Şφзсĩƒŷ ťћē φǿѕĩťїоη ƒóř ţћє тęгmĩňªļ, íп "×,ŷ" ƒøѓmäт. !!! !!! !!! !!! !!! !</value>
|
||||
<value>Šрëĉίƒў тћε рόŝíŧιòή ƒōя тнě тėřmįηдŀ, ϊп "х,ÿ" ƒθřмάŧ. !!! !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="CmdSizeDesc" xml:space="preserve">
|
||||
<value>Ѕρэ¢ϊƒỳ тĥē ήŭмьĕŕ θƒ ċóℓμmиѕ äлδ řŏẅś ƒōř ťђё τёямιňǻł, ίņ "¢,я" ƒσѓmªτ. !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
<value>Ѕφёĉĩƒỳ тнэ ņµmъ℮ґ øƒ ςòļůmйś ăŋð гøшş ƒöŕ тнε τєѓмϊⁿãŀ, ĩʼn "ċ,ř" ƒθяmãţ. !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="NewTabSplitButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>Ρřėŝš тнε вŭτťôй ťô õрεπ ã ήėŵ τěгмΐпāľ ťąв ẅīťђ ўбµѓ ďэƒāμļť ρґοƒĭłέ. Ōρęи τћз ƒļуőùť τθ šèľēςţ ŵнìςн рřоƒϊĺĕ ŷòυ шăлť τø όφэʼn. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<value>Рґзѕś тђз вůťŧôй ŧǿ ǿφеη ā ʼnéẃ ţєѓmîńąŀ ťâв ωϊŧђ ýθůř đęƒăμℓţ ρŗôƒїĺε. Óρĕп τћё ƒłýбцť ţø śεŀèςŧ шĥïčĥ φřŏƒίļê ўσμ ẁάлτ ţσ όрεй. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="NewTabSplitButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Пέщ Τăв !!</value>
|
||||
<value>Ňèώ Ŧäъ !!</value>
|
||||
</data>
|
||||
<data name="NewTabRun.Text" xml:space="preserve">
|
||||
<value>Öрęп à πéω тªв !!! !</value>
|
||||
<value>Όрèπ ª йěŵ ταв !!! !</value>
|
||||
</data>
|
||||
<data name="NewPaneRun.Text" xml:space="preserve">
|
||||
<value>Ăļŧ+Сℓιçκ ŧö šρłïť ţĥе ¢ūŕřěŋŧ ẅιńδŏẅ !!! !!! !!! !!</value>
|
||||
<value>Ǻℓт+Сłĩċк тö šрŀîţ ţћë сцřѓèήŧ ẅїпðбω !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="NewWindowRun.Text" xml:space="preserve">
|
||||
<value>Şћîƒţ+Ċĺїсĸ ţó θρėņ ª ŋėẅ щіņðôẁ !!! !!! !!! </value>
|
||||
<value>Śħîƒť+Çľιćĸ тō όрзⁿ ª йзώ ẁίπðôш !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="ElevatedRun.Text" xml:space="preserve">
|
||||
<value>Ċţŕℓ+Čŀìĉκ το бφęи άŝ ªδmίήîŝτґąŧøѓ !!! !!! !!! !</value>
|
||||
<value>€ţŕł+Čℓїčķ τõ ορêņ αŝ аðmìñĩѕτŕăţòг !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>€ĺôŝè !</value>
|
||||
<value>Ćℓőŝз !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>€łǿѕě !</value>
|
||||
<value>Ĉļøşз !</value>
|
||||
</data>
|
||||
<data name="WindowCloseButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Çŀбѕé !</value>
|
||||
<value>Ĉļόѕě !</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Μǻжїмίżê !!</value>
|
||||
<value>Μджįmïźэ !!</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Мíиΐмĩžè !!</value>
|
||||
<value>Μïиιmіžё !!</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Μìʼnіміžė !!</value>
|
||||
<value>Μîⁿĩmĩż℮ !!</value>
|
||||
</data>
|
||||
<data name="WindowMinimizeButtonToolTip.Text" xml:space="preserve">
|
||||
<value>Μΐπĩmíźě !!</value>
|
||||
<value>Мĩиîmĩżє !!</value>
|
||||
</data>
|
||||
<data name="AboutDialog.Title" xml:space="preserve">
|
||||
<value>Ąвοµτ !</value>
|
||||
<value>Åвōύţ !</value>
|
||||
</data>
|
||||
<data name="AboutDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>Ѕеηð ƒę℮đвäçк !!! </value>
|
||||
</data>
|
||||
<data name="AboutDialog.CloseButtonText" xml:space="preserve">
|
||||
<value>ǾЌ </value>
|
||||
<value>ΦΚ </value>
|
||||
</data>
|
||||
<data name="AboutDialog_VersionLabel.Text" xml:space="preserve">
|
||||
<value>Věŗšίöŋ: !!</value>
|
||||
<value>Véяšîõп: !!</value>
|
||||
<comment>This is the heading for a version number label</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_GettingStartedLink.Content" xml:space="preserve">
|
||||
@@ -480,7 +480,7 @@
|
||||
<comment>A hyperlink name for the Terminal's documentation</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_DocumentationLink.Content" xml:space="preserve">
|
||||
<value>Đőςűмĕņŧãţîǿņ !!! </value>
|
||||
<value>Đŏĉµмěⁿтатïõñ !!! </value>
|
||||
<comment>A hyperlink name for user documentation</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_ReleaseNotesLink.Content" xml:space="preserve">
|
||||
@@ -496,87 +496,87 @@
|
||||
<comment>A hyperlink name for the Terminal's third-party notices</comment>
|
||||
</data>
|
||||
<data name="QuitDialog.CloseButtonText" xml:space="preserve">
|
||||
<value>Çăņсεℓ !</value>
|
||||
<value>Ċдйĉέł !</value>
|
||||
</data>
|
||||
<data name="QuitDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>Ċŀőšè áℓľ !!!</value>
|
||||
<value>€ļőşε áļľ !!!</value>
|
||||
</data>
|
||||
<data name="QuitDialog.Title" xml:space="preserve">
|
||||
<value>Ðõ ýοũ ẃαⁿť ţό ¢ľοşέ ǻļĺ ẁïⁿðőẅŝ? !!! !!! !!! </value>
|
||||
<value>Ďõ γбű ẁāŋţ ťó ςℓσśĕ äℓℓ шîйđбẁś? !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="CloseAllDialog.CloseButtonText" xml:space="preserve">
|
||||
<value>Ĉǻñсéł !</value>
|
||||
<value>Ćăʼnċęℓ !</value>
|
||||
</data>
|
||||
<data name="CloseAllDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>Сŀőŝé дŀℓ !!!</value>
|
||||
<value>Ćļõѕέ аłℓ !!!</value>
|
||||
</data>
|
||||
<data name="CloseAllDialog.Title" xml:space="preserve">
|
||||
<value>Ðо ŷοµ щąʼnţ ţô сļöś℮ дŀŀ ţåвŝ? !!! !!! !!!</value>
|
||||
<value>Đσ ŷőū шдиŧ тò čļòŝз αŀľ ţâвŝ? !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="CloseReadOnlyDialog.CloseButtonText" xml:space="preserve">
|
||||
<value>Ċªŋçёĺ !</value>
|
||||
<value>Čǻñčėŀ !</value>
|
||||
</data>
|
||||
<data name="CloseReadOnlyDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>Ćľόѕê āήуẁāŷ !!! </value>
|
||||
<value>Сłŏѕε άñÿẃåγ !!! </value>
|
||||
</data>
|
||||
<data name="CloseReadOnlyDialog.Title" xml:space="preserve">
|
||||
<value>Ẁāѓŋίⁿġ !!</value>
|
||||
<value>Ẁαгйïņğ !!</value>
|
||||
</data>
|
||||
<data name="CloseReadOnlyDialog.Content" xml:space="preserve">
|
||||
<value>Υŏυ âѓĕ åьбůт ŧó ćℓоšέ å ŕèάđ-бпĺÿ ŧэѓmїňâł. Ðø ýθŭ ώϊşĥ ţó ĉóņτϊпûë? !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ϋôů ářє дъоϋť ŧо ćľōśέ ª гęаð-öйĺу тêřmĩńäĺ. Đǿ ỳøü ωîśђ ŧő ćőʼnţїñϋέ? !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="LargePasteDialog.CloseButtonText" xml:space="preserve">
|
||||
<value>Čάʼnčзŀ !</value>
|
||||
<value>Сâήçеŀ !</value>
|
||||
</data>
|
||||
<data name="LargePasteDialog.Content" xml:space="preserve">
|
||||
<value>¥бů åŕэ αъουŧ τό рαŝťε тëхţ тħαţ ιş ŀθπġêř ŧħâй 5 Кîβ. Ďŏ ýöџ ẁîŝħ ŧô ςσñтíⁿΰэ? !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ўōµ ąřε ăвőüť ţò ρãѕŧĕ ťê×ŧ тħãт ïš ľôʼnğзŗ ŧђąи 5 ЌΐБ. Đθ γŏΰ ẅĩşħ τò ςõиŧĭňūê? !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="LargePasteDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>Ρãŝτē άņŷщāý !!! </value>
|
||||
<value>Ρâşτз ăπуẅаý !!! </value>
|
||||
</data>
|
||||
<data name="LargePasteDialog.Title" xml:space="preserve">
|
||||
<value>Ŵǻґñΐņģ !!</value>
|
||||
<value>Ẃâгηïņğ !!</value>
|
||||
</data>
|
||||
<data name="MultiLinePasteDialog.CloseButtonText" xml:space="preserve">
|
||||
<value>€αήċêļ !</value>
|
||||
<value>Ćªήĉěł !</value>
|
||||
</data>
|
||||
<data name="MultiLineWarningText.Text" xml:space="preserve">
|
||||
<value>Ŷõϋ åяέ âвőџт тō рάşťē τзхŧ ŧħάт çöⁿτāϊлš mµĺťΐрļэ ŀιňэѕ. Іƒ γőú рâšтё ŧћīş тєжŧ íʼnŧŏ ỳŏùř ѕћėłł, ĭτ mâÿ гēŝцℓţ ĩп ŧнέ űпëжφе¢ťęď эх℮ćųŧîθи θƒ çомmàⁿδŝ. Ðō уοϋ ŵīŝђ τǿ čôʼnтїŋűέ? !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
<value>Ϋбů áяē авôцţ τŏ ρªѕŧê ťĕхţ ťĥâť ĉοлŧäїлš mųŀťїрŀē ĺΐиέš. Ĭƒ ýŏû рαśτё ťђìš ť℮хŧ îήŧø γõũŗ ѕћêℓļ, íτ mду ŗéśμļт įŋ ţħ℮ цпęхρ℮çťêď з×эćúтϊŏⁿ õƒ ςōмmãⁿðş. Đο убŭ ẃīѕн τõ ċôʼnŧïñûε? !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="MultiLinePasteDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>Ρăśťě ăηŷшâγ !!! </value>
|
||||
<value>Ρªšţє аńŷẁàŷ !!! </value>
|
||||
</data>
|
||||
<data name="MultiLinePasteDialog.Title" xml:space="preserve">
|
||||
<value>Ŵäŗŋĩñĝ !!</value>
|
||||
<value>Щāŕñιπĝ !!</value>
|
||||
</data>
|
||||
<data name="CommandPalette_SearchBox.PlaceholderText" xml:space="preserve">
|
||||
<value>Тýφë ã ćömmаήδ иăме... !!! !!! </value>
|
||||
<value>Ťýφě á ĉθmmāņđ йăмē... !!! !!! </value>
|
||||
</data>
|
||||
<data name="CommandPalette_NoMatchesText.Text" xml:space="preserve">
|
||||
<value>Νό мªŧςħϊŋģ ĉőmmâηδš !!! !!!</value>
|
||||
<value>Ŋό маŧ¢ĥΐŋğ сóмmăлđš !!! !!!</value>
|
||||
</data>
|
||||
<data name="CommandPaletteModeAnnouncement_ActionMode" xml:space="preserve">
|
||||
<value>Àĉťîöŋ śĕãѓсн mθđе !!! !!</value>
|
||||
<value>∆ćŧìøп şєāяćħ мóδє !!! !!</value>
|
||||
<comment>This text will be read aloud using assistive technologies when the command palette switches into action (command search) mode.</comment>
|
||||
</data>
|
||||
<data name="CommandPaletteModeAnnouncement_TabSearchSwitchMode" xml:space="preserve">
|
||||
<value>Τáь тįтℓę møδє !!! !</value>
|
||||
<value>Тàв ťїтłé môðэ !!! !</value>
|
||||
<comment>This text will be read aloud using assistive technologies when the command palette switches into a mode that filters tab names.</comment>
|
||||
</data>
|
||||
<data name="CommandPaletteModeAnnouncement_CommandlineMode" xml:space="preserve">
|
||||
<value>Сǿммàлđ-ĺĩⁿė mθðе !!! !!</value>
|
||||
<value>Çοmмăπď-ĺιиé мõđэ !!! !!</value>
|
||||
<comment>This text will be read aloud using assistive technologies when the command palette switches into the raw commandline parsing mode.</comment>
|
||||
</data>
|
||||
<data name="CommandPalette_NestedCommandAnnouncement" xml:space="preserve">
|
||||
<value>Мθяє ŏрτιóлš ƒôѓ "{}" !!! !!!</value>
|
||||
<value>Μояē öφтίóπś ƒőř "{}" !!! !!!</value>
|
||||
<comment>This text will be read aloud using assistive technologies when the user selects a command that has additional options. The {} will be expanded to the name of the command containing more options.</comment>
|
||||
</data>
|
||||
<data name="CommandPalette_ParsedCommandLine" xml:space="preserve">
|
||||
<value>Єжэςūŧĭñģ ĉбmmäήδ ļΐήê ωįℓŀ ĭʼnνõκё ţђė ƒōľľóщίⁿġ ςбмmăпðŝ: !!! !!! !!! !!! !!! !!</value>
|
||||
<value>Ėжėсùţīпğ ¢ōmмªñð ĺїπĕ ẁíĺł ĭиνокė тħе ƒöĺℓŏщîпġ çõmмāⁿďѕ: !!! !!! !!! !!! !!! !!</value>
|
||||
<comment>Will be followed by a list of strings describing parsed commands</comment>
|
||||
</data>
|
||||
<data name="CommandPalette_FailedParsingCommandLine" xml:space="preserve">
|
||||
<value>₣дїĺēď рåѓşĭⁿğ çõmмάñð ļîπ℮: !!! !!! !!</value>
|
||||
<value>₣āіľ℮ď рàгśīпģ ¢бммäⁿδ ĺīñè: !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="CommandPaletteControlName" xml:space="preserve">
|
||||
<value>Ćσmmăηδ ράŀĕтţ℮ !!! !</value>
|
||||
@@ -585,150 +585,150 @@
|
||||
<value>Τăь ѕωîťςћêг !!! </value>
|
||||
</data>
|
||||
<data name="TabSwitcher_SearchBoxText" xml:space="preserve">
|
||||
<value>Τýрė à ţǻь иàмє... !!! !!</value>
|
||||
<value>Ţýρё ă тăъ пâmě... !!! !!</value>
|
||||
</data>
|
||||
<data name="TabSwitcher_NoMatchesText" xml:space="preserve">
|
||||
<value>Ñσ mâτçĥĩйĝ τåъ ńãмĕ !!! !!!</value>
|
||||
<value>Ńô мατćнìņģ ţдъ пªмĕ !!! !!!</value>
|
||||
</data>
|
||||
<data name="CmdPalCommandlinePrompt" xml:space="preserve">
|
||||
<value>Еñťєŗ à wt çőmмáйđℓĩńĕ ŧō яцή !!! !!! !!!</value>
|
||||
<value>Èηŧĕґ ǻ wt ċθmмаʼnđļïʼnė тο ŕūʼn !!! !!! !!!</value>
|
||||
<comment>{Locked="wt"} </comment>
|
||||
</data>
|
||||
<data name="SuggestionsControl_NestedCommandAnnouncement" xml:space="preserve">
|
||||
<value>Мôяе őρťįŏňś ƒøŕ "{}" !!! !!!</value>
|
||||
<value>Μōŗè σφŧïθлš ƒόŕ "{}" !!! !!!</value>
|
||||
<comment>This text will be read aloud using assistive technologies when the user selects a command that has additional options. The {} will be expanded to the name of the command containing more options.</comment>
|
||||
</data>
|
||||
<data name="SuggestionsControl_SearchBox.PlaceholderText" xml:space="preserve">
|
||||
<value>Ŧурě д čōmmáηð пαмë... !!! !!! </value>
|
||||
<value>Ťÿφė å ċοmмªйđ ηаmє... !!! !!! </value>
|
||||
</data>
|
||||
<data name="SuggestionsControl_NoMatchesText.Text" xml:space="preserve">
|
||||
<value>∏ô mâť¢ħįńġ çоmmдпđŝ !!! !!!</value>
|
||||
<value>Ņô mάťςћίņĝ ċоmмάņďš !!! !!!</value>
|
||||
</data>
|
||||
<data name="SuggestionsControlName" xml:space="preserve">
|
||||
<value>Śūġģęŝţīôⁿś mêήџ !!! !</value>
|
||||
<value>Šύğġěşţįσпś м℮ʼnμ !!! !</value>
|
||||
</data>
|
||||
<data name="SuggestionsControl_MoreOptions.[using:Windows.UI.Xaml.Automation]AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>Μоřє ôрŧίöŋŝ !!! </value>
|
||||
<value>Мόѓė ōφťіŏⁿś !!! </value>
|
||||
</data>
|
||||
<data name="SuggestionsControl_MatchesAvailable" xml:space="preserve">
|
||||
<value>Şųģġëŝŧíόⁿѕ ƒόüлδ: {0} !!! !!! </value>
|
||||
<value>Śΰġģ℮šτϊθñѕ ƒöüⁿδ: {0} !!! !!! </value>
|
||||
<comment>{0} will be replaced with a number.</comment>
|
||||
</data>
|
||||
<data name="CrimsonColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>€ŕīmşоʼn !!</value>
|
||||
<value>€яïmşǿń !!</value>
|
||||
</data>
|
||||
<data name="SteelBlueColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ŝτэěľ Вłϋĕ !!!</value>
|
||||
<value>Ѕťéêℓ βľυэ !!!</value>
|
||||
</data>
|
||||
<data name="MediumSeaGreenColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Мëδĭűм Ś℮α Ĝґёεň !!! !</value>
|
||||
<value>Μёδιųm Ѕεд Ğґзēη !!! !</value>
|
||||
</data>
|
||||
<data name="DarkOrangeColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ðāřќ Őѓаňġε !!!</value>
|
||||
<value>Ďäŕќ Õřäňğè !!!</value>
|
||||
</data>
|
||||
<data name="MediumVioletRedColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Мεδïυm Vιòľĕţ Γěđ !!! !!</value>
|
||||
<value>Мęðϊům Vĭõľзт Ѓεð !!! !!</value>
|
||||
</data>
|
||||
<data name="DodgerBlueColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ďøðġĕѓ Βĺΰ℮ !!!</value>
|
||||
<value>Ðôđğēг Βĺϋę !!!</value>
|
||||
</data>
|
||||
<data name="LimeGreenColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ŀΐmε Ĝŗęëń !!!</value>
|
||||
<value>Ĺіmз Ĝґéĕи !!!</value>
|
||||
</data>
|
||||
<data name="YellowColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ýеℓŀǿω !</value>
|
||||
<value>¥ęℓłοẃ !</value>
|
||||
</data>
|
||||
<data name="BlueVioletColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ьľυë Vïσłèť !!!</value>
|
||||
<value>Ьľùе Vΐбŀэτ !!!</value>
|
||||
</data>
|
||||
<data name="SlateBlueColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Şĺāťę Βŀųэ !!!</value>
|
||||
<value>Şŀаťę Βĺûė !!!</value>
|
||||
</data>
|
||||
<data name="LimeColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>£įмε !</value>
|
||||
<value>£ϊмз !</value>
|
||||
</data>
|
||||
<data name="TanColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ţαⁿ </value>
|
||||
<value>Ťåπ </value>
|
||||
</data>
|
||||
<data name="MagentaColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Маģĕиŧǻ !!</value>
|
||||
<value>Μàğэⁿτα !!</value>
|
||||
</data>
|
||||
<data name="CyanColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ćŷăл !</value>
|
||||
<value>Ċуåň !</value>
|
||||
</data>
|
||||
<data name="SkyBlueColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ŝќŷ ßℓџë !!</value>
|
||||
<value>Šќŷ ßľϋ℮ !!</value>
|
||||
</data>
|
||||
<data name="DarkGrayColorButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ðàґķ Ģяāý !!!</value>
|
||||
<value>Ðàŗκ Ğѓáγ !!!</value>
|
||||
</data>
|
||||
<data name="InvalidUriText" xml:space="preserve">
|
||||
<value>Тћĩş ĺĩŋќ īѕ іňνдľĩδ: !!! !!!</value>
|
||||
<value>Τћїš ŀĩňк іѕ įňνдŀíď: !!! !!!</value>
|
||||
</data>
|
||||
<data name="UnsupportedSchemeText" xml:space="preserve">
|
||||
<value>Тђĩѕ ŀіńк ŧурě іś ĉύřѓéŋтľỳ πθт şùφрõґŧêδ: !!! !!! !!! !!! </value>
|
||||
<value>Ťђïś łϊηќ ŧурē ιş çũґѓзⁿτľÿ ñστ şΰρρоŕŧĕđ: !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="CouldNotOpenUriDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>Ċâπćєł !</value>
|
||||
<value>Сąñс℮ł !</value>
|
||||
</data>
|
||||
<data name="SettingsTab" xml:space="preserve">
|
||||
<value>Ѕёŧťĭńġş !!</value>
|
||||
<value>Śëţťĩпğś !!</value>
|
||||
</data>
|
||||
<data name="FailedToWriteToSettings" xml:space="preserve">
|
||||
<value>Ẅē ĉøůĺď лθτ щяįŧė τб ýσüř şέťťíⁿġŝ ƒĭľє. Čħёсĸ тĥė ρēѓмīŝśĩόⁿŝ θπ ŧħάţ ƒĩłє τо ĕлşύŗе тнáŧ тнĕ řέаδ-óпŀу ƒľåĝ ìš ņøτ ŝεŧ āпď τħдτ ẃґïťě аςсεśş ϊş ĝгâņţεð. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Ẃε ςőűℓđ пòт ωяΐτë ŧô γôύг šěťтïπĝŝ ƒīłě. Çђêĉĸ ţђэ φеřмìşŝΐóпѕ õл ťђàτ ƒĩŀε ţб έπšμґé ţђäť тћê ѓέάδ-õлļỳ ƒŀãġ ΐš ʼnοт ŝėт ǻпď ţнăт ẅѓīţĕ ăсċéšş ĩş ģŗдŋτëđ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="ParentCommandBackButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Ьâçκ !</value>
|
||||
<value>Бдçķ !</value>
|
||||
</data>
|
||||
<data name="ParentCommandBackButton.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>ßâςќ !</value>
|
||||
<value>Ьãςк !</value>
|
||||
</data>
|
||||
<data name="ControlNoticeDialog.PrimaryButtonText" xml:space="preserve">
|
||||
<value>ΟĶ </value>
|
||||
<value>ΘК </value>
|
||||
</data>
|
||||
<data name="NoticeDebug" xml:space="preserve">
|
||||
<value>Ðěвυģ !</value>
|
||||
<value>Ďêъŭģ !</value>
|
||||
</data>
|
||||
<data name="NoticeError" xml:space="preserve">
|
||||
<value>Ēгŕθř !</value>
|
||||
<value>∑ŕřοґ !</value>
|
||||
</data>
|
||||
<data name="NoticeInfo" xml:space="preserve">
|
||||
<value>Ìлƒöŗмáŧιòʼn !!!</value>
|
||||
<value>Īπƒóřмąτιŏʼn !!!</value>
|
||||
</data>
|
||||
<data name="NoticeWarning" xml:space="preserve">
|
||||
<value>Ẁάґŋίήġ !!</value>
|
||||
<value>Шãřñїņģ !!</value>
|
||||
</data>
|
||||
<data name="ClipboardTextHeader.Text" xml:space="preserve">
|
||||
<value>Ćļΐφвőдřđ čøńŧεⁿťś (ρŗэνίêш): !!! !!! !!!</value>
|
||||
<value>€ℓірьоåŗδ ĉóńťęňтѕ (φѓενĭεẃ): !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="CommandPalette_MoreOptions.[using:Windows.UI.Xaml.Automation]AutomationProperties.HelpText" xml:space="preserve">
|
||||
<value>Μοřě όρτîойš !!! </value>
|
||||
<value>Мθґе бφŧīбπš !!! </value>
|
||||
</data>
|
||||
<data name="WindowIdLabel" xml:space="preserve">
|
||||
<value>Ẁĩʼnðőώ !</value>
|
||||
<value>Ẅίńďöщ !</value>
|
||||
<comment>This is displayed as a label for a number, like "Window: 10"</comment>
|
||||
</data>
|
||||
<data name="UnnamedWindowName" xml:space="preserve">
|
||||
<value>üñπámеð ώīηďŏщ !!! !</value>
|
||||
<value>υʼnňàмěđ ẅіπďōẅ !!! !</value>
|
||||
<comment>text used to identify when a window hasn't been assigned a name by the user</comment>
|
||||
</data>
|
||||
<data name="WindowRenamer.Subtitle" xml:space="preserve">
|
||||
<value>Ęηţęř ă ⁿěω лдm℮: !!! !!</value>
|
||||
<value>Єиŧ℮ŗ ă ñéẁ йάmё: !!! !!</value>
|
||||
</data>
|
||||
<data name="WindowRenamer.ActionButtonContent" xml:space="preserve">
|
||||
<value>ØЌ </value>
|
||||
<value>ÒК </value>
|
||||
</data>
|
||||
<data name="WindowRenamer.CloseButtonContent" xml:space="preserve">
|
||||
<value>Čªпċέł !</value>
|
||||
<value>Сªⁿċĕĺ !</value>
|
||||
</data>
|
||||
<data name="RenameFailedToast.Title" xml:space="preserve">
|
||||
<value>₣ąϊľêδ ţó ř℮πǻmё шįŋδŏώ !!! !!! </value>
|
||||
<value>₣âιļĕđ ŧо ѓëňąмë щϊπδǿω !!! !!! </value>
|
||||
</data>
|
||||
<data name="RenameFailedToast.Subtitle" xml:space="preserve">
|
||||
<value>Δиоŧĥêř щϊπðǿẅ ẃĩтн ţђąţ πаmέ åŀѓēªðγ è×їśтŝ !!! !!! !!! !!! !</value>
|
||||
<value>Άņόтĥěŗ ẃїлðοω ẁιťĥ ťћаť пâmě ăļřéàδў ёжìśŧѕ !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="WindowMaximizeButtonToolTip" xml:space="preserve">
|
||||
<value>Μдхįmїżέ !!</value>
|
||||
<value>Μą×ìmϊżé !!</value>
|
||||
</data>
|
||||
<data name="WindowRestoreDownButtonToolTip" xml:space="preserve">
|
||||
<value>Ŕèšŧòяё ďǿẃи !!! </value>
|
||||
@@ -737,105 +737,102 @@
|
||||
<value>Ċòмmāńδ рªľėτťë !!! !</value>
|
||||
</data>
|
||||
<data name="NotificationIconFocusTerminal" xml:space="preserve">
|
||||
<value>₣осµѕ Ţèґmιйàł !!! !</value>
|
||||
<value>₣ôćűŝ Ţеґмĭйâŀ !!! !</value>
|
||||
<comment>This is displayed as a label for the context menu item that focuses the terminal.</comment>
|
||||
</data>
|
||||
<data name="NotificationIconWindowSubmenu" xml:space="preserve">
|
||||
<value>Ẅĩήðôщš !!</value>
|
||||
<value>Ẃϊйδοŵš !!</value>
|
||||
<comment>This is displayed as a label for the context menu item that holds the submenu of available windows.</comment>
|
||||
</data>
|
||||
<data name="DropPathTabRun.Text" xml:space="preserve">
|
||||
<value>Őρёπ ά ⁿεщ тǻв įⁿ ġΐνëʼn şťàґтΐήġ đϊŕĕčŧōřγ !!! !!! !!! !!! </value>
|
||||
<value>Фφĕń ª пёẅ ţâь ίи ğīνęņ ѕŧāятĩлğ δįŗęćтŏяγ !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="DropPathTabNewWindow.Text" xml:space="preserve">
|
||||
<value>Оφęⁿ ã πęẃ ώĭńδôẅ ώïťћ ĝіνęʼn šţǻгŧįиģ ðїřêςτοŗу !!! !!! !!! !!! !!</value>
|
||||
<value>Οφэй ä ŋёώ ẅįńðбώ ẁįτђ ĝĩνēη šτáгтϊŋĝ ðĭřěçŧøгγ !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="DropPathTabSplit.Text" xml:space="preserve">
|
||||
<value>Ѕрŀĭт τнє ẁìⁿδöщ άπď şţąѓт ĩⁿ ġĭνêŋ ďįгěçţбгŷ !!! !!! !!! !!! !</value>
|
||||
<value>Ŝρℓΐŧ ŧнė ẁίňďõŵ άпδ ŝţâґţ ίń ģįνëʼn δϊгέ¢ŧøяў !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="ExportTabText" xml:space="preserve">
|
||||
<value>Ė×φōŗŧ ţєхŧ !!!</value>
|
||||
</data>
|
||||
<data name="ExportFailure" xml:space="preserve">
|
||||
<value>₣άιļěđ ŧо ěхрŏгť тēѓмïйäℓ ċбητėήт !!! !!! !!! </value>
|
||||
<value>₣ăìľεď ťθ эхроґт ţеґmίñдļ ¢ōйт℮лť !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="ExportSuccess" xml:space="preserve">
|
||||
<value>Šŭčċέšśƒūļℓỳ ĕхροѓŧèð τэřміиäĺ čσňţэʼnτ !!! !!! !!! !!</value>
|
||||
<value>Ŝūĉčєšśƒυłłγ ĕ×φòŗтэð тēгмïʼnãℓ ĉοʼnťëⁿţ !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="FindText" xml:space="preserve">
|
||||
<value>₣ìŋð !</value>
|
||||
<value>₣ìпđ !</value>
|
||||
</data>
|
||||
<data name="PlainText" xml:space="preserve">
|
||||
<value>Ρĺáīň тěхт !!!</value>
|
||||
</data>
|
||||
<data name="CloseOnExitInfoBar.Message" xml:space="preserve">
|
||||
<value>Ţėřmĩⁿäтîбň ьεђªνįог ĉαή ье ĉόπƒϊĝŭяэδ ΐп ǻđνǻήсєð φґσƒĭľе şέŧŧϊŋğѕ. !!! !!! !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="SetAsDefaultInfoBar.Message" xml:space="preserve">
|
||||
<value>Ẁїⁿðóщŝ Ŧеŕмìиаĺ ¢ªņ ьě ѕéŧ ąŝ ťђ℮ ďęƒåūłť тêґмίŋªℓ αрρłίċăŧíőň ìη ŷσϋг ѕėťťϊпġŝ. !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ťéямїлâŧîόň ь℮ћäνįőř čªή вĕ ċοñƒĩġџřèδ įŋ ăδνåл¢êð ряòƒιļє şėŧтіиĝś. !!! !!! !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="InfoBarDismissButton.Content" xml:space="preserve">
|
||||
<value>Đõŋ'ť šћσẁ àģаΐņ !!! !</value>
|
||||
<value>Ďόń'ţ šħόω ãĝάϊл !!! !</value>
|
||||
</data>
|
||||
<data name="ElevationShield.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Ţђіś Тĕřмїηǻℓ шĩⁿðöŵ ïѕ ѓüñňĩñģ ãŝ áðmĭⁿîşŧŕãţθŕ !!! !!! !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="CommandPalette_MatchesAvailable" xml:space="preserve">
|
||||
<value>Śϋĝģėѕŧïöⁿś ƒоùлď: {0} !!! !!! </value>
|
||||
<value>Ѕũğġεšтįóпş ƒōцʼnđ: {0} !!! !!! </value>
|
||||
<comment>{0} will be replaced with a number.</comment>
|
||||
</data>
|
||||
<data name="AboutDialog_CheckingForUpdatesLabel.Text" xml:space="preserve">
|
||||
<value>Ĉħэсķіńğ ƒōя ùρδдτĕѕ... !!! !!! </value>
|
||||
<value>Çђęċќїŋğ ƒσř ũρδàτέѕ... !!! !!! </value>
|
||||
</data>
|
||||
<data name="AboutDialog_UpdateAvailableLabel.Text" xml:space="preserve">
|
||||
<value>Áи μρðαťέ іś ªνăįļăвŀе. !!! !!! </value>
|
||||
<value>Δʼn μρđаŧè ĭś ăνăϊłªвľė. !!! !!! </value>
|
||||
</data>
|
||||
<data name="AboutDialog_InstallUpdateButton.Content" xml:space="preserve">
|
||||
<value>Įпśţάľℓ ⁿōщ !!!</value>
|
||||
<value>Ϊŋśţāŀŀ πбẁ !!!</value>
|
||||
</data>
|
||||
<data name="DuplicateRemainingProfilesEntry" xml:space="preserve">
|
||||
<value>Ŧħė "newTabMenu" ƒìэļđ сöлŧăìηŝ mǿř℮ ţнäñ оπ℮ зйţŕγ ǿƒ ŧỳρė "remainingProfiles". Ǿηĺý ŧħέ ƒіŗşŧ ôйė щįłℓ ьè čôпşίðεґέđ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ŧђê "newTabMenu" ƒιêŀď čσñţąϊйѕ mōѓé ťђǻñ öŋė ёňτŕý őƒ τýρê "ґёмãīліηģРяöƒïľєś". Φпĺў τђё ƒΐѓšτ όñè ώїłł ьè ĉőлѕìδēяёδ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="newTabMenu"} {Locked="remainingProfiles"}</comment>
|
||||
</data>
|
||||
<data name="InvalidUseOfContent" xml:space="preserve">
|
||||
<value>Τћ℮ "__content" ρřǿрéŕŧỳ ίѕ řёśэŗνęđ ƒôя їπτεřйаľ üş℮ !!! !!! !!! !!! !!! </value>
|
||||
<value>Ťђέ "__content" φŕόφέŕτγ íś řêšзřνеð ƒσř ійтėŕňåℓ ΰşè !!! !!! !!! !!! !!! </value>
|
||||
<comment>{Locked="__content"}</comment>
|
||||
</data>
|
||||
<data name="AboutToolTip" xml:space="preserve">
|
||||
<value>Οφёи ą đϊаĺöĝ ĉбņŧâĭпíиģ ρяŏδúćţ ΐηƒøŗmªτïóņ !!! !!! !!! !!! !</value>
|
||||
<value>Фφèη а ðїаļθĝ ćбⁿťáĭηΐñģ ρřσđůčŧ ілƒǿřmãтĩöή !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="ChooseColorToolTip" xml:space="preserve">
|
||||
<value>Ωрèй ţђè čбľǿя φîĉќéг ťô ĉĥσθşз τħě čоĺōѓ ôƒ тнĩѕ тåь !!! !!! !!! !!! !!! </value>
|
||||
<value>Ωφĕй ŧнė ¢óŀοŕ φĩċĸęř τσ ¢ђőōѕė ťħê сõľòŗ бƒ ŧħįѕ τªь !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="CommandPaletteToolTip" xml:space="preserve">
|
||||
<value>Φφéⁿ ţћě ςθммâňð φăļéτťĕ !!! !!! !</value>
|
||||
<value>Øρĕл ţће сǿmмåήđ ρãĺέτŧě !!! !!! !</value>
|
||||
</data>
|
||||
<data name="DuplicateTabToolTip" xml:space="preserve">
|
||||
<value>Θрèη ª ⁿêẁ ŧąв µѕїʼnğ τнέ ªčтíνė ρŕоƒíŀê ïй ţħè čúяřĕπť đîřēćţőѓÿ !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Óρέл â ʼnзш τàв ũśĭлġ ŧħё ąċŧîνê ρŕøƒΐĺé ĩи ţħě çúггзηт đĩřзçţøřý !!! !!! !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="ExportTabToolTip" xml:space="preserve">
|
||||
<value>Ëхрόѓţ τħĕ сōиţєņтş ōƒ ťĥе ťěжτ вŭƒƒёѓ ΐñţō ã ŧěхŧ ƒìŀэ !!! !!! !!! !!! !!! !</value>
|
||||
<value>Ēхφõґт τĥе сǿήŧĕиŧѕ ōƒ τђė ťε×τ ъũƒƒεř ĩήŧо α ţéם ƒιļê !!! !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="FindToolTip" xml:space="preserve">
|
||||
<value>Øρĕⁿ ŧће şëªяćħ δϊαļŏģ !!! !!! </value>
|
||||
<value>Φρéņ ŧнĕ şęâřςћ ðíάŀŏģ !!! !!! </value>
|
||||
</data>
|
||||
<data name="RenameTabToolTip" xml:space="preserve">
|
||||
<value>Ŕєиáмē ŧђΐŝ тдъ !!! !</value>
|
||||
<value>Ŗėлαмē тħíŝ тåв !!! !</value>
|
||||
</data>
|
||||
<data name="SettingsToolTip" xml:space="preserve">
|
||||
<value>Ωρęⁿ тĥĕ ѕéţτїηĝś ρǻģė !!! !!! </value>
|
||||
<value>Òφĕņ тĥе šэτŧīлğš ρдģė !!! !!! </value>
|
||||
</data>
|
||||
<data name="SplitTabToolTip" xml:space="preserve">
|
||||
<value>Φφέл â πέŵ рάňē ŭśіńģ ŧнэ ª¢ţΐνĕ φŗõƒĩļέ īⁿ ŧĥĕ çцřŗėиť đĩгёĉťóŗỳ !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Ωрėŋ д πėẁ φâиě űѕīⁿģ тĥэ ã¢τίνë рřŏƒίĺê îŋ ţћэ çūŗгěηт ďíř℮ĉŧõгỳ !!! !!! !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="TabCloseAfterToolTip" xml:space="preserve">
|
||||
<value>Ĉŀôѕė дĺľ тāьş τò τħė яĩġћт όƒ τĥΐŝ ŧǻв !!! !!! !!! !!!</value>
|
||||
<value>Сłǿśе ǻĺľ τăвś ţô ŧн℮ яîĝħť őƒ τђїş тάв !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="TabCloseOtherToolTip" xml:space="preserve">
|
||||
<value>Ćĺόśе ãŀℓ ťάъŝ ℮хсèφţ ťĥїѕ ŧâь !!! !!! !!!</value>
|
||||
<value>€ļόѕĕ ªŀŀ ŧáвѕ έ×ćèρт ŧнìş ŧåв !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="TabCloseToolTip" xml:space="preserve">
|
||||
<value>€ĺòŝэ τђíŝ ţåв !!! !</value>
|
||||
<value>Ĉłоśэ ťĥìŝ ţªъ !!! !</value>
|
||||
</data>
|
||||
<data name="NewTabMenuFolderEmpty" xml:space="preserve">
|
||||
<value>Ёмφţγ !</value>
|
||||
@@ -844,61 +841,61 @@
|
||||
<value>Ĉĺοŝе φаиę !!!</value>
|
||||
</data>
|
||||
<data name="ClosePaneToolTip" xml:space="preserve">
|
||||
<value>Ĉĺοŝě ŧнέ άçŧινè φâηė īƒ mџľťĭрłέ рªņēŝ äя℮ ρŗеšěпť !!! !!! !!! !!! !!!</value>
|
||||
<value>Çĺόś℮ τнĕ ă¢τίν℮ рáлĕ ιƒ mϋŀţїрĺë φàńęś άŗє рřęšеńт !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="TabColorClearButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.FullDescription" xml:space="preserve">
|
||||
<value>Ґĕѕёт ŧãь ¢øĺõř !!! !</value>
|
||||
<value>Ґέšεт τăъ ċǿℓőґ !!! !</value>
|
||||
<comment>Text used to identify the reset button</comment>
|
||||
</data>
|
||||
<data name="MoveTabToNewWindowText" xml:space="preserve">
|
||||
<value>Мόνз ţǻь ŧö ʼn℮ω ώĭŋδōώ !!! !!! </value>
|
||||
</data>
|
||||
<data name="MoveTabToNewWindowToolTip" xml:space="preserve">
|
||||
<value>Мòνέš τдъ тσ ą ńэω ωìлðøẅ !!! !!! !</value>
|
||||
<value>Мøνëŝ ŧªъ ŧǿ ã пεẃ шίŋđоẁ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="RunAsAdminFlyout.Text" xml:space="preserve">
|
||||
<value>Ŕμŋ ąś åďmįиíšťґąţőя !!! !!!</value>
|
||||
<comment>This text is displayed on context menu for profile entries in add new tab button.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_ExistingTab" xml:space="preserve">
|
||||
<value>Ąçтΐνэ φапë мőνёð τő "{0}" тãв !!! !!! !!!</value>
|
||||
<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 tab the pane was moved to.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_TabMovedAnnouncement_Default" xml:space="preserve">
|
||||
<value>"{0}" ţάв mσνëđ ţô "{1}" ẁΐпδοω !!! !!! !!!</value>
|
||||
<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 name of the window the tab was moved to.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_TabMovedAnnouncement_NewWindow" xml:space="preserve">
|
||||
<value>"{0}" ţªь мŏνєð ţσ пёẅ ẁĩńδόẅ !!! !!! !!!</value>
|
||||
<value>"{0}" тąь mǿνєđ ŧσ ήèώ ẅĩŋďøẃ !!! !!! !!!</value>
|
||||
<comment>{Locked="{0}"}This text is read out by screen readers upon a successful tab movement. {0} is the name of the tab.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_TabMovedAnnouncement_Direction" xml:space="preserve">
|
||||
<value>"{0}" ταъ møνęδ ţő рõśíτιŏп "{1}" !!! !!! !!! </value>
|
||||
<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>
|
||||
<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>Åčţΐνē φàле мονêď τõ "{0}" ώĭňđòω !!! !!! !!! </value>
|
||||
<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>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_NewWindow" xml:space="preserve">
|
||||
<value>Ăćτíνέ φãήз мθνěđ ţǿ ňέẃ ωίňďóẁ !!! !!! !!!</value>
|
||||
<value>Αĉťįνέ ρªņз mσνёđ τǿ ήёẃ ẃîпďǿω !!! !!! !!!</value>
|
||||
<comment>This text is read out by screen readers upon a successful pane movement to a new window.</comment>
|
||||
</data>
|
||||
<data name="TerminalPage_PaneMovedAnnouncement_NewTab" xml:space="preserve">
|
||||
<value>Äĉŧîνє φåňε móνέð ťö ňεω ŧâь !!! !!! !!</value>
|
||||
<value>Дсţϊνё φαŋє mбν℮ð ťŏ ηеẁ ταв !!! !!! !!</value>
|
||||
<comment>This text is read out by screen readers upon a successful pane movement to a new tab within the existing window.</comment>
|
||||
</data>
|
||||
<data name="CmdAppendCommandLineDesc" xml:space="preserve">
|
||||
<value>΃ śèţ, ţђέ ćòмmǻŋď шіŀľ ъэ дррэňδĕð тθ ťĥє φѓōƒíľэ'ś δéƒâūŀт ćомmāņď їиśťēāđ ŏƒ ѓēрłά¢íηĝ іт. !!! !!! !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Ĩƒ šęţ, ŧнĕ ¢ömmдлδ ŵîĺł ьέ åφрєйδĕđ τσ ŧђė рřŏƒїłє'ş đзƒªūľţ ¢οmмăńδ іñѕţέáđ øƒ ѓēρļąċĭлĝ їţ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="RestartConnectionText" xml:space="preserve">
|
||||
<value>Γēѕŧâяŧ ćǿńńēčťїöл !!! !!</value>
|
||||
</data>
|
||||
<data name="RestartConnectionToolTip" xml:space="preserve">
|
||||
<value>Ѓêşŧãřŧ тн℮ âçτìνе рàⁿê ćбñйєĉтĩόʼn !!! !!! !!! !</value>
|
||||
<value>Γėşťáгţ ŧħ℮ ãčтĩνέ ρăйё сǿηńëςтιóņ !!! !!! !!! !</value>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
@@ -166,7 +166,7 @@
|
||||
<comment>{Locked=qps-ploc,qps-ploca,qps-plocm}</comment>
|
||||
</data>
|
||||
<data name="AppDescription" xml:space="preserve">
|
||||
<value>Ťĥё Ñēщ Шίⁿðоẅś Ťėгмîήāľ !!! !!! !</value>
|
||||
<value>Τĥз Йéщ Ẃįńđôẃѕ Тéѓmĩиâļ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AppDescriptionDev" xml:space="preserve">
|
||||
<value>The Windows Terminal, but Unofficial</value>
|
||||
@@ -177,22 +177,22 @@
|
||||
<comment>{Locked}</comment>
|
||||
</data>
|
||||
<data name="AppDescriptionPre" xml:space="preserve">
|
||||
<value>Шίηđóŵš Ŧĕяmїйàℓ ẁітħ ª φяęνîёщ όƒ ûφĉбмíήĝ ƒêåťµřεŝ !!! !!! !!! !!! !!! </value>
|
||||
<value>Щΐňδόŵѕ Ŧęřмĭʼnäℓ ẅîťħ à φřеνίëẃ θƒ џрсøмΐʼnğ ƒĕāŧųřэś !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Dev" xml:space="preserve">
|
||||
<value>Open in Terminal (&Dev)</value>
|
||||
<comment>{Locked} The dev build will never be seen in multiple languages</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Canary" xml:space="preserve">
|
||||
<value>Óрëπ íи Ťēяmілǻŀ (&Cäηàřÿ) !!! !!! !</value>
|
||||
<value>Θρēņ ïη Ţéгmĭηäŀ (&Çäņдѓγ) !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Canary version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Preview" xml:space="preserve">
|
||||
<value>Óрзń ΐή Ŧěґмιлāℓ &Pѓéνīĕω !!! !!! !</value>
|
||||
<value>Όрèп ìņ Ţêŕmїʼnåļ &Рѓзνι℮ω !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem" xml:space="preserve">
|
||||
<value>Ôрëη ïп &Tēѓмϊŋãł !!! !!</value>
|
||||
<value>Óрêп ìл &Ťěѓmιиåĺ !!! !!</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the non-preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -187,6 +187,9 @@
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Qùíт !</value>
|
||||
</data>
|
||||
<data name="CloseWindowWarningTitle" xml:space="preserve">
|
||||
<value>Đǿ ÿõű ŵãŋт тŏ ¢ľòŝê ăŀľ ŧãвŝ? !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Мµļтíрłĕ φдпėŝ !!! !</value>
|
||||
</data>
|
||||
@@ -337,9 +340,6 @@
|
||||
<data name="CmdProfileArgDesc" xml:space="preserve">
|
||||
<value>Θφêп шĩτћ ťнě ģìνēή ρѓøƒìĺę. Âćĉеφťś ёĩτĥėŗ τђė йάмє øя ĠŮΪÐ õƒ а φŕóƒίℓè !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="CmdSessionIdArgDesc" xml:space="preserve">
|
||||
<value>Šέŧś ŧћэ ẀŦ_ŜÉŜŜІΟΝ νăяíåьłé; mµśτ вэ â ĢŨÎĐ !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="CmdSplitPaneDesc" xml:space="preserve">
|
||||
<value>Ĉґéáŧе д ήэẅ ŝφĺĭτ рãňё !!! !!! </value>
|
||||
</data>
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
<comment>{Locked=qps-ploc,qps-ploca,qps-plocm}</comment>
|
||||
</data>
|
||||
<data name="AppDescription" xml:space="preserve">
|
||||
<value>Тĥё Ńēẁ Шіπđοωš Тěřмιňαŀ !!! !!! !</value>
|
||||
<value>Τĥз Йéщ Ẃįńđôẃѕ Тéѓmĩиâļ !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AppDescriptionDev" xml:space="preserve">
|
||||
<value>The Windows Terminal, but Unofficial</value>
|
||||
@@ -177,22 +177,22 @@
|
||||
<comment>{Locked}</comment>
|
||||
</data>
|
||||
<data name="AppDescriptionPre" xml:space="preserve">
|
||||
<value>Шίήďŏшś Ŧêямĩňāľ ŵíτн ă ρѓëνιêω øƒ ũρčŏмįηğ ƒєáţũŗêš !!! !!! !!! !!! !!! </value>
|
||||
<value>Щΐňδόŵѕ Ŧęřмĭʼnäℓ ẅîťħ à φřеνίëẃ θƒ џрсøмΐʼnğ ƒĕāŧųřэś !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Dev" xml:space="preserve">
|
||||
<value>Open in Terminal (&Dev)</value>
|
||||
<comment>{Locked} The dev build will never be seen in multiple languages</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Canary" xml:space="preserve">
|
||||
<value>Фφěй ĩń Тêřmιπâł (&Cãⁿǻřу) !!! !!! !</value>
|
||||
<value>Θρēņ ïη Ţéгmĭηäŀ (&Çäņдѓγ) !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Canary version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem_Preview" xml:space="preserve">
|
||||
<value>Óφ℮ʼn ΐŋ Τėřmīйäĺ &Pяєνϊëẃ !!! !!! !</value>
|
||||
<value>Όрèп ìņ Ţêŕmїʼnåļ &Рѓзνι℮ω !!! !!! !</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the Preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
<data name="ShellExtension_OpenInTerminalMenuItem" xml:space="preserve">
|
||||
<value>Ορέл ϊŋ &Téŕmįñāℓ !!! !!</value>
|
||||
<value>Óрêп ìл &Ťěѓmιиåĺ !!! !!</value>
|
||||
<comment>This is a menu item that will be displayed in the Windows File Explorer that launches the non-preview version of Windows Terminal. Please mark one of the characters to be an accelerator key.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -187,6 +187,9 @@
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>Qùíт !</value>
|
||||
</data>
|
||||
<data name="CloseWindowWarningTitle" xml:space="preserve">
|
||||
<value>Đǿ ÿõű ŵãŋт тŏ ¢ľòŝê ăŀľ ŧãвŝ? !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="MultiplePanes" xml:space="preserve">
|
||||
<value>Мµļтíрłĕ φдпėŝ !!! !</value>
|
||||
</data>
|
||||
@@ -337,9 +340,6 @@
|
||||
<data name="CmdProfileArgDesc" xml:space="preserve">
|
||||
<value>Θφêп шĩτћ ťнě ģìνēή ρѓøƒìĺę. Âćĉеφťś ёĩτĥėŗ τђė йάмє øя ĠŮΪÐ õƒ а φŕóƒίℓè !!! !!! !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="CmdSessionIdArgDesc" xml:space="preserve">
|
||||
<value>Šέŧś ŧћэ ẀŦ_ŜÉŜŜІΟΝ νăяíåьłé; mµśτ вэ â ĢŨÎĐ !!! !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="CmdSplitPaneDesc" xml:space="preserve">
|
||||
<value>Ĉґéáŧе д ήэẅ ŝφĺĭτ рãňё !!! !!! </value>
|
||||
</data>
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace winrt::TerminalApp::implementation
|
||||
// re-evaluate including that arg in this action then.
|
||||
// Return Value:
|
||||
// - The list of actions.
|
||||
std::vector<ActionAndArgs> SettingsTab::BuildStartupActions(const bool /*asContent*/) const
|
||||
std::vector<ActionAndArgs> SettingsTab::BuildStartupActions(BuildStartupKind) const
|
||||
{
|
||||
ASSERT_UI_THREAD();
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace winrt::TerminalApp::implementation
|
||||
void UpdateSettings(Microsoft::Terminal::Settings::Model::CascadiaSettings settings);
|
||||
void Focus(winrt::Windows::UI::Xaml::FocusState focusState) override;
|
||||
|
||||
std::vector<Microsoft::Terminal::Settings::Model::ActionAndArgs> BuildStartupActions(const bool asContent = false) const override;
|
||||
std::vector<Microsoft::Terminal::Settings::Model::ActionAndArgs> BuildStartupActions(BuildStartupKind kind) const override;
|
||||
|
||||
private:
|
||||
winrt::Windows::UI::Xaml::ElementTheme _requestedTheme;
|
||||
|
||||
@@ -12,6 +12,14 @@ namespace TerminalAppLocalTests
|
||||
|
||||
namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
enum class BuildStartupKind
|
||||
{
|
||||
None,
|
||||
Content,
|
||||
MovePane,
|
||||
Persist,
|
||||
};
|
||||
|
||||
struct TabBase : TabBaseT<TabBase>
|
||||
{
|
||||
public:
|
||||
@@ -22,7 +30,7 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
void UpdateTabViewIndex(const uint32_t idx, const uint32_t numTabs);
|
||||
void SetActionMap(const Microsoft::Terminal::Settings::Model::IActionMapView& actionMap);
|
||||
virtual std::vector<Microsoft::Terminal::Settings::Model::ActionAndArgs> BuildStartupActions(const bool asContent = false) const = 0;
|
||||
virtual std::vector<Microsoft::Terminal::Settings::Model::ActionAndArgs> BuildStartupActions(BuildStartupKind kind) const = 0;
|
||||
|
||||
virtual std::optional<winrt::Windows::UI::Color> GetTabColor();
|
||||
void ThemeColor(const winrt::Microsoft::Terminal::Settings::Model::ThemeColor& focused,
|
||||
|
||||
@@ -428,7 +428,7 @@ namespace winrt::TerminalApp::implementation
|
||||
}
|
||||
|
||||
auto t = winrt::get_self<implementation::TabBase>(tab);
|
||||
auto actions = t->BuildStartupActions();
|
||||
auto actions = t->BuildStartupActions(BuildStartupKind::None);
|
||||
_AddPreviouslyClosedPaneOrTab(std::move(actions));
|
||||
|
||||
_RemoveTab(tab);
|
||||
@@ -485,7 +485,7 @@ namespace winrt::TerminalApp::implementation
|
||||
// if the user manually closed all tabs.
|
||||
// Do this only if we are the last window; the monarch will notice
|
||||
// we are missing and remove us that way otherwise.
|
||||
_LastTabClosedHandlers(*this, winrt::make<LastTabClosedEventArgs>(!_maintainStateOnTabClose));
|
||||
_CloseWindowRequestedHandlers(*this, nullptr);
|
||||
}
|
||||
else if (focusedTabIndex.has_value() && focusedTabIndex.value() == gsl::narrow_cast<uint32_t>(tabIndex))
|
||||
{
|
||||
@@ -766,11 +766,11 @@ namespace winrt::TerminalApp::implementation
|
||||
// This doesn't handle refocusing anything in particular, the
|
||||
// result will be that the last pane created is focused. In the
|
||||
// case of a single pane that is the desired behavior anyways.
|
||||
auto state = pane->BuildStartupActions(0, 1);
|
||||
auto state = pane->BuildStartupActions(0, 1, BuildStartupKind::None);
|
||||
{
|
||||
ActionAndArgs splitPaneAction{};
|
||||
splitPaneAction.Action(ShortcutAction::SplitPane);
|
||||
SplitPaneArgs splitPaneArgs{ SplitDirection::Automatic, state.firstPane->GetTerminalArgsForPane() };
|
||||
SplitPaneArgs splitPaneArgs{ SplitDirection::Automatic, state.firstPane->GetTerminalArgsForPane(BuildStartupKind::None) };
|
||||
splitPaneAction.Args(splitPaneArgs);
|
||||
|
||||
state.args.emplace(state.args.begin(), std::move(splitPaneAction));
|
||||
@@ -1138,12 +1138,4 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
return _tabs.Size() > 1;
|
||||
}
|
||||
|
||||
void TerminalPage::_RemoveAllTabs()
|
||||
{
|
||||
// Since _RemoveTabs is asynchronous, create a snapshot of the tabs we want to remove
|
||||
std::vector<winrt::TerminalApp::TabBase> tabsToRemove;
|
||||
std::copy(begin(_tabs), end(_tabs), std::back_inserter(tabsToRemove));
|
||||
_RemoveTabs(tabsToRemove);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
#include "pch.h"
|
||||
#include "TerminalPage.h"
|
||||
#include "TerminalPage.g.cpp"
|
||||
#include "LastTabClosedEventArgs.g.cpp"
|
||||
#include "RenameWindowRequestedArgs.g.cpp"
|
||||
#include "RequestMoveContentArgs.g.cpp"
|
||||
#include "RequestReceiveContentArgs.g.cpp"
|
||||
#include "LaunchPositionRequest.g.cpp"
|
||||
|
||||
#include <filesystem>
|
||||
|
||||
@@ -654,9 +654,9 @@ namespace winrt::TerminalApp::implementation
|
||||
// GH#12267: Make sure that we don't instantly close ourselves when
|
||||
// we're readying to accept a defterm connection. In that case, we don't
|
||||
// have a tab yet, but will once we're initialized.
|
||||
if (_tabs.Size() == 0 && !(_shouldStartInboundListener || _isEmbeddingInboundListener))
|
||||
if (_tabs.Size() == 0 && !_shouldStartInboundListener && !_isEmbeddingInboundListener)
|
||||
{
|
||||
_LastTabClosedHandlers(*this, winrt::make<LastTabClosedEventArgs>(false));
|
||||
_CloseWindowRequestedHandlers(*this, nullptr);
|
||||
co_return;
|
||||
}
|
||||
else
|
||||
@@ -1642,10 +1642,6 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
term.RaiseNotice({ this, &TerminalPage::_ControlNoticeRaisedHandler });
|
||||
|
||||
// Add an event handler when the terminal's selection wants to be copied.
|
||||
// When the text buffer data is retrieved, we'll copy the data into the Clipboard
|
||||
term.CopyToClipboard({ this, &TerminalPage::_CopyToClipboardHandler });
|
||||
|
||||
// Add an event handler when the terminal wants to paste data from the Clipboard.
|
||||
term.PasteFromClipboard({ this, &TerminalPage::_PasteFromClipboardHandler });
|
||||
|
||||
@@ -1900,19 +1896,14 @@ namespace winrt::TerminalApp::implementation
|
||||
}
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
// - Saves the window position and tab layout to the application state
|
||||
// - This does not create the InitialPosition field, that needs to be
|
||||
// added externally.
|
||||
// Arguments:
|
||||
// - <none>
|
||||
// Return Value:
|
||||
// - the window layout
|
||||
WindowLayout TerminalPage::GetWindowLayout()
|
||||
void TerminalPage::PersistState()
|
||||
{
|
||||
if (_startupState != StartupState::Initialized)
|
||||
// This method may be called for a window even if it hasn't had a tab yet or lost all of them.
|
||||
// We shouldn't persist such windows.
|
||||
const auto tabCount = _tabs.Size();
|
||||
if (_startupState != StartupState::Initialized || tabCount == 0)
|
||||
{
|
||||
return nullptr;
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<ActionAndArgs> actions;
|
||||
@@ -1920,13 +1911,13 @@ namespace winrt::TerminalApp::implementation
|
||||
for (auto tab : _tabs)
|
||||
{
|
||||
auto t = winrt::get_self<implementation::TabBase>(tab);
|
||||
auto tabActions = t->BuildStartupActions();
|
||||
auto tabActions = t->BuildStartupActions(BuildStartupKind::Persist);
|
||||
actions.insert(actions.end(), std::make_move_iterator(tabActions.begin()), std::make_move_iterator(tabActions.end()));
|
||||
}
|
||||
|
||||
// if the focused tab was not the last tab, restore that
|
||||
auto idx = _GetFocusedTabIndex();
|
||||
if (idx && idx != _tabs.Size() - 1)
|
||||
if (idx && idx != tabCount - 1)
|
||||
{
|
||||
ActionAndArgs action;
|
||||
action.Action(ShortcutAction::SwitchToTab);
|
||||
@@ -1947,7 +1938,7 @@ namespace winrt::TerminalApp::implementation
|
||||
actions.emplace_back(std::move(action));
|
||||
}
|
||||
|
||||
WindowLayout layout{};
|
||||
WindowLayout layout;
|
||||
layout.TabLayout(winrt::single_threaded_vector<ActionAndArgs>(std::move(actions)));
|
||||
|
||||
auto mode = LaunchMode::DefaultMode;
|
||||
@@ -1964,20 +1955,21 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
layout.InitialSize(windowSize);
|
||||
|
||||
return layout;
|
||||
// We don't actually know our own position. So we have to ask the window
|
||||
// layer for that.
|
||||
const auto launchPosRequest{ winrt::make<LaunchPositionRequest>() };
|
||||
_RequestLaunchPositionHandlers(*this, launchPosRequest);
|
||||
layout.InitialPosition(launchPosRequest.Position());
|
||||
|
||||
ApplicationState::SharedInstance().AppendPersistedWindowLayout(layout);
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
// - Close the terminal app. If there is more
|
||||
// than one tab opened, show a warning dialog.
|
||||
// Arguments:
|
||||
// - bypassDialog: if true a dialog won't be shown even if the user would
|
||||
// normally get confirmation. This is used in the case where the user
|
||||
// has already been prompted by the Quit action.
|
||||
fire_and_forget TerminalPage::CloseWindow(bool bypassDialog)
|
||||
fire_and_forget TerminalPage::CloseWindow()
|
||||
{
|
||||
if (!bypassDialog &&
|
||||
_HasMultipleTabs() &&
|
||||
if (_HasMultipleTabs() &&
|
||||
_settings.GlobalSettings().ConfirmCloseAllTabs() &&
|
||||
!_displayingCloseDialog)
|
||||
{
|
||||
@@ -1996,15 +1988,7 @@ namespace winrt::TerminalApp::implementation
|
||||
}
|
||||
}
|
||||
|
||||
if (_settings.GlobalSettings().ShouldUsePersistedLayout())
|
||||
{
|
||||
// Don't delete the ApplicationState when all of the tabs are removed.
|
||||
// If there is still a monarch living they will get the event that
|
||||
// a window closed and trigger a new save without this window.
|
||||
_maintainStateOnTabClose = true;
|
||||
}
|
||||
|
||||
_RemoveAllTabs();
|
||||
_CloseWindowRequestedHandlers(*this, nullptr);
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
@@ -2066,7 +2050,7 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
if (const auto pane{ terminalTab->GetActivePane() })
|
||||
{
|
||||
auto startupActions = pane->BuildStartupActions(0, 1, true, true);
|
||||
auto startupActions = pane->BuildStartupActions(0, 1, BuildStartupKind::MovePane);
|
||||
_DetachPaneFromWindow(pane);
|
||||
_MoveContent(std::move(startupActions.args), windowId, tabIdx);
|
||||
focusedTab->DetachPane();
|
||||
@@ -2208,7 +2192,7 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
if (tab)
|
||||
{
|
||||
auto startupActions = tab->BuildStartupActions(true);
|
||||
auto startupActions = tab->BuildStartupActions(BuildStartupKind::Content);
|
||||
_DetachTabFromWindow(tab);
|
||||
_MoveContent(std::move(startupActions), windowId, 0);
|
||||
_RemoveTab(*tab);
|
||||
@@ -2578,54 +2562,6 @@ namespace winrt::TerminalApp::implementation
|
||||
return dimension;
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
// - Place `copiedData` into the clipboard as text. Triggered when a
|
||||
// terminal control raises its CopyToClipboard event.
|
||||
// Arguments:
|
||||
// - copiedData: the new string content to place on the clipboard.
|
||||
winrt::fire_and_forget TerminalPage::_CopyToClipboardHandler(const IInspectable /*sender*/,
|
||||
const CopyToClipboardEventArgs copiedData)
|
||||
{
|
||||
co_await wil::resume_foreground(Dispatcher(), CoreDispatcherPriority::High);
|
||||
|
||||
auto dataPack = DataPackage();
|
||||
dataPack.RequestedOperation(DataPackageOperation::Copy);
|
||||
|
||||
const auto copyFormats = copiedData.Formats() != nullptr ?
|
||||
copiedData.Formats().Value() :
|
||||
static_cast<CopyFormat>(0);
|
||||
|
||||
// copy text to dataPack
|
||||
dataPack.SetText(copiedData.Text());
|
||||
|
||||
if (WI_IsFlagSet(copyFormats, CopyFormat::HTML))
|
||||
{
|
||||
// copy html to dataPack
|
||||
const auto htmlData = copiedData.Html();
|
||||
if (!htmlData.empty())
|
||||
{
|
||||
dataPack.SetHtmlFormat(htmlData);
|
||||
}
|
||||
}
|
||||
|
||||
if (WI_IsFlagSet(copyFormats, CopyFormat::RTF))
|
||||
{
|
||||
// copy rtf data to dataPack
|
||||
const auto rtfData = copiedData.Rtf();
|
||||
if (!rtfData.empty())
|
||||
{
|
||||
dataPack.SetRtf(rtfData);
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Clipboard::SetContent(dataPack);
|
||||
Clipboard::Flush();
|
||||
}
|
||||
CATCH_LOG();
|
||||
}
|
||||
|
||||
static wil::unique_close_clipboard_call _openClipboard(HWND hwnd)
|
||||
{
|
||||
bool success = false;
|
||||
@@ -5135,7 +5071,7 @@ namespace winrt::TerminalApp::implementation
|
||||
const uint32_t tabIndex,
|
||||
std::optional<til::point> dragPoint)
|
||||
{
|
||||
auto startupActions = _stashed.draggedTab->BuildStartupActions(true);
|
||||
auto startupActions = _stashed.draggedTab->BuildStartupActions(BuildStartupKind::Content);
|
||||
_DetachTabFromWindow(_stashed.draggedTab);
|
||||
|
||||
_MoveContent(std::move(startupActions), windowId, tabIndex, dragPoint);
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
#include "TerminalTab.h"
|
||||
#include "AppKeyBindings.h"
|
||||
#include "AppCommandlineArgs.h"
|
||||
#include "LastTabClosedEventArgs.g.h"
|
||||
#include "RenameWindowRequestedArgs.g.h"
|
||||
#include "RequestMoveContentArgs.g.h"
|
||||
#include "RequestReceiveContentArgs.g.h"
|
||||
#include "LaunchPositionRequest.g.h"
|
||||
#include "Toast.h"
|
||||
|
||||
#define DECLARE_ACTION_HANDLER(action) void _Handle##action(const IInspectable& sender, const Microsoft::Terminal::Settings::Model::ActionEventArgs& args);
|
||||
@@ -44,15 +44,6 @@ namespace winrt::TerminalApp::implementation
|
||||
ScrollDown = 1
|
||||
};
|
||||
|
||||
struct LastTabClosedEventArgs : LastTabClosedEventArgsT<LastTabClosedEventArgs>
|
||||
{
|
||||
WINRT_PROPERTY(bool, ClearPersistedState);
|
||||
|
||||
public:
|
||||
LastTabClosedEventArgs(const bool& shouldClear) :
|
||||
_ClearPersistedState{ shouldClear } {};
|
||||
};
|
||||
|
||||
struct RenameWindowRequestedArgs : RenameWindowRequestedArgsT<RenameWindowRequestedArgs>
|
||||
{
|
||||
WINRT_PROPERTY(winrt::hstring, ProposedName);
|
||||
@@ -89,6 +80,13 @@ namespace winrt::TerminalApp::implementation
|
||||
_TabIndex{ tabIndex } {};
|
||||
};
|
||||
|
||||
struct LaunchPositionRequest : LaunchPositionRequestT<LaunchPositionRequest>
|
||||
{
|
||||
LaunchPositionRequest() = default;
|
||||
|
||||
til::property<winrt::Microsoft::Terminal::Settings::Model::LaunchPosition> Position;
|
||||
};
|
||||
|
||||
struct TerminalPage : TerminalPageT<TerminalPage>
|
||||
{
|
||||
public:
|
||||
@@ -105,7 +103,6 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
bool ShouldImmediatelyHandoffToElevated(const Microsoft::Terminal::Settings::Model::CascadiaSettings& settings) const;
|
||||
void HandoffToElevated(const Microsoft::Terminal::Settings::Model::CascadiaSettings& settings);
|
||||
Microsoft::Terminal::Settings::Model::WindowLayout GetWindowLayout();
|
||||
|
||||
hstring Title();
|
||||
|
||||
@@ -121,7 +118,8 @@ namespace winrt::TerminalApp::implementation
|
||||
SuggestionsControl LoadSuggestionsUI();
|
||||
|
||||
winrt::fire_and_forget RequestQuit();
|
||||
winrt::fire_and_forget CloseWindow(bool bypassDialog);
|
||||
winrt::fire_and_forget CloseWindow();
|
||||
void PersistState();
|
||||
|
||||
void ToggleFocusMode();
|
||||
void ToggleFullscreen();
|
||||
@@ -175,7 +173,7 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
// -------------------------------- WinRT Events ---------------------------------
|
||||
TYPED_EVENT(TitleChanged, IInspectable, winrt::hstring);
|
||||
TYPED_EVENT(LastTabClosed, IInspectable, winrt::TerminalApp::LastTabClosedEventArgs);
|
||||
TYPED_EVENT(CloseWindowRequested, IInspectable, IInspectable);
|
||||
TYPED_EVENT(SetTitleBarContent, IInspectable, winrt::Windows::UI::Xaml::UIElement);
|
||||
TYPED_EVENT(FocusModeChanged, IInspectable, IInspectable);
|
||||
TYPED_EVENT(FullscreenChanged, IInspectable, IInspectable);
|
||||
@@ -196,6 +194,8 @@ namespace winrt::TerminalApp::implementation
|
||||
TYPED_EVENT(RequestMoveContent, Windows::Foundation::IInspectable, winrt::TerminalApp::RequestMoveContentArgs);
|
||||
TYPED_EVENT(RequestReceiveContent, Windows::Foundation::IInspectable, winrt::TerminalApp::RequestReceiveContentArgs);
|
||||
|
||||
TYPED_EVENT(RequestLaunchPosition, IInspectable, winrt::TerminalApp::LaunchPositionRequest);
|
||||
|
||||
WINRT_OBSERVABLE_PROPERTY(winrt::Windows::UI::Xaml::Media::Brush, TitlebarBrush, _PropertyChangedHandlers, nullptr);
|
||||
WINRT_OBSERVABLE_PROPERTY(winrt::Windows::UI::Xaml::Media::Brush, FrameBrush, _PropertyChangedHandlers, nullptr);
|
||||
|
||||
@@ -232,7 +232,6 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
std::optional<uint32_t> _loadFromPersistedLayoutIdx{};
|
||||
|
||||
bool _maintainStateOnTabClose{ false };
|
||||
bool _rearranging{ false };
|
||||
std::optional<int> _rearrangeFrom{};
|
||||
std::optional<int> _rearrangeTo{};
|
||||
@@ -349,7 +348,6 @@ namespace winrt::TerminalApp::implementation
|
||||
void _DismissTabContextMenus();
|
||||
void _FocusCurrentTab(const bool focusAlways);
|
||||
bool _HasMultipleTabs() const;
|
||||
void _RemoveAllTabs();
|
||||
|
||||
void _SelectNextTab(const bool bMoveRight, const Windows::Foundation::IReference<Microsoft::Terminal::Settings::Model::TabSwitcherMode>& customTabSwitcherMode);
|
||||
bool _SelectTab(uint32_t tabIndex);
|
||||
@@ -405,7 +403,6 @@ namespace winrt::TerminalApp::implementation
|
||||
void _ScrollToBufferEdge(ScrollDirection scrollDirection);
|
||||
void _SetAcceleratorForMenuItem(Windows::UI::Xaml::Controls::MenuFlyoutItem& menuItem, const winrt::Microsoft::Terminal::Control::KeyChord& keyChord);
|
||||
|
||||
winrt::fire_and_forget _CopyToClipboardHandler(const IInspectable sender, const winrt::Microsoft::Terminal::Control::CopyToClipboardEventArgs copiedData);
|
||||
winrt::fire_and_forget _PasteFromClipboardHandler(const IInspectable sender,
|
||||
const Microsoft::Terminal::Control::PasteFromClipboardEventArgs eventArgs);
|
||||
|
||||
|
||||
@@ -15,11 +15,6 @@ namespace TerminalApp
|
||||
void Detach(Microsoft.Terminal.Control.TermControl control);
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass LastTabClosedEventArgs
|
||||
{
|
||||
Boolean ClearPersistedState { get; };
|
||||
};
|
||||
|
||||
[default_interface] runtimeclass RenameWindowRequestedArgs
|
||||
{
|
||||
String ProposedName { get; };
|
||||
@@ -57,6 +52,11 @@ namespace TerminalApp
|
||||
Boolean IsQuakeWindow();
|
||||
};
|
||||
|
||||
runtimeclass LaunchPositionRequest
|
||||
{
|
||||
Microsoft.Terminal.Settings.Model.LaunchPosition Position;
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass TerminalPage : Windows.UI.Xaml.Controls.Page, Windows.UI.Xaml.Data.INotifyPropertyChanged, IDirectKeyListener
|
||||
{
|
||||
TerminalPage(WindowProperties properties, ContentManager manager);
|
||||
@@ -87,7 +87,7 @@ namespace TerminalApp
|
||||
void SendContentToOther(RequestReceiveContentArgs args);
|
||||
|
||||
event Windows.Foundation.TypedEventHandler<Object, String> TitleChanged;
|
||||
event Windows.Foundation.TypedEventHandler<Object, LastTabClosedEventArgs> LastTabClosed;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> CloseWindowRequested;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Windows.UI.Xaml.UIElement> SetTitleBarContent;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> FocusModeChanged;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> FullscreenChanged;
|
||||
@@ -104,5 +104,7 @@ namespace TerminalApp
|
||||
|
||||
event Windows.Foundation.TypedEventHandler<Object, RequestMoveContentArgs> RequestMoveContent;
|
||||
event Windows.Foundation.TypedEventHandler<Object, RequestReceiveContentArgs> RequestReceiveContent;
|
||||
|
||||
event Windows.Foundation.TypedEventHandler<Object, LaunchPositionRequest> RequestLaunchPosition;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -427,18 +427,18 @@ namespace winrt::TerminalApp::implementation
|
||||
// - <none>
|
||||
// Return Value:
|
||||
// - A vector of commands
|
||||
std::vector<ActionAndArgs> TerminalTab::BuildStartupActions(const bool asContent) const
|
||||
std::vector<ActionAndArgs> TerminalTab::BuildStartupActions(BuildStartupKind kind) const
|
||||
{
|
||||
ASSERT_UI_THREAD();
|
||||
|
||||
// Give initial ids (0 for the child created with this tab,
|
||||
// 1 for the child after the first split.
|
||||
auto state = _rootPane->BuildStartupActions(0, 1, asContent);
|
||||
auto state = _rootPane->BuildStartupActions(0, 1, kind);
|
||||
|
||||
{
|
||||
ActionAndArgs newTabAction{};
|
||||
newTabAction.Action(ShortcutAction::NewTab);
|
||||
NewTabArgs newTabArgs{ state.firstPane->GetTerminalArgsForPane(asContent) };
|
||||
NewTabArgs newTabArgs{ state.firstPane->GetTerminalArgsForPane(kind) };
|
||||
newTabAction.Args(newTabArgs);
|
||||
|
||||
state.args.emplace(state.args.begin(), std::move(newTabAction));
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace winrt::TerminalApp::implementation
|
||||
void EnterZoom();
|
||||
void ExitZoom();
|
||||
|
||||
std::vector<Microsoft::Terminal::Settings::Model::ActionAndArgs> BuildStartupActions(const bool asContent = false) const override;
|
||||
std::vector<Microsoft::Terminal::Settings::Model::ActionAndArgs> BuildStartupActions(BuildStartupKind kind) const override;
|
||||
|
||||
int GetLeafPaneCount() const noexcept;
|
||||
|
||||
|
||||
@@ -263,11 +263,11 @@ namespace winrt::TerminalApp::implementation
|
||||
AppLogic::Current()->NotifyRootInitialized();
|
||||
}
|
||||
|
||||
void TerminalWindow::Quit()
|
||||
void TerminalWindow::PersistState()
|
||||
{
|
||||
if (_root)
|
||||
{
|
||||
_root->CloseWindow(true);
|
||||
_root->PersistState();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -562,9 +562,21 @@ namespace winrt::TerminalApp::implementation
|
||||
{
|
||||
winrt::Windows::Foundation::Size proposedSize{};
|
||||
|
||||
// In focus mode, we don't want to include our own tab row in the size
|
||||
// of the window that we hand back. So we account for passing
|
||||
// --focusMode on the commandline here, and the mode in the settings.
|
||||
// Below, we'll also account for if focus mode was persisted into the
|
||||
// session for restoration.
|
||||
bool focusMode = _appArgs.GetLaunchMode().value_or(_settings.GlobalSettings().LaunchMode()) == LaunchMode::FocusMode;
|
||||
|
||||
const auto scale = static_cast<float>(dpi) / static_cast<float>(USER_DEFAULT_SCREEN_DPI);
|
||||
if (const auto layout = LoadPersistedLayout())
|
||||
{
|
||||
if (layout.LaunchMode())
|
||||
{
|
||||
focusMode = layout.LaunchMode().Value() == LaunchMode::FocusMode;
|
||||
}
|
||||
|
||||
if (layout.InitialSize())
|
||||
{
|
||||
proposedSize = layout.InitialSize().Value();
|
||||
@@ -602,7 +614,7 @@ namespace winrt::TerminalApp::implementation
|
||||
// GH#2061 - If the global setting "Always show tab bar" is
|
||||
// set or if "Show tabs in title bar" is set, then we'll need to add
|
||||
// the height of the tab bar here.
|
||||
if (_settings.GlobalSettings().ShowTabsInTitlebar())
|
||||
if (_settings.GlobalSettings().ShowTabsInTitlebar() && !focusMode)
|
||||
{
|
||||
// In the past, we used to actually instantiate a TitlebarControl
|
||||
// and use Measure() to determine the DesiredSize of the control, to
|
||||
@@ -620,7 +632,7 @@ namespace winrt::TerminalApp::implementation
|
||||
static constexpr auto titlebarHeight = 40;
|
||||
proposedSize.Height += (titlebarHeight)*scale;
|
||||
}
|
||||
else if (_settings.GlobalSettings().AlwaysShowTabs())
|
||||
else if (_settings.GlobalSettings().AlwaysShowTabs() && !focusMode)
|
||||
{
|
||||
// Same comment as above, but with a TabRowControl.
|
||||
//
|
||||
@@ -916,32 +928,11 @@ namespace winrt::TerminalApp::implementation
|
||||
// - <none>
|
||||
// Return Value:
|
||||
// - <none>
|
||||
void TerminalWindow::CloseWindow(LaunchPosition pos, const bool isLastWindow)
|
||||
void TerminalWindow::CloseWindow()
|
||||
{
|
||||
if (_root)
|
||||
{
|
||||
// If persisted layout is enabled and we are the last window closing
|
||||
// we should save our state.
|
||||
if (_settings.GlobalSettings().ShouldUsePersistedLayout() && isLastWindow)
|
||||
{
|
||||
if (const auto layout = _root->GetWindowLayout())
|
||||
{
|
||||
layout.InitialPosition(pos);
|
||||
const auto state = ApplicationState::SharedInstance();
|
||||
state.PersistedWindowLayouts(winrt::single_threaded_vector<WindowLayout>({ layout }));
|
||||
}
|
||||
}
|
||||
|
||||
_root->CloseWindow(false);
|
||||
}
|
||||
}
|
||||
|
||||
void TerminalWindow::ClearPersistedWindowState()
|
||||
{
|
||||
if (_settings.GlobalSettings().ShouldUsePersistedLayout())
|
||||
{
|
||||
auto state = ApplicationState::SharedInstance();
|
||||
state.PersistedWindowLayouts(nullptr);
|
||||
_root->CloseWindow();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1134,19 +1125,6 @@ namespace winrt::TerminalApp::implementation
|
||||
return winrt::to_hstring(_appArgs.GetExitMessage());
|
||||
}
|
||||
|
||||
hstring TerminalWindow::GetWindowLayoutJson(LaunchPosition position)
|
||||
{
|
||||
if (_root != nullptr)
|
||||
{
|
||||
if (const auto layout = _root->GetWindowLayout())
|
||||
{
|
||||
layout.InitialPosition(position);
|
||||
return WindowLayout::ToJson(layout);
|
||||
}
|
||||
}
|
||||
return L"";
|
||||
}
|
||||
|
||||
void TerminalWindow::SetPersistedLayoutIdx(const uint32_t idx)
|
||||
{
|
||||
_loadFromPersistedLayoutIdx = idx;
|
||||
|
||||
@@ -73,7 +73,7 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
void Create();
|
||||
|
||||
void Quit();
|
||||
void PersistState();
|
||||
|
||||
winrt::fire_and_forget UpdateSettings(winrt::TerminalApp::SettingsLoadEventArgs args);
|
||||
|
||||
@@ -95,8 +95,6 @@ namespace winrt::TerminalApp::implementation
|
||||
bool AlwaysOnTop() const;
|
||||
bool AutoHideWindow();
|
||||
|
||||
hstring GetWindowLayoutJson(Microsoft::Terminal::Settings::Model::LaunchPosition position);
|
||||
|
||||
void IdentifyWindow();
|
||||
void RenameFailed();
|
||||
|
||||
@@ -104,9 +102,6 @@ namespace winrt::TerminalApp::implementation
|
||||
winrt::Microsoft::Terminal::Settings::Model::WindowLayout LoadPersistedLayout();
|
||||
|
||||
void SetPersistedLayoutIdx(const uint32_t idx);
|
||||
void SetNumberOfOpenWindows(const uint64_t num);
|
||||
bool ShouldUsePersistedLayout() const;
|
||||
void ClearPersistedWindowState();
|
||||
|
||||
void RequestExitFullscreen();
|
||||
|
||||
@@ -125,7 +120,7 @@ namespace winrt::TerminalApp::implementation
|
||||
void TitlebarClicked();
|
||||
bool OnDirectKeyEvent(const uint32_t vkey, const uint8_t scanCode, const bool down);
|
||||
|
||||
void CloseWindow(Microsoft::Terminal::Settings::Model::LaunchPosition position, const bool isLastWindow);
|
||||
void CloseWindow();
|
||||
void WindowVisibilityChanged(const bool showOrHide);
|
||||
|
||||
winrt::TerminalApp::TaskbarState TaskbarState();
|
||||
@@ -215,7 +210,7 @@ namespace winrt::TerminalApp::implementation
|
||||
|
||||
FORWARDED_TYPED_EVENT(SetTitleBarContent, winrt::Windows::Foundation::IInspectable, winrt::Windows::UI::Xaml::UIElement, _root, SetTitleBarContent);
|
||||
FORWARDED_TYPED_EVENT(TitleChanged, winrt::Windows::Foundation::IInspectable, winrt::hstring, _root, TitleChanged);
|
||||
FORWARDED_TYPED_EVENT(LastTabClosed, winrt::Windows::Foundation::IInspectable, winrt::TerminalApp::LastTabClosedEventArgs, _root, LastTabClosed);
|
||||
FORWARDED_TYPED_EVENT(CloseWindowRequested, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable, _root, CloseWindowRequested);
|
||||
FORWARDED_TYPED_EVENT(FocusModeChanged, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable, _root, FocusModeChanged);
|
||||
FORWARDED_TYPED_EVENT(FullscreenChanged, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable, _root, FullscreenChanged);
|
||||
FORWARDED_TYPED_EVENT(ChangeMaximizeRequested, winrt::Windows::Foundation::IInspectable, winrt::Windows::Foundation::IInspectable, _root, ChangeMaximizeRequested);
|
||||
@@ -239,6 +234,8 @@ namespace winrt::TerminalApp::implementation
|
||||
FORWARDED_TYPED_EVENT(RequestMoveContent, Windows::Foundation::IInspectable, winrt::TerminalApp::RequestMoveContentArgs, _root, RequestMoveContent);
|
||||
FORWARDED_TYPED_EVENT(RequestReceiveContent, Windows::Foundation::IInspectable, winrt::TerminalApp::RequestReceiveContentArgs, _root, RequestReceiveContent);
|
||||
|
||||
FORWARDED_TYPED_EVENT(RequestLaunchPosition, Windows::Foundation::IInspectable, winrt::TerminalApp::LaunchPositionRequest, _root, RequestLaunchPosition);
|
||||
|
||||
#ifdef UNIT_TESTING
|
||||
friend class TerminalAppLocalTests::CommandlineTest;
|
||||
#endif
|
||||
|
||||
@@ -62,7 +62,7 @@ namespace TerminalApp
|
||||
Boolean ShouldImmediatelyHandoffToElevated();
|
||||
void HandoffToElevated();
|
||||
|
||||
void Quit();
|
||||
void PersistState();
|
||||
|
||||
Windows.UI.Xaml.UIElement GetRoot();
|
||||
|
||||
@@ -75,7 +75,6 @@ namespace TerminalApp
|
||||
|
||||
void IdentifyWindow();
|
||||
void SetPersistedLayoutIdx(UInt32 idx);
|
||||
void ClearPersistedWindowState();
|
||||
|
||||
void RenameFailed();
|
||||
void RequestExitFullscreen();
|
||||
@@ -90,7 +89,7 @@ namespace TerminalApp
|
||||
Boolean GetInitialAlwaysOnTop();
|
||||
Single CalcSnappedDimension(Boolean widthOrHeight, Single dimension);
|
||||
void TitlebarClicked();
|
||||
void CloseWindow(Microsoft.Terminal.Settings.Model.LaunchPosition position, Boolean isLastWindow);
|
||||
void CloseWindow();
|
||||
void WindowVisibilityChanged(Boolean showOrHide);
|
||||
|
||||
TaskbarState TaskbarState{ get; };
|
||||
@@ -98,8 +97,6 @@ namespace TerminalApp
|
||||
Windows.UI.Xaml.Media.Brush FrameBrush { get; };
|
||||
void WindowActivated(Boolean activated);
|
||||
|
||||
String GetWindowLayoutJson(Microsoft.Terminal.Settings.Model.LaunchPosition position);
|
||||
|
||||
Boolean GetMinimizeToNotificationArea();
|
||||
Boolean GetAlwaysShowNotificationIcon();
|
||||
Boolean GetShowTitleInTitlebar();
|
||||
@@ -119,7 +116,7 @@ namespace TerminalApp
|
||||
|
||||
event Windows.Foundation.TypedEventHandler<Object, Windows.UI.Xaml.UIElement> SetTitleBarContent;
|
||||
event Windows.Foundation.TypedEventHandler<Object, String> TitleChanged;
|
||||
event Windows.Foundation.TypedEventHandler<Object, LastTabClosedEventArgs> LastTabClosed;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> CloseWindowRequested;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Microsoft.Terminal.Settings.Model.Theme> RequestedThemeChanged;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> FocusModeChanged;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> FullscreenChanged;
|
||||
@@ -141,6 +138,7 @@ namespace TerminalApp
|
||||
|
||||
event Windows.Foundation.TypedEventHandler<Object, RequestMoveContentArgs> RequestMoveContent;
|
||||
event Windows.Foundation.TypedEventHandler<Object, RequestReceiveContentArgs> RequestReceiveContent;
|
||||
event Windows.Foundation.TypedEventHandler<Object, LaunchPositionRequest> RequestLaunchPosition;
|
||||
|
||||
void AttachContent(String content, UInt32 tabIndex);
|
||||
void SendContentToOther(RequestReceiveContentArgs args);
|
||||
|
||||
@@ -956,7 +956,7 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation
|
||||
// - the user's cloud shell settings
|
||||
WDJ::JsonObject AzureConnection::_GetCloudShellUserSettings()
|
||||
{
|
||||
auto uri{ fmt::format(L"{}providers/Microsoft.Portal/userSettings/cloudconsole?api-version=2020-04-01-preview", _resourceUri) };
|
||||
auto uri{ fmt::format(L"{}providers/Microsoft.Portal/userSettings/cloudconsole?api-version=2023-02-01-preview", _resourceUri) };
|
||||
return _SendRequestReturningJson(uri, nullptr);
|
||||
}
|
||||
|
||||
@@ -966,7 +966,7 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation
|
||||
// - the uri for the cloud shell
|
||||
winrt::hstring AzureConnection::_GetCloudShell()
|
||||
{
|
||||
auto uri{ fmt::format(L"{}providers/Microsoft.Portal/consoles/default?api-version=2020-04-01-preview", _resourceUri) };
|
||||
auto uri{ fmt::format(L"{}providers/Microsoft.Portal/consoles/default?api-version=2023-02-01-preview", _resourceUri) };
|
||||
|
||||
WWH::HttpStringContent content{
|
||||
LR"-({"properties": {"osType": "linux"}})-",
|
||||
|
||||
@@ -186,7 +186,7 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation
|
||||
const HANDLE hRef,
|
||||
const HANDLE hServerProcess,
|
||||
const HANDLE hClientProcess,
|
||||
TERMINAL_STARTUP_INFO startupInfo) :
|
||||
const TERMINAL_STARTUP_INFO& startupInfo) :
|
||||
_rows{ 25 },
|
||||
_cols{ 80 },
|
||||
_guid{ Utils::CreateGuid() },
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace winrt::Microsoft::Terminal::TerminalConnection::implementation
|
||||
const HANDLE hRef,
|
||||
const HANDLE hServerProcess,
|
||||
const HANDLE hClientProcess,
|
||||
TERMINAL_STARTUP_INFO startupInfo);
|
||||
const TERMINAL_STARTUP_INFO& startupInfo);
|
||||
|
||||
ConptyConnection() noexcept = default;
|
||||
void Initialize(const Windows::Foundation::Collections::ValueSet& settings);
|
||||
|
||||
@@ -118,81 +118,81 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AzureCodeExpiry" xml:space="preserve">
|
||||
<value>Τђîš çόδέ ẅĩℓľ ехρĭяę ϊи 15 mїήμτėš. !!! !!! !!! !</value>
|
||||
<value>Ŧнιŝ ςøδё ẅіℓŀ зхρîґέ íи 15 mїπųŧęś. !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AzureEnterTenant" xml:space="preserve">
|
||||
<value>Рŀзаѕ℮ éñтзя ŧħέ ďеšΐř℮ð теńąпŧ ⁿμmвêř. !!! !!! !!! !!!</value>
|
||||
<value>Рĺέåŝē еňţéŗ τĥĕ ďєśįřєđ τëņåńŧ иџмьэŗ. !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureNewLogin" xml:space="preserve">
|
||||
<value>Єитэя {0} ťŏ ŀσġįñ ẅīŧћ â ńзш āč¢бũⁿť !!! !!! !!! !!</value>
|
||||
<value>Ĕńťèѓ {0} ťō łøģΐŋ ώіŧĥ ā ńèώ άčĉøŭпţ !!! !!! !!! !!</value>
|
||||
<comment>{0} will be replaced with the resource from AzureUserEntry_NewLogin; it is intended to be a single-character shorthand for "new account"</comment>
|
||||
</data>
|
||||
<data name="AzureRemoveStored" xml:space="preserve">
|
||||
<value>Ęʼnţέґ {0} ťο яěмσνе τħě äвσν℮ šăνёď čøⁿŋэčţΐóʼn şэтτĩñģś. !!! !!! !!! !!! !!! !</value>
|
||||
<value>Σлтзґ {0} ŧø ŕэмôνз τђε авóνе şǻνеð сσñńзčťιôⁿ ѕĕťťїňġš. !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{0} will be replaced with the resource from AzureUserEntry_RemoveStored; it is intended to be a single-character shorthand for "remove stored"</comment>
|
||||
</data>
|
||||
<data name="AzureInvalidAccessInput" xml:space="preserve">
|
||||
<value>Рĺēǻŝê ёʼnτεя å νäℓĩđ ⁿüмьэř τό åςĉëśŝ тĥė śτóřèð çôñηěčŧîóń šéτťίńģѕ, {0} ţǿ ļöġ ιп щīтħ â ⁿёω áĉĉбυйţ, θґ {1} ťο ŕëmόνέ τнз ŝανέď çбⁿņэςťîǿη šëτţĭñģş. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Рľεдşê ěπτэг ă νàĺįδ йΰmьēя ŧó àсĉĕŝѕ тђέ ŝтøяěð çøⁿñέĉтïǿŋ šєţτĭηģś, {0} тø ľóĝ īп ẅϊτђ â лęщ āς¢òŭñŧ, ôѓ {1} ŧŏ язмôνё тħέ śάνēδ čσňпęċτīôη šėŧŧíпĝѕ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{0} will be replaced with the resource from AzureUserEntry_NewLogin, and {1} will be replaced with AzureUserEntry_RemoveStored. This is an error message, used after AzureNewLogin/AzureRemoveStored if the user enters an invalid value.</comment>
|
||||
</data>
|
||||
<data name="AzureNonNumberError" xml:space="preserve">
|
||||
<value>Ρĺεàŝе éņŧєг ª пűмьěŗ. !!! !!! </value>
|
||||
<value>Ρŀєáśе ёňŧεг ª ňύмъēг. !!! !!! </value>
|
||||
</data>
|
||||
<data name="AzureNumOutOfBoundsError" xml:space="preserve">
|
||||
<value>Лũмьëг øΰт οƒ ьбμⁿďš. Рłêąѕέ ēπτĕг â νäℓιď ⁿΰмь℮ґ. !!! !!! !!! !!! !!!</value>
|
||||
<value>Пϋмъęґ óΰť õƒ воµήďş. Ρŀεäŝé эⁿťєг â νãŀϊδ пцмъёř. !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureNoTenants" xml:space="preserve">
|
||||
<value>Сόύŀđ ŋот ƒìņď дπγ ţёηªηŧş. !!! !!! !!</value>
|
||||
<value>Сôµłď ηǿť ƒіπđ ãñŷ ţ℮ηáńŧş. !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="AzureNoCloudAccount" xml:space="preserve">
|
||||
<value>Ύŏû ĥдνе ņőť ѕэť μр ýőűг ĉĺôυð śħёĺℓ âċćõüпť ŷёт. Ρļéāŝέ ģò τø https://shell.azure.com τб şеţ īť ϋφ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ϋσΰ ђáνě ņоť śéт ūφ ỳθϋг сŀоůδ šђęļĺ áćçθùηт ўеτ. Рĺėåŝê ĝο ŧό https://shell.azure.com το šёť ΐт úр. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="https://shell.azure.com"} This URL should not be localized. Everything else should.</comment>
|
||||
</data>
|
||||
<data name="AzureStorePrompt" xml:space="preserve">
|
||||
<value>Ðό уοϋ ώάπτ ţο şάνε τħèѕĕ ĉòⁿйєçťìοй šèτţϊлĝѕ ƒöѓ ƒüтµřэ ĺθģіпѕ? [{0}/{1}] !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Đò ÿóΰ ẁâňт ŧŏ ŝàνè ťђėšē сôиⁿе¢ŧιŏñ şετтΐńģѕ ƒøѓ ƒϋŧûґē ĺоġΐñş? [{0}/{1}] !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{0} and {1} will be replaced with AzureUserEntry_Yes and AzureUserEntry_No. They are single-character shorthands for "yes" and "no" in this language.</comment>
|
||||
</data>
|
||||
<data name="AzureInvalidStoreInput" xml:space="preserve">
|
||||
<value>Ρŀэåšє ěñτ℮ѓ {0} ôѓ {1} !!! !!! </value>
|
||||
<value>Ρĺèªѕê εňţēŕ {0} оŗ {1} !!! !!! </value>
|
||||
<comment>{0} and {1} will be replaced with AzureUserEntry_Yes and AzureUserEntry_No. This resource will be used as an error response after AzureStorePrompt.</comment>
|
||||
</data>
|
||||
<data name="AzureRequestingCloud" xml:space="preserve">
|
||||
<value>Ґεqùęşŧιπġ ã сľóμď śĥεļŀ īⁿşτάπсє... !!! !!! !!! !</value>
|
||||
<value>Ґĕqμ℮šŧїŋĝ ã ćŀòμð śнёĺŀ íņşťąňċз... !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AzureSuccess" xml:space="preserve">
|
||||
<value>Ŝцćċёęðĕð. !!!</value>
|
||||
<value>Śűċćêёđέď. !!!</value>
|
||||
</data>
|
||||
<data name="AzureRequestingTerminal" xml:space="preserve">
|
||||
<value>Яėqüεŝτĩлĝ ά тēгмïпąļ (ŧĥĩѕ mϊģĥт ţáκε α ẅĥίļè)... !!! !!! !!! !!! !!!</value>
|
||||
<value>Яεqůęŝτίñĝ д тėґmΐπаľ (ťнĭś мìģĥť ţªќĕ ā ẁĥΐĺé)... !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureTokensStored" xml:space="preserve">
|
||||
<value>Ўôųŗ ċόńñέĉťíöй ŝěťτїлġѕ ĥάνэ ьéèп ѕдνĕđ ƒбř ƒμŧϋřе ŀθģĭπŝ. !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ỳσûř čθñňĕ¢ţįõʼn ѕεтţĭňğš наνē вёэʼn śǻνēδ ƒόг ƒμţüŗè ĺõģìйś. !!! !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureNoTokens" xml:space="preserve">
|
||||
<value>Йø τòκëñš тο ŗěмõνē. !!! !!!</value>
|
||||
<value>Ňŏ ŧōкèйś ţő яэmονе. !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureTokensRemoved" xml:space="preserve">
|
||||
<value>Śдνêď ćбñńёĉŧíōй śеττĭлģš яémòνёð. !!! !!! !!! !</value>
|
||||
<value>Śανеđ ċσйñз¢ťìόń şєŧтιŋğѕ яёмǿνёđ. !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AzureOldCredentialsFlushedMessage" xml:space="preserve">
|
||||
<value>Δúţħєŋтïςãŧіōň рāґåmêтĕѓś ¢ĥáиĝĕď. Ỳõų'ℓļ πєεð ţō łøĝ īη àġąĭń. !!! !!! !!! !!! !!! !!! </value>
|
||||
<value>Āΰτнėиŧΐċâтīбŋ рářáмęŧéгŝ сħåⁿģëď. Ϋοц'ļľ ⁿêэð τô ĺσĝ ϊņ àġαĭπ. !!! !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="AzureUnknownTenantName" xml:space="preserve">
|
||||
<value><υηĸήοẃⁿ τёñâńţ ņąмє> !!! !!!</value>
|
||||
<value><ϋпкйôẁи ŧēņàлτ ňămё> !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureIthTenant" xml:space="preserve">
|
||||
<value>Ŧèŋαпţ {0}: {1} ({2}) !!! !!!</value>
|
||||
<value>Ťėηªŋт {0}: {1} ({2}) !!! !!!</value>
|
||||
<comment>{0} is the tenant's number, which the user will enter to connect to the tenant. {1} is the tenant's display name, which will be meaningful for the user. {2} is the tenant's internal ID number.</comment>
|
||||
</data>
|
||||
<data name="AzureSuccessfullyAuthenticated" xml:space="preserve">
|
||||
<value>Āųţĥёņţīĉατèđ. !!! !</value>
|
||||
<value>Ąűŧħēπτįсáτèđ. !!! !</value>
|
||||
</data>
|
||||
<data name="AzureUserEntry_NewLogin" xml:space="preserve">
|
||||
<value>п</value>
|
||||
<value>ņ</value>
|
||||
<comment>This is shorthand for "new login". The user must enter this character to activate the New Login feature (AzureInvalidAccessInput, AzureNewLogin)</comment>
|
||||
</data>
|
||||
<data name="AzureUserEntry_RemoveStored" xml:space="preserve">
|
||||
<value>ѓ</value>
|
||||
<value>ґ</value>
|
||||
<comment>This is shorthand for "remove saved connections". The user must enter this character to activate the Remove Saved Logins feature (AzureRemoveStored, AzureInvalidAccessInput)</comment>
|
||||
</data>
|
||||
<data name="AzureUserEntry_Yes" xml:space="preserve">
|
||||
@@ -200,24 +200,24 @@
|
||||
<comment>This is shorthand for "yes". The user must enter this character to CONFIRM a prompt.</comment>
|
||||
</data>
|
||||
<data name="AzureUserEntry_No" xml:space="preserve">
|
||||
<value>η</value>
|
||||
<value>ń</value>
|
||||
<comment>This is shorthand for "no". The user must enter this character to DECLINE a prompt.</comment>
|
||||
</data>
|
||||
<data name="ProcessExited" xml:space="preserve">
|
||||
<value>[ρřō¢ëśŝ ėжιťéđ щϊťн сθďё {0}] !!! !!! !!!</value>
|
||||
<value>[рѓос℮śš ёхіţεð ẃιţĥ ćōďë {0}] !!! !!! !!!</value>
|
||||
<comment>The first argument {0} is the error code of the process. When there is no error, the number ZERO will be displayed. </comment>
|
||||
</data>
|
||||
<data name="CtrlDToClose" xml:space="preserve">
|
||||
<value>Υбΰ ċαň пοẅ ċļǿşę тђìś ťєгмìʼnâł ωїτħ Ċτřℓ+Đ, бг ρяęśš Зйţëŕ ţб ѓęѕŧąřŧ. !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ỳóŭ ćǻή иòω сĺøѕè ťнįş тёѓмîήªŀ ωīťђ Çťѓℓ+Ď, όг ргéšѕ Σñтèř το ґèšтªят. !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<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} шђεñ łăΰήсĥįʼnģ `{1}'] !!! !!! !!! </value>
|
||||
<value>[℮ѓѓŏŕ {0} ωĥєй łåύñćђίηğ `{1}'] !!! !!! !!! </value>
|
||||
<comment>The first argument {0} is the error code. The second argument {1} is the user-specified path to a program.
|
||||
If this string is broken to multiple lines, it will not be displayed properly.</comment>
|
||||
</data>
|
||||
<data name="BadPathText" xml:space="preserve">
|
||||
<value>Сбùℓδ иоţ дçсзśѕ šťªřţīŋġ δîŗĕčŧσŕγ "{0}" !!! !!! !!! !!!</value>
|
||||
<value>Ċőŭľđ йōť ª¢čеѕş şτāŗťΐиğ ðιѓεςтоŗγ "{0}" !!! !!! !!! !!!</value>
|
||||
<comment>The first argument {0} is a path to a directory on the filesystem, as provided by the user.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -118,77 +118,77 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AzureCodeExpiry" xml:space="preserve">
|
||||
<value>Ťђĩš ¢бðĕ щΐľĺ é×φΐŗè ίń 15 міņūťèś. !!! !!! !!! !</value>
|
||||
<value>Ŧнιŝ ςøδё ẅіℓŀ зхρîґέ íи 15 mїπųŧęś. !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AzureEnterTenant" xml:space="preserve">
|
||||
<value>Ρℓēάśě єñτęŕ τђĕ đĕśìŗéđ ŧ℮йάит ήůmъεř. !!! !!! !!! !!!</value>
|
||||
<value>Рĺέåŝē еňţéŗ τĥĕ ďєśįřєđ τëņåńŧ иџмьэŗ. !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureNewLogin" xml:space="preserve">
|
||||
<value>Єŋťĕř {0} ťο ļòġįи ώιťĥ ā ņĕŵ аċсôúñţ !!! !!! !!! !!</value>
|
||||
<value>Ĕńťèѓ {0} ťō łøģΐŋ ώіŧĥ ā ńèώ άčĉøŭпţ !!! !!! !!! !!</value>
|
||||
<comment>{0} will be replaced with the resource from AzureUserEntry_NewLogin; it is intended to be a single-character shorthand for "new account"</comment>
|
||||
</data>
|
||||
<data name="AzureRemoveStored" xml:space="preserve">
|
||||
<value>Епŧěя {0} ŧό ŗęmбνε τђέ αвòνė şāνέđ ċóпñêçťĩбñ şéţŧįήģѕ. !!! !!! !!! !!! !!! !</value>
|
||||
<value>Σлтзґ {0} ŧø ŕэмôνз τђε авóνе şǻνеð сσñńзčťιôⁿ ѕĕťťїňġš. !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{0} will be replaced with the resource from AzureUserEntry_RemoveStored; it is intended to be a single-character shorthand for "remove stored"</comment>
|
||||
</data>
|
||||
<data name="AzureInvalidAccessInput" xml:space="preserve">
|
||||
<value>Рℓёäśэ èŋţęґ à νăℓіδ ńцmвєя ťό α¢čëşš тће şτθŗэď ςöйʼnесţїôⁿ ѕзτťϊňğş, {0} τö ℓöġ ίη ẃĭţĥ ã ñеẁ åċčσųńт, οŗ {1} ŧθ ґèmöνе ťнě ѕāνεđ ćǿπйёсťìöл šèţтіʼnġѕ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Рľεдşê ěπτэг ă νàĺįδ йΰmьēя ŧó àсĉĕŝѕ тђέ ŝтøяěð çøⁿñέĉтïǿŋ šєţτĭηģś, {0} тø ľóĝ īп ẅϊτђ â лęщ āς¢òŭñŧ, ôѓ {1} ŧŏ язмôνё тħέ śάνēδ čσňпęċτīôη šėŧŧíпĝѕ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{0} will be replaced with the resource from AzureUserEntry_NewLogin, and {1} will be replaced with AzureUserEntry_RemoveStored. This is an error message, used after AzureNewLogin/AzureRemoveStored if the user enters an invalid value.</comment>
|
||||
</data>
|
||||
<data name="AzureNonNumberError" xml:space="preserve">
|
||||
<value>Рł℮āѕê êηţěŗ а ñцmвēг. !!! !!! </value>
|
||||
<value>Ρŀєáśе ёňŧεг ª ňύмъēг. !!! !!! </value>
|
||||
</data>
|
||||
<data name="AzureNumOutOfBoundsError" xml:space="preserve">
|
||||
<value>Νűmъεґ όµŧ бƒ ьσΰиδš. Рŀ℮âŝэ ëʼnтзř â νаℓįð πúmъêŗ. !!! !!! !!! !!! !!!</value>
|
||||
<value>Пϋмъęґ óΰť õƒ воµήďş. Ρŀεäŝé эⁿťєг â νãŀϊδ пцмъёř. !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureNoTenants" xml:space="preserve">
|
||||
<value>Сουļδ ńǿŧ ƒïŋď āπγ ţέⁿаʼnτŝ. !!! !!! !!</value>
|
||||
<value>Сôµłď ηǿť ƒіπđ ãñŷ ţ℮ηáńŧş. !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="AzureNoCloudAccount" xml:space="preserve">
|
||||
<value>Ỳōù ћανē ŋŏт ѕęţ ΰρ ỳõûř ćľòùđ şĥěļŀ à¢ćōŭʼnť ýėτ. Ρļèάšέ ĝø тσ https://shell.azure.com τò ѕ℮ť їτ ũρ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ϋσΰ ђáνě ņоť śéт ūφ ỳθϋг сŀоůδ šђęļĺ áćçθùηт ўеτ. Рĺėåŝê ĝο ŧό https://shell.azure.com το šёť ΐт úр. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="https://shell.azure.com"} This URL should not be localized. Everything else should.</comment>
|
||||
</data>
|
||||
<data name="AzureStorePrompt" xml:space="preserve">
|
||||
<value>Ðό ýóü шаήт τǿ ŝąνę τĥęŝê ¢øʼnńέсţĩōи şéтτîиĝś ƒōŕ ƒùτµřê ļøĝĩπş? [{0}/{1}] !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Đò ÿóΰ ẁâňт ŧŏ ŝàνè ťђėšē сôиⁿе¢ŧιŏñ şετтΐńģѕ ƒøѓ ƒϋŧûґē ĺоġΐñş? [{0}/{1}] !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{0} and {1} will be replaced with AzureUserEntry_Yes and AzureUserEntry_No. They are single-character shorthands for "yes" and "no" in this language.</comment>
|
||||
</data>
|
||||
<data name="AzureInvalidStoreInput" xml:space="preserve">
|
||||
<value>Ρľ℮аşě ęпτэř {0} óг {1} !!! !!! </value>
|
||||
<value>Ρĺèªѕê εňţēŕ {0} оŗ {1} !!! !!! </value>
|
||||
<comment>{0} and {1} will be replaced with AzureUserEntry_Yes and AzureUserEntry_No. This resource will be used as an error response after AzureStorePrompt.</comment>
|
||||
</data>
|
||||
<data name="AzureRequestingCloud" xml:space="preserve">
|
||||
<value>Řèqυėşтϊʼnĝ д ćĺοûđ šĥēłĺ įʼnŝťàňčĕ... !!! !!! !!! !</value>
|
||||
<value>Ґĕqμ℮šŧїŋĝ ã ćŀòμð śнёĺŀ íņşťąňċз... !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AzureSuccess" xml:space="preserve">
|
||||
<value>Śŭ¢¢εēðéď. !!!</value>
|
||||
<value>Śűċćêёđέď. !!!</value>
|
||||
</data>
|
||||
<data name="AzureRequestingTerminal" xml:space="preserve">
|
||||
<value>Геqūеѕтĭńģ α ťёямϊⁿдļ (ŧђīŝ мïğћτ тáκē á щħìŀė)... !!! !!! !!! !!! !!!</value>
|
||||
<value>Яεqůęŝτίñĝ д тėґmΐπаľ (ťнĭś мìģĥť ţªќĕ ā ẁĥΐĺé)... !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureTokensStored" xml:space="preserve">
|
||||
<value>Ύθμг čöŋπεċτĩθņ śεťţιŋĝŝ ђáνę ьέêй śăν℮ď ƒőŕ ƒџтцгē ℓőĝϊлş. !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ỳσûř čθñňĕ¢ţįõʼn ѕεтţĭňğš наνē вёэʼn śǻνēδ ƒόг ƒμţüŗè ĺõģìйś. !!! !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureNoTokens" xml:space="preserve">
|
||||
<value>Ňö ťσĸëиѕ ţö гĕmŏνē. !!! !!!</value>
|
||||
<value>Ňŏ ŧōкèйś ţő яэmονе. !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureTokensRemoved" xml:space="preserve">
|
||||
<value>Śªνёð ćōňиēĉτîóл ѕėτтілġş řĕмǿνêđ. !!! !!! !!! !</value>
|
||||
<value>Śανеđ ċσйñз¢ťìόń şєŧтιŋğѕ яёмǿνёđ. !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AzureOldCredentialsFlushedMessage" xml:space="preserve">
|
||||
<value>Άūтћĕлŧĭĉªтίοñ рäѓàmëтεґş ¢нåñğēď. Ўοů'ŀĺ ʼnęёð ţθ ĺоģ ίñ ąġаĩň. !!! !!! !!! !!! !!! !!! </value>
|
||||
<value>Āΰτнėиŧΐċâтīбŋ рářáмęŧéгŝ сħåⁿģëď. Ϋοц'ļľ ⁿêэð τô ĺσĝ ϊņ àġαĭπ. !!! !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="AzureUnknownTenantName" xml:space="preserve">
|
||||
<value><ūŋкиόώň τёńдⁿτ ñªmĕ> !!! !!!</value>
|
||||
<value><ϋпкйôẁи ŧēņàлτ ňămё> !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureIthTenant" xml:space="preserve">
|
||||
<value>Τεиäиţ {0}: {1} ({2}) !!! !!!</value>
|
||||
<value>Ťėηªŋт {0}: {1} ({2}) !!! !!!</value>
|
||||
<comment>{0} is the tenant's number, which the user will enter to connect to the tenant. {1} is the tenant's display name, which will be meaningful for the user. {2} is the tenant's internal ID number.</comment>
|
||||
</data>
|
||||
<data name="AzureSuccessfullyAuthenticated" xml:space="preserve">
|
||||
<value>Àůтнęńтīċаτέđ. !!! !</value>
|
||||
<value>Ąűŧħēπτįсáτèđ. !!! !</value>
|
||||
</data>
|
||||
<data name="AzureUserEntry_NewLogin" xml:space="preserve">
|
||||
<value>ʼn</value>
|
||||
<value>ņ</value>
|
||||
<comment>This is shorthand for "new login". The user must enter this character to activate the New Login feature (AzureInvalidAccessInput, AzureNewLogin)</comment>
|
||||
</data>
|
||||
<data name="AzureUserEntry_RemoveStored" xml:space="preserve">
|
||||
@@ -196,28 +196,28 @@
|
||||
<comment>This is shorthand for "remove saved connections". The user must enter this character to activate the Remove Saved Logins feature (AzureRemoveStored, AzureInvalidAccessInput)</comment>
|
||||
</data>
|
||||
<data name="AzureUserEntry_Yes" xml:space="preserve">
|
||||
<value>ŷ</value>
|
||||
<value>ў</value>
|
||||
<comment>This is shorthand for "yes". The user must enter this character to CONFIRM a prompt.</comment>
|
||||
</data>
|
||||
<data name="AzureUserEntry_No" xml:space="preserve">
|
||||
<value>η</value>
|
||||
<value>ń</value>
|
||||
<comment>This is shorthand for "no". The user must enter this character to DECLINE a prompt.</comment>
|
||||
</data>
|
||||
<data name="ProcessExited" xml:space="preserve">
|
||||
<value>[рřøĉзšŝ èхіťзď ώīťћ ċőδе {0}] !!! !!! !!!</value>
|
||||
<value>[рѓос℮śš ёхіţεð ẃιţĥ ćōďë {0}] !!! !!! !!!</value>
|
||||
<comment>The first argument {0} is the error code of the process. When there is no error, the number ZERO will be displayed. </comment>
|
||||
</data>
|
||||
<data name="CtrlDToClose" xml:space="preserve">
|
||||
<value>Ŷóц çåп ñøώ ćŀõśĕ ťћίś ŧεѓміήāļ ẁĩţђ Ćţѓℓ+Ď, ǿя φяεŝѕ Ēήτеř тб ґêşţâŕť. !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ỳóŭ ćǻή иòω сĺøѕè ťнįş тёѓмîήªŀ ωīťђ Çťѓℓ+Ď, όг ргéšѕ Σñтèř το ґèšтªят. !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<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>
|
||||
<value>[℮ѓѓŏŕ {0} ωĥєй łåύñćђίηğ `{1}'] !!! !!! !!! </value>
|
||||
<comment>The first argument {0} is the error code. The second argument {1} is the user-specified path to a program.
|
||||
If this string is broken to multiple lines, it will not be displayed properly.</comment>
|
||||
</data>
|
||||
<data name="BadPathText" xml:space="preserve">
|
||||
<value>Ĉǿΰļδ ʼnбτ ãċсёśŝ ѕţăŕŧîñġ đіřêςţóяγ "{0}" !!! !!! !!! !!!</value>
|
||||
<value>Ċőŭľđ йōť ª¢čеѕş şτāŗťΐиğ ðιѓεςтоŗγ "{0}" !!! !!! !!! !!!</value>
|
||||
<comment>The first argument {0} is a path to a directory on the filesystem, as provided by the user.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -118,77 +118,77 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AzureCodeExpiry" xml:space="preserve">
|
||||
<value>Тђįš ςŏðè ώïľľ єжφίřё îʼn 15 mīπµţéš. !!! !!! !!! !</value>
|
||||
<value>Ŧнιŝ ςøδё ẅіℓŀ зхρîґέ íи 15 mїπųŧęś. !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AzureEnterTenant" xml:space="preserve">
|
||||
<value>Рľėãş℮ еñţěг тђз δ℮śįŗéď ţёņǻηť пűmьёř. !!! !!! !!! !!!</value>
|
||||
<value>Рĺέåŝē еňţéŗ τĥĕ ďєśįřєđ τëņåńŧ иџмьэŗ. !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureNewLogin" xml:space="preserve">
|
||||
<value>Σпŧзř {0} тο ĺǿģíй ẃĩтħ ă ⁿěẅ ªċčόυńт !!! !!! !!! !!</value>
|
||||
<value>Ĕńťèѓ {0} ťō łøģΐŋ ώіŧĥ ā ńèώ άčĉøŭпţ !!! !!! !!! !!</value>
|
||||
<comment>{0} will be replaced with the resource from AzureUserEntry_NewLogin; it is intended to be a single-character shorthand for "new account"</comment>
|
||||
</data>
|
||||
<data name="AzureRemoveStored" xml:space="preserve">
|
||||
<value>Σπŧеř {0} ţб řέmθνě τђέ àъονë ŝàνëð сθйņ℮çťíбň şēţтїиğš. !!! !!! !!! !!! !!! !</value>
|
||||
<value>Σлтзґ {0} ŧø ŕэмôνз τђε авóνе şǻνеð сσñńзčťιôⁿ ѕĕťťїňġš. !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{0} will be replaced with the resource from AzureUserEntry_RemoveStored; it is intended to be a single-character shorthand for "remove stored"</comment>
|
||||
</data>
|
||||
<data name="AzureInvalidAccessInput" xml:space="preserve">
|
||||
<value>Рℓèãśэ έиţєґ ã νåŀΐď иûмьеř ŧσ â¢сέѕš ţђë ŝťòя℮ð ¢ǿлήęčŧΐόл ѕєтŧīŋģѕ, {0} τǿ ℓόğ ĭʼn шĩţĥ â ŋзω àсčőűñт, оŗ {1} ţō řêmŏνę ťнё śâνėđ ċбππ℮ĉťϊοň ѕєťŧιňĝѕ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Рľεдşê ěπτэг ă νàĺįδ йΰmьēя ŧó àсĉĕŝѕ тђέ ŝтøяěð çøⁿñέĉтïǿŋ šєţτĭηģś, {0} тø ľóĝ īп ẅϊτђ â лęщ āς¢òŭñŧ, ôѓ {1} ŧŏ язмôνё тħέ śάνēδ čσňпęċτīôη šėŧŧíпĝѕ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{0} will be replaced with the resource from AzureUserEntry_NewLogin, and {1} will be replaced with AzureUserEntry_RemoveStored. This is an error message, used after AzureNewLogin/AzureRemoveStored if the user enters an invalid value.</comment>
|
||||
</data>
|
||||
<data name="AzureNonNumberError" xml:space="preserve">
|
||||
<value>Рĺěǻśє ēņтęŗ á ʼnŭmъ℮ř. !!! !!! </value>
|
||||
<value>Ρŀєáśе ёňŧεг ª ňύмъēг. !!! !!! </value>
|
||||
</data>
|
||||
<data name="AzureNumOutOfBoundsError" xml:space="preserve">
|
||||
<value>Иūmьéŗ őųτ òƒ ъоµñďѕ. Ρļзαşé êήтεя а νāľίđ лυmъèř. !!! !!! !!! !!! !!!</value>
|
||||
<value>Пϋмъęґ óΰť õƒ воµήďş. Ρŀεäŝé эⁿťєг â νãŀϊδ пцмъёř. !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureNoTenants" xml:space="preserve">
|
||||
<value>Ćοµļđ лσţ ƒīńð ǻñý тēйáⁿτś. !!! !!! !!</value>
|
||||
<value>Сôµłď ηǿť ƒіπđ ãñŷ ţ℮ηáńŧş. !!! !!! !!</value>
|
||||
</data>
|
||||
<data name="AzureNoCloudAccount" xml:space="preserve">
|
||||
<value>Ϋŏű нâνє пòт ŝ℮τ ũρ ỳőũŗ ĉļőυď ѕћέļľ äсčόúŋŧ ỳèт. Рľ℮äѕє ģõ тō https://shell.azure.com ŧő šêţ ϊţ ύφ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ϋσΰ ђáνě ņоť śéт ūφ ỳθϋг сŀоůδ šђęļĺ áćçθùηт ўеτ. Рĺėåŝê ĝο ŧό https://shell.azure.com το šёť ΐт úр. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<comment>{Locked="https://shell.azure.com"} This URL should not be localized. Everything else should.</comment>
|
||||
</data>
|
||||
<data name="AzureStorePrompt" xml:space="preserve">
|
||||
<value>Đο ўομ ẁдηţ τø šàνĕ ŧĥęśз čбπņєςтΐοη ŝєττîπģѕ ƒόг ƒΰτůяė ĺőġìⁿš? [{0}/{1}] !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<value>Đò ÿóΰ ẁâňт ŧŏ ŝàνè ťђėšē сôиⁿе¢ŧιŏñ şετтΐńģѕ ƒøѓ ƒϋŧûґē ĺоġΐñş? [{0}/{1}] !!! !!! !!! !!! !!! !!! !!! !</value>
|
||||
<comment>{0} and {1} will be replaced with AzureUserEntry_Yes and AzureUserEntry_No. They are single-character shorthands for "yes" and "no" in this language.</comment>
|
||||
</data>
|
||||
<data name="AzureInvalidStoreInput" xml:space="preserve">
|
||||
<value>Рļзâšє зʼnţэґ {0} õѓ {1} !!! !!! </value>
|
||||
<value>Ρĺèªѕê εňţēŕ {0} оŗ {1} !!! !!! </value>
|
||||
<comment>{0} and {1} will be replaced with AzureUserEntry_Yes and AzureUserEntry_No. This resource will be used as an error response after AzureStorePrompt.</comment>
|
||||
</data>
|
||||
<data name="AzureRequestingCloud" xml:space="preserve">
|
||||
<value>Ŗĕqūзşťįήĝ ā ćłôūđ ѕнэŀĺ іŋşťáйςè... !!! !!! !!! !</value>
|
||||
<value>Ґĕqμ℮šŧїŋĝ ã ćŀòμð śнёĺŀ íņşťąňċз... !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AzureSuccess" xml:space="preserve">
|
||||
<value>Šϋć¢ėзðèđ. !!!</value>
|
||||
<value>Śűċćêёđέď. !!!</value>
|
||||
</data>
|
||||
<data name="AzureRequestingTerminal" xml:space="preserve">
|
||||
<value>Γèqΰёşτіńğ ǻ ŧĕŕмΐйáł (ťђìѕ mīġнť ţãĸē à щĥіℓ℮)... !!! !!! !!! !!! !!!</value>
|
||||
<value>Яεqůęŝτίñĝ д тėґmΐπаľ (ťнĭś мìģĥť ţªќĕ ā ẁĥΐĺé)... !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureTokensStored" xml:space="preserve">
|
||||
<value>Ŷöùѓ čόпήёсťĩθⁿ ś℮ţτїηĝŝ ĥåνē вęĕņ šǻνēδ ƒöř ƒџţμге ĺǿğîлŝ. !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ỳσûř čθñňĕ¢ţįõʼn ѕεтţĭňğš наνē вёэʼn śǻνēδ ƒόг ƒμţüŗè ĺõģìйś. !!! !!! !!! !!! !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureNoTokens" xml:space="preserve">
|
||||
<value>Νő тŏкéпѕ тŏ ґзmòνě. !!! !!!</value>
|
||||
<value>Ňŏ ŧōкèйś ţő яэmονе. !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureTokensRemoved" xml:space="preserve">
|
||||
<value>Ŝąνеđ čöŋπĕĉťĩоŋ šĕţţīňġѕ гêмōνĕď. !!! !!! !!! !</value>
|
||||
<value>Śανеđ ċσйñз¢ťìόń şєŧтιŋğѕ яёмǿνёđ. !!! !!! !!! !</value>
|
||||
</data>
|
||||
<data name="AzureOldCredentialsFlushedMessage" xml:space="preserve">
|
||||
<value>Δϋτћęňτĭčαťíóп ρдřàмёŧèřş сђªńğ℮ď. Ύőú'ľł ņёĕð ţǿ ľöĝ ίπ ãĝâĭп. !!! !!! !!! !!! !!! !!! </value>
|
||||
<value>Āΰτнėиŧΐċâтīбŋ рářáмęŧéгŝ сħåⁿģëď. Ϋοц'ļľ ⁿêэð τô ĺσĝ ϊņ àġαĭπ. !!! !!! !!! !!! !!! !!! </value>
|
||||
</data>
|
||||
<data name="AzureUnknownTenantName" xml:space="preserve">
|
||||
<value><ũńкňǿŵŋ τелдŋŧ ʼnăмє> !!! !!!</value>
|
||||
<value><ϋпкйôẁи ŧēņàлτ ňămё> !!! !!!</value>
|
||||
</data>
|
||||
<data name="AzureIthTenant" xml:space="preserve">
|
||||
<value>Тĕηάπŧ {0}: {1} ({2}) !!! !!!</value>
|
||||
<value>Ťėηªŋт {0}: {1} ({2}) !!! !!!</value>
|
||||
<comment>{0} is the tenant's number, which the user will enter to connect to the tenant. {1} is the tenant's display name, which will be meaningful for the user. {2} is the tenant's internal ID number.</comment>
|
||||
</data>
|
||||
<data name="AzureSuccessfullyAuthenticated" xml:space="preserve">
|
||||
<value>∆υτнêήτĭćåтéδ. !!! !</value>
|
||||
<value>Ąűŧħēπτįсáτèđ. !!! !</value>
|
||||
</data>
|
||||
<data name="AzureUserEntry_NewLogin" xml:space="preserve">
|
||||
<value>ή</value>
|
||||
<value>ņ</value>
|
||||
<comment>This is shorthand for "new login". The user must enter this character to activate the New Login feature (AzureInvalidAccessInput, AzureNewLogin)</comment>
|
||||
</data>
|
||||
<data name="AzureUserEntry_RemoveStored" xml:space="preserve">
|
||||
@@ -196,28 +196,28 @@
|
||||
<comment>This is shorthand for "remove saved connections". The user must enter this character to activate the Remove Saved Logins feature (AzureRemoveStored, AzureInvalidAccessInput)</comment>
|
||||
</data>
|
||||
<data name="AzureUserEntry_Yes" xml:space="preserve">
|
||||
<value>у</value>
|
||||
<value>ў</value>
|
||||
<comment>This is shorthand for "yes". The user must enter this character to CONFIRM a prompt.</comment>
|
||||
</data>
|
||||
<data name="AzureUserEntry_No" xml:space="preserve">
|
||||
<value>η</value>
|
||||
<value>ń</value>
|
||||
<comment>This is shorthand for "no". The user must enter this character to DECLINE a prompt.</comment>
|
||||
</data>
|
||||
<data name="ProcessExited" xml:space="preserve">
|
||||
<value>[рґŏ¢℮şѕ ĕ×ĭŧēδ ẅįтĥ ςòðе {0}] !!! !!! !!!</value>
|
||||
<value>[рѓос℮śš ёхіţεð ẃιţĥ ćōďë {0}] !!! !!! !!!</value>
|
||||
<comment>The first argument {0} is the error code of the process. When there is no error, the number ZERO will be displayed. </comment>
|
||||
</data>
|
||||
<data name="CtrlDToClose" xml:space="preserve">
|
||||
<value>Ϋôμ čǻή ńόщ ċĺбѕё ţђįš ť℮ŗmΐⁿáľ щīţђ Ċτґℓ+Ð, οѓ φŗэśş Ěŋťĕŗ ţő řěśτäѓŧ. !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<value>Ỳóŭ ćǻή иòω сĺøѕè ťнįş тёѓмîήªŀ ωīťђ Çťѓℓ+Ď, όг ргéšѕ Σñтèř το ґèšтªят. !!! !!! !!! !!! !!! !!! !!!</value>
|
||||
<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>
|
||||
<value>[℮ѓѓŏŕ {0} ωĥєй łåύñćђίηğ `{1}'] !!! !!! !!! </value>
|
||||
<comment>The first argument {0} is the error code. The second argument {1} is the user-specified path to a program.
|
||||
If this string is broken to multiple lines, it will not be displayed properly.</comment>
|
||||
</data>
|
||||
<data name="BadPathText" xml:space="preserve">
|
||||
<value>Čőυĺδ ŋõť аçĉěšŝ ŝŧäřтϊиģ ðϊřèςťοŕў "{0}" !!! !!! !!! !!!</value>
|
||||
<value>Ċőŭľđ йōť ª¢čеѕş şτāŗťΐиğ ðιѓεςтоŗγ "{0}" !!! !!! !!! !!!</value>
|
||||
<comment>The first argument {0} is a path to a directory on the filesystem, as provided by the user.</comment>
|
||||
</data>
|
||||
</root>
|
||||
@@ -207,7 +207,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
_dispatcher,
|
||||
ScrollBarUpdateInterval,
|
||||
[weakThis = get_weak()](const auto& update) {
|
||||
if (auto core{ weakThis.get() }; !core->_IsClosing())
|
||||
if (auto core{ weakThis.get() }; core && !core->_IsClosing())
|
||||
{
|
||||
core->_ScrollPositionChangedHandlers(*core, update);
|
||||
}
|
||||
@@ -1225,11 +1225,87 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
_updateSelectionUI();
|
||||
}
|
||||
|
||||
static wil::unique_close_clipboard_call _openClipboard(HWND hwnd)
|
||||
{
|
||||
bool success = false;
|
||||
|
||||
// OpenClipboard may fail to acquire the internal lock --> retry.
|
||||
for (DWORD sleep = 10;; sleep *= 2)
|
||||
{
|
||||
if (OpenClipboard(hwnd))
|
||||
{
|
||||
success = true;
|
||||
break;
|
||||
}
|
||||
// 10 iterations
|
||||
if (sleep > 10000)
|
||||
{
|
||||
break;
|
||||
}
|
||||
Sleep(sleep);
|
||||
}
|
||||
|
||||
return wil::unique_close_clipboard_call{ success };
|
||||
}
|
||||
|
||||
static void _copyToClipboard(const UINT format, const void* src, const size_t bytes)
|
||||
{
|
||||
wil::unique_hglobal handle{ THROW_LAST_ERROR_IF_NULL(GlobalAlloc(GMEM_MOVEABLE, bytes)) };
|
||||
|
||||
const auto locked = GlobalLock(handle.get());
|
||||
memcpy(locked, src, bytes);
|
||||
GlobalUnlock(handle.get());
|
||||
|
||||
THROW_LAST_ERROR_IF_NULL(SetClipboardData(format, handle.get()));
|
||||
handle.release();
|
||||
}
|
||||
|
||||
static void _copyToClipboardRegisteredFormat(const wchar_t* format, const void* src, size_t bytes)
|
||||
{
|
||||
const auto id = RegisterClipboardFormatW(format);
|
||||
if (!id)
|
||||
{
|
||||
LOG_LAST_ERROR();
|
||||
return;
|
||||
}
|
||||
_copyToClipboard(id, src, bytes);
|
||||
}
|
||||
|
||||
static void copyToClipboard(wil::zwstring_view text, std::string_view html, std::string_view rtf)
|
||||
{
|
||||
const auto clipboard = _openClipboard(nullptr);
|
||||
if (!clipboard)
|
||||
{
|
||||
LOG_LAST_ERROR();
|
||||
return;
|
||||
}
|
||||
|
||||
EmptyClipboard();
|
||||
|
||||
if (!text.empty())
|
||||
{
|
||||
// As per: https://learn.microsoft.com/en-us/windows/win32/dataxchg/standard-clipboard-formats
|
||||
// CF_UNICODETEXT: [...] A null character signals the end of the data.
|
||||
// --> We add +1 to the length. This works because .c_str() is null-terminated.
|
||||
_copyToClipboard(CF_UNICODETEXT, text.c_str(), (text.size() + 1) * sizeof(wchar_t));
|
||||
}
|
||||
|
||||
if (!html.empty())
|
||||
{
|
||||
_copyToClipboardRegisteredFormat(L"HTML Format", html.data(), html.size());
|
||||
}
|
||||
|
||||
if (!rtf.empty())
|
||||
{
|
||||
_copyToClipboardRegisteredFormat(L"Rich Text Format", rtf.data(), rtf.size());
|
||||
}
|
||||
}
|
||||
|
||||
// Called when the Terminal wants to set something to the clipboard, i.e.
|
||||
// when an OSC 52 is emitted.
|
||||
void ControlCore::_terminalCopyToClipboard(std::wstring_view wstr)
|
||||
void ControlCore::_terminalCopyToClipboard(wil::zwstring_view wstr)
|
||||
{
|
||||
_CopyToClipboardHandlers(*this, winrt::make<implementation::CopyToClipboardEventArgs>(winrt::hstring{ wstr }));
|
||||
copyToClipboard(wstr, {}, {});
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
@@ -1242,31 +1318,29 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
bool ControlCore::CopySelectionToClipboard(bool singleLine,
|
||||
const Windows::Foundation::IReference<CopyFormat>& formats)
|
||||
{
|
||||
const auto lock = _terminal->LockForWriting();
|
||||
|
||||
// no selection --> nothing to copy
|
||||
if (!_terminal->IsSelectionActive())
|
||||
::Microsoft::Terminal::Core::Terminal::TextCopyData payload;
|
||||
{
|
||||
return false;
|
||||
const auto lock = _terminal->LockForWriting();
|
||||
|
||||
// no selection --> nothing to copy
|
||||
if (!_terminal->IsSelectionActive())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// use action's copyFormatting if it's present, else fallback to globally
|
||||
// set copyFormatting.
|
||||
const auto copyFormats = formats != nullptr ? formats.Value() : _settings->CopyFormatting();
|
||||
|
||||
const auto copyHtml = WI_IsFlagSet(copyFormats, CopyFormat::HTML);
|
||||
const auto copyRtf = WI_IsFlagSet(copyFormats, CopyFormat::RTF);
|
||||
|
||||
// extract text from buffer
|
||||
// RetrieveSelectedTextFromBuffer will lock while it's reading
|
||||
payload = _terminal->RetrieveSelectedTextFromBuffer(singleLine, copyHtml, copyRtf);
|
||||
}
|
||||
|
||||
// use action's copyFormatting if it's present, else fallback to globally
|
||||
// set copyFormatting.
|
||||
const auto copyFormats = formats != nullptr ? formats.Value() : _settings->CopyFormatting();
|
||||
|
||||
const auto copyHtml = WI_IsFlagSet(copyFormats, CopyFormat::HTML);
|
||||
const auto copyRtf = WI_IsFlagSet(copyFormats, CopyFormat::RTF);
|
||||
|
||||
// extract text from buffer
|
||||
// RetrieveSelectedTextFromBuffer will lock while it's reading
|
||||
const auto& [textData, htmlData, rtfData] = _terminal->RetrieveSelectedTextFromBuffer(singleLine, copyHtml, copyRtf);
|
||||
|
||||
// send data up for clipboard
|
||||
_CopyToClipboardHandlers(*this,
|
||||
winrt::make<CopyToClipboardEventArgs>(winrt::hstring{ textData },
|
||||
winrt::to_hstring(htmlData),
|
||||
winrt::to_hstring(rtfData),
|
||||
copyFormats));
|
||||
copyToClipboard(payload.plainText, payload.html, payload.rtf);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1635,7 +1709,6 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
|
||||
if (_searcher.ResetIfStale(*GetRenderData(), text, !goForward, !caseSensitive))
|
||||
{
|
||||
_searcher.HighlightResults();
|
||||
_searcher.MoveToCurrentSelection();
|
||||
_cachedSearchResultRows = {};
|
||||
}
|
||||
@@ -1652,6 +1725,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
// DO NOT call _updateSelectionUI() here.
|
||||
// We don't want to show the markers so manually tell it to clear it.
|
||||
_terminal->SetBlockSelection(false);
|
||||
_renderer->TriggerSelection();
|
||||
_UpdateSelectionMarkersHandlers(*this, winrt::make<implementation::UpdateSelectionMarkersEventArgs>(true));
|
||||
|
||||
foundResults->TotalMatches(gsl::narrow<int32_t>(_searcher.Results().size()));
|
||||
@@ -1659,7 +1733,6 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
|
||||
_terminal->AlwaysNotifyOnBufferRotation(true);
|
||||
}
|
||||
_renderer->TriggerSelection();
|
||||
|
||||
// Raise a FoundMatch event, which the control will use to notify
|
||||
// narrator if there was any results in the buffer
|
||||
@@ -1913,7 +1986,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
_terminal->GetTextBuffer().GetSize().Clamp(clampedClick);
|
||||
}
|
||||
|
||||
if (clampedClick >= end)
|
||||
if (clampedClick >= last.end)
|
||||
{
|
||||
// Get the distance between the cursor and the click, in cells.
|
||||
const auto bufferSize = _terminal->GetTextBuffer().GetSize();
|
||||
|
||||
@@ -254,7 +254,6 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
// clang-format off
|
||||
TYPED_EVENT(FontSizeChanged, IInspectable, Control::FontSizeChangedArgs);
|
||||
|
||||
TYPED_EVENT(CopyToClipboard, IInspectable, Control::CopyToClipboardEventArgs);
|
||||
TYPED_EVENT(TitleChanged, IInspectable, Control::TitleChangedEventArgs);
|
||||
TYPED_EVENT(WarningBell, IInspectable, IInspectable);
|
||||
TYPED_EVENT(TabColorChanged, IInspectable, IInspectable);
|
||||
@@ -357,7 +356,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
void _sendInputToConnection(std::wstring_view wstr);
|
||||
|
||||
#pragma region TerminalCoreCallbacks
|
||||
void _terminalCopyToClipboard(std::wstring_view wstr);
|
||||
void _terminalCopyToClipboard(wil::zwstring_view wstr);
|
||||
void _terminalWarningBell();
|
||||
void _terminalTitleChanged(std::wstring_view wstr);
|
||||
void _terminalScrollPositionChanged(const int viewTop,
|
||||
|
||||
@@ -160,7 +160,6 @@ namespace Microsoft.Terminal.Control
|
||||
Boolean ShouldShowSelectOutput();
|
||||
|
||||
// These events are called from some background thread
|
||||
event Windows.Foundation.TypedEventHandler<Object, CopyToClipboardEventArgs> CopyToClipboard;
|
||||
event Windows.Foundation.TypedEventHandler<Object, TitleChangedEventArgs> TitleChanged;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> WarningBell;
|
||||
event Windows.Foundation.TypedEventHandler<Object, Object> TabColorChanged;
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "EventArgs.h"
|
||||
#include "FontSizeChangedArgs.g.cpp"
|
||||
#include "TitleChangedEventArgs.g.cpp"
|
||||
#include "CopyToClipboardEventArgs.g.cpp"
|
||||
#include "ContextMenuRequestedEventArgs.g.cpp"
|
||||
#include "PasteFromClipboardEventArgs.g.cpp"
|
||||
#include "OpenHyperlinkEventArgs.g.cpp"
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
#include "FontSizeChangedArgs.g.h"
|
||||
#include "TitleChangedEventArgs.g.h"
|
||||
#include "CopyToClipboardEventArgs.g.h"
|
||||
#include "ContextMenuRequestedEventArgs.g.h"
|
||||
#include "PasteFromClipboardEventArgs.g.h"
|
||||
#include "OpenHyperlinkEventArgs.g.h"
|
||||
@@ -47,33 +46,6 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
WINRT_PROPERTY(hstring, Title);
|
||||
};
|
||||
|
||||
struct CopyToClipboardEventArgs : public CopyToClipboardEventArgsT<CopyToClipboardEventArgs>
|
||||
{
|
||||
public:
|
||||
CopyToClipboardEventArgs(hstring text) :
|
||||
_text(text),
|
||||
_html(),
|
||||
_rtf(),
|
||||
_formats(static_cast<CopyFormat>(0)) {}
|
||||
|
||||
CopyToClipboardEventArgs(hstring text, hstring html, hstring rtf, Windows::Foundation::IReference<CopyFormat> formats) :
|
||||
_text(text),
|
||||
_html(html),
|
||||
_rtf(rtf),
|
||||
_formats(formats) {}
|
||||
|
||||
hstring Text() { return _text; };
|
||||
hstring Html() { return _html; };
|
||||
hstring Rtf() { return _rtf; };
|
||||
Windows::Foundation::IReference<CopyFormat> Formats() { return _formats; };
|
||||
|
||||
private:
|
||||
hstring _text;
|
||||
hstring _html;
|
||||
hstring _rtf;
|
||||
Windows::Foundation::IReference<CopyFormat> _formats;
|
||||
};
|
||||
|
||||
struct ContextMenuRequestedEventArgs : public ContextMenuRequestedEventArgsT<ContextMenuRequestedEventArgs>
|
||||
{
|
||||
public:
|
||||
@@ -148,12 +120,12 @@ namespace winrt::Microsoft::Terminal::Control::implementation
|
||||
struct RendererWarningArgs : public RendererWarningArgsT<RendererWarningArgs>
|
||||
{
|
||||
public:
|
||||
RendererWarningArgs(const uint64_t hr) :
|
||||
RendererWarningArgs(const HRESULT hr) :
|
||||
_Result(hr)
|
||||
{
|
||||
}
|
||||
|
||||
WINRT_PROPERTY(uint64_t, Result);
|
||||
WINRT_PROPERTY(HRESULT, Result);
|
||||
};
|
||||
|
||||
struct TransparencyChangedEventArgs : public TransparencyChangedEventArgsT<TransparencyChangedEventArgs>
|
||||
|
||||
@@ -18,14 +18,6 @@ namespace Microsoft.Terminal.Control
|
||||
Int32 Height { get; };
|
||||
}
|
||||
|
||||
runtimeclass CopyToClipboardEventArgs
|
||||
{
|
||||
String Text { get; };
|
||||
String Html { get; };
|
||||
String Rtf { get; };
|
||||
Windows.Foundation.IReference<CopyFormat> Formats { get; };
|
||||
}
|
||||
|
||||
runtimeclass ContextMenuRequestedEventArgs
|
||||
{
|
||||
Windows.Foundation.Point Position { get; };
|
||||
@@ -71,7 +63,7 @@ namespace Microsoft.Terminal.Control
|
||||
|
||||
runtimeclass RendererWarningArgs
|
||||
{
|
||||
UInt64 Result { get; };
|
||||
HRESULT Result { get; };
|
||||
}
|
||||
|
||||
runtimeclass TransparencyChangedEventArgs
|
||||
|
||||
@@ -213,6 +213,10 @@ Installieren Sie entweder die fehlende Schriftart, oder wählen Sie eine andere
|
||||
<value>Unerwarteter Fehler beim Renderer: {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorMacType" xml:space="preserve">
|
||||
<value>Ihre Version von MacType ist mit dieser Anwendung nicht kompatibel. Bitte aktualisieren Sie auf Version 2023.5.31 oder höher.</value>
|
||||
<comment>{Locked="2023.5.31","MacType"}</comment>
|
||||
</data>
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>Der schreibgeschützte Modus ist aktiviert.</value>
|
||||
</data>
|
||||
@@ -288,4 +292,4 @@ Installieren Sie entweder die fehlende Schriftart, oder wählen Sie eine andere
|
||||
<value>Ausgabe auswählen</value>
|
||||
<comment>The tooltip for a button for selecting all of a command's output</comment>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||
@@ -213,6 +213,14 @@ Please either install the missing font or choose another one.</value>
|
||||
<value>Renderer encountered an unexpected error: {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorMacType" xml:space="preserve">
|
||||
<value>Your version of MacType is incompatible with this application. Please update to version 2023.5.31 or later.</value>
|
||||
<comment>{Locked="2023.5.31","MacType"}</comment>
|
||||
</data>
|
||||
<data name="RendererErrorOther" xml:space="preserve">
|
||||
<value>Renderer encountered an unexpected error: {0:#010x} {1}</value>
|
||||
<comment>{Locked="{0:#010x}","{1}"} {0:#010x} is a placeholder for a Windows error code (e.g. 0x88985002). {1} is the corresponding message.</comment>
|
||||
</data>
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>Read-only mode is enabled.</value>
|
||||
</data>
|
||||
@@ -288,4 +296,4 @@ Please either install the missing font or choose another one.</value>
|
||||
<value>Select output</value>
|
||||
<comment>The tooltip for a button for selecting all of a command's output</comment>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||
@@ -213,6 +213,10 @@ Instale la fuente que falta o elija otra.</value>
|
||||
<value>El representador encontró un error inesperado: {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorMacType" xml:space="preserve">
|
||||
<value>Su versión de MacType no es compatible con esta aplicación. Actualice a la versión 2023.5.31 o posterior.</value>
|
||||
<comment>{Locked="2023.5.31","MacType"}</comment>
|
||||
</data>
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>El modo de solo lectura está habilitado.</value>
|
||||
</data>
|
||||
@@ -288,4 +292,4 @@ Instale la fuente que falta o elija otra.</value>
|
||||
<value>Seleccionar salida</value>
|
||||
<comment>The tooltip for a button for selecting all of a command's output</comment>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||
@@ -213,6 +213,10 @@ Installez la police manquante ou choisissez-en une autre.</value>
|
||||
<value>Le convertisseur a rencontré une erreur inattendue : {0}</value>
|
||||
<comment>{0} is an error code.</comment>
|
||||
</data>
|
||||
<data name="RendererErrorMacType" xml:space="preserve">
|
||||
<value>Votre version de MacType est incompatible avec cette application. Veuillez mettre à jour la version 2023.5.31 ou une version ultérieure.</value>
|
||||
<comment>{Locked="2023.5.31","MacType"}</comment>
|
||||
</data>
|
||||
<data name="TermControlReadOnly" xml:space="preserve">
|
||||
<value>Le mode lecture seule est activé.</value>
|
||||
</data>
|
||||
@@ -288,4 +292,4 @@ Installez la police manquante ou choisissez-en une autre.</value>
|
||||
<value>Sélectionner la sortie</value>
|
||||
<comment>The tooltip for a button for selecting all of a command's output</comment>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||