Merge branch 'release/v8.24'
38
.github/workflows/ci.yml
vendored
|
@ -99,3 +99,41 @@ jobs:
|
||||||
with:
|
with:
|
||||||
name: sourcegit.linux-x64
|
name: sourcegit.linux-x64
|
||||||
path: sourcegit.linux-x64.tar
|
path: sourcegit.linux-x64.tar
|
||||||
|
build-linux-arm64:
|
||||||
|
name: Build Linux (arm64)
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Setup .NET
|
||||||
|
uses: actions/setup-dotnet@v4
|
||||||
|
with:
|
||||||
|
dotnet-version: 8.0.x
|
||||||
|
- name: Configure arm64 packages
|
||||||
|
run: |
|
||||||
|
sudo dpkg --add-architecture arm64
|
||||||
|
echo 'deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal main restricted
|
||||||
|
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal-updates main restricted
|
||||||
|
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal-backports main restricted' \
|
||||||
|
| sudo tee /etc/apt/sources.list.d/arm64.list
|
||||||
|
sudo sed -i -e 's/^deb http/deb [arch=amd64] http/g' /etc/apt/sources.list
|
||||||
|
sudo sed -i -e 's/^deb mirror/deb [arch=amd64] mirror/g' /etc/apt/sources.list
|
||||||
|
- name: Install cross-compiling dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install clang llvm gcc-aarch64-linux-gnu zlib1g-dev:arm64
|
||||||
|
- name: Build
|
||||||
|
run: dotnet build -c Release
|
||||||
|
- name: Publish
|
||||||
|
run: dotnet publish src/SourceGit.csproj -c Release -o publish -r linux-arm64
|
||||||
|
- name: Rename Executable File
|
||||||
|
run: mv publish/SourceGit publish/sourcegit
|
||||||
|
- name: Packing Program
|
||||||
|
run: tar -cvf sourcegit.linux-arm64.tar -C publish/ .
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: sourcegit.linux-arm64
|
||||||
|
path: sourcegit.linux-arm64.tar
|
||||||
|
|
|
@ -7,7 +7,7 @@ Opensource Git GUI client.
|
||||||
* Supports Windows/macOS/Linux
|
* Supports Windows/macOS/Linux
|
||||||
* Opensource/Free
|
* Opensource/Free
|
||||||
* Fast
|
* Fast
|
||||||
* English/简体中文/繁體中文
|
* English/German/Português/简体中文/繁體中文
|
||||||
* Built-in light/dark themes
|
* Built-in light/dark themes
|
||||||
* Customize theme
|
* Customize theme
|
||||||
* Visual commit graph
|
* Visual commit graph
|
||||||
|
@ -110,6 +110,8 @@ This app supports open repository in external tools listed in the table below.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
Everyone is welcome to submit a PR. Please make sure your PR is based on the latest `develop` branch and the target branch of PR is `develop`.
|
||||||
|
|
||||||
Thanks to all the people who contribute.
|
Thanks to all the people who contribute.
|
||||||
|
|
||||||
[![Contributors](https://contrib.rocks/image?repo=sourcegit-scm/sourcegit&columns=10)](https://github.com/sourcegit-scm/sourcegit/graphs/contributors)
|
[![Contributors](https://contrib.rocks/image?repo=sourcegit-scm/sourcegit&columns=10)](https://github.com/sourcegit-scm/sourcegit/graphs/contributors)
|
||||||
|
|
2
VERSION
|
@ -1 +1 @@
|
||||||
8.23
|
8.24
|
|
@ -6,3 +6,4 @@ Icon=/usr/share/icons/sourcegit.png
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Categories=Development
|
Categories=Development
|
||||||
|
MimeType=inode/directory;
|
||||||
|
|
|
@ -11,7 +11,9 @@
|
||||||
<ResourceInclude Source="/Resources/Themes.axaml"/>
|
<ResourceInclude Source="/Resources/Themes.axaml"/>
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
|
||||||
|
<ResourceInclude x:Key="de_DE" Source="/Resources/Locales/de_DE.axaml"/>
|
||||||
<ResourceInclude x:Key="en_US" Source="/Resources/Locales/en_US.axaml"/>
|
<ResourceInclude x:Key="en_US" Source="/Resources/Locales/en_US.axaml"/>
|
||||||
|
<ResourceInclude x:Key="pt_BR" Source="/Resources/Locales/pt_BR.axaml"/>
|
||||||
<ResourceInclude x:Key="zh_CN" Source="/Resources/Locales/zh_CN.axaml"/>
|
<ResourceInclude x:Key="zh_CN" Source="/Resources/Locales/zh_CN.axaml"/>
|
||||||
<ResourceInclude x:Key="zh_TW" Source="/Resources/Locales/zh_TW.axaml"/>
|
<ResourceInclude x:Key="zh_TW" Source="/Resources/Locales/zh_TW.axaml"/>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
|
|
|
@ -208,8 +208,8 @@ namespace SourceGit
|
||||||
{
|
{
|
||||||
if (Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
if (Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
||||||
{
|
{
|
||||||
if (desktop.MainWindow?.Clipboard is { } clipbord)
|
if (desktop.MainWindow?.Clipboard is { } clipboard)
|
||||||
await clipbord.SetTextAsync(data);
|
await clipboard.SetTextAsync(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ namespace SourceGit.Commands
|
||||||
{
|
{
|
||||||
public partial class Blame : Command
|
public partial class Blame : Command
|
||||||
{
|
{
|
||||||
|
|
||||||
[GeneratedRegex(@"^\^?([0-9a-f]+)\s+.*\((.*)\s+(\d+)\s+[\-\+]?\d+\s+\d+\) (.*)")]
|
[GeneratedRegex(@"^\^?([0-9a-f]+)\s+.*\((.*)\s+(\d+)\s+[\-\+]?\d+\s+\d+\) (.*)")]
|
||||||
private static partial Regex REG_FORMAT();
|
private static partial Regex REG_FORMAT();
|
||||||
|
|
||||||
|
|
|
@ -50,25 +50,17 @@ namespace SourceGit.Commands
|
||||||
if (!allowEmpty && string.IsNullOrWhiteSpace(value))
|
if (!allowEmpty && string.IsNullOrWhiteSpace(value))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(WorkingDirectory))
|
if (string.IsNullOrEmpty(WorkingDirectory))
|
||||||
{
|
|
||||||
Args = $"config --global --unset {key}";
|
Args = $"config --global --unset {key}";
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
Args = $"config --unset {key}";
|
Args = $"config --unset {key}";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(WorkingDirectory))
|
if (string.IsNullOrWhiteSpace(WorkingDirectory))
|
||||||
{
|
|
||||||
Args = $"config --global {key} \"{value}\"";
|
Args = $"config --global {key} \"{value}\"";
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
Args = $"config {key} \"{value}\"";
|
Args = $"config {key} \"{value}\"";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return Exec();
|
return Exec();
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,14 +38,10 @@ namespace SourceGit.Commands
|
||||||
ProcessInlineHighlights();
|
ProcessInlineHighlights();
|
||||||
|
|
||||||
if (_result.TextDiff.Lines.Count == 0)
|
if (_result.TextDiff.Lines.Count == 0)
|
||||||
{
|
|
||||||
_result.TextDiff = null;
|
_result.TextDiff = null;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
_result.TextDiff.MaxLineNumber = Math.Max(_newLine, _oldLine);
|
_result.TextDiff.MaxLineNumber = Math.Max(_newLine, _oldLine);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return _result;
|
return _result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace SourceGit.Commands
|
||||||
new Clean(repo).Exec();
|
new Clean(repo).Exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ChangesInWorkTree(string repo, List<Models.Change> changes)
|
public static void Changes(string repo, List<Models.Change> changes)
|
||||||
{
|
{
|
||||||
var needClean = new List<string>();
|
var needClean = new List<string>();
|
||||||
var needCheckout = new List<string>();
|
var needCheckout = new List<string>();
|
||||||
|
@ -19,14 +19,10 @@ namespace SourceGit.Commands
|
||||||
foreach (var c in changes)
|
foreach (var c in changes)
|
||||||
{
|
{
|
||||||
if (c.WorkTree == Models.ChangeState.Untracked || c.WorkTree == Models.ChangeState.Added)
|
if (c.WorkTree == Models.ChangeState.Untracked || c.WorkTree == Models.ChangeState.Added)
|
||||||
{
|
|
||||||
needClean.Add(c.Path);
|
needClean.Add(c.Path);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
needCheckout.Add(c.Path);
|
needCheckout.Add(c.Path);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < needClean.Count; i += 10)
|
for (int i = 0; i < needClean.Count; i += 10)
|
||||||
{
|
{
|
||||||
|
@ -40,17 +36,5 @@ namespace SourceGit.Commands
|
||||||
new Restore(repo, needCheckout.GetRange(i, count), "--worktree --recurse-submodules").Exec();
|
new Restore(repo, needCheckout.GetRange(i, count), "--worktree --recurse-submodules").Exec();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ChangesInStaged(string repo, List<Models.Change> changes)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < changes.Count; i += 10)
|
|
||||||
{
|
|
||||||
var count = Math.Min(10, changes.Count - i);
|
|
||||||
var files = new List<string>();
|
|
||||||
for (int j = 0; j < count; j++)
|
|
||||||
files.Add(changes[i + j].Path);
|
|
||||||
new Restore(repo, files, "--staged --worktree --recurse-submodules").Exec();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,11 +10,5 @@
|
||||||
Context = repo;
|
Context = repo;
|
||||||
Args = $"diff -a --ignore-cr-at-eol --check {opt}";
|
Args = $"diff -a --ignore-cr-at-eol --check {opt}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Result()
|
|
||||||
{
|
|
||||||
var rs = ReadToEnd();
|
|
||||||
return rs.IsSuccess;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
91
src/Commands/QueryCommitsWithFullMessage.cs
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace SourceGit.Commands
|
||||||
|
{
|
||||||
|
public class QueryCommitsWithFullMessage : Command
|
||||||
|
{
|
||||||
|
public QueryCommitsWithFullMessage(string repo, string args)
|
||||||
|
{
|
||||||
|
_boundary = $"----- BOUNDARY OF COMMIT {Guid.NewGuid()} -----";
|
||||||
|
|
||||||
|
WorkingDirectory = repo;
|
||||||
|
Context = repo;
|
||||||
|
Args = $"log --date-order --no-show-signature --decorate=full --pretty=format:\"%H%n%P%n%D%n%aN±%aE%n%at%n%cN±%cE%n%ct%n%B%n{_boundary}\" {args}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Models.CommitWithMessage> Result()
|
||||||
|
{
|
||||||
|
var rs = ReadToEnd();
|
||||||
|
if (!rs.IsSuccess)
|
||||||
|
return _commits;
|
||||||
|
|
||||||
|
var nextPartIdx = 0;
|
||||||
|
var start = 0;
|
||||||
|
var end = rs.StdOut.IndexOf('\n', start);
|
||||||
|
while (end > 0)
|
||||||
|
{
|
||||||
|
var line = rs.StdOut.Substring(start, end - start);
|
||||||
|
switch (nextPartIdx)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
_current = new Models.CommitWithMessage();
|
||||||
|
_current.Commit.SHA = line;
|
||||||
|
_commits.Add(_current);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
ParseParent(line);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
_current.Commit.ParseDecorators(line);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
_current.Commit.Author = Models.User.FindOrAdd(line);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
_current.Commit.AuthorTime = ulong.Parse(line);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
_current.Commit.Committer = Models.User.FindOrAdd(line);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
_current.Commit.CommitterTime = ulong.Parse(line);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (line.Equals(_boundary, StringComparison.Ordinal))
|
||||||
|
nextPartIdx = -1;
|
||||||
|
else
|
||||||
|
_current.Message += line;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
nextPartIdx++;
|
||||||
|
|
||||||
|
start = end + 1;
|
||||||
|
end = rs.StdOut.IndexOf('\n', start);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _commits;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ParseParent(string data)
|
||||||
|
{
|
||||||
|
if (data.Length < 8)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var idx = data.IndexOf(' ', StringComparison.Ordinal);
|
||||||
|
if (idx == -1)
|
||||||
|
{
|
||||||
|
_current.Commit.Parents.Add(data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_current.Commit.Parents.Add(data.Substring(0, idx));
|
||||||
|
_current.Commit.Parents.Add(data.Substring(idx + 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Models.CommitWithMessage> _commits = new List<Models.CommitWithMessage>();
|
||||||
|
private Models.CommitWithMessage _current = null;
|
||||||
|
private string _boundary = "";
|
||||||
|
}
|
||||||
|
}
|
21
src/Commands/QueryCurrentRevisionFiles.cs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
namespace SourceGit.Commands
|
||||||
|
{
|
||||||
|
public class QueryCurrentRevisionFiles : Command
|
||||||
|
{
|
||||||
|
public QueryCurrentRevisionFiles(string repo)
|
||||||
|
{
|
||||||
|
WorkingDirectory = repo;
|
||||||
|
Context = repo;
|
||||||
|
Args = "ls-tree -r --name-only HEAD";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string[] Result()
|
||||||
|
{
|
||||||
|
var rs = ReadToEnd();
|
||||||
|
if (rs.IsSuccess)
|
||||||
|
return rs.StdOut.Split('\n', System.StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -39,6 +39,9 @@ namespace SourceGit.Commands
|
||||||
case " M":
|
case " M":
|
||||||
change.Set(Models.ChangeState.None, Models.ChangeState.Modified);
|
change.Set(Models.ChangeState.None, Models.ChangeState.Modified);
|
||||||
break;
|
break;
|
||||||
|
case " T":
|
||||||
|
change.Set(Models.ChangeState.None, Models.ChangeState.TypeChanged);
|
||||||
|
break;
|
||||||
case " A":
|
case " A":
|
||||||
change.Set(Models.ChangeState.None, Models.ChangeState.Added);
|
change.Set(Models.ChangeState.None, Models.ChangeState.Added);
|
||||||
break;
|
break;
|
||||||
|
@ -57,15 +60,33 @@ namespace SourceGit.Commands
|
||||||
case "MM":
|
case "MM":
|
||||||
change.Set(Models.ChangeState.Modified, Models.ChangeState.Modified);
|
change.Set(Models.ChangeState.Modified, Models.ChangeState.Modified);
|
||||||
break;
|
break;
|
||||||
|
case "MT":
|
||||||
|
change.Set(Models.ChangeState.Modified, Models.ChangeState.TypeChanged);
|
||||||
|
break;
|
||||||
case "MD":
|
case "MD":
|
||||||
change.Set(Models.ChangeState.Modified, Models.ChangeState.Deleted);
|
change.Set(Models.ChangeState.Modified, Models.ChangeState.Deleted);
|
||||||
break;
|
break;
|
||||||
|
case "T":
|
||||||
|
change.Set(Models.ChangeState.TypeChanged);
|
||||||
|
break;
|
||||||
|
case "TM":
|
||||||
|
change.Set(Models.ChangeState.TypeChanged, Models.ChangeState.Modified);
|
||||||
|
break;
|
||||||
|
case "TT":
|
||||||
|
change.Set(Models.ChangeState.TypeChanged, Models.ChangeState.TypeChanged);
|
||||||
|
break;
|
||||||
|
case "TD":
|
||||||
|
change.Set(Models.ChangeState.TypeChanged, Models.ChangeState.Deleted);
|
||||||
|
break;
|
||||||
case "A":
|
case "A":
|
||||||
change.Set(Models.ChangeState.Added);
|
change.Set(Models.ChangeState.Added);
|
||||||
break;
|
break;
|
||||||
case "AM":
|
case "AM":
|
||||||
change.Set(Models.ChangeState.Added, Models.ChangeState.Modified);
|
change.Set(Models.ChangeState.Added, Models.ChangeState.Modified);
|
||||||
break;
|
break;
|
||||||
|
case "AT":
|
||||||
|
change.Set(Models.ChangeState.Added, Models.ChangeState.TypeChanged);
|
||||||
|
break;
|
||||||
case "AD":
|
case "AD":
|
||||||
change.Set(Models.ChangeState.Added, Models.ChangeState.Deleted);
|
change.Set(Models.ChangeState.Added, Models.ChangeState.Deleted);
|
||||||
break;
|
break;
|
||||||
|
@ -78,6 +99,9 @@ namespace SourceGit.Commands
|
||||||
case "RM":
|
case "RM":
|
||||||
change.Set(Models.ChangeState.Renamed, Models.ChangeState.Modified);
|
change.Set(Models.ChangeState.Renamed, Models.ChangeState.Modified);
|
||||||
break;
|
break;
|
||||||
|
case "RT":
|
||||||
|
change.Set(Models.ChangeState.Renamed, Models.ChangeState.TypeChanged);
|
||||||
|
break;
|
||||||
case "RD":
|
case "RD":
|
||||||
change.Set(Models.ChangeState.Renamed, Models.ChangeState.Deleted);
|
change.Set(Models.ChangeState.Renamed, Models.ChangeState.Deleted);
|
||||||
break;
|
break;
|
||||||
|
@ -87,6 +111,9 @@ namespace SourceGit.Commands
|
||||||
case "CM":
|
case "CM":
|
||||||
change.Set(Models.ChangeState.Copied, Models.ChangeState.Modified);
|
change.Set(Models.ChangeState.Copied, Models.ChangeState.Modified);
|
||||||
break;
|
break;
|
||||||
|
case "CT":
|
||||||
|
change.Set(Models.ChangeState.Copied, Models.ChangeState.TypeChanged);
|
||||||
|
break;
|
||||||
case "CD":
|
case "CD":
|
||||||
change.Set(Models.ChangeState.Copied, Models.ChangeState.Deleted);
|
change.Set(Models.ChangeState.Copied, Models.ChangeState.Deleted);
|
||||||
break;
|
break;
|
||||||
|
|
92
src/Commands/QueryStagedChangesWithAmend.cs
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace SourceGit.Commands
|
||||||
|
{
|
||||||
|
public partial class QueryStagedChangesWithAmend : Command
|
||||||
|
{
|
||||||
|
[GeneratedRegex(@"^:[\d]{6} ([\d]{6}) ([0-9a-f]{40}) [0-9a-f]{40} ([ACDMTUX])\d{0,6}\t(.*)$")]
|
||||||
|
private static partial Regex REG_FORMAT1();
|
||||||
|
[GeneratedRegex(@"^:[\d]{6} ([\d]{6}) ([0-9a-f]{40}) [0-9a-f]{40} R\d{0,6}\t(.*\t.*)$")]
|
||||||
|
private static partial Regex REG_FORMAT2();
|
||||||
|
|
||||||
|
public QueryStagedChangesWithAmend(string repo)
|
||||||
|
{
|
||||||
|
WorkingDirectory = repo;
|
||||||
|
Context = repo;
|
||||||
|
Args = "diff-index --cached -M HEAD^";
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Models.Change> Result()
|
||||||
|
{
|
||||||
|
var rs = ReadToEnd();
|
||||||
|
if (rs.IsSuccess)
|
||||||
|
{
|
||||||
|
var changes = new List<Models.Change>();
|
||||||
|
var lines = rs.StdOut.Split('\n', StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
foreach (var line in lines)
|
||||||
|
{
|
||||||
|
var match = REG_FORMAT2().Match(line);
|
||||||
|
if (match.Success)
|
||||||
|
{
|
||||||
|
var change = new Models.Change()
|
||||||
|
{
|
||||||
|
Path = match.Groups[3].Value,
|
||||||
|
DataForAmend = new Models.ChangeDataForAmend()
|
||||||
|
{
|
||||||
|
FileMode = match.Groups[1].Value,
|
||||||
|
ObjectHash = match.Groups[2].Value,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
change.Set(Models.ChangeState.Renamed);
|
||||||
|
changes.Add(change);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
match = REG_FORMAT1().Match(line);
|
||||||
|
if (match.Success)
|
||||||
|
{
|
||||||
|
var change = new Models.Change()
|
||||||
|
{
|
||||||
|
Path = match.Groups[4].Value,
|
||||||
|
DataForAmend = new Models.ChangeDataForAmend()
|
||||||
|
{
|
||||||
|
FileMode = match.Groups[1].Value,
|
||||||
|
ObjectHash = match.Groups[2].Value,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
var type = match.Groups[3].Value;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case "A":
|
||||||
|
change.Set(Models.ChangeState.Added);
|
||||||
|
break;
|
||||||
|
case "C":
|
||||||
|
change.Set(Models.ChangeState.Copied);
|
||||||
|
break;
|
||||||
|
case "D":
|
||||||
|
change.Set(Models.ChangeState.Deleted);
|
||||||
|
break;
|
||||||
|
case "M":
|
||||||
|
change.Set(Models.ChangeState.Modified);
|
||||||
|
break;
|
||||||
|
case "T":
|
||||||
|
change.Set(Models.ChangeState.TypeChanged);
|
||||||
|
break;
|
||||||
|
case "U":
|
||||||
|
change.Set(Models.ChangeState.Unmerged);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
changes.Add(change);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return changes;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,7 +6,7 @@
|
||||||
{
|
{
|
||||||
WorkingDirectory = repo;
|
WorkingDirectory = repo;
|
||||||
Context = repo;
|
Context = repo;
|
||||||
Args = $"revert {commit} --no-edit";
|
Args = $"revert -m 1 {commit} --no-edit";
|
||||||
if (!autoCommit)
|
if (!autoCommit)
|
||||||
Args += " --no-commit";
|
Args += " --no-commit";
|
||||||
}
|
}
|
||||||
|
|
97
src/Commands/UnstageChangesForAmend.cs
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using Avalonia.Threading;
|
||||||
|
|
||||||
|
namespace SourceGit.Commands
|
||||||
|
{
|
||||||
|
public class UnstageChangesForAmend
|
||||||
|
{
|
||||||
|
public UnstageChangesForAmend(string repo, List<Models.Change> changes)
|
||||||
|
{
|
||||||
|
_repo = repo;
|
||||||
|
|
||||||
|
foreach (var c in changes)
|
||||||
|
{
|
||||||
|
if (c.Index == Models.ChangeState.Renamed)
|
||||||
|
{
|
||||||
|
_patchBuilder.Append("0 0000000000000000000000000000000000000000\t");
|
||||||
|
_patchBuilder.Append(c.Path);
|
||||||
|
_patchBuilder.Append("\0100644 ");
|
||||||
|
_patchBuilder.Append(c.DataForAmend.ObjectHash);
|
||||||
|
_patchBuilder.Append("\t");
|
||||||
|
_patchBuilder.Append(c.OriginalPath);
|
||||||
|
_patchBuilder.Append("\n");
|
||||||
|
}
|
||||||
|
else if (c.Index == Models.ChangeState.Added)
|
||||||
|
{
|
||||||
|
_patchBuilder.Append("0 0000000000000000000000000000000000000000\t");
|
||||||
|
_patchBuilder.Append(c.Path);
|
||||||
|
_patchBuilder.Append("\n");
|
||||||
|
}
|
||||||
|
else if (c.Index == Models.ChangeState.Deleted)
|
||||||
|
{
|
||||||
|
_patchBuilder.Append("100644 ");
|
||||||
|
_patchBuilder.Append(c.DataForAmend.ObjectHash);
|
||||||
|
_patchBuilder.Append("\t");
|
||||||
|
_patchBuilder.Append(c.Path);
|
||||||
|
_patchBuilder.Append("\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_patchBuilder.Append(c.DataForAmend.FileMode);
|
||||||
|
_patchBuilder.Append(" ");
|
||||||
|
_patchBuilder.Append(c.DataForAmend.ObjectHash);
|
||||||
|
_patchBuilder.Append("\t");
|
||||||
|
_patchBuilder.Append(c.Path);
|
||||||
|
_patchBuilder.Append("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Exec()
|
||||||
|
{
|
||||||
|
var starter = new ProcessStartInfo();
|
||||||
|
starter.WorkingDirectory = _repo;
|
||||||
|
starter.FileName = Native.OS.GitExecutable;
|
||||||
|
starter.Arguments = "-c core.editor=true update-index --index-info";
|
||||||
|
starter.UseShellExecute = false;
|
||||||
|
starter.CreateNoWindow = true;
|
||||||
|
starter.WindowStyle = ProcessWindowStyle.Hidden;
|
||||||
|
starter.RedirectStandardInput = true;
|
||||||
|
starter.RedirectStandardOutput = false;
|
||||||
|
starter.RedirectStandardError = true;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var proc = new Process() { StartInfo = starter };
|
||||||
|
proc.Start();
|
||||||
|
proc.StandardInput.Write(_patchBuilder.ToString());
|
||||||
|
proc.StandardInput.Close();
|
||||||
|
|
||||||
|
var err = proc.StandardError.ReadToEnd();
|
||||||
|
proc.WaitForExit();
|
||||||
|
var rs = proc.ExitCode == 0;
|
||||||
|
proc.Close();
|
||||||
|
|
||||||
|
if (!rs)
|
||||||
|
Dispatcher.UIThread.Invoke(() => App.RaiseException(_repo, err));
|
||||||
|
|
||||||
|
return rs;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Dispatcher.UIThread.Invoke(() =>
|
||||||
|
{
|
||||||
|
App.RaiseException(_repo, "Failed to unstage changes: " + e.Message);
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string _repo = "";
|
||||||
|
private StringBuilder _patchBuilder = new StringBuilder();
|
||||||
|
}
|
||||||
|
}
|
|
@ -87,6 +87,8 @@ namespace SourceGit.Converters
|
||||||
public static readonly FuncValueConverter<string, string> TrimRefsPrefix =
|
public static readonly FuncValueConverter<string, string> TrimRefsPrefix =
|
||||||
new FuncValueConverter<string, string>(v =>
|
new FuncValueConverter<string, string>(v =>
|
||||||
{
|
{
|
||||||
|
if (v == null)
|
||||||
|
return string.Empty;
|
||||||
if (v.StartsWith("refs/heads/", StringComparison.Ordinal))
|
if (v.StartsWith("refs/heads/", StringComparison.Ordinal))
|
||||||
return v.Substring(11);
|
return v.Substring(11);
|
||||||
if (v.StartsWith("refs/remotes/", StringComparison.Ordinal))
|
if (v.StartsWith("refs/remotes/", StringComparison.Ordinal))
|
||||||
|
|
|
@ -1,21 +1,26 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Avalonia.Media.Imaging;
|
using Avalonia.Media.Imaging;
|
||||||
|
using Avalonia.Platform;
|
||||||
using Avalonia.Threading;
|
using Avalonia.Threading;
|
||||||
|
|
||||||
namespace SourceGit.Models
|
namespace SourceGit.Models
|
||||||
{
|
{
|
||||||
public interface IAvatarHost
|
public interface IAvatarHost
|
||||||
{
|
{
|
||||||
void OnAvatarResourceChanged(string md5);
|
void OnAvatarResourceChanged(string email);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class AvatarManager
|
public static partial class AvatarManager
|
||||||
{
|
{
|
||||||
public static string SelectedServer
|
public static string SelectedServer
|
||||||
{
|
{
|
||||||
|
@ -33,29 +38,35 @@ namespace SourceGit.Models
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
var md5 = null as string;
|
var email = null as string;
|
||||||
|
|
||||||
lock (_synclock)
|
lock (_synclock)
|
||||||
{
|
{
|
||||||
foreach (var one in _requesting)
|
foreach (var one in _requesting)
|
||||||
{
|
{
|
||||||
md5 = one;
|
email = one;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (md5 == null)
|
if (email == null)
|
||||||
{
|
{
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(100);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var md5 = GetEmailHash(email);
|
||||||
|
var matchGithubUser = REG_GITHUB_USER_EMAIL().Match(email);
|
||||||
|
var url = matchGithubUser.Success ?
|
||||||
|
$"https://avatars.githubusercontent.com/{matchGithubUser.Groups[2].Value}" :
|
||||||
|
$"{SelectedServer}{md5}?d=404";
|
||||||
|
|
||||||
var localFile = Path.Combine(_storePath, md5);
|
var localFile = Path.Combine(_storePath, md5);
|
||||||
var img = null as Bitmap;
|
var img = null as Bitmap;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var client = new HttpClient() { Timeout = TimeSpan.FromSeconds(2) };
|
var client = new HttpClient() { Timeout = TimeSpan.FromSeconds(2) };
|
||||||
var task = client.GetAsync($"{SelectedServer}{md5}?d=404");
|
var task = client.GetAsync(url);
|
||||||
task.Wait();
|
task.Wait();
|
||||||
|
|
||||||
var rsp = task.Result;
|
var rsp = task.Result;
|
||||||
|
@ -82,13 +93,13 @@ namespace SourceGit.Models
|
||||||
|
|
||||||
lock (_synclock)
|
lock (_synclock)
|
||||||
{
|
{
|
||||||
_requesting.Remove(md5);
|
_requesting.Remove(email);
|
||||||
}
|
}
|
||||||
|
|
||||||
Dispatcher.UIThread.InvokeAsync(() =>
|
Dispatcher.UIThread.InvokeAsync(() =>
|
||||||
{
|
{
|
||||||
_resources[md5] = img;
|
_resources[email] = img;
|
||||||
NotifyResourceChanged(md5);
|
NotifyResourceChanged(email);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -104,25 +115,36 @@ namespace SourceGit.Models
|
||||||
_avatars.Remove(host);
|
_avatars.Remove(host);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Bitmap Request(string md5, bool forceRefetch = false)
|
public static Bitmap Request(string email, bool forceRefetch)
|
||||||
{
|
{
|
||||||
|
if (email.Equals("noreply@github.com", StringComparison.Ordinal))
|
||||||
|
{
|
||||||
|
if (_githubEmailAvatar == null)
|
||||||
|
{
|
||||||
|
var icon = AssetLoader.Open(new Uri($"avares://SourceGit/Resources/Images/github.png", UriKind.RelativeOrAbsolute));
|
||||||
|
_githubEmailAvatar = new Bitmap(icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _githubEmailAvatar;
|
||||||
|
}
|
||||||
|
|
||||||
if (forceRefetch)
|
if (forceRefetch)
|
||||||
{
|
{
|
||||||
if (_resources.ContainsKey(md5))
|
if (_resources.ContainsKey(email))
|
||||||
_resources.Remove(md5);
|
_resources.Remove(email);
|
||||||
|
|
||||||
var localFile = Path.Combine(_storePath, md5);
|
var localFile = Path.Combine(_storePath, GetEmailHash(email));
|
||||||
if (File.Exists(localFile))
|
if (File.Exists(localFile))
|
||||||
File.Delete(localFile);
|
File.Delete(localFile);
|
||||||
|
|
||||||
NotifyResourceChanged(md5);
|
NotifyResourceChanged(email);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (_resources.TryGetValue(md5, out var value))
|
if (_resources.TryGetValue(email, out var value))
|
||||||
return value;
|
return value;
|
||||||
|
|
||||||
var localFile = Path.Combine(_storePath, md5);
|
var localFile = Path.Combine(_storePath, GetEmailHash(email));
|
||||||
if (File.Exists(localFile))
|
if (File.Exists(localFile))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -130,7 +152,7 @@ namespace SourceGit.Models
|
||||||
using (var stream = File.OpenRead(localFile))
|
using (var stream = File.OpenRead(localFile))
|
||||||
{
|
{
|
||||||
var img = Bitmap.DecodeToWidth(stream, 128);
|
var img = Bitmap.DecodeToWidth(stream, 128);
|
||||||
_resources.Add(md5, img);
|
_resources.Add(email, img);
|
||||||
return img;
|
return img;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -143,18 +165,28 @@ namespace SourceGit.Models
|
||||||
|
|
||||||
lock (_synclock)
|
lock (_synclock)
|
||||||
{
|
{
|
||||||
if (!_requesting.Contains(md5))
|
if (!_requesting.Contains(email))
|
||||||
_requesting.Add(md5);
|
_requesting.Add(email);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void NotifyResourceChanged(string md5)
|
private static string GetEmailHash(string email)
|
||||||
|
{
|
||||||
|
var lowered = email.ToLower(CultureInfo.CurrentCulture).Trim();
|
||||||
|
var hash = MD5.Create().ComputeHash(Encoding.Default.GetBytes(lowered));
|
||||||
|
var builder = new StringBuilder();
|
||||||
|
foreach (var c in hash)
|
||||||
|
builder.Append(c.ToString("x2"));
|
||||||
|
return builder.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void NotifyResourceChanged(string email)
|
||||||
{
|
{
|
||||||
foreach (var avatar in _avatars)
|
foreach (var avatar in _avatars)
|
||||||
{
|
{
|
||||||
avatar.OnAvatarResourceChanged(md5);
|
avatar.OnAvatarResourceChanged(email);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,5 +195,9 @@ namespace SourceGit.Models
|
||||||
private static readonly List<IAvatarHost> _avatars = new List<IAvatarHost>();
|
private static readonly List<IAvatarHost> _avatars = new List<IAvatarHost>();
|
||||||
private static readonly Dictionary<string, Bitmap> _resources = new Dictionary<string, Bitmap>();
|
private static readonly Dictionary<string, Bitmap> _resources = new Dictionary<string, Bitmap>();
|
||||||
private static readonly HashSet<string> _requesting = new HashSet<string>();
|
private static readonly HashSet<string> _requesting = new HashSet<string>();
|
||||||
|
|
||||||
|
[GeneratedRegex(@"^(?:(\d+)\+)?(.+?)@users\.noreply\.github\.com$")]
|
||||||
|
private static partial Regex REG_GITHUB_USER_EMAIL();
|
||||||
|
private static Bitmap _githubEmailAvatar = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ namespace SourceGit.Models
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
Modified,
|
Modified,
|
||||||
|
TypeChanged,
|
||||||
Added,
|
Added,
|
||||||
Deleted,
|
Deleted,
|
||||||
Renamed,
|
Renamed,
|
||||||
|
@ -21,12 +22,19 @@ namespace SourceGit.Models
|
||||||
Untracked
|
Untracked
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ChangeDataForAmend
|
||||||
|
{
|
||||||
|
public string FileMode { get; set; } = "";
|
||||||
|
public string ObjectHash { get; set; } = "";
|
||||||
|
}
|
||||||
|
|
||||||
public class Change
|
public class Change
|
||||||
{
|
{
|
||||||
public ChangeState Index { get; set; }
|
public ChangeState Index { get; set; } = ChangeState.None;
|
||||||
public ChangeState WorkTree { get; set; } = ChangeState.None;
|
public ChangeState WorkTree { get; set; } = ChangeState.None;
|
||||||
public string Path { get; set; } = "";
|
public string Path { get; set; } = "";
|
||||||
public string OriginalPath { get; set; } = "";
|
public string OriginalPath { get; set; } = "";
|
||||||
|
public ChangeDataForAmend DataForAmend { get; set; } = null;
|
||||||
|
|
||||||
public bool IsConflit
|
public bool IsConflit
|
||||||
{
|
{
|
||||||
|
|
|
@ -104,4 +104,10 @@ namespace SourceGit.Models
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class CommitWithMessage
|
||||||
|
{
|
||||||
|
public Commit Commit { get; set; } = new Commit();
|
||||||
|
public string Message { get; set; } = "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,11 @@ namespace SourceGit.Models
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (change.DataForAmend != null)
|
||||||
|
_extra = "--cached HEAD^";
|
||||||
|
else
|
||||||
_extra = "--cached";
|
_extra = "--cached";
|
||||||
|
|
||||||
_path = change.Path;
|
_path = change.Path;
|
||||||
_orgPath = change.OriginalPath;
|
_orgPath = change.OriginalPath;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ namespace SourceGit.Models
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var icon = AssetLoader.Open(new Uri($"avares://SourceGit/Resources/ExternalToolIcons/{Icon}.png", UriKind.RelativeOrAbsolute));
|
var icon = AssetLoader.Open(new Uri($"avares://SourceGit/Resources/Images/ExternalToolIcons/{Icon}.png", UriKind.RelativeOrAbsolute));
|
||||||
return new Bitmap(icon);
|
return new Bitmap(icon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ namespace SourceGit.Models
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var asset = AssetLoader.Open(new Uri($"avares://SourceGit/Resources/ExternalToolIcons/{icon}.png",
|
var asset = AssetLoader.Open(new Uri($"avares://SourceGit/Resources/Images/ExternalToolIcons/{icon}.png",
|
||||||
UriKind.RelativeOrAbsolute));
|
UriKind.RelativeOrAbsolute));
|
||||||
IconImage = new Bitmap(asset);
|
IconImage = new Bitmap(asset);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,8 @@ namespace SourceGit.Models
|
||||||
|
|
||||||
public static readonly List<Locale> Supported = new List<Locale>() {
|
public static readonly List<Locale> Supported = new List<Locale>() {
|
||||||
new Locale("English", "en_US"),
|
new Locale("English", "en_US"),
|
||||||
|
new Locale("Deutsch", "de_DE"),
|
||||||
|
new Locale("Português (Brasil)", "pt_BR"),
|
||||||
new Locale("简体中文", "zh_CN"),
|
new Locale("简体中文", "zh_CN"),
|
||||||
new Locale("繁體中文", "zh_TW"),
|
new Locale("繁體中文", "zh_TW"),
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,9 +7,11 @@
|
||||||
<StreamGeometry x:Key="Icons.Branch.Add">M896 128h-64V64c0-35-29-64-64-64s-64 29-64 64v64h-64c-35 0-64 29-64 64s29 64 64 64h64v64c0 35 29 64 64 64s64-29 64-64V256h64c35 0 64-29 64-64s-29-64-64-64zm-204 307C673 481 628 512 576 512H448c-47 0-90 13-128 35V372C394 346 448 275 448 192c0-106-86-192-192-192S64 86 64 192c0 83 54 154 128 180v280c-74 26-128 97-128 180c0 106 86 192 192 192s192-86 192-192c0-67-34-125-84-159c22-20 52-33 84-33h128c122 0 223-85 249-199c-19 4-37 7-57 7c-26 0-51-5-76-13zM256 128c35 0 64 29 64 64s-29 64-64 64s-64-29-64-64s29-64 64-64zm0 768c-35 0-64-29-64-64s29-64 64-64s64 29 64 64s-29 64-64 64z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Branch.Add">M896 128h-64V64c0-35-29-64-64-64s-64 29-64 64v64h-64c-35 0-64 29-64 64s29 64 64 64h64v64c0 35 29 64 64 64s64-29 64-64V256h64c35 0 64-29 64-64s-29-64-64-64zm-204 307C673 481 628 512 576 512H448c-47 0-90 13-128 35V372C394 346 448 275 448 192c0-106-86-192-192-192S64 86 64 192c0 83 54 154 128 180v280c-74 26-128 97-128 180c0 106 86 192 192 192s192-86 192-192c0-67-34-125-84-159c22-20 52-33 84-33h128c122 0 223-85 249-199c-19 4-37 7-57 7c-26 0-51-5-76-13zM256 128c35 0 64 29 64 64s-29 64-64 64s-64-29-64-64s29-64 64-64zm0 768c-35 0-64-29-64-64s29-64 64-64s64 29 64 64s-29 64-64 64z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Calender">M378 116l265 0 0 47-265 0 0-47ZM888 116 748 116l0 47 124 0c18 0 33 15 33 33l0 93L115 290l0-93c0-18 15-33 33-33l124 0 0-47L132 116c-35 0-64 29-64 64l0 714c0 35 29 64 64 64l757 0c35 0 64-29 64-64l-0-714C952 145 924 116 888 116zM905 337l0 540c0 18-15 33-33 33L148 910c-18 0-33-15-33-33L115 337 905 337zM301 65l47 0 0 170-47 0 0-170ZM673 65l47 0 0 170-47 0 0-170ZM358 548l0 231 53 0L411 459l-35 0-3 4c-18 26-41 49-70 68l-4 3 0 54 13-8C331 569 346 559 358 548zM618 727c-10 6-24 8-42 5-16-3-28-18-35-46l-2-9-48 13 2 8c6 30 18 52 36 65 17 13 36 20 55 21 3 0 7 0 10 0 15 0 28-2 40-7 14-6 27-13 37-23 10-10 18-22 23-37 5-14 8-28 8-42 1-14-1-27-4-39l-0-0c-3-12-8-24-15-36-7-13-19-23-35-30-15-7-31-11-47-11-11-0-23 1-36 5 4-15 8-32 11-52l114 0 0-49L536 464l-1 7c-25 116-32 145-33 150l-3 10 46 5 3-4c8-11 18-18 31-21 13-3 25-3 35-0 10 3 18 9 24 18 7 9 10 20 11 34 1 14-2 26-6 37C636 711 629 720 618 727z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Calender">M378 116l265 0 0 47-265 0 0-47ZM888 116 748 116l0 47 124 0c18 0 33 15 33 33l0 93L115 290l0-93c0-18 15-33 33-33l124 0 0-47L132 116c-35 0-64 29-64 64l0 714c0 35 29 64 64 64l757 0c35 0 64-29 64-64l-0-714C952 145 924 116 888 116zM905 337l0 540c0 18-15 33-33 33L148 910c-18 0-33-15-33-33L115 337 905 337zM301 65l47 0 0 170-47 0 0-170ZM673 65l47 0 0 170-47 0 0-170ZM358 548l0 231 53 0L411 459l-35 0-3 4c-18 26-41 49-70 68l-4 3 0 54 13-8C331 569 346 559 358 548zM618 727c-10 6-24 8-42 5-16-3-28-18-35-46l-2-9-48 13 2 8c6 30 18 52 36 65 17 13 36 20 55 21 3 0 7 0 10 0 15 0 28-2 40-7 14-6 27-13 37-23 10-10 18-22 23-37 5-14 8-28 8-42 1-14-1-27-4-39l-0-0c-3-12-8-24-15-36-7-13-19-23-35-30-15-7-31-11-47-11-11-0-23 1-36 5 4-15 8-32 11-52l114 0 0-49L536 464l-1 7c-25 116-32 145-33 150l-3 10 46 5 3-4c8-11 18-18 31-21 13-3 25-3 35-0 10 3 18 9 24 18 7 9 10 20 11 34 1 14-2 26-6 37C636 711 629 720 618 727z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Check">M512 597m-1 0a1 1 0 103 0a1 1 0 10-3 0ZM810 393 732 315 448 600 293 444 214 522l156 156 78 78 362-362z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Check">M512 597m-1 0a1 1 0 103 0a1 1 0 10-3 0ZM810 393 732 315 448 600 293 444 214 522l156 156 78 78 362-362z</StreamGeometry>
|
||||||
|
<StreamGeometry x:Key="Icons.Changes">M747 467c29 0 56 4 82 12v-363c0-47-38-84-84-84H125c-47 0-84 38-84 84v707c0 47 38 84 84 84h375a287 287 0 01-43-152c0-160 129-289 289-289zm-531-250h438c19 0 34 15 34 34s-15 34-34 34H216c-19 0-34-15-34-34s15-34 34-34zm0 179h263c19 0 34 15 34 34s-15 34-34 34H216c-19 0-34-15-34-34s15-34 34-34zm131 247h-131c-19 0-34-15-34-34s15-34 34-34h131c19 0 34 15 34 34s-15 34-34 34zM747 521c-130 0-236 106-236 236S617 992 747 992s236-106 236-236S877 521 747 521zm11 386v-65h-130c-12 0-22-10-22-22s10-22 22-22h260l-130 108zm108-192H606l130-108v65h130c12 0 22 10 22 22s-10 22-22 22z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.CherryPick">M529 511c115 0 212 79 239 185h224a62 62 0 017 123l-7 0-224 0a247 247 0 01-479 0H65a62 62 0 01-7-123l7-0h224a247 247 0 01239-185zm0 124a124 124 0 100 247 124 124 0 000-247zm0-618c32 0 58 24 61 55l0 7V206c89 11 165 45 225 103a74 74 0 0122 45l0 9v87a62 62 0 01-123 7l-0-7v-65l-6-4c-43-33-97-51-163-53l-17-0c-74 0-133 18-180 54l-6 4v65a62 62 0 01-55 61l-7 0a62 62 0 01-61-55l-0-7V362c0-20 8-39 23-53 60-58 135-92 224-103V79c0-34 28-62 62-62z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.CherryPick">M529 511c115 0 212 79 239 185h224a62 62 0 017 123l-7 0-224 0a247 247 0 01-479 0H65a62 62 0 01-7-123l7-0h224a247 247 0 01239-185zm0 124a124 124 0 100 247 124 124 0 000-247zm0-618c32 0 58 24 61 55l0 7V206c89 11 165 45 225 103a74 74 0 0122 45l0 9v87a62 62 0 01-123 7l-0-7v-65l-6-4c-43-33-97-51-163-53l-17-0c-74 0-133 18-180 54l-6 4v65a62 62 0 01-55 61l-7 0a62 62 0 01-61-55l-0-7V362c0-20 8-39 23-53 60-58 135-92 224-103V79c0-34 28-62 62-62z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Clear">M512 57c251 0 455 204 455 455S763 967 512 967 57 763 57 512 261 57 512 57zm181 274c-11-11-29-11-40 0L512 472 371 331c-11-11-29-11-40 0-11 11-11 29 0 40L471 512 331 653c-11 11-11 29 0 40 11 11 29 11 40 0l141-141 141 141c11 11 29 11 40 0 11-11 11-29 0-40L552 512l141-141c11-11 11-29 0-40z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Clear">M512 57c251 0 455 204 455 455S763 967 512 967 57 763 57 512 261 57 512 57zm181 274c-11-11-29-11-40 0L512 472 371 331c-11-11-29-11-40 0-11 11-11 29 0 40L471 512 331 653c-11 11-11 29 0 40 11 11 29 11 40 0l141-141 141 141c11 11 29 11 40 0 11-11 11-29 0-40L552 512l141-141c11-11 11-29 0-40z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Clean">M797 829a49 49 0 1049 49 49 49 0 00-49-49zm147-114A49 49 0 10992 764a49 49 0 00-49-49zM928 861a49 49 0 1049 49A49 49 0 00928 861zm-5-586L992 205 851 64l-71 71a67 67 0 00-94 0l235 235a67 67 0 000-94zm-853 128a32 32 0 00-32 50 1291 1291 0 0075 112L288 552c20 0 25 21 8 37l-93 86a1282 1282 0 00120 114l100-32c19-6 28 15 14 34l-40 55c26 19 53 36 82 53a89 89 0 00115-20 1391 1391 0 00256-485l-188-188s-306 224-595 198z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Clean">M797 829a49 49 0 1049 49 49 49 0 00-49-49zm147-114A49 49 0 10992 764a49 49 0 00-49-49zM928 861a49 49 0 1049 49A49 49 0 00928 861zm-5-586L992 205 851 64l-71 71a67 67 0 00-94 0l235 235a67 67 0 000-94zm-853 128a32 32 0 00-32 50 1291 1291 0 0075 112L288 552c20 0 25 21 8 37l-93 86a1282 1282 0 00120 114l100-32c19-6 28 15 14 34l-40 55c26 19 53 36 82 53a89 89 0 00115-20 1391 1391 0 00256-485l-188-188s-306 224-595 198z</StreamGeometry>
|
||||||
|
<StreamGeometry x:Key="Icons.Clone">M1280 704c0 141-115 256-256 256H288C129 960 0 831 0 672c0-126 80-232 192-272A327 327 0 01192 384c0-177 143-320 320-320 119 0 222 64 277 160C820 204 857 192 896 192c106 0 192 86 192 192 0 24-5 48-13 69C1192 477 1280 580 1280 704zm-493-128H656V352c0-18-14-32-32-32h-96c-18 0-32 14-32 32v224h-131c-29 0-43 34-23 55l211 211c12 12 33 12 45 0l211-211c20-20 6-55-23-55z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Commit">M796 471A292 292 0 00512 256a293 293 0 00-284 215H0v144h228A293 293 0 00512 832a291 291 0 00284-217H1024V471h-228M512 688A146 146 0 01366 544A145 145 0 01512 400c80 0 146 63 146 144A146 146 0 01512 688</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Commit">M796 471A292 292 0 00512 256a293 293 0 00-284 215H0v144h228A293 293 0 00512 832a291 291 0 00284-217H1024V471h-228M512 688A146 146 0 01366 544A145 145 0 01512 400c80 0 146 63 146 144A146 146 0 01512 688</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Compare">M645 448l64 64 220-221L704 64l-64 64 115 115H128v90h628zM375 576l-64-64-220 224L314 960l64-64-116-115H896v-90H262z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Compare">M645 448l64 64 220-221L704 64l-64 64 115 115H128v90h628zM375 576l-64-64-220 224L314 960l64-64-116-115H896v-90H262z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Conflict">M608 0q48 0 88 23t63 63 23 87v70h55q35 0 67 14t57 38 38 57 14 67V831q0 34-14 66t-38 57-57 38-67 13H426q-34 0-66-13t-57-38-38-57-14-66v-70h-56q-34 0-66-14t-57-38-38-57-13-67V174q0-47 23-87T109 23 196 0h412m175 244H426q-46 0-86 22T278 328t-26 85v348H608q47 0 86-22t63-62 25-85l1-348m-269 318q18 0 31 13t13 31-13 31-31 13-31-13-13-31 13-31 31-13m0-212q13 0 22 9t11 22v125q0 14-9 23t-22 10-23-7-11-22l-1-126q0-13 10-23t23-10z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Conflict">M608 0q48 0 88 23t63 63 23 87v70h55q35 0 67 14t57 38 38 57 14 67V831q0 34-14 66t-38 57-57 38-67 13H426q-34 0-66-13t-57-38-38-57-14-66v-70h-56q-34 0-66-14t-57-38-38-57-13-67V174q0-47 23-87T109 23 196 0h412m175 244H426q-46 0-86 22T278 328t-26 85v348H608q47 0 86-22t63-62 25-85l1-348m-269 318q18 0 31 13t13 31-13 31-31 13-31-13-13-31 13-31 31-13m0-212q13 0 22 9t11 22v125q0 14-9 23t-22 10-23-7-11-22l-1-126q0-13 10-23t23-10z</StreamGeometry>
|
||||||
|
@ -79,11 +81,11 @@
|
||||||
<StreamGeometry x:Key="Icons.Reset">M883 567l-128-128c-17-17-43-17-60 0l-128 128c-17 17-17 43 0 60 17 17 43 17 60 0l55-55V683c0 21-21 43-43 43H418c-13-38-43-64-77-77V375c51-17 85-64 85-119 0-73-60-128-128-128-73 0-128 55-128 128 0 55 34 102 85 119v269c-51 17-85 64-85 119 0 73 55 128 128 128 55 0 102-34 119-85H640c73 0 128-55 128-128v-111l55 55c9 9 17 13 30 13 13 0 21-4 30-13 17-13 17-43 0-55zM299 213c26 0 43 17 43 43 0 21-21 43-43 43-26 0-43-21-43-43 0-26 17-43 43-43zm0 597c-26 0-43-21-43-43 0-26 17-43 43-43s43 17 43 43c0 21-17 43-43 43zM725 384c-73 0-128-60-128-128 0-73 55-128 128-128s128 55 128 128c0 68-55 128-128 128zm0-171c-26 0-43 17-43 43s17 43 43 43 43-17 43-43-17-43-43-43z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Reset">M883 567l-128-128c-17-17-43-17-60 0l-128 128c-17 17-17 43 0 60 17 17 43 17 60 0l55-55V683c0 21-21 43-43 43H418c-13-38-43-64-77-77V375c51-17 85-64 85-119 0-73-60-128-128-128-73 0-128 55-128 128 0 55 34 102 85 119v269c-51 17-85 64-85 119 0 73 55 128 128 128 55 0 102-34 119-85H640c73 0 128-55 128-128v-111l55 55c9 9 17 13 30 13 13 0 21-4 30-13 17-13 17-43 0-55zM299 213c26 0 43 17 43 43 0 21-21 43-43 43-26 0-43-21-43-43 0-26 17-43 43-43zm0 597c-26 0-43-21-43-43 0-26 17-43 43-43s43 17 43 43c0 21-17 43-43 43zM725 384c-73 0-128-60-128-128 0-73 55-128 128-128s128 55 128 128c0 68-55 128-128 128zm0-171c-26 0-43 17-43 43s17 43 43 43 43-17 43-43-17-43-43-43z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Save">M293 122v244h439V146l171 175V829a73 73 0 01-73 73h-98V536H293v366H195a73 73 0 01-73-73V195a73 73 0 0173-73h98zm366 512v268H366V634h293zm-49 49h-195v73h195v-73zm49-561v171H366V122h293z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Save">M293 122v244h439V146l171 175V829a73 73 0 01-73 73h-98V536H293v366H195a73 73 0 01-73-73V195a73 73 0 0173-73h98zm366 512v268H366V634h293zm-49 49h-195v73h195v-73zm49-561v171H366V122h293z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Search">M702 677 590 565a148 148 0 10-25 27L676 703zm-346-200a115 115 0 11115 115A115 115 0 01355 478z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Search">M702 677 590 565a148 148 0 10-25 27L676 703zm-346-200a115 115 0 11115 115A115 115 0 01355 478z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Send">M0 586l404 119 498-410-386 441-2 251 155-205 279 83L1170 37z</StreamGeometry>
|
|
||||||
<StreamGeometry x:Key="Icons.Settings">M928 500a21 21 0 00-19-20L858 472a11 11 0 01-9-9c-1-6-2-13-3-19a11 11 0 015-12l46-25a21 21 0 0010-26l-8-22a21 21 0 00-24-13l-51 10a11 11 0 01-12-6c-3-6-6-11-10-17a11 11 0 011-13l34-39a21 21 0 001-28l-15-18a20 20 0 00-27-4l-45 27a11 11 0 01-13-1c-5-4-10-9-15-12a11 11 0 01-3-12l19-49a21 21 0 00-9-26l-20-12a21 21 0 00-27 6L650 193a9 9 0 01-11 3c-1-1-12-5-20-7a11 11 0 01-7-10l1-52a21 21 0 00-17-22l-23-4a21 21 0 00-24 14L532 164a11 11 0 01-11 7h-20a11 11 0 01-11-7l-17-49a21 21 0 00-24-15l-23 4a21 21 0 00-17 22l1 52a11 11 0 01-8 11c-5 2-15 6-19 7c-4 1-8 0-12-4l-33-40A21 21 0 00313 146l-20 12A21 21 0 00285 184l19 49a11 11 0 01-3 12c-5 4-10 8-15 12a11 11 0 01-13 1L228 231a21 21 0 00-27 4L186 253a21 21 0 001 28L221 320a11 11 0 011 13c-3 5-7 11-10 17a11 11 0 01-12 6l-51-10a21 21 0 00-24 13l-8 22a21 21 0 0010 26l46 25a11 11 0 015 12l0 3c-1 6-2 11-3 16a11 11 0 01-9 9l-51 8A21 21 0 0096 500v23A21 21 0 00114 544l51 8a11 11 0 019 9c1 6 2 13 3 19a11 11 0 01-5 12l-46 25a21 21 0 00-10 26l8 22a21 21 0 0024 13l51-10a11 11 0 0112 6c3 6 6 11 10 17a11 11 0 01-1 13l-34 39a21 21 0 00-1 28l15 18a20 20 0 0027 4l45-27a11 11 0 0113 1c5 4 10 9 15 12a11 11 0 013 12l-19 49a21 21 0 009 26l20 12a21 21 0 0027-6L374 832c3-3 7-5 10-4c7 3 12 5 20 7a11 11 0 018 10l-1 52a21 21 0 0017 22l23 4a21 21 0 0024-14l17-50a11 11 0 0111-7h20a11 11 0 0111 7l17 49a21 21 0 0020 15a19 19 0 004 0l23-4a21 21 0 0017-22l-1-52a11 11 0 018-10c8-3 13-5 18-7l1 0c6-2 9 0 11 3l34 41A21 21 0 00710 878l20-12a21 21 0 009-26l-18-49a11 11 0 013-12c5-4 10-8 15-12a11 11 0 0113-1l45 27a21 21 0 0027-4l15-18a21 21 0 00-1-28l-34-39a11 11 0 01-1-13c3-5 7-11 10-17a11 11 0 0112-6l51 10a21 21 0 0024-13l8-22a21 21 0 00-10-26l-46-25a11 11 0 01-5-12l0-3c1-6 2-11 3-16a11 11 0 019-9l51-8a21 21 0 0018-21v-23zm-565 188a32 32 0 01-51 5a270 270 0 011-363a32 32 0 0151 6l91 161a32 32 0 010 31zM512 782a270 270 0 01-57-6a32 32 0 01-20-47l92-160a32 32 0 0127-16h184a32 32 0 0130 41c-35 109-137 188-257 188zm15-328L436 294a32 32 0 0121-47a268 268 0 0155-6c120 0 222 79 257 188a32 32 0 01-30 41h-184a32 32 0 01-28-16z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Settings">M928 500a21 21 0 00-19-20L858 472a11 11 0 01-9-9c-1-6-2-13-3-19a11 11 0 015-12l46-25a21 21 0 0010-26l-8-22a21 21 0 00-24-13l-51 10a11 11 0 01-12-6c-3-6-6-11-10-17a11 11 0 011-13l34-39a21 21 0 001-28l-15-18a20 20 0 00-27-4l-45 27a11 11 0 01-13-1c-5-4-10-9-15-12a11 11 0 01-3-12l19-49a21 21 0 00-9-26l-20-12a21 21 0 00-27 6L650 193a9 9 0 01-11 3c-1-1-12-5-20-7a11 11 0 01-7-10l1-52a21 21 0 00-17-22l-23-4a21 21 0 00-24 14L532 164a11 11 0 01-11 7h-20a11 11 0 01-11-7l-17-49a21 21 0 00-24-15l-23 4a21 21 0 00-17 22l1 52a11 11 0 01-8 11c-5 2-15 6-19 7c-4 1-8 0-12-4l-33-40A21 21 0 00313 146l-20 12A21 21 0 00285 184l19 49a11 11 0 01-3 12c-5 4-10 8-15 12a11 11 0 01-13 1L228 231a21 21 0 00-27 4L186 253a21 21 0 001 28L221 320a11 11 0 011 13c-3 5-7 11-10 17a11 11 0 01-12 6l-51-10a21 21 0 00-24 13l-8 22a21 21 0 0010 26l46 25a11 11 0 015 12l0 3c-1 6-2 11-3 16a11 11 0 01-9 9l-51 8A21 21 0 0096 500v23A21 21 0 00114 544l51 8a11 11 0 019 9c1 6 2 13 3 19a11 11 0 01-5 12l-46 25a21 21 0 00-10 26l8 22a21 21 0 0024 13l51-10a11 11 0 0112 6c3 6 6 11 10 17a11 11 0 01-1 13l-34 39a21 21 0 00-1 28l15 18a20 20 0 0027 4l45-27a11 11 0 0113 1c5 4 10 9 15 12a11 11 0 013 12l-19 49a21 21 0 009 26l20 12a21 21 0 0027-6L374 832c3-3 7-5 10-4c7 3 12 5 20 7a11 11 0 018 10l-1 52a21 21 0 0017 22l23 4a21 21 0 0024-14l17-50a11 11 0 0111-7h20a11 11 0 0111 7l17 49a21 21 0 0020 15a19 19 0 004 0l23-4a21 21 0 0017-22l-1-52a11 11 0 018-10c8-3 13-5 18-7l1 0c6-2 9 0 11 3l34 41A21 21 0 00710 878l20-12a21 21 0 009-26l-18-49a11 11 0 013-12c5-4 10-8 15-12a11 11 0 0113-1l45 27a21 21 0 0027-4l15-18a21 21 0 00-1-28l-34-39a11 11 0 01-1-13c3-5 7-11 10-17a11 11 0 0112-6l51 10a21 21 0 0024-13l8-22a21 21 0 00-10-26l-46-25a11 11 0 01-5-12l0-3c1-6 2-11 3-16a11 11 0 019-9l51-8a21 21 0 0018-21v-23zm-565 188a32 32 0 01-51 5a270 270 0 011-363a32 32 0 0151 6l91 161a32 32 0 010 31zM512 782a270 270 0 01-57-6a32 32 0 01-20-47l92-160a32 32 0 0127-16h184a32 32 0 0130 41c-35 109-137 188-257 188zm15-328L436 294a32 32 0 0121-47a268 268 0 0155-6c120 0 222 79 257 188a32 32 0 01-30 41h-184a32 32 0 01-28-16z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.SoftwareUpdate">M900 287c40 69 60 144 60 225s-20 156-60 225c-40 69-94 123-163 163-69 40-144 60-225 60s-156-20-225-60c-69-40-123-94-163-163C84 668 64 593 64 512s20-156 60-225 94-123 163-163c69-40 144-60 225-60s156 20 225 60 123 94 163 163zM762 512c0-9-3-16-9-22L578 315l-44-44c-6-6-13-9-22-9s-16 3-22 9l-44 44-176 176c-6 6-9 13-9 22s3 16 9 22l44 44c6 6 13 9 22 9s16-3 22-9l92-92v269c0 9 3 16 9 22 6 6 13 9 22 9h62c8 0 16-3 22-9 6-6 9-13 9-22V486l92 92c6 6 13 9 22 9 8 0 16-3 22-9l44-44c6-6 9-13 9-22z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.SoftwareUpdate">M900 287c40 69 60 144 60 225s-20 156-60 225c-40 69-94 123-163 163-69 40-144 60-225 60s-156-20-225-60c-69-40-123-94-163-163C84 668 64 593 64 512s20-156 60-225 94-123 163-163c69-40 144-60 225-60s156 20 225 60 123 94 163 163zM762 512c0-9-3-16-9-22L578 315l-44-44c-6-6-13-9-22-9s-16 3-22 9l-44 44-176 176c-6 6-9 13-9 22s3 16 9 22l44 44c6 6 13 9 22 9s16-3 22-9l92-92v269c0 9 3 16 9 22 6 6 13 9 22 9h62c8 0 16-3 22-9 6-6 9-13 9-22V486l92 92c6 6 13 9 22 9 8 0 16-3 22-9l44-44c6-6 9-13 9-22z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.SquashIntoParent">M512 939C465 939 427 900 427 853 427 806 465 768 512 768 559 768 597 806 597 853 597 900 559 939 512 939M555 85 555 555 747 363 807 423 512 719 217 423 277 363 469 555 469 85 555 85Z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.SquashIntoParent">M512 939C465 939 427 900 427 853 427 806 465 768 512 768 559 768 597 806 597 853 597 900 559 939 512 939M555 85 555 555 747 363 807 423 512 719 217 423 277 363 469 555 469 85 555 85Z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Stashes">M961 320 512 577 63 320 512 62l449 258zM512 628 185 442 63 512 512 770 961 512l-123-70L512 628zM512 821 185 634 63 704 512 962l449-258L839 634 512 821z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Stashes">M961 320 512 577 63 320 512 62l449 258zM512 628 185 442 63 512 512 770 961 512l-123-70L512 628zM512 821 185 634 63 704 512 962l449-258L839 634 512 821z</StreamGeometry>
|
||||||
|
<StreamGeometry x:Key="Icons.Stashes.Add">M363 491h64v107h107v64h-107v107h-64v-107h-107v-64h107v-107zm149-235 256 128-256 128-64-32v-11H427l-171-85 256-128zm256 384-256 128-64-32v-53h64l0 0 0-0h43v-21l128-64 85 43zm0-128-213 107v-43h-107v-53l64 32 171-85 85 43zm-512 0 85-43v85l-85-43z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Statistics">M447 561a26 26 0 0126 26v171H421v-171a26 26 0 0126-26zm-98 65a26 26 0 0126 26v104H323v-104a26 26 0 0126-26zm0 0M561 268a32 32 0 0132 30v457h-65V299a32 32 0 0132-32zm0 0M675 384a26 26 0 0126 26v348H649v-350a26 26 0 0126-24zm0 0M801 223v579H223V223h579M805 171H219A49 49 0 00171 219v585A49 49 0 00219 853h585A49 49 0 00853 805V219A49 49 0 00805 171z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Statistics">M447 561a26 26 0 0126 26v171H421v-171a26 26 0 0126-26zm-98 65a26 26 0 0126 26v104H323v-104a26 26 0 0126-26zm0 0M561 268a32 32 0 0132 30v457h-65V299a32 32 0 0132-32zm0 0M675 384a26 26 0 0126 26v348H649v-350a26 26 0 0126-24zm0 0M801 223v579H223V223h579M805 171H219A49 49 0 00171 219v585A49 49 0 00219 853h585A49 49 0 00853 805V219A49 49 0 00805 171z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Stopwatch">M576 160H448c-18 0-32-14-32-32s14-32 32-32h128c18 0 32 14 32 32s-14 32-32 32zm243 186 36-36c13-13 13-33 0-45s-33-13-45 0l-33 33C708 233 614 192 512 192c-212 0-384 172-384 384s172 384 384 384 384-172 384-384c0-86-29-166-77-230zM544 894V864c0-18-14-32-32-32s-32 14-32 32v30C329 879 209 759 194 608H224c18 0 32-14 32-32s-14-32-32-32h-30C209 393 329 273 480 258V288c0 18 14 32 32 32s32-14 32-32v-30C695 273 815 393 830 544H800c-18 0-32 14-32 32s14 32 32 32h30C815 759 695 879 544 894zm108-471-160 128c-14 11-16 31-5 45 6 8 16 12 25 12 7 0 14-2 20-7l160-128c14-11 16-31 5-45-11-14-31-16-45-5z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Stopwatch">M576 160H448c-18 0-32-14-32-32s14-32 32-32h128c18 0 32 14 32 32s-14 32-32 32zm243 186 36-36c13-13 13-33 0-45s-33-13-45 0l-33 33C708 233 614 192 512 192c-212 0-384 172-384 384s172 384 384 384 384-172 384-384c0-86-29-166-77-230zM544 894V864c0-18-14-32-32-32s-32 14-32 32v30C329 879 209 759 194 608H224c18 0 32-14 32-32s-14-32-32-32h-30C209 393 329 273 480 258V288c0 18 14 32 32 32s32-14 32-32v-30C695 273 815 393 830 544H800c-18 0-32 14-32 32s14 32 32 32h30C815 759 695 879 544 894zm108-471-160 128c-14 11-16 31-5 45 6 8 16 12 25 12 7 0 14-2 20-7l160-128c14-11 16-31 5-45-11-14-31-16-45-5z</StreamGeometry>
|
||||||
<StreamGeometry x:Key="Icons.Submodule">M558 545 790 403c24-15 31-47 16-71-15-24-46-31-70-17L507 457 277 315c-24-15-56-7-71 17-15 24-7 56 17 71l232 143V819c0 28 23 51 51 51 28 0 51-23 51-51V545h0zM507 0l443 256v512L507 1024 63 768v-512L507 0z</StreamGeometry>
|
<StreamGeometry x:Key="Icons.Submodule">M558 545 790 403c24-15 31-47 16-71-15-24-46-31-70-17L507 457 277 315c-24-15-56-7-71 17-15 24-7 56 17 71l232 143V819c0 28 23 51 51 51 28 0 51-23 51-51V545h0zM507 0l443 256v512L507 1024 63 768v-512L507 0z</StreamGeometry>
|
||||||
|
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 3 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 3 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 8 KiB After Width: | Height: | Size: 8 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
BIN
src/Resources/Images/github.png
Normal file
After Width: | Height: | Size: 4 KiB |
601
src/Resources/Locales/de_DE.axaml
Normal file
|
@ -0,0 +1,601 @@
|
||||||
|
<ResourceDictionary xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||||
|
<ResourceDictionary.MergedDictionaries>
|
||||||
|
<ResourceInclude Source="avares://SourceGit/Resources/Locales/en_US.axaml"/>
|
||||||
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
<x:String x:Key="Text.About" xml:space="preserve">Info</x:String>
|
||||||
|
<x:String x:Key="Text.About.Menu" xml:space="preserve">Über SourceGit</x:String>
|
||||||
|
<x:String x:Key="Text.About.BuildWith" xml:space="preserve">• Erstellen mit </x:String>
|
||||||
|
<x:String x:Key="Text.About.Copyright" xml:space="preserve">© 2024 sourcegit-scm</x:String>
|
||||||
|
<x:String x:Key="Text.About.Editor" xml:space="preserve">• TextEditor von </x:String>
|
||||||
|
<x:String x:Key="Text.About.Fonts" xml:space="preserve">• Monospace Schriftarten von </x:String>
|
||||||
|
<x:String x:Key="Text.About.SourceCode" xml:space="preserve">• Quelltext findenst du unter </x:String>
|
||||||
|
<x:String x:Key="Text.About.SubTitle" xml:space="preserve">Opensource & freier Git GUI Client</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree" xml:space="preserve">Worktree hinzufügen</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.WhatToCheckout" xml:space="preserve">Was auschecken:</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.WhatToCheckout.Existing" xml:space="preserve">Existierender Branch</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.WhatToCheckout.CreateNew" xml:space="preserve">Neuen Branch erstellen</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Location" xml:space="preserve">Ordner:</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Location.Placeholder" xml:space="preserve">Pfad für diesen Worktree. Relativer Pfad wird unterstützt.</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Name" xml:space="preserve">Branch Name:</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Name.Placeholder" xml:space="preserve">Optional. Standard ist der Zielordnername.</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Tracking" xml:space="preserve">Branch verfolgen:</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Tracking.Toggle" xml:space="preserve">Remote Branch verfolgen</x:String>
|
||||||
|
<x:String x:Key="Text.Apply" xml:space="preserve">Patch</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.Error" xml:space="preserve">Fehler</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.Error.Desc" xml:space="preserve">Fehler werfen und anwenden des Patches verweigern</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.ErrorAll" xml:space="preserve">Alle Fehler</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.ErrorAll.Desc" xml:space="preserve">Ähnlich wie 'Fehler', zeigt aber mehr an</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.File" xml:space="preserve">Patch Datei:</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.File.Placeholder" xml:space="preserve">Wählen Sie anzuwendende .patch Datei</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.IgnoreWS" xml:space="preserve">Ignoriere Leerzeichenänderungen</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.NoWarn" xml:space="preserve">Keine Warnungen</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.NoWarn.Desc" xml:space="preserve">Schaltet die Warnung vor überschüssigen Leerzeichen aus</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.Title" xml:space="preserve">Patch anwenden</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.Warn" xml:space="preserve">Warnen</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.Warn.Desc" xml:space="preserve">Gibt eine Warnung für ein paar solcher Fehler aus, aber wendet es an</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.WS" xml:space="preserve">Leerzeichen:</x:String>
|
||||||
|
<x:String x:Key="Text.Archive" xml:space="preserve">Archivieren...</x:String>
|
||||||
|
<x:String x:Key="Text.Archive.File" xml:space="preserve">Speichere Archiv in:</x:String>
|
||||||
|
<x:String x:Key="Text.Archive.File.Placeholder" xml:space="preserve">Wähle Archivpfad aus</x:String>
|
||||||
|
<x:String x:Key="Text.Archive.Revision" xml:space="preserve">Revision:</x:String>
|
||||||
|
<x:String x:Key="Text.Archive.Title" xml:space="preserve">Archiv</x:String>
|
||||||
|
<x:String x:Key="Text.Askpass" xml:space="preserve">SourceGit Askpass</x:String>
|
||||||
|
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">UNVERÄNDERTE DATEIEN</x:String>
|
||||||
|
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">KEINE UNVERÄNDERTEN DATEIEN GEFUNDEN</x:String>
|
||||||
|
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">ENTFERNEN</x:String>
|
||||||
|
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">BINÄRE DATEI NICHT UNTERSTÜTZT!!!</x:String>
|
||||||
|
<x:String x:Key="Text.Blame" xml:space="preserve">Blame</x:String>
|
||||||
|
<x:String x:Key="Text.BlameTypeNotSupported" xml:space="preserve">BLAME WIRD BEI DIESER DATEI NICHT UNTERSTÜTZT!!!</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Checkout" xml:space="preserve">Checkout ${0}$...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.CompareWithBranch" xml:space="preserve">Mit Branch vergleichen</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.CompareWithHead" xml:space="preserve">Mit HEAD vergleichen</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.CompareWithWorktree" xml:space="preserve">Mit Worktree vergleichen</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.CopyName" xml:space="preserve">Branch-Namen kopieren</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Delete" xml:space="preserve">Lösche ${0}$...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.DeleteMultiBranches" xml:space="preserve">Lösche alle ausgewählten {0} Branches</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.DiscardAll" xml:space="preserve">Alle Änderungen verwerfen</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">Fast-Forward zu ${0}$</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git Flow - Abschließen ${0}$</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">Merge ${0}$ in ${1}$ hinein...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">Pull ${0}$</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.PullInto" xml:space="preserve">Pulle ${0}$ in ${1}$ hinein...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Push" xml:space="preserve">Push ${0}$</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Rebase" xml:space="preserve">Rebase ${0}$ auf ${1}$...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Rename" xml:space="preserve">Benenne ${0}$ um...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Tracking" xml:space="preserve">Setze verfolgten Branch</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.UnsetUpstream" xml:space="preserve">Upstream Verbindung löschen</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCompare" xml:space="preserve">Branch Vergleich</x:String>
|
||||||
|
<x:String x:Key="Text.Bytes" xml:space="preserve">Bytes</x:String>
|
||||||
|
<x:String x:Key="Text.Cancel" xml:space="preserve">ABBRECHEN</x:String>
|
||||||
|
<x:String x:Key="Text.ChangeDisplayMode" xml:space="preserve">ANZEIGE MODUS ÄNDERN</x:String>
|
||||||
|
<x:String x:Key="Text.ChangeDisplayMode.Grid" xml:space="preserve">Zeige als Datei- und Ordnerliste</x:String>
|
||||||
|
<x:String x:Key="Text.ChangeDisplayMode.List" xml:space="preserve">Zeige als Pfadliste</x:String>
|
||||||
|
<x:String x:Key="Text.ChangeDisplayMode.Tree" xml:space="preserve">Zeige als Dateisystembaum</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout" xml:space="preserve">Checkout Branch</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.Commit" xml:space="preserve">Checkout Commit</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.Commit.Warning" xml:space="preserve">Warnung: Beim auschecken eines Commits wird dein HEAD detached sein</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.Commit.Target" xml:space="preserve">Commit:</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.Target" xml:space="preserve">Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.LocalChanges" xml:space="preserve">Lokale Änderungen:</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.LocalChanges.Discard" xml:space="preserve">Verwerfen</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.LocalChanges.DoNothing" xml:space="preserve">Nichts tun</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.LocalChanges.StashAndReply" xml:space="preserve">Stash & wieder anwenden</x:String>
|
||||||
|
<x:String x:Key="Text.CherryPick" xml:space="preserve">Diesen Commit cherry-picken</x:String>
|
||||||
|
<x:String x:Key="Text.CherryPick.Commit" xml:space="preserve">Commit:</x:String>
|
||||||
|
<x:String x:Key="Text.CherryPick.CommitChanges" xml:space="preserve">Alle Änderungen committen</x:String>
|
||||||
|
<x:String x:Key="Text.CherryPick.Title" xml:space="preserve">Cherry Pick</x:String>
|
||||||
|
<x:String x:Key="Text.ClearStashes" xml:space="preserve">Stashes löschen</x:String>
|
||||||
|
<x:String x:Key="Text.ClearStashes.Message" xml:space="preserve">Du versuchst alle Stashes zu löschen. Möchtest du wirklich fortfahren?</x:String>
|
||||||
|
<x:String x:Key="Text.Clone" xml:space="preserve">Remote Repository klonen</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.AdditionalParam" xml:space="preserve">Extra Parameter:</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.AdditionalParam.Placeholder" xml:space="preserve">Zusätzliche Argumente für das Klonen des Repositories. Optional.</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.LocalName" xml:space="preserve">Lokaler Name:</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.LocalName.Placeholder" xml:space="preserve">Repository-Name. Optional.</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.ParentFolder" xml:space="preserve">Übergeordneter Ordner:</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.RemoteURL" xml:space="preserve">Repository URL:</x:String>
|
||||||
|
<x:String x:Key="Text.Close" xml:space="preserve">SCHLIESSEN</x:String>
|
||||||
|
<x:String x:Key="Text.CodeEditor" xml:space="preserve">Editor</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.CherryPick" xml:space="preserve">Diesen Commit cherry-picken</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Checkout" xml:space="preserve">Checkout Commit</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.CompareWithHead" xml:space="preserve">Mit HEAD vergleichen</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.CompareWithWorktree" xml:space="preserve">Mit Worktree vergleichen</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.CopyInfo" xml:space="preserve">Info kopieren</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.CopySHA" xml:space="preserve">SHA kopieren</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.InteractiveRebase" xml:space="preserve">Interactives Rebase ${0}$ bis hier</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Rebase" xml:space="preserve">Rebase ${0}$ bis hier</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Reset" xml:space="preserve">Reset ${0}$ bis hier</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Revert" xml:space="preserve">Commit rückgängig machen</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">Umformulieren</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">Als Patch speichern...</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">Squash in den Parent</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">ÄNDERUNGEN</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">Änderungen durchsuchen...</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Files" xml:space="preserve">DATEIEN</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Files.LFS" xml:space="preserve">LFS DATEI</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Files.Submodule" xml:space="preserve">Submodule</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info" xml:space="preserve">INFORMATION</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Author" xml:space="preserve">AUTOR</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Changed" xml:space="preserve">GEÄNDERT</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Committer" xml:space="preserve">COMMITTER</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.GotoChangesPage" xml:space="preserve">Zeigt nur die ersten 100 Änderungen. Alle Änderungen im ÄNDERUNGEN Tab.</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Message" xml:space="preserve">NACHRICHT</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Parents" xml:space="preserve">PARENTS</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Refs" xml:space="preserve">REFS</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.SHA" xml:space="preserve">SHA</x:String>
|
||||||
|
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Commit Nachricht</x:String>
|
||||||
|
<x:String x:Key="Text.CommitMessageTextBox.MessagePlaceholder" xml:space="preserve">Beschreibung</x:String>
|
||||||
|
<x:String x:Key="Text.Configure" xml:space="preserve">Repository konfigurieren</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Email" xml:space="preserve">Email Adresse</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Email.Placeholder" xml:space="preserve">Email Adresse</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Proxy" xml:space="preserve">HTTP Proxy</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Proxy.Placeholder" xml:space="preserve">HTTP proxy für dieses Repository</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.User" xml:space="preserve">Benutzername</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.User.Placeholder" xml:space="preserve">Benutzername für dieses Repository</x:String>
|
||||||
|
<x:String x:Key="Text.Copy" xml:space="preserve">Kopieren</x:String>
|
||||||
|
<x:String x:Key="Text.CopyMessage" xml:space="preserve">NACHRICHT KOPIEREN</x:String>
|
||||||
|
<x:String x:Key="Text.CopyPath" xml:space="preserve">Pfad kopieren</x:String>
|
||||||
|
<x:String x:Key="Text.CopyFileName" xml:space="preserve">Dateiename kopieren</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch" xml:space="preserve">Branch erstellen...</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.BasedOn" xml:space="preserve">Basiert auf:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.Checkout" xml:space="preserve">Erstellten Branch auschecken</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.LocalChanges" xml:space="preserve">Lokale Änderungen:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.LocalChanges.Discard" xml:space="preserve">Verwerfen</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.LocalChanges.DoNothing" xml:space="preserve">Nichts tun</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.LocalChanges.StashAndReply" xml:space="preserve">Stash & wieder anwenden</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.Name" xml:space="preserve">Neuer Branch-Name:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.Name.Placeholder" xml:space="preserve">Branch-Namen eingeben.</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.Title" xml:space="preserve">Lokalen Branch erstellen</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag" xml:space="preserve">Tag erstellen...</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.BasedOn" xml:space="preserve">Neuer Tag auf:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.GPGSign" xml:space="preserve">Mit GPG signieren</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Message" xml:space="preserve">Anmerkung:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Message.Placeholder" xml:space="preserve">Optional.</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Name" xml:space="preserve">Tag-Name:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Name.Placeholder" xml:space="preserve">Empfohlenes Format: v1.0.0-alpha</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.PushToAllRemotes" xml:space="preserve">Nach Erstellung auf alle Remotes pushen</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Title" xml:space="preserve">Erstelle neuen Tag</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Type" xml:space="preserve">Art:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Type.Annotated" xml:space="preserve">Mit Anmerkung</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Type.Lightweight" xml:space="preserve">Ohne Anmerkung</x:String>
|
||||||
|
<x:String x:Key="Text.Cut" xml:space="preserve">Ausschneiden</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteBranch" xml:space="preserve">Branch löschen</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteBranch.Branch" xml:space="preserve">Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteBranch.IsRemoteTip" xml:space="preserve">Du löscht gerade einen Remote-Branch!!!</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteBranch.WithTrackingRemote" xml:space="preserve">Auch Remote-Branch ${0}$ löschen</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteMultiBranch" xml:space="preserve">Mehrere Branches löschen</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteMultiBranch.Tip" xml:space="preserve">Du versuchst mehrere Branches auf einmal zu löschen. Kontrolliere noch einmal vor dem Fortfahren!</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteRemote" xml:space="preserve">Remote löschen</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteRemote.Remote" xml:space="preserve">Remote:</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteRepositoryNode.Target" xml:space="preserve">Ziel:</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteRepositoryNode.TitleForGroup" xml:space="preserve">Bestätige löschen von Gruppe</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteRepositoryNode.TitleForRepository" xml:space="preserve">Bestätige löschen von Repository</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteSubmodule" xml:space="preserve">Lösche Submodul</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteSubmodule.Path" xml:space="preserve">Submodul Pfad:</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteTag" xml:space="preserve">Tag löschen</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteTag.Tag" xml:space="preserve">Tag:</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteTag.WithRemote" xml:space="preserve">Von Remote Repositories löschen</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Binary" xml:space="preserve">BINÄRER VERGLEICH</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Binary.New" xml:space="preserve">NEU</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Binary.Old" xml:space="preserve">ALT</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Copy" xml:space="preserve">Kopieren</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.FileModeChanged" xml:space="preserve">Dateimodus geändert</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.LFS" xml:space="preserve">LFS OBJEKT ÄNDERUNG</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Next" xml:space="preserve">Nächste Änderung</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.NoChange" xml:space="preserve">KEINE ÄNDERUNG ODER NUR DATEI-ENDE ÄNDERUNGEN</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Prev" xml:space="preserve">Vorherige Änderung</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.SideBySide" xml:space="preserve">Nebeneinander</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Submodule" xml:space="preserve">SUBMODUL</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Submodule.New" xml:space="preserve">NEU</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.SyntaxHighlight" xml:space="preserve">Syntax Hervorhebung</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.ToggleWordWrap" xml:space="preserve">Zeilenumbruch</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.UseMerger" xml:space="preserve">Öffne in Merge Tool</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.VisualLines.Decr" xml:space="preserve">Weniger Zeilen anzeigen</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.VisualLines.Incr" xml:space="preserve">Mehr Zeilen anzeigen</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Welcome" xml:space="preserve">WÄHLE EINE DATEI AUS UM ÄNDERUNGEN ANZUZEIGEN</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.ShowHiddenSymbols" xml:space="preserve">Zeige versteckte Symbole</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.SwapCommits" xml:space="preserve">Seiten wechseln</x:String>
|
||||||
|
<x:String x:Key="Text.DiffWithMerger" xml:space="preserve">Öffne in Merge Tool</x:String>
|
||||||
|
<x:String x:Key="Text.Discard" xml:space="preserve">Änderungen verwerfen</x:String>
|
||||||
|
<x:String x:Key="Text.Discard.All" xml:space="preserve">Alle Änderungen in der Working Copy.</x:String>
|
||||||
|
<x:String x:Key="Text.Discard.Changes" xml:space="preserve">Änderungen:</x:String>
|
||||||
|
<x:String x:Key="Text.Discard.Total" xml:space="preserve">Insgesamt {0} Änderungen werden verworfen</x:String>
|
||||||
|
<x:String x:Key="Text.Discard.Warning" xml:space="preserve">Du kannst das nicht rückgängig machen!!!</x:String>
|
||||||
|
<x:String x:Key="Text.EditRepositoryNode.Bookmark" xml:space="preserve">Lesezeichen:</x:String>
|
||||||
|
<x:String x:Key="Text.EditRepositoryNode.Name" xml:space="preserve">Neuer Name:</x:String>
|
||||||
|
<x:String x:Key="Text.EditRepositoryNode.Target" xml:space="preserve">Ziel:</x:String>
|
||||||
|
<x:String x:Key="Text.EditRepositoryNode.TitleForGroup" xml:space="preserve">Ausgewählte Gruppe bearbeiten</x:String>
|
||||||
|
<x:String x:Key="Text.EditRepositoryNode.TitleForRepository" xml:space="preserve">Ausgewähltes Repository bearbeiten</x:String>
|
||||||
|
<x:String x:Key="Text.FastForwardWithoutCheck" xml:space="preserve">Fast-Forward (ohne Checkout)</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch" xml:space="preserve">Fetch</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch.AllRemotes" xml:space="preserve">Alle Remotes fetchen</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch.NoTags" xml:space="preserve">Ohne Tags fetchen</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch.Prune" xml:space="preserve">Alle toten Branches entfernen</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch.Remote" xml:space="preserve">Remote:</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch.Title" xml:space="preserve">Remote Änderungen fetchen</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.AssumeUnchanged" xml:space="preserve">Als unverändert annehmen</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.Discard" xml:space="preserve">Verwerfen...</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.DiscardMulti" xml:space="preserve">Verwerfe {0} Dateien...</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.DiscardSelectedLines" xml:space="preserve">Verwerfe Änderungen in ausgewählten Zeilen</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.OpenWithExternalMerger" xml:space="preserve">Öffne externes Merge Tool</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.SaveAsPatch" xml:space="preserve">Als Patch speichern...</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.Stage" xml:space="preserve">Stagen</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.StageMulti" xml:space="preserve">{0} Dateien stagen</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.StageSelectedLines" xml:space="preserve">Änderungen in ausgewählten Zeilen stagen</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.Stash" xml:space="preserve">Stash...</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.StashMulti" xml:space="preserve">{0} Dateien stashen...</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.Unstage" xml:space="preserve">Unstage</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.UnstageMulti" xml:space="preserve">{0} Dateien nicht mehr stashen</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.UnstageSelectedLines" xml:space="preserve">Änderungen in ausgewählten Zeilen stashen</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.UseTheirs" xml:space="preserve">"Ihre" verwenden (checkout --theirs)</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.UseMine" xml:space="preserve">"Meine" verwenden (checkout --ours)</x:String>
|
||||||
|
<x:String x:Key="Text.FileHistory" xml:space="preserve">Datei Historie</x:String>
|
||||||
|
<x:String x:Key="Text.Filter" xml:space="preserve">FILTER</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow" xml:space="preserve">Git-Flow</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.DevelopBranch" xml:space="preserve">Development Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.Feature" xml:space="preserve">Feature:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.FeaturePrefix" xml:space="preserve">Feature Prefix:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.FinishFeature" xml:space="preserve">FLOW - Finish Feature</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.FinishHotfix" xml:space="preserve">FLOW - Finish Hotfix</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.FinishRelease" xml:space="preserve">FLOW - Finish Release</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.FinishTarget" xml:space="preserve">Ziel:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.Hotfix" xml:space="preserve">Hotfix:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.HotfixPrefix" xml:space="preserve">Hotfix Prefix:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.Init" xml:space="preserve">Git-Flow initialisieren</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.KeepBranchAfterFinish" xml:space="preserve">Branch behalten</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.ProductionBranch" xml:space="preserve">Production Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.Release" xml:space="preserve">Release:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.ReleasePrefix" xml:space="preserve">Release Prefix:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartFeature" xml:space="preserve">Feature starten...</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartFeatureTitle" xml:space="preserve">FLOW - Feature starten</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartHotfix" xml:space="preserve">Hotfix starten...</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartHotfixTitle" xml:space="preserve">FLOW - Hotfix starten</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartPlaceholder" xml:space="preserve">Name eingeben</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartRelease" xml:space="preserve">Release starten...</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartReleaseTitle" xml:space="preserve">FLOW - Release starten</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.TagPrefix" xml:space="preserve">Versions-Tag Prefix:</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS" xml:space="preserve">Git LFS</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.AddTrackPattern" xml:space="preserve">Verfolgungsmuster hinzufügen...</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.AddTrackPattern.IsFilename" xml:space="preserve">Muster ist Dateiname</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.AddTrackPattern.Pattern" xml:space="preserve">Eigenes Muster:</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.AddTrackPattern.Title" xml:space="preserve">Verfolgungsmuster zu Git LFS hinzufügen</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Fetch" xml:space="preserve">Fetch</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Fetch.Title" xml:space="preserve">LFS Objecte fetchen</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Fetch.Tips" xml:space="preserve">Führt `git lfs fetch` aus um Git LFS Objekte herunterzuladen. Das aktualisiert nicht die Working Copy.</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Install" xml:space="preserve">Installiere Git LFS Hooks</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks" xml:space="preserve">Sperren zeigen</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks.Empty" xml:space="preserve">Keine gesperrten Dateien</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks.Lock" xml:space="preserve">Sperre</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks.Title" xml:space="preserve">LFS Sperren</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks.Unlock" xml:space="preserve">Entsperren</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks.UnlockForce" xml:space="preserve">Erzwinge entsperren</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Prune" xml:space="preserve">Prune</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Prune.Tips" xml:space="preserve">Führt `git lfs prune` aus um alte LFS Dateien von lokalem Speicher zu löschen</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Pull" xml:space="preserve">Pull</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Pull.Title" xml:space="preserve">LFS Objekte pullen</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Pull.Tips" xml:space="preserve">Führt `git lfs pull` aus um alle Git LFS Dasteien für aktuellen Ref & Checkout herunterzuladen</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Push" xml:space="preserve">Push</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Push.Title" xml:space="preserve">LFS Objekte pushen</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Push.Tips" xml:space="preserve">Pushe große Dateien in der Warteschlange zum Git LFS Endpunkt</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Remote" xml:space="preserve">Remote:</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Track" xml:space="preserve">Verfolge Dateien names '{0}'</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.TrackByExtension" xml:space="preserve">Verfolge alle *{0} Dateien</x:String>
|
||||||
|
<x:String x:Key="Text.Histories" xml:space="preserve">Historie</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.DisplayMode" xml:space="preserve">Wechsle zwischen horizontalem und vertikalem Layout</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.GraphMode" xml:space="preserve">Wechsle zwischen Kurven- und Konturgraphenmodus</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Header.Author" xml:space="preserve">AUTOR</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Header.GraphAndSubject" xml:space="preserve">GRAPH & SUBJEKT</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Header.SHA" xml:space="preserve">SHA</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Header.Time" xml:space="preserve">COMMIT ZEIT</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Search" xml:space="preserve">DURCHSUCHE SHA/SUBJEKT/AUTOR. DRÜCKE ZUM SUCHEN ENTER, ESC UM ABZUBRECHEN</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.SearchClear" xml:space="preserve">LÖSCHEN</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Selected" xml:space="preserve">{0} COMMITS AUSGEWÄHLT</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys" xml:space="preserve">Tastaturkürzel Referenz</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global" xml:space="preserve">GLOBAL</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.CancelPopup" xml:space="preserve">Aktuelles Popup abbrechen</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.CloseTab" xml:space="preserve">Aktuelle Seite schließen</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.GotoPrevTab" xml:space="preserve">Zu vorheriger Seite gehen</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.GotoNextTab" xml:space="preserve">Zu nächster Seite gehen</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.NewTab" xml:space="preserve">Neue Seite erstellen</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.OpenPreference" xml:space="preserve">Einstellungen öffnen</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo" xml:space="preserve">REPOSITORY</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.Commit" xml:space="preserve">Gestagte Änderungen committen</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.CommitAndPush" xml:space="preserve">Gestagte Änderungen Committen und pushen</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.GoHome" xml:space="preserve">Dashboard Modus (Standard)</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.Refresh" xml:space="preserve">Erzwinge Neuladen dieses Repositorys</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.StageOrUnstageSelected" xml:space="preserve">Ausgewählte Änderungen stagen/unstagen</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.OpenSearchCommits" xml:space="preserve">Commit Suchmodus</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.ViewChanges" xml:space="preserve">Wechsle zu 'Änderungen'</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.ViewHistories" xml:space="preserve">Wechsle zu 'Historie'</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.ViewStashes" xml:space="preserve">Wechsle zu 'Stashes'</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.TextEditor" xml:space="preserve">TEXT EDITOR</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.TextEditor.CloseSearch" xml:space="preserve">Suchpanel schließen</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.TextEditor.GotoNextMatch" xml:space="preserve">Suche nächste Übereinstimmung</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.TextEditor.GotoPrevMatch" xml:space="preserve">Suche vorherige Übereinstimmung</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.TextEditor.Search" xml:space="preserve">Öffne Suchpanel</x:String>
|
||||||
|
<x:String x:Key="Text.Hunk.Stage" xml:space="preserve">Stagen</x:String>
|
||||||
|
<x:String x:Key="Text.Hunk.Unstage" xml:space="preserve">Unstagen</x:String>
|
||||||
|
<x:String x:Key="Text.Hunk.Discard" xml:space="preserve">Verwerfen</x:String>
|
||||||
|
<x:String x:Key="Text.Init" xml:space="preserve">Initialisiere Repository</x:String>
|
||||||
|
<x:String x:Key="Text.Init.Path" xml:space="preserve">Pfad:</x:String>
|
||||||
|
<x:String x:Key="Text.Init.Tip" xml:space="preserve">Ungültiges Repository erkannt. `git init` auf diesem Pfad ausführen?</x:String>
|
||||||
|
<x:String x:Key="Text.InProgress.CherryPick" xml:space="preserve">Cherry-Pick wird durchgeführt. Drücke 'Abbrechen' um den originalen HEAD wiederherzustellen.</x:String>
|
||||||
|
<x:String x:Key="Text.InProgress.Merge" xml:space="preserve">Merge request wird durchgeführt. Drücke 'Abbrechen' um den originalen HEAD wiederherzustellen.</x:String>
|
||||||
|
<x:String x:Key="Text.InProgress.Rebase" xml:space="preserve">Rebase wird durchgeführt. Drücke 'Abbrechen' um den originalen HEAD wiederherzustellen.</x:String>
|
||||||
|
<x:String x:Key="Text.InProgress.Revert" xml:space="preserve">Revert wird durchgeführt. Drücke 'Abbrechen' um den originalen HEAD wiederherzustellen.</x:String>
|
||||||
|
<x:String x:Key="Text.InteractiveRebase" xml:space="preserve">Interactiver Rebase</x:String>
|
||||||
|
<x:String x:Key="Text.InteractiveRebase.Target" xml:space="preserve">Ziel Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.InteractiveRebase.On" xml:space="preserve">Auf:</x:String>
|
||||||
|
<x:String x:Key="Text.InteractiveRebase.MoveUp" xml:space="preserve">Hinaufschieben</x:String>
|
||||||
|
<x:String x:Key="Text.InteractiveRebase.MoveDown" xml:space="preserve">Hinunterschieben</x:String>
|
||||||
|
<x:String x:Key="Text.Launcher" xml:space="preserve">Source Git</x:String>
|
||||||
|
<x:String x:Key="Text.Launcher.Error" xml:space="preserve">FEHLER</x:String>
|
||||||
|
<x:String x:Key="Text.Launcher.Info" xml:space="preserve">INFO</x:String>
|
||||||
|
<x:String x:Key="Text.Launcher.Menu" xml:space="preserve">Hauptmenü öffnen</x:String>
|
||||||
|
<x:String x:Key="Text.Merge" xml:space="preserve">Branch mergen</x:String>
|
||||||
|
<x:String x:Key="Text.Merge.Into" xml:space="preserve">Ziel-Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.Merge.Mode" xml:space="preserve">Merge Option:</x:String>
|
||||||
|
<x:String x:Key="Text.Merge.Source" xml:space="preserve">Quell-Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.Name" xml:space="preserve">Name:</x:String>
|
||||||
|
<x:String x:Key="Text.NotConfigured" xml:space="preserve">Git wurde NICHT konfiguriert. Gehe bitte zuerst in die [Einstellungen] und konfiguriere Git.</x:String>
|
||||||
|
<x:String x:Key="Text.Notice" xml:space="preserve">BENACHRICHTIGUNG</x:String>
|
||||||
|
<x:String x:Key="Text.OpenFolder" xml:space="preserve">ORDNER AUSWÄHLEN</x:String>
|
||||||
|
<x:String x:Key="Text.OpenWith" xml:space="preserve">Öffne mit...</x:String>
|
||||||
|
<x:String x:Key="Text.Optional" xml:space="preserve">Optional.</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.New" xml:space="preserve">Neue Seite erstellen</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Tab.Bookmark" xml:space="preserve">Lesezeichen</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Tab.Close" xml:space="preserve">Tab schließen</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">Schließe andere Tabs</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">Schließe Tabs rechts davon</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">Kopiere Repository-Pfad</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">Repositories</x:String>
|
||||||
|
<x:String x:Key="Text.Paste" xml:space="preserve">Einfügen</x:String>
|
||||||
|
<x:String x:Key="Text.Period.JustNow" xml:space="preserve">Gerade eben</x:String>
|
||||||
|
<x:String x:Key="Text.Period.MinutesAgo" xml:space="preserve">Vor {0} Minuten</x:String>
|
||||||
|
<x:String x:Key="Text.Period.HoursAgo" xml:space="preserve">Vor {0} Stunden</x:String>
|
||||||
|
<x:String x:Key="Text.Period.Yesterday" xml:space="preserve">Gestern</x:String>
|
||||||
|
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">Vor {0} Tagen</x:String>
|
||||||
|
<x:String x:Key="Text.Period.LastMonth" xml:space="preserve">Letzter Monat</x:String>
|
||||||
|
<x:String x:Key="Text.Period.MonthsAgo" xml:space="preserve">Vor {0} Monaten</x:String>
|
||||||
|
<x:String x:Key="Text.Period.LastYear" xml:space="preserve">Leztes Jahr</x:String>
|
||||||
|
<x:String x:Key="Text.Period.YearsAgo" xml:space="preserve">Vor {0} Jahren</x:String>
|
||||||
|
<x:String x:Key="Text.Preference" xml:space="preserve">Einstellungen</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance" xml:space="preserve">OBERFLÄCHE</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.DefaultFont" xml:space="preserve">Standardschriftart</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.DefaultFontSize" xml:space="preserve">Standard Schriftgröße</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.MonospaceFont" xml:space="preserve">Monospace Schriftart</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">Design</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.ThemeOverrides" xml:space="preserve">Design Überbrückung</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General" xml:space="preserve">ALLGEMEIN</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.AvatarServer" xml:space="preserve">Avatar Server</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.Check4UpdatesOnStartup" xml:space="preserve">Beim Starten nach Updates suchen</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.Locale" xml:space="preserve">Sprache</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.MaxHistoryCommits" xml:space="preserve">Commits Historie</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.RestoreTabs" xml:space="preserve">Zuletzt geöffnete Tabs beim Starten wiederherstellen</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.SubjectGuideLength" xml:space="preserve">Betreff Hilfslinienlänge</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.UseFixedTabWidth" xml:space="preserve">Fixe Tab-Breite in Titelleiste</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.VisibleDiffContextLines" xml:space="preserve">Sichtbare Vergleichskontextzeilen</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git" xml:space="preserve">GIT</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.AutoFetch" xml:space="preserve">Remotes automatisch fetchen</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.AutoFetchInterval" xml:space="preserve">Auto-Fetch Interval</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.AutoFetchIntervalSuffix" xml:space="preserve">Minute(n)</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.CRLF" xml:space="preserve">Aktiviere Auto-CRLF</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.DefaultCloneDir" xml:space="preserve">Standard Klon-Ordner</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Email" xml:space="preserve">Benutzer Email</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Email.Placeholder" xml:space="preserve">Globale Git Benutzer Email</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Path" xml:space="preserve">Installationspfad</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Shell" xml:space="preserve">Shell</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.User" xml:space="preserve">Benutzername</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.User.Placeholder" xml:space="preserve">Globaler Git Benutzername</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Version" xml:space="preserve">Git Version</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Invalid" xml:space="preserve">Git (>= 2.23.0) wird von dieser App benötigt</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG" xml:space="preserve">GPG SIGNIERUNG</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.CommitEnabled" xml:space="preserve">Commit GPG Signierung</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.TagEnabled" xml:space="preserve">Tag GPG Signierung</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.Format" xml:space="preserve">GPG Format</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.Path" xml:space="preserve">Program Installspfad</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.Path.Placeholder" xml:space="preserve">Gebe Installationspfad zu installiertem GPG Programm an</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.UserKey" xml:space="preserve">Benutzer Signierungsschlüssel</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.UserKey.Placeholder" xml:space="preserve">Benutzer GPG Signierungsschlüssel</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.DiffMerge" xml:space="preserve">DIFF/MERGE TOOL</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.DiffMerge.Path" xml:space="preserve">Installspfad</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.DiffMerge.Path.Placeholder" xml:space="preserve">Gebe Installationspfad von Diff/Merge Tool an</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.DiffMerge.Type" xml:space="preserve">Tool</x:String>
|
||||||
|
<x:String x:Key="Text.PruneRemote" xml:space="preserve">Remote löschen</x:String>
|
||||||
|
<x:String x:Key="Text.PruneRemote.Target" xml:space="preserve">Ziel:</x:String>
|
||||||
|
<x:String x:Key="Text.PruneWorktrees" xml:space="preserve">Worktrees löschen</x:String>
|
||||||
|
<x:String x:Key="Text.PruneWorktrees.Tip" xml:space="preserve">Worktree Informationen in `$GIT_DIR/worktrees` löschen</x:String>
|
||||||
|
<x:String x:Key="Text.Pull" xml:space="preserve">Pull</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.Branch" xml:space="preserve">Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.FetchAllBranches" xml:space="preserve">Alle Branches fetchen</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.Into" xml:space="preserve">Ziel-Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.LocalChanges" xml:space="preserve">Lokale Änderungen:</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.LocalChanges.Discard" xml:space="preserve">Verwerfen</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.LocalChanges.DoNothing" xml:space="preserve">Nichts tun</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.LocalChanges.StashAndReply" xml:space="preserve">Stashen & wieder anwenden</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.NoTags" xml:space="preserve">Ohne Tags fetchen</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.Remote" xml:space="preserve">Remote:</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.Title" xml:space="preserve">Pull (Fetch & Merge)</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.UseRebase" xml:space="preserve">Rebase anstatt Merge</x:String>
|
||||||
|
<x:String x:Key="Text.Push" xml:space="preserve">Push</x:String>
|
||||||
|
<x:String x:Key="Text.Push.Force" xml:space="preserve">Erzwinge Push</x:String>
|
||||||
|
<x:String x:Key="Text.Push.Local" xml:space="preserve">Lokaler Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.Push.Remote" xml:space="preserve">Remote:</x:String>
|
||||||
|
<x:String x:Key="Text.Push.Title" xml:space="preserve">Änderungen zum Remote pushen</x:String>
|
||||||
|
<x:String x:Key="Text.Push.To" xml:space="preserve">Remote Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">Als verfogender Branch konfigurieren</x:String>
|
||||||
|
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">Alle Tags pushen</x:String>
|
||||||
|
<x:String x:Key="Text.PushTag" xml:space="preserve">Tag zum Remote pushen</x:String>
|
||||||
|
<x:String x:Key="Text.PushTag.PushAllRemotes" xml:space="preserve">Zu allen Remotes pushen</x:String>
|
||||||
|
<x:String x:Key="Text.PushTag.Remote" xml:space="preserve">Remote:</x:String>
|
||||||
|
<x:String x:Key="Text.PushTag.Tag" xml:space="preserve">Tag:</x:String>
|
||||||
|
<x:String x:Key="Text.Quit" xml:space="preserve">Schließen</x:String>
|
||||||
|
<x:String x:Key="Text.Rebase" xml:space="preserve">Aktuellen Branch rebasen</x:String>
|
||||||
|
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">Lokale Änderungen stashen & wieder anwenden</x:String>
|
||||||
|
<x:String x:Key="Text.Rebase.On" xml:space="preserve">Auf:</x:String>
|
||||||
|
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">Rebase:</x:String>
|
||||||
|
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">Aktualisieren</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">Remote hinzufügen</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">Remote bearbeiten</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.Name" xml:space="preserve">Name:</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.Name.Placeholder" xml:space="preserve">Remote Name</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.URL" xml:space="preserve">Repository URL:</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.URL.Placeholder" xml:space="preserve">Remote Git Repository URL</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.CopyURL" xml:space="preserve">URL kopieren</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.Delete" xml:space="preserve">Löschen...</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.Edit" xml:space="preserve">Bearbeiten...</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.Fetch" xml:space="preserve">Fetch</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.OpenInBrowser" xml:space="preserve">Im Browser öffnen</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.Prune" xml:space="preserve">Aufräumen (Prune)</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.Prune.Target" xml:space="preserve">Ziel:</x:String>
|
||||||
|
<x:String x:Key="Text.RemoveWorktree" xml:space="preserve">Bestätige das entfernen des Worktrees</x:String>
|
||||||
|
<x:String x:Key="Text.RemoveWorktree.Force" xml:space="preserve">Aktiviere `--force` Option</x:String>
|
||||||
|
<x:String x:Key="Text.RemoveWorktree.Target" xml:space="preserve">Ziel:</x:String>
|
||||||
|
<x:String x:Key="Text.RenameBranch" xml:space="preserve">Branch umbenennen</x:String>
|
||||||
|
<x:String x:Key="Text.RenameBranch.Name" xml:space="preserve">Neuer Name:</x:String>
|
||||||
|
<x:String x:Key="Text.RenameBranch.Name.Placeholder" xml:space="preserve">Eindeutiger Name für diesen Branch</x:String>
|
||||||
|
<x:String x:Key="Text.RenameBranch.Target" xml:space="preserve">Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Abort" xml:space="preserve">ABBRECHEN</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Clean" xml:space="preserve">Aufräumen (GC & Prune)</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.CleanTips" xml:space="preserve">Führt `git gc` auf diesem Repository aus.</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.ClearAllCommitsFilter" xml:space="preserve">Alles löschen</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">Dieses Repository konfigureren</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">WEITER</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">Repository im Datei-Browser öffnen</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.FilterCommitPrefix" xml:space="preserve">GEFILTERT:</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">LOKALE BRANCHES</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">Zum HEAD wechseln</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.NewBranch" xml:space="preserve">Erstelle Branch</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.OpenIn" xml:space="preserve">Öffne in {0}</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.OpenWithExternalTools" xml:space="preserve">Öffne in externen Tools</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Refresh" xml:space="preserve">Aktualisiern</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Remotes" xml:space="preserve">REMOTES</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Remotes.Add" xml:space="preserve">REMOTE HINZUFÜGEN</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Resolve" xml:space="preserve">AUFLÖSEN</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search" xml:space="preserve">Commit suchen</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search.By" xml:space="preserve">Suche über</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search.ByFile" xml:space="preserve">Datei</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search.ByMessage" xml:space="preserve">Nachricht</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search.BySHA" xml:space="preserve">SHA</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search.ByUser" xml:space="preserve">Autor & Committer</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.SearchBranchTag" xml:space="preserve">Duche Branches & Tags</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">Statistiken</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">SUBMODULE</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Submodules.Add" xml:space="preserve">SUBMODUL HINZUFÜGEN</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Submodules.Update" xml:space="preserve">SUBMODUL AKTUALISIEREN</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Tags" xml:space="preserve">TAGS</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Tags.Add" xml:space="preserve">NEUER TAG</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Terminal" xml:space="preserve">Öffne im Terminal</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Worktrees" xml:space="preserve">WORKTREES</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Worktrees.Add" xml:space="preserve">WORKTREE HINZUFÜGEN</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Worktrees.Prune" xml:space="preserve">AUFRÄUMEN (PRUNE)</x:String>
|
||||||
|
<x:String x:Key="Text.RepositoryURL" xml:space="preserve">Git Repository URL</x:String>
|
||||||
|
<x:String x:Key="Text.Reset" xml:space="preserve">Aktuellen Branch auf Revision zurücksetzen</x:String>
|
||||||
|
<x:String x:Key="Text.Reset.Mode" xml:space="preserve">Rücksetzmodus:</x:String>
|
||||||
|
<x:String x:Key="Text.Reset.MoveTo" xml:space="preserve">Verschiebe zu:</x:String>
|
||||||
|
<x:String x:Key="Text.Reset.Target" xml:space="preserve">Aktueller Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.RevealFile" xml:space="preserve">Zeige im Datei Explorer</x:String>
|
||||||
|
<x:String x:Key="Text.Revert" xml:space="preserve">Commit umkehren</x:String>
|
||||||
|
<x:String x:Key="Text.Revert.Commit" xml:space="preserve">Commit:</x:String>
|
||||||
|
<x:String x:Key="Text.Revert.CommitChanges" xml:space="preserve">Commit Änderungen umkehren</x:String>
|
||||||
|
<x:String x:Key="Text.Reword" xml:space="preserve">Commit Nachricht umformulieren</x:String>
|
||||||
|
<x:String x:Key="Text.Reword.Tip" xml:space="preserve">Verwende 'Shift+Enter' um eine neue Zeile einzufügen. 'Enter' ist das Kürzl für den OK Button</x:String>
|
||||||
|
<x:String x:Key="Text.Running" xml:space="preserve">Läuft. Bitte warten...</x:String>
|
||||||
|
<x:String x:Key="Text.Save" xml:space="preserve">SPEICHERN</x:String>
|
||||||
|
<x:String x:Key="Text.SaveAs" xml:space="preserve">Speichern als...</x:String>
|
||||||
|
<x:String x:Key="Text.SaveAsPatchSuccess" xml:space="preserve">Patch wurde erfolgreich gespeichert!</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate" xml:space="preserve">Suche nach Updates...</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.Available" xml:space="preserve">Neue Version ist verfügbar: </x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.Error" xml:space="preserve">Suche nach Updates fehlgeschlagen!</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.GotoDownload" xml:space="preserve">Download</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.IgnoreThisVersion" xml:space="preserve">Diese Version überspringen</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.Title" xml:space="preserve">Software Update</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.UpToDate" xml:space="preserve">Es sind momentan kein Updates verfügbar.</x:String>
|
||||||
|
<x:String x:Key="Text.Squash" xml:space="preserve">Squash HEAD In Parent</x:String>
|
||||||
|
<x:String x:Key="Text.SSHKey" xml:space="preserve">SSH privater Schlüssel:</x:String>
|
||||||
|
<x:String x:Key="Text.SSHKey.Placeholder" xml:space="preserve">Pfad zum privaten SSH Schlüssel</x:String>
|
||||||
|
<x:String x:Key="Text.Start" xml:space="preserve">START</x:String>
|
||||||
|
<x:String x:Key="Text.Stash" xml:space="preserve">Stash</x:String>
|
||||||
|
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Inklusive nicht-verfolgter Dateien</x:String>
|
||||||
|
<x:String x:Key="Text.Stash.Message" xml:space="preserve">Nachricht:</x:String>
|
||||||
|
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Optional. Name dieses Stashes</x:String>
|
||||||
|
<x:String x:Key="Text.Stash.Title" xml:space="preserve">Lokale Änderugen stashen</x:String>
|
||||||
|
<x:String x:Key="Text.StashCM.Apply" xml:space="preserve">Anwenden</x:String>
|
||||||
|
<x:String x:Key="Text.StashCM.Drop" xml:space="preserve">Entfernen</x:String>
|
||||||
|
<x:String x:Key="Text.StashCM.Pop" xml:space="preserve">Anwenden und entfernen</x:String>
|
||||||
|
<x:String x:Key="Text.StashDropConfirm" xml:space="preserve">Stash entfernen</x:String>
|
||||||
|
<x:String x:Key="Text.StashDropConfirm.Label" xml:space="preserve">Entfernen:</x:String>
|
||||||
|
<x:String x:Key="Text.Stashes" xml:space="preserve">Stashes</x:String>
|
||||||
|
<x:String x:Key="Text.Stashes.Changes" xml:space="preserve">ÄNDERUNGEN</x:String>
|
||||||
|
<x:String x:Key="Text.Stashes.Stashes" xml:space="preserve">STASHES</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics" xml:space="preserve">Statistiken</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.CommitAmount" xml:space="preserve">COMMITS</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.Committer" xml:space="preserve">COMMITTER</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.ThisMonth" xml:space="preserve">MONAT</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.ThisWeek" xml:space="preserve">WOCHE</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.ThisYear" xml:space="preserve">JAHR</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.TotalCommits" xml:space="preserve">COMMITS: </x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.TotalCommitters" xml:space="preserve">COMMITTERS: </x:String>
|
||||||
|
<x:String x:Key="Text.Submodule" xml:space="preserve">SUBMODUL</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.Add" xml:space="preserve">Submodul hinzufügen</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.CopyPath" xml:space="preserve">Relativen Pfad kopieren</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.FetchNested" xml:space="preserve">Untergeordnete Submodule fetchen</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.Open" xml:space="preserve">Öffne Submodul Repository</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.RelativePath" xml:space="preserve">Relativer Pfad:</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.RelativePath.Placeholder" xml:space="preserve">Relativer Ordner um dieses Submodul zu speichern.</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.Remove" xml:space="preserve">Submodul löschen</x:String>
|
||||||
|
<x:String x:Key="Text.Sure" xml:space="preserve">OK</x:String>
|
||||||
|
<x:String x:Key="Text.TagCM.Copy" xml:space="preserve">Tag-Namen kopieren</x:String>
|
||||||
|
<x:String x:Key="Text.TagCM.Delete" xml:space="preserve">Lösche ${0}$...</x:String>
|
||||||
|
<x:String x:Key="Text.TagCM.Push" xml:space="preserve">${0}$ pushen...</x:String>
|
||||||
|
<x:String x:Key="Text.URL" xml:space="preserve">URL:</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules" xml:space="preserve">Submodule aktualisieren</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules.All" xml:space="preserve">Alle Submodule</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules.Init" xml:space="preserve">Initialisiere wenn nötig</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules.Recursive" xml:space="preserve">Rekursiv</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules.Target" xml:space="preserve">Submodul:</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules.UseRemote" xml:space="preserve">Verwende `--remote` Option</x:String>
|
||||||
|
<x:String x:Key="Text.Warn" xml:space="preserve">Warnung</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.AddRootFolder" xml:space="preserve">Erstelle Gruppe</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.AddSubFolder" xml:space="preserve">Erstelle Untergruppe</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.Clone" xml:space="preserve">Klone Repository</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.Delete" xml:space="preserve">Lösche</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.DragDropTip" xml:space="preserve">DRAG & DROP VON ORDNER UNTERSTÜTZT. ANGEPASSTE GRUPPIERUNG UNTERSTÜTZT.</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.Edit" xml:space="preserve">Bearbeiten</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.OpenAllInNode" xml:space="preserve">Öffne alle Repositories</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.OpenOrInit" xml:space="preserve">Öffne Repository</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.OpenTerminal" xml:space="preserve">Öffne Terminal</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.Search" xml:space="preserve">Suche Repositories...</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.Sort" xml:space="preserve">Sortieren</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy" xml:space="preserve">Änderungen</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore" xml:space="preserve">Git Ignore</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.Extension" xml:space="preserve">Ignoriere alle *{0} Dateien</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.ExtensionInSameFolder" xml:space="preserve">Ignoriere *{0} Datein im selben Ordner</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.InSameFolder" xml:space="preserve">Ignoriere Dateien im selben Ordner</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.SingleFile" xml:space="preserve">Ignoriere nur diese Datei</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Amend" xml:space="preserve">Amend</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AutoStage" xml:space="preserve">Auto-Stage</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AutoStage.Tip" xml:space="preserve">Weise den Befehl an automatisch Dateien zu stagen die verändert und modifiziert wurden, aber für Git unbekannte Dateien sind davon unberührt.</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.CanStageTip" xml:space="preserve">Du kannst diese Datei jetzt stagen.</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Commit" xml:space="preserve">COMMIT</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.CommitAndPush" xml:space="preserve">COMMIT & PUSH</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.CommitTip" xml:space="preserve">STRG + Enter</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">KONFLIKTE ERKANNT</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">DATEI KONFLIKTE GELÖST</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.HasCommitHistories" xml:space="preserve">LETZTE COMMIT NACHRICHTEN</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.IncludeUntracked" xml:space="preserve">NICHT-VERFOLGTE DATEIEN INKLUDIEREN</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.MessageHistories" xml:space="preserve">NACHRICHTEN HISTORIE</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.NoCommitHistories" xml:space="preserve">KEINE BISHERIGEN COMMIT NACHRICHTEN</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Staged" xml:space="preserve">GESTAGED</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Staged.Unstage" xml:space="preserve">UNSTAGEN</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Staged.UnstageAll" xml:space="preserve">ALLES UNSTAGEN</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">UNSTAGED</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">STAGEN</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">ALLES STAGEN</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">UNVERÄNDERTE ANZEIGEN</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.ResolveTip" xml:space="preserve">Rechtsklick auf selektierte Dateien und wähle die Konfliktlösungen aus.</x:String>
|
||||||
|
<x:String x:Key="Text.Worktree" xml:space="preserve">WORKTREE</x:String>
|
||||||
|
<x:String x:Key="Text.Worktree.CopyPath" xml:space="preserve">Path kopieren</x:String>
|
||||||
|
<x:String x:Key="Text.Worktree.Lock" xml:space="preserve">Sperren</x:String>
|
||||||
|
<x:String x:Key="Text.Worktree.Remove" xml:space="preserve">Entfernen</x:String>
|
||||||
|
<x:String x:Key="Text.Worktree.Unlock" xml:space="preserve">Entsperren</x:String>
|
||||||
|
</ResourceDictionary>
|
|
@ -360,6 +360,7 @@
|
||||||
<x:String x:Key="Text.Preference.Appearance.DefaultFont" xml:space="preserve">Default Font</x:String>
|
<x:String x:Key="Text.Preference.Appearance.DefaultFont" xml:space="preserve">Default Font</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.DefaultFontSize" xml:space="preserve">Default Font Size</x:String>
|
<x:String x:Key="Text.Preference.Appearance.DefaultFontSize" xml:space="preserve">Default Font Size</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.MonospaceFont" xml:space="preserve">Monospace Font</x:String>
|
<x:String x:Key="Text.Preference.Appearance.MonospaceFont" xml:space="preserve">Monospace Font</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.OnlyUseMonoFontInEditor" xml:space="preserve">Only use monospace font in text editor</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">Theme</x:String>
|
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">Theme</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.ThemeOverrides" xml:space="preserve">Theme Overrides</x:String>
|
<x:String x:Key="Text.Preference.Appearance.ThemeOverrides" xml:space="preserve">Theme Overrides</x:String>
|
||||||
<x:String x:Key="Text.Preference.General" xml:space="preserve">GENERAL</x:String>
|
<x:String x:Key="Text.Preference.General" xml:space="preserve">GENERAL</x:String>
|
||||||
|
@ -552,6 +553,7 @@
|
||||||
<x:String x:Key="Text.UpdateSubmodules.Target" xml:space="preserve">Submodule:</x:String>
|
<x:String x:Key="Text.UpdateSubmodules.Target" xml:space="preserve">Submodule:</x:String>
|
||||||
<x:String x:Key="Text.UpdateSubmodules.UseRemote" xml:space="preserve">Use --remote option</x:String>
|
<x:String x:Key="Text.UpdateSubmodules.UseRemote" xml:space="preserve">Use --remote option</x:String>
|
||||||
<x:String x:Key="Text.Warn" xml:space="preserve">Warning</x:String>
|
<x:String x:Key="Text.Warn" xml:space="preserve">Warning</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome" xml:space="preserve">Welcome Page</x:String>
|
||||||
<x:String x:Key="Text.Welcome.AddRootFolder" xml:space="preserve">Create Group</x:String>
|
<x:String x:Key="Text.Welcome.AddRootFolder" xml:space="preserve">Create Group</x:String>
|
||||||
<x:String x:Key="Text.Welcome.AddSubFolder" xml:space="preserve">Create Sub-Group</x:String>
|
<x:String x:Key="Text.Welcome.AddSubFolder" xml:space="preserve">Create Sub-Group</x:String>
|
||||||
<x:String x:Key="Text.Welcome.Clone" xml:space="preserve">Clone Repository</x:String>
|
<x:String x:Key="Text.Welcome.Clone" xml:space="preserve">Clone Repository</x:String>
|
||||||
|
|
600
src/Resources/Locales/pt_BR.axaml
Normal file
|
@ -0,0 +1,600 @@
|
||||||
|
<ResourceDictionary xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||||
|
<ResourceDictionary.MergedDictionaries>
|
||||||
|
<ResourceInclude Source="avares://SourceGit/Resources/Locales/en_US.axaml"/>
|
||||||
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
<x:String x:Key="Text.About" xml:space="preserve">Sobre</x:String>
|
||||||
|
<x:String x:Key="Text.About.Menu" xml:space="preserve">Sobre o SourceGit</x:String>
|
||||||
|
<x:String x:Key="Text.About.BuildWith" xml:space="preserve">• Construído com </x:String>
|
||||||
|
<x:String x:Key="Text.About.Copyright" xml:space="preserve">© 2024 sourcegit-scm</x:String>
|
||||||
|
<x:String x:Key="Text.About.Editor" xml:space="preserve">• Editor de Texto de </x:String>
|
||||||
|
<x:String x:Key="Text.About.Fonts" xml:space="preserve">• Fontes monoespaçadas de </x:String>
|
||||||
|
<x:String x:Key="Text.About.SourceCode" xml:space="preserve">• Código-fonte pode ser encontrado em </x:String>
|
||||||
|
<x:String x:Key="Text.About.SubTitle" xml:space="preserve">Cliente Git GUI Livre e de Código Aberto</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree" xml:space="preserve">Adicionar Worktree</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.WhatToCheckout" xml:space="preserve">O que Checar:</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.WhatToCheckout.Existing" xml:space="preserve">Branch Existente</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.WhatToCheckout.CreateNew" xml:space="preserve">Criar Nova Branch</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Location" xml:space="preserve">Localização:</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Location.Placeholder" xml:space="preserve">Caminho para este worktree. Caminho relativo é suportado.</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Name" xml:space="preserve">Nome da Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Name.Placeholder" xml:space="preserve">Opcional. O padrão é o nome da pasta de destino.</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Tracking" xml:space="preserve">Rastrear Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.AddWorktree.Tracking.Toggle" xml:space="preserve">Rastreando branch remota</x:String>
|
||||||
|
<x:String x:Key="Text.Apply" xml:space="preserve">Patch</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.Error" xml:space="preserve">Erro</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.Error.Desc" xml:space="preserve">Erros levantados e se recusa a aplicar o patch</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.ErrorAll" xml:space="preserve">Erro Total</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.ErrorAll.Desc" xml:space="preserve">Semelhante a 'erro', mas mostra mais</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.File" xml:space="preserve">Arquivo de Patch:</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.File.Placeholder" xml:space="preserve">Selecione o arquivo .patch para aplicar</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.IgnoreWS" xml:space="preserve">Ignorar mudanças de espaço em branco</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.NoWarn" xml:space="preserve">Sem Aviso</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.NoWarn.Desc" xml:space="preserve">Desativa o aviso de espaço em branco no final</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.Title" xml:space="preserve">Aplicar Patch</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.Warn" xml:space="preserve">Aviso</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.Warn.Desc" xml:space="preserve">Emite avisos para alguns erros, mas aplica</x:String>
|
||||||
|
<x:String x:Key="Text.Apply.WS" xml:space="preserve">Espaço em Branco:</x:String>
|
||||||
|
<x:String x:Key="Text.Archive" xml:space="preserve">Arquivar...</x:String>
|
||||||
|
<x:String x:Key="Text.Archive.File" xml:space="preserve">Salvar Arquivo Como:</x:String>
|
||||||
|
<x:String x:Key="Text.Archive.File.Placeholder" xml:space="preserve">Selecione o caminho do arquivo de arquivo</x:String>
|
||||||
|
<x:String x:Key="Text.Archive.Revision" xml:space="preserve">Revisão:</x:String>
|
||||||
|
<x:String x:Key="Text.Archive.Title" xml:space="preserve">Arquivar</x:String>
|
||||||
|
<x:String x:Key="Text.Askpass" xml:space="preserve">SourceGit Askpass</x:String>
|
||||||
|
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">ARQUIVOS ASSUMIDOS COMO INALTERADOS</x:String>
|
||||||
|
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">NENHUM ARQUIVO ASSUMIDO COMO INALTERADO</x:String>
|
||||||
|
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">REMOVER</x:String>
|
||||||
|
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">ARQUIVO BINÁRIO NÃO SUPORTADO!!!</x:String>
|
||||||
|
<x:String x:Key="Text.Blame" xml:space="preserve">Responsabilizar</x:String>
|
||||||
|
<x:String x:Key="Text.BlameTypeNotSupported" xml:space="preserve">RESPONSABILIZAÇÃO PARA ESTE ARQUIVO NÃO SUPORTADA!!!</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Checkout" xml:space="preserve">Checar ${0}$...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.CompareWithBranch" xml:space="preserve">Comparar com Branch</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.CompareWithHead" xml:space="preserve">Comparar com HEAD</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.CompareWithWorktree" xml:space="preserve">Comparar com Worktree</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.CopyName" xml:space="preserve">Copiar Nome da Branch</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Delete" xml:space="preserve">Excluir ${0}$...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.DeleteMultiBranches" xml:space="preserve">Excluir {0} branches selecionadas</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.DiscardAll" xml:space="preserve">Descartar todas as alterações</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">Avançar para ${0}$</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git Flow - Finalizar ${0}$</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">Mesclar ${0}$ em ${1}$...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">Puxar ${0}$</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.PullInto" xml:space="preserve">Puxar ${0}$ para ${1}$...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Push" xml:space="preserve">Empurrar ${0}$</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Rebase" xml:space="preserve">Rebase ${0}$ em ${1}$...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Rename" xml:space="preserve">Renomear ${0}$...</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.Tracking" xml:space="preserve">Definir Branch de Rastreamento</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCM.UnsetUpstream" xml:space="preserve">Desfazer Upstream</x:String>
|
||||||
|
<x:String x:Key="Text.BranchCompare" xml:space="preserve">Comparar Branch</x:String>
|
||||||
|
<x:String x:Key="Text.Bytes" xml:space="preserve">Bytes</x:String>
|
||||||
|
<x:String x:Key="Text.Cancel" xml:space="preserve">CANCELAR</x:String>
|
||||||
|
<x:String x:Key="Text.ChangeDisplayMode" xml:space="preserve">ALTERAR MODO DE EXIBIÇÃO</x:String>
|
||||||
|
<x:String x:Key="Text.ChangeDisplayMode.Grid" xml:space="preserve">Mostrar como Lista de Arquivos e Diretórios</x:String>
|
||||||
|
<x:String x:Key="Text.ChangeDisplayMode.List" xml:space="preserve">Mostrar como Lista de Caminhos</x:String>
|
||||||
|
<x:String x:Key="Text.ChangeDisplayMode.Tree" xml:space="preserve">Mostrar como Árvore de Sistema de Arquivos</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout" xml:space="preserve">Checar Branch</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.Commit" xml:space="preserve">Checar Commit</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.Commit.Warning" xml:space="preserve">Aviso: Ao fazer o checkout de um commit, seu Head ficará desanexado</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.Commit.Target" xml:space="preserve">Commit:</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.Target" xml:space="preserve">Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.LocalChanges" xml:space="preserve">Alterações Locais:</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.LocalChanges.Discard" xml:space="preserve">Descartar</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.LocalChanges.DoNothing" xml:space="preserve">Não Fazer Nada</x:String>
|
||||||
|
<x:String x:Key="Text.Checkout.LocalChanges.StashAndReply" xml:space="preserve">Guardar & Reaplicar</x:String>
|
||||||
|
<x:String x:Key="Text.CherryPick" xml:space="preserve">Cherry-Pick Este Commit</x:String>
|
||||||
|
<x:String x:Key="Text.CherryPick.Commit" xml:space="preserve">Commit:</x:String>
|
||||||
|
<x:String x:Key="Text.CherryPick.CommitChanges" xml:space="preserve">Commitar todas as alterações</x:String>
|
||||||
|
<x:String x:Key="Text.CherryPick.Title" xml:space="preserve">Cherry-Pick</x:String>
|
||||||
|
<x:String x:Key="Text.ClearStashes" xml:space="preserve">Limpar Stashes</x:String>
|
||||||
|
<x:String x:Key="Text.ClearStashes.Message" xml:space="preserve">Você está tentando limpar todas as stashes. Tem certeza que deseja continuar?</x:String>
|
||||||
|
<x:String x:Key="Text.Clone" xml:space="preserve">Clonar Repositório Remoto</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.AdditionalParam" xml:space="preserve">Parâmetros Extras:</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.AdditionalParam.Placeholder" xml:space="preserve">Argumentos adicionais para clonar o repositório. Opcional.</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.LocalName" xml:space="preserve">Nome Local:</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.LocalName.Placeholder" xml:space="preserve">Nome do repositório. Opcional.</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.ParentFolder" xml:space="preserve">Pasta Pai:</x:String>
|
||||||
|
<x:String x:Key="Text.Clone.RemoteURL" xml:space="preserve">URL do Repositório:</x:String>
|
||||||
|
<x:String x:Key="Text.Close" xml:space="preserve">FECHAR</x:String>
|
||||||
|
<x:String x:Key="Text.CodeEditor" xml:space="preserve">Editor</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.CherryPick" xml:space="preserve">Cherry-Pick Este Commit</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Checkout" xml:space="preserve">Checar Commit</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.CompareWithHead" xml:space="preserve">Comparar com HEAD</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.CompareWithWorktree" xml:space="preserve">Comparar com Worktree</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.CopyInfo" xml:space="preserve">Copiar Informações</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.CopySHA" xml:space="preserve">Copiar SHA</x:String><x:String x:Key="Text.CommitCM.InteractiveRebase" xml:space="preserve">Rebase Interativo ${0}$ até Aqui</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Rebase" xml:space="preserve">Rebase ${0}$ até Aqui</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Reset" xml:space="preserve">Resetar ${0}$ até Aqui</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Revert" xml:space="preserve">Reverter Commit</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">Modificar Mensagem</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">Salvar como Patch...</x:String>
|
||||||
|
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">Mesclar ao Commit Pai</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">ALTERAÇÕES</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">Buscar Alterações...</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Files" xml:space="preserve">ARQUIVOS</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Files.LFS" xml:space="preserve">Arquivo LFS</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Files.Submodule" xml:space="preserve">Submódulo</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info" xml:space="preserve">INFORMAÇÃO</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Author" xml:space="preserve">AUTOR</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Changed" xml:space="preserve">ALTERADO</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Committer" xml:space="preserve">COMMITTER</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.GotoChangesPage" xml:space="preserve">Mostra apenas as primeiras 100 alterações. Veja todas as alterações na aba ALTERAÇÕES.</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Message" xml:space="preserve">MENSAGEM</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Parents" xml:space="preserve">PAIS</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.Refs" xml:space="preserve">REFERÊNCIAS</x:String>
|
||||||
|
<x:String x:Key="Text.CommitDetail.Info.SHA" xml:space="preserve">SHA</x:String>
|
||||||
|
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Insira o assunto do commit</x:String>
|
||||||
|
<x:String x:Key="Text.CommitMessageTextBox.MessagePlaceholder" xml:space="preserve">Descrição</x:String>
|
||||||
|
<x:String x:Key="Text.Configure" xml:space="preserve">Configurar Repositório</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Email" xml:space="preserve">Endereço de Email</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Email.Placeholder" xml:space="preserve">Endereço de email</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Proxy" xml:space="preserve">Proxy HTTP</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Proxy.Placeholder" xml:space="preserve">Proxy HTTP usado por este repositório</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.User" xml:space="preserve">Nome de Usuário</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.User.Placeholder" xml:space="preserve">Nome de usuário para este repositório</x:String>
|
||||||
|
<x:String x:Key="Text.Copy" xml:space="preserve">Copiar</x:String>
|
||||||
|
<x:String x:Key="Text.CopyMessage" xml:space="preserve">COPIAR MENSAGEM</x:String>
|
||||||
|
<x:String x:Key="Text.CopyPath" xml:space="preserve">Copiar Caminho</x:String>
|
||||||
|
<x:String x:Key="Text.CopyFileName" xml:space="preserve">Copiar Nome do Arquivo</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch" xml:space="preserve">Criar Branch...</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.BasedOn" xml:space="preserve">Baseado Em:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.Checkout" xml:space="preserve">Checar a branch criada</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.LocalChanges" xml:space="preserve">Alterações Locais:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.LocalChanges.Discard" xml:space="preserve">Descartar</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.LocalChanges.DoNothing" xml:space="preserve">Não Fazer Nada</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.LocalChanges.StashAndReply" xml:space="preserve">Guardar & Reaplicar</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.Name" xml:space="preserve">Nome da Nova Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.Name.Placeholder" xml:space="preserve">Insira o nome da branch.</x:String>
|
||||||
|
<x:String x:Key="Text.CreateBranch.Title" xml:space="preserve">Criar Branch Local</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag" xml:space="preserve">Criar Tag...</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.BasedOn" xml:space="preserve">Nova Tag Em:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.GPGSign" xml:space="preserve">Assinatura GPG</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Message" xml:space="preserve">Mensagem da Tag:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Message.Placeholder" xml:space="preserve">Opcional.</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Name" xml:space="preserve">Nome da Tag:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Name.Placeholder" xml:space="preserve">Formato recomendado: v1.0.0-alpha</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.PushToAllRemotes" xml:space="preserve">Enviar para todos os remotos após criação</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Title" xml:space="preserve">Criar Nova Tag</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Type" xml:space="preserve">Tipo:</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Type.Annotated" xml:space="preserve">anotada</x:String>
|
||||||
|
<x:String x:Key="Text.CreateTag.Type.Lightweight" xml:space="preserve">leve</x:String>
|
||||||
|
<x:String x:Key="Text.Cut" xml:space="preserve">Recortar</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteBranch" xml:space="preserve">Excluir Branch</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteBranch.Branch" xml:space="preserve">Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteBranch.IsRemoteTip" xml:space="preserve">Você está prestes a excluir uma branch remota!!!</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteBranch.WithTrackingRemote" xml:space="preserve">Também excluir branch remota ${0}$</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteMultiBranch" xml:space="preserve">Excluir Múltiplas Branches</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteMultiBranch.Tip" xml:space="preserve">Você está tentando excluir várias branches de uma vez. Certifique-se de verificar antes de agir!</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteRemote" xml:space="preserve">Excluir Remoto</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteRemote.Remote" xml:space="preserve">Remoto:</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteRepositoryNode.Target" xml:space="preserve">Alvo:</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteRepositoryNode.TitleForGroup" xml:space="preserve">Confirmar Exclusão do Grupo</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteRepositoryNode.TitleForRepository" xml:space="preserve">Confirmar Exclusão do Repositório</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteSubmodule" xml:space="preserve">Excluir Submódulo</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteSubmodule.Path" xml:space="preserve">Caminho do Submódulo:</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteTag" xml:space="preserve">Excluir Tag</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteTag.Tag" xml:space="preserve">Tag:</x:String>
|
||||||
|
<x:String x:Key="Text.DeleteTag.WithRemote" xml:space="preserve">Excluir dos repositórios remotos</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Binary" xml:space="preserve">DIFERENÇA BINÁRIA</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Binary.New" xml:space="preserve">NOVO</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Binary.Old" xml:space="preserve">ANTIGO</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Copy" xml:space="preserve">Copiar</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.FileModeChanged" xml:space="preserve">Modo de Arquivo Alterado</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.LFS" xml:space="preserve">MUDANÇA DE OBJETO LFS</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Next" xml:space="preserve">Próxima Diferença</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.NoChange" xml:space="preserve">SEM MUDANÇAS OU APENAS MUDANÇAS DE EOL</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Prev" xml:space="preserve">Diferença Anterior</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.SideBySide" xml:space="preserve">Diferença Lado a Lado</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Submodule" xml:space="preserve">SUBMÓDULO</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Submodule.New" xml:space="preserve">NOVO</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.SyntaxHighlight" xml:space="preserve">Realce de Sintaxe</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.ToggleWordWrap" xml:space="preserve">Quebra de Linha</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.UseMerger" xml:space="preserve">Abrir na Ferramenta de Mesclagem</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.VisualLines.Decr" xml:space="preserve">Diminuir Número de Linhas Visíveis</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.VisualLines.Incr" xml:space="preserve">Aumentar Número de Linhas Visíveis</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.Welcome" xml:space="preserve">SELECIONE O ARQUIVO PARA VISUALIZAR AS MUDANÇAS</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.ShowHiddenSymbols" xml:space="preserve">Mostrar símbolos ocultos</x:String>
|
||||||
|
<x:String x:Key="Text.Diff.SwapCommits" xml:space="preserve">Trocar</x:String>
|
||||||
|
<x:String x:Key="Text.DiffWithMerger" xml:space="preserve">Abrir na Ferramenta de Mesclagem</x:String>
|
||||||
|
<x:String x:Key="Text.Discard" xml:space="preserve">Descartar Alterações</x:String>
|
||||||
|
<x:String x:Key="Text.Discard.All" xml:space="preserve">Todas as alterações locais na cópia de trabalho.</x:String>
|
||||||
|
<x:String x:Key="Text.Discard.Changes" xml:space="preserve">Alterações:</x:String>
|
||||||
|
<x:String x:Key="Text.Discard.Total" xml:space="preserve">Um total de {0} alterações será descartado</x:String>
|
||||||
|
<x:String x:Key="Text.Discard.Warning" xml:space="preserve">Você não pode desfazer esta ação!!!</x:String>
|
||||||
|
<x:String x:Key="Text.EditRepositoryNode.Bookmark" xml:space="preserve">Favorito:</x:String>
|
||||||
|
<x:String x:Key="Text.EditRepositoryNode.Name" xml:space="preserve">Novo Nome:</x:String>
|
||||||
|
<x:String x:Key="Text.EditRepositoryNode.Target" xml:space="preserve">Alvo:</x:String>
|
||||||
|
<x:String x:Key="Text.EditRepositoryNode.TitleForGroup" xml:space="preserve">Editar Grupo Selecionado</x:String>
|
||||||
|
<x:String x:Key="Text.EditRepositoryNode.TitleForRepository" xml:space="preserve">Editar Repositório Selecionado</x:String>
|
||||||
|
<x:String x:Key="Text.FastForwardWithoutCheck" xml:space="preserve">Fast-Forward (sem checkout)</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch" xml:space="preserve">Buscar</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch.AllRemotes" xml:space="preserve">Buscar todos os remotos</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch.NoTags" xml:space="preserve">Buscar sem tags</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch.Prune" xml:space="preserve">Prune remotos mortos</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch.Remote" xml:space="preserve">Remoto:</x:String>
|
||||||
|
<x:String x:Key="Text.Fetch.Title" xml:space="preserve">Buscar Alterações Remotas</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.AssumeUnchanged" xml:space="preserve">Assumir não alterado</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.Discard" xml:space="preserve">Descartar...</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.DiscardMulti" xml:space="preserve">Descartar {0} arquivos...</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.DiscardSelectedLines" xml:space="preserve">Descartar Alterações nas Linhas Selecionadas</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.OpenWithExternalMerger" xml:space="preserve">Abrir Ferramenta de Mesclagem Externa</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.SaveAsPatch" xml:space="preserve">Salvar Como Patch...</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.Stage" xml:space="preserve">Preparar</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.StageMulti" xml:space="preserve">Preparar {0} arquivos</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.StageSelectedLines" xml:space="preserve">Preparar Alterações nas Linhas Selecionadas</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.Stash" xml:space="preserve">Stash...</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.StashMulti" xml:space="preserve">Stash {0} arquivos...</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.Unstage" xml:space="preserve">Desfazer Preparação</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.UnstageMulti" xml:space="preserve">Desfazer Preparação de {0} arquivos</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.UnstageSelectedLines" xml:space="preserve">Desfazer Preparação nas Linhas Selecionadas</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.UseTheirs" xml:space="preserve">Usar Deles (checkout --theirs)</x:String>
|
||||||
|
<x:String x:Key="Text.FileCM.UseMine" xml:space="preserve">Usar Meu (checkout --ours)</x:String>
|
||||||
|
<x:String x:Key="Text.FileHistory" xml:space="preserve">Histórico de Arquivos</x:String>
|
||||||
|
<x:String x:Key="Text.Filter" xml:space="preserve">FILTRO</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow" xml:space="preserve">Git-Flow</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.DevelopBranch" xml:space="preserve">Branch de Desenvolvimento:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.Feature" xml:space="preserve">Feature:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.FeaturePrefix" xml:space="preserve">Prefixo da Feature:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.FinishFeature" xml:space="preserve">FLOW - Concluir Feature</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.FinishHotfix" xml:space="preserve">FLOW - Concluir Hotfix</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.FinishRelease" xml:space="preserve">FLOW - Concluir Release</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.FinishTarget" xml:space="preserve">Alvo:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.Hotfix" xml:space="preserve">Hotfix:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.HotfixPrefix" xml:space="preserve">Prefixo do Hotfix:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.Init" xml:space="preserve">Inicializar Git-Flow</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.KeepBranchAfterFinish" xml:space="preserve">Manter branch</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.ProductionBranch" xml:space="preserve">Branch de Produção:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.Release" xml:space="preserve">Release:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.ReleasePrefix" xml:space="preserve">Prefixo da Release:</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartFeature" xml:space="preserve">Iniciar Feature...</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartFeatureTitle" xml:space="preserve">FLOW - Iniciar Feature</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartHotfix" xml:space="preserve">Iniciar Hotfix...</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartHotfixTitle" xml:space="preserve">FLOW - Iniciar Hotfix</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartPlaceholder" xml:space="preserve">Digite o nome</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartRelease" xml:space="preserve">Iniciar Release...</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.StartReleaseTitle" xml:space="preserve">FLOW - Iniciar Release</x:String>
|
||||||
|
<x:String x:Key="Text.GitFlow.TagPrefix" xml:space="preserve">Prefixo da Tag de Versão:</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS" xml:space="preserve">Git LFS</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.AddTrackPattern" xml:space="preserve">Adicionar Padrão de Rastreamento...</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.AddTrackPattern.IsFilename" xml:space="preserve">Padrão é nome do arquivo</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.AddTrackPattern.Pattern" xml:space="preserve">Padrão Personalizado:</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.AddTrackPattern.Title" xml:space="preserve">Adicionar Padrão de Rastreamento ao Git LFS</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Fetch" xml:space="preserve">Buscar</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Fetch.Title" xml:space="preserve">Buscar Objetos LFS</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Fetch.Tips" xml:space="preserve">Execute `git lfs fetch` para baixar objetos Git LFS. Isso não atualiza a cópia de trabalho.</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Install" xml:space="preserve">Instalar hooks do Git LFS</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks" xml:space="preserve">Mostrar Locks</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks.Empty" xml:space="preserve">Sem Arquivos Bloqueados</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks.Lock" xml:space="preserve">Bloquear</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks.Title" xml:space="preserve">Locks LFS</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks.Unlock" xml:space="preserve">Desbloquear</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Locks.UnlockForce" xml:space="preserve">Forçar Desbloqueio</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Prune" xml:space="preserve">Prune</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Prune.Tips" xml:space="preserve">Execute `git lfs prune` para excluir arquivos LFS antigos do armazenamento local</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Pull" xml:space="preserve">Puxar</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Pull.Title" xml:space="preserve">Puxar Objetos LFS</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Pull.Tips" xml:space="preserve">Execute `git lfs pull` para baixar todos os arquivos Git LFS para a referência atual e checkout</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Push" xml:space="preserve">Enviar</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Push.Title" xml:space="preserve">Enviar Objetos LFS</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Push.Tips" xml:space="preserve">Envie arquivos grandes enfileirados para o endpoint Git LFS</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Remote" xml:space="preserve">Remoto:</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.Track" xml:space="preserve">Rastrear arquivos nomeados '{0}'</x:String>
|
||||||
|
<x:String x:Key="Text.GitLFS.TrackByExtension" xml:space="preserve">Rastrear todos os arquivos *{0}</x:String>
|
||||||
|
<x:String x:Key="Text.Histories" xml:space="preserve">Históricos</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.DisplayMode" xml:space="preserve">Alternar Layout Horizontal/Vertical</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.GraphMode" xml:space="preserve">Alternar Modo de Gráfico Curvo/Polilinha</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Header.Author" xml:space="preserve">AUTOR</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Header.GraphAndSubject" xml:space="preserve">GRÁFICO & ASSUNTO</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Header.SHA" xml:space="preserve">SHA</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Header.Time" xml:space="preserve">HORA DO COMMIT</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Search" xml:space="preserve">PROCURAR SHA/ASSUNTO/AUTOR. PRESSIONE ENTER PARA PROCURAR, ESC PARA SAIR</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.SearchClear" xml:space="preserve">LIMPAR</x:String>
|
||||||
|
<x:String x:Key="Text.Histories.Selected" xml:space="preserve">SELECIONADO {0} COMMITS</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys" xml:space="preserve">Referência de Atalhos de Teclado</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global" xml:space="preserve">GLOBAL</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.CancelPopup" xml:space="preserve">Cancelar popup atual</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.CloseTab" xml:space="preserve">Fechar página atual</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.GotoPrevTab" xml:space="preserve">Ir para a página anterior</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.GotoNextTab" xml:space="preserve">Ir para a próxima página</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.NewTab" xml:space="preserve">Criar nova página</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Global.OpenPreference" xml:space="preserve">Abrir diálogo de preferências</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo" xml:space="preserve">REPOSITÓRIO</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.Commit" xml:space="preserve">Commitar mudanças preparadas</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.CommitAndPush" xml:space="preserve">Commitar e enviar mudanças preparadas</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.GoHome" xml:space="preserve">Modo de Dashboard (Padrão)</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.Refresh" xml:space="preserve">Forçar recarregamento deste repositório</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.StageOrUnstageSelected" xml:space="preserve">Preparar/Despreparar mudanças selecionadas</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.OpenSearchCommits" xml:space="preserve">Modo de busca de commits</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.ViewChanges" xml:space="preserve">Alternar para 'Mudanças'</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.ViewHistories" xml:space="preserve">Alternar para 'Históricos'</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.Repo.ViewStashes" xml:space="preserve">Alternar para 'Stashes'</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.TextEditor" xml:space="preserve">EDITOR DE TEXTO</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.TextEditor.CloseSearch" xml:space="preserve">Fechar painel de busca</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.TextEditor.GotoNextMatch" xml:space="preserve">Encontrar próxima correspondência</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.TextEditor.GotoPrevMatch" xml:space="preserve">Encontrar correspondência anterior</x:String>
|
||||||
|
<x:String x:Key="Text.Hotkeys.TextEditor.Search" xml:space="preserve">Abrir painel de busca</x:String>
|
||||||
|
<x:String x:Key="Text.Hunk.Stage" xml:space="preserve">Preparar</x:String>
|
||||||
|
<x:String x:Key="Text.Hunk.Unstage" xml:space="preserve">Despreparar</x:String>
|
||||||
|
<x:String x:Key="Text.Hunk.Discard" xml:space="preserve">Descartar</x:String>
|
||||||
|
<x:String x:Key="Text.Init" xml:space="preserve">Inicializar Repositório</x:String>
|
||||||
|
<x:String x:Key="Text.Init.Path" xml:space="preserve">Caminho:</x:String>
|
||||||
|
<x:String x:Key="Text.Init.Tip" xml:space="preserve">Repositório inválido detectado. Executar `git init` neste caminho?</x:String>
|
||||||
|
<x:String x:Key="Text.InProgress.CherryPick" xml:space="preserve">Cherry-Pick em andamento. Pressione 'Abort' para restaurar o HEAD original.</x:String>
|
||||||
|
<x:String x:Key="Text.InProgress.Merge" xml:space="preserve">Merge em andamento. Pressione 'Abort' para restaurar o HEAD original.</x:String>
|
||||||
|
<x:String x:Key="Text.InProgress.Rebase" xml:space="preserve">Rebase em andamento. Pressione 'Abort' para restaurar o HEAD original.</x:String>
|
||||||
|
<x:String x:Key="Text.InProgress.Revert" xml:space="preserve">Revert em andamento. Pressione 'Abort' para restaurar o HEAD original.</x:String>
|
||||||
|
<x:String x:Key="Text.InteractiveRebase" xml:space="preserve">Rebase Interativo</x:String>
|
||||||
|
<x:String x:Key="Text.InteractiveRebase.Target" xml:space="preserve">Ramo Alvo:</x:String>
|
||||||
|
<x:String x:Key="Text.InteractiveRebase.On" xml:space="preserve">Em:</x:String>
|
||||||
|
<x:String x:Key="Text.InteractiveRebase.MoveUp" xml:space="preserve">Mover Para Cima</x:String>
|
||||||
|
<x:String x:Key="Text.InteractiveRebase.MoveDown" xml:space="preserve">Mover Para Baixo</x:String>
|
||||||
|
<x:String x:Key="Text.Launcher" xml:space="preserve">Source Git</x:String>
|
||||||
|
<x:String x:Key="Text.Launcher.Error" xml:space="preserve">ERRO</x:String>
|
||||||
|
<x:String x:Key="Text.Launcher.Info" xml:space="preserve">AVISO</x:String>
|
||||||
|
<x:String x:Key="Text.Launcher.Menu" xml:space="preserve">Abrir Menu Principal</x:String>
|
||||||
|
<x:String x:Key="Text.Merge" xml:space="preserve">Mesclar Ramo</x:String>
|
||||||
|
<x:String x:Key="Text.Merge.Into" xml:space="preserve">Para:</x:String>
|
||||||
|
<x:String x:Key="Text.Merge.Mode" xml:space="preserve">Opção de Mesclagem:</x:String>
|
||||||
|
<x:String x:Key="Text.Merge.Source" xml:space="preserve">Ramo de Origem:</x:String>
|
||||||
|
<x:String x:Key="Text.Name" xml:space="preserve">Nome:</x:String>
|
||||||
|
<x:String x:Key="Text.NotConfigured" xml:space="preserve">O Git NÃO foi configurado. Por favor, vá para [Preferências] e configure primeiro.</x:String>
|
||||||
|
<x:String x:Key="Text.Notice" xml:space="preserve">AVISO</x:String>
|
||||||
|
<x:String x:Key="Text.OpenFolder" xml:space="preserve">SELECIONAR PASTA</x:String>
|
||||||
|
<x:String x:Key="Text.OpenWith" xml:space="preserve">Abrir Com...</x:String>
|
||||||
|
<x:String x:Key="Text.Optional" xml:space="preserve">Opcional.</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.New" xml:space="preserve">Criar Nova Página</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Tab.Bookmark" xml:space="preserve">Adicionar aos Favoritos</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Tab.Close" xml:space="preserve">Fechar Aba</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">Fechar Outras Abas</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">Fechar Abas à Direita</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">Copiar Caminho do Repositório</x:String>
|
||||||
|
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">Repositórios</x:String>
|
||||||
|
<x:String x:Key="Text.Paste" xml:space="preserve">Colar</x:String>
|
||||||
|
<x:String x:Key="Text.Period.JustNow" xml:space="preserve">Agora mesmo</x:String>
|
||||||
|
<x:String x:Key="Text.Period.MinutesAgo" xml:space="preserve">{0} minutos atrás</x:String>
|
||||||
|
<x:String x:Key="Text.Period.HoursAgo" xml:space="preserve">{0} horas atrás</x:String>
|
||||||
|
<x:String x:Key="Text.Period.Yesterday" xml:space="preserve">Ontem</x:String>
|
||||||
|
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">{0} dias atrás</x:String>
|
||||||
|
<x:String x:Key="Text.Period.LastMonth" xml:space="preserve">Mês passado</x:String>
|
||||||
|
<x:String x:Key="Text.Period.MonthsAgo" xml:space="preserve">{0} meses atrás</x:String>
|
||||||
|
<x:String x:Key="Text.Period.LastYear" xml:space="preserve">Ano passado</x:String>
|
||||||
|
<x:String x:Key="Text.Period.YearsAgo" xml:space="preserve">{0} anos atrás</x:String>
|
||||||
|
<x:String x:Key="Text.Preference" xml:space="preserve">Preferências</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance" xml:space="preserve">APARÊNCIA</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.DefaultFont" xml:space="preserve">Fonte Padrão</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.DefaultFontSize" xml:space="preserve">Tamanho da Fonte Padrão</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.MonospaceFont" xml:space="preserve">Fonte Monoespaçada</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">Tema</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.ThemeOverrides" xml:space="preserve">Sobrescrever Tema</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General" xml:space="preserve">GERAL</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.AvatarServer" xml:space="preserve">Servidor de Avatar</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.Check4UpdatesOnStartup" xml:space="preserve">Verificar atualizações na inicialização</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.Locale" xml:space="preserve">Idioma</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.MaxHistoryCommits" xml:space="preserve">Commits do Histórico</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.RestoreTabs" xml:space="preserve">Restaurar as últimas abas abertas na inicialização</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.SubjectGuideLength" xml:space="preserve">Comprimento do Guia de Assunto</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.UseFixedTabWidth" xml:space="preserve">Usar largura fixa da aba na barra de título</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.VisibleDiffContextLines" xml:space="preserve">Linhas de Contexto de Diferença Visíveis</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git" xml:space="preserve">GIT</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.AutoFetch" xml:space="preserve">Buscar remotos automaticamente</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.AutoFetchInterval" xml:space="preserve">Intervalo de Busca Automática</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.AutoFetchIntervalSuffix" xml:space="preserve">Minuto(s)</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.CRLF" xml:space="preserve">Habilitar Auto CRLF</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.DefaultCloneDir" xml:space="preserve">Diretório Padrão de Clone</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Email" xml:space="preserve">E-mail do Usuário</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Email.Placeholder" xml:space="preserve">E-mail global do usuário git</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Path" xml:space="preserve">Caminho de Instalação</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Shell" xml:space="preserve">Shell</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.User" xml:space="preserve">Nome do Usuário</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.User.Placeholder" xml:space="preserve">Nome global do usuário git</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Version" xml:space="preserve">Versão do Git</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Git.Invalid" xml:space="preserve">Git (>= 2.23.0) é necessário para este aplicativo</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG" xml:space="preserve">ASSINATURA GPG</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.CommitEnabled" xml:space="preserve">Assinatura GPG de Commit</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.TagEnabled" xml:space="preserve">Assinatura GPG de Tag</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.Format" xml:space="preserve">Formato GPG</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.Path" xml:space="preserve">Caminho de Instalação do Programa</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.Path.Placeholder" xml:space="preserve">Insira o caminho do programa gpg instalado</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.UserKey" xml:space="preserve">Chave de Assinatura do Usuário</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.GPG.UserKey.Placeholder" xml:space="preserve">Chave de assinatura gpg do usuário</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.DiffMerge" xml:space="preserve">FERRAMENTA DE DIF/MERGE</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.DiffMerge.Path" xml:space="preserve">Caminho de Instalação</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.DiffMerge.Path.Placeholder" xml:space="preserve">Insira o caminho para a ferramenta de dif/merge</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.DiffMerge.Type" xml:space="preserve">Ferramenta</x:String>
|
||||||
|
<x:String x:Key="Text.PruneRemote" xml:space="preserve">Prunar Remoto</x:String>
|
||||||
|
<x:String x:Key="Text.PruneRemote.Target" xml:space="preserve">Alvo:</x:String>
|
||||||
|
<x:String x:Key="Text.PruneWorktrees" xml:space="preserve">Podar Worktrees</x:String>
|
||||||
|
<x:String x:Key="Text.PruneWorktrees.Tip" xml:space="preserve">Podar informações de worktree em `$GIT_DIR/worktrees`</x:String>
|
||||||
|
<x:String x:Key="Text.Pull" xml:space="preserve">Puxar</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.Branch" xml:space="preserve">Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.FetchAllBranches" xml:space="preserve">Buscar todos os branches</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.Into" xml:space="preserve">Para:</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.LocalChanges" xml:space="preserve">Alterações Locais:</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.LocalChanges.Discard" xml:space="preserve">Descartar</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.LocalChanges.DoNothing" xml:space="preserve">Não Fazer Nada</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.LocalChanges.StashAndReply" xml:space="preserve">Guardar & Reaplicar</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.NoTags" xml:space="preserve">Buscar sem tags</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.Remote" xml:space="preserve">Remoto:</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.Title" xml:space="preserve">Puxar (Buscar & Mesclar)</x:String>
|
||||||
|
<x:String x:Key="Text.Pull.UseRebase" xml:space="preserve">Usar rebase em vez de merge</x:String>
|
||||||
|
<x:String x:Key="Text.Push" xml:space="preserve">Empurrar</x:String>
|
||||||
|
<x:String x:Key="Text.Push.Force" xml:space="preserve">Forçar push</x:String>
|
||||||
|
<x:String x:Key="Text.Push.Local" xml:space="preserve">Branch Local:</x:String>
|
||||||
|
<x:String x:Key="Text.Push.Remote" xml:space="preserve">Remoto:</x:String>
|
||||||
|
<x:String x:Key="Text.Push.Title" xml:space="preserve">Empurrar Alterações para o Remoto</x:String>
|
||||||
|
<x:String x:Key="Text.Push.To" xml:space="preserve">Branch Remoto:</x:String>
|
||||||
|
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">Definir como branch de rastreamento</x:String>
|
||||||
|
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">Empurrar todas as tags</x:String>
|
||||||
|
<x:String x:Key="Text.PushTag" xml:space="preserve">Empurrar Tag para o Remoto</x:String>
|
||||||
|
<x:String x:Key="Text.PushTag.PushAllRemotes" xml:space="preserve">Empurrar para todos os remotos</x:String>
|
||||||
|
<x:String x:Key="Text.PushTag.Remote" xml:space="preserve">Remoto:</x:String>
|
||||||
|
<x:String x:Key="Text.PushTag.Tag" xml:space="preserve">Tag:</x:String>
|
||||||
|
<x:String x:Key="Text.Quit" xml:space="preserve">Sair</x:String>
|
||||||
|
<x:String x:Key="Text.Rebase" xml:space="preserve">Rebase da Branch Atual</x:String>
|
||||||
|
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">Guardar & reaplicar alterações locais</x:String>
|
||||||
|
<x:String x:Key="Text.Rebase.On" xml:space="preserve">Em:</x:String>
|
||||||
|
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">Rebase:</x:String>
|
||||||
|
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">Atualizar</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">Adicionar Remoto</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">Editar Remoto</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.Name" xml:space="preserve">Nome:</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.Name.Placeholder" xml:space="preserve">Nome do remoto</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.URL" xml:space="preserve">URL do Repositório:</x:String>
|
||||||
|
<x:String x:Key="Text.Remote.URL.Placeholder" xml:space="preserve">URL do repositório git remoto</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.CopyURL" xml:space="preserve">Copiar URL</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.Delete" xml:space="preserve">Excluir...</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.Edit" xml:space="preserve">Editar...</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.Fetch" xml:space="preserve">Buscar</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.OpenInBrowser" xml:space="preserve">Abrir no Navegador</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.Prune" xml:space="preserve">Podar</x:String>
|
||||||
|
<x:String x:Key="Text.RemoteCM.Prune.Target" xml:space="preserve">Alvo:</x:String>
|
||||||
|
<x:String x:Key="Text.RemoveWorktree" xml:space="preserve">Confirmar Remoção de Worktree</x:String>
|
||||||
|
<x:String x:Key="Text.RemoveWorktree.Force" xml:space="preserve">Habilitar Opção `--force`</x:String>
|
||||||
|
<x:String x:Key="Text.RemoveWorktree.Target" xml:space="preserve">Alvo:</x:String>
|
||||||
|
<x:String x:Key="Text.RenameBranch" xml:space="preserve">Renomear Branch</x:String>
|
||||||
|
<x:String x:Key="Text.RenameBranch.Name" xml:space="preserve">Novo Nome:</x:String>
|
||||||
|
<x:String x:Key="Text.RenameBranch.Name.Placeholder" xml:space="preserve">Nome único para este branch</x:String>
|
||||||
|
<x:String x:Key="Text.RenameBranch.Target" xml:space="preserve">Branch:</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Abort" xml:space="preserve">ABORTAR</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Clean" xml:space="preserve">Limpar (GC & Podar)</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.CleanTips" xml:space="preserve">Execute o comando `git gc` para este repositório.</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.ClearAllCommitsFilter" xml:space="preserve">Limpar tudo</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">Configurar este repositório</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">CONTINUAR</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">Abrir no Navegador de Arquivos</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.FilterCommitPrefix" xml:space="preserve">FILTRADO POR:</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">BRANCHES LOCAIS</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">Navegar para HEAD</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.NewBranch" xml:space="preserve">Criar Branch</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.OpenIn" xml:space="preserve">Abrir em {0}</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.OpenWithExternalTools" xml:space="preserve">Abrir em Ferramentas Externas</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Refresh" xml:space="preserve">Atualizar</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Remotes" xml:space="preserve">REMOTOS</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Remotes.Add" xml:space="preserve">ADICIONAR REMOTO</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Resolve" xml:space="preserve">RESOLVER</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search" xml:space="preserve">Pesquisar Commit</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search.By" xml:space="preserve">Pesquisar Por</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search.ByFile" xml:space="preserve">Arquivo</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search.ByMessage" xml:space="preserve">Mensagem</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search.BySHA" xml:space="preserve">SHA</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Search.ByUser" xml:space="preserve">Autor & Committer</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.SearchBranchTag" xml:space="preserve">Pesquisar Branches & Tags</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">Estatísticas</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">SUBMÓDULOS</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Submodules.Add" xml:space="preserve">ADICIONAR SUBMÓDULO</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Submodules.Update" xml:space="preserve">ATUALIZAR SUBMÓDULO</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Tags" xml:space="preserve">TAGS</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Tags.Add" xml:space="preserve">NOVA TAG</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Terminal" xml:space="preserve">Abrir no Terminal</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Worktrees" xml:space="preserve">WORKTREES</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Worktrees.Add" xml:space="preserve">ADICIONAR WORKTREE</x:String>
|
||||||
|
<x:String x:Key="Text.Repository.Worktrees.Prune" xml:space="preserve">PODAR</x:String>
|
||||||
|
<x:String x:Key="Text.RepositoryURL" xml:space="preserve">URL do Repositório Git</x:String>
|
||||||
|
<x:String x:Key="Text.Reset" xml:space="preserve">Resetar Branch Atual para Revisão</x:String>
|
||||||
|
<x:String x:Key="Text.Reset.Mode" xml:space="preserve">Modo de Reset:</x:String>
|
||||||
|
<x:String x:Key="Text.Reset.MoveTo" xml:space="preserve">Mover Para:</x:String>
|
||||||
|
<x:String x:Key="Text.Reset.Target" xml:space="preserve">Branch Atual:</x:String>
|
||||||
|
<x:String x:Key="Text.RevealFile" xml:space="preserve">Revelar no Explorador de Arquivos</x:String>
|
||||||
|
<x:String x:Key="Text.Revert" xml:space="preserve">Reverter Commit</x:String>
|
||||||
|
<x:String x:Key="Text.Revert.Commit" xml:space="preserve">Commit:</x:String>
|
||||||
|
<x:String x:Key="Text.Revert.CommitChanges" xml:space="preserve">Commitar alterações de reversão</x:String>
|
||||||
|
<x:String x:Key="Text.Reword" xml:space="preserve">Reescrever Mensagem do Commit</x:String>
|
||||||
|
<x:String x:Key="Text.Reword.Tip" xml:space="preserve">Use 'Shift+Enter' para inserir uma nova linha. 'Enter' é a tecla de atalho do botão OK</x:String>
|
||||||
|
<x:String x:Key="Text.Running" xml:space="preserve">Executando. Por favor, aguarde...</x:String>
|
||||||
|
<x:String x:Key="Text.Save" xml:space="preserve">SALVAR</x:String>
|
||||||
|
<x:String x:Key="Text.SaveAs" xml:space="preserve">Salvar Como...</x:String>
|
||||||
|
<x:String x:Key="Text.SaveAsPatchSuccess" xml:space="preserve">Patch salvo com sucesso!</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate" xml:space="preserve">Verificar atualizações...</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.Available" xml:space="preserve">Nova versão deste software disponível: </x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.Error" xml:space="preserve">Falha ao verificar atualizações!</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.GotoDownload" xml:space="preserve">Baixar</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.IgnoreThisVersion" xml:space="preserve">Ignorar esta versão</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.Title" xml:space="preserve">Atualização de Software</x:String>
|
||||||
|
<x:String x:Key="Text.SelfUpdate.UpToDate" xml:space="preserve">Não há atualizações disponíveis no momento.</x:String>
|
||||||
|
<x:String x:Key="Text.Squash" xml:space="preserve">Unir HEAD ao Parent</x:String>
|
||||||
|
<x:String x:Key="Text.SSHKey" xml:space="preserve">Chave SSH Privada:</x:String>
|
||||||
|
<x:String x:Key="Text.SSHKey.Placeholder" xml:space="preserve">Caminho para a chave SSH privada</x:String>
|
||||||
|
<x:String x:Key="Text.Start" xml:space="preserve">INICIAR</x:String>
|
||||||
|
<x:String x:Key="Text.Stash" xml:space="preserve">Stash</x:String>
|
||||||
|
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Incluir arquivos não rastreados</x:String>
|
||||||
|
<x:String x:Key="Text.Stash.Message" xml:space="preserve">Mensagem:</x:String>
|
||||||
|
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Opcional. Nome deste stash</x:String>
|
||||||
|
<x:String x:Key="Text.Stash.Title" xml:space="preserve">Guardar Alterações Locais</x:String>
|
||||||
|
<x:String x:Key="Text.StashCM.Apply" xml:space="preserve">Aplicar</x:String>
|
||||||
|
<x:String x:Key="Text.StashCM.Drop" xml:space="preserve">Descartar</x:String>
|
||||||
|
<x:String x:Key="Text.StashCM.Pop" xml:space="preserve">Pop</x:String>
|
||||||
|
<x:String x:Key="Text.StashDropConfirm" xml:space="preserve">Descartar Stash</x:String>
|
||||||
|
<x:String x:Key="Text.StashDropConfirm.Label" xml:space="preserve">Descartar:</x:String>
|
||||||
|
<x:String x:Key="Text.Stashes" xml:space="preserve">Stashes</x:String>
|
||||||
|
<x:String x:Key="Text.Stashes.Changes" xml:space="preserve">ALTERAÇÕES</x:String>
|
||||||
|
<x:String x:Key="Text.Stashes.Stashes" xml:space="preserve">STASHES</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics" xml:space="preserve">Estatísticas</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.CommitAmount" xml:space="preserve">COMMITS</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.Committer" xml:space="preserve">COMMITTER</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.ThisMonth" xml:space="preserve">MÊS</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.ThisWeek" xml:space="preserve">SEMANA</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.ThisYear" xml:space="preserve">ANO</x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.TotalCommits" xml:space="preserve">COMMITS: </x:String>
|
||||||
|
<x:String x:Key="Text.Statistics.TotalCommitters" xml:space="preserve">COMMITTERS: </x:String>
|
||||||
|
<x:String x:Key="Text.Submodule" xml:space="preserve">SUBMÓDULOS</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.Add" xml:space="preserve">Adicionar Submódulo</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.CopyPath" xml:space="preserve">Copiar Caminho Relativo</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.FetchNested" xml:space="preserve">Buscar submódulos aninhados</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.Open" xml:space="preserve">Abrir Repositório do Submódulo</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.RelativePath" xml:space="preserve">Caminho Relativo:</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.RelativePath.Placeholder" xml:space="preserve">Pasta relativa para armazenar este módulo.</x:String>
|
||||||
|
<x:String x:Key="Text.Submodule.Remove" xml:space="preserve">Excluir Submódulo</x:String>
|
||||||
|
<x:String x:Key="Text.Sure" xml:space="preserve">OK</x:String>
|
||||||
|
<x:String x:Key="Text.TagCM.Copy" xml:space="preserve">Copiar Nome da Tag</x:String>
|
||||||
|
<x:String x:Key="Text.TagCM.Delete" xml:space="preserve">Excluir ${0}$...</x:String>
|
||||||
|
<x:String x:Key="Text.TagCM.Push" xml:space="preserve">Enviar ${0}$...</x:String>
|
||||||
|
<x:String x:Key="Text.URL" xml:space="preserve">URL:</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules" xml:space="preserve">Atualizar Submódulos</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules.All" xml:space="preserve">Todos os submódulos</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules.Init" xml:space="preserve">Inicializar conforme necessário</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules.Recursive" xml:space="preserve">Recursivamente</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules.Target" xml:space="preserve">Submódulo:</x:String>
|
||||||
|
<x:String x:Key="Text.UpdateSubmodules.UseRemote" xml:space="preserve">Usar opção --remote</x:String>
|
||||||
|
<x:String x:Key="Text.Warn" xml:space="preserve">Aviso</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.AddRootFolder" xml:space="preserve">Criar Grupo Raíz</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.AddSubFolder" xml:space="preserve">Criar Subgrupo</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.Clone" xml:space="preserve">Clonar Repositório</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.Delete" xml:space="preserve">Excluir</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.DragDropTip" xml:space="preserve">ARRASTAR E SOLTAR PASTAS SUPORTADO. AGRUPAMENTO PERSONALIZADO SUPORTADO.</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.Edit" xml:space="preserve">Editar</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.OpenAllInNode" xml:space="preserve">Abrir Todos os Repositórios</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.OpenOrInit" xml:space="preserve">Abrir Repositório</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.OpenTerminal" xml:space="preserve">Abrir Terminal</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.Search" xml:space="preserve">Buscar Repositórios...</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome.Sort" xml:space="preserve">Ordenar</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy" xml:space="preserve">Alterações</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore" xml:space="preserve">Git Ignore</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.Extension" xml:space="preserve">Ignorar todos os arquivos *{0}</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.ExtensionInSameFolder" xml:space="preserve">Ignorar arquivos *{0} na mesma pasta</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.InSameFolder" xml:space="preserve">Ignorar arquivos na mesma pasta</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.SingleFile" xml:space="preserve">Ignorar apenas este arquivo</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Amend" xml:space="preserve">Corrigir</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AutoStage" xml:space="preserve">Auto-Stage</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.AutoStage.Tip" xml:space="preserve">Informe ao comando para automaticamente stagear arquivos que foram modificados e excluídos, mas novos arquivos que você não informou ao Git não serão afetados.</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.CanStageTip" xml:space="preserve">Você pode stagear este arquivo agora.</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Commit" xml:space="preserve">COMMIT</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.CommitAndPush" xml:space="preserve">COMMIT & PUSH</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.CommitTip" xml:space="preserve">CTRL + Enter</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">CONFLITOS DETECTADOS</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">CONFLITOS DE ARQUIVOS RESOLVIDOS</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.HasCommitHistories" xml:space="preserve">MENSAGENS RECENTES DE ENTRADA</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.IncludeUntracked" xml:space="preserve">INCLUIR ARQUIVOS NÃO RASTREADOS</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.MessageHistories" xml:space="preserve">HISTÓRICO DE MENSAGENS</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.NoCommitHistories" xml:space="preserve">NENHUMA MENSAGEM DE ENTRADA RECENTE</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Staged" xml:space="preserve">STAGED</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Staged.Unstage" xml:space="preserve">DESSTAGEAR</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Staged.UnstageAll" xml:space="preserve">DESSTAGEAR TODOS</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">NÃO STAGED</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">STAGEAR</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">STAGEAR TODOS</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">VER SUPOR NÃO ALTERADO</x:String>
|
||||||
|
<x:String x:Key="Text.WorkingCopy.ResolveTip" xml:space="preserve">Clique com o botão direito nos arquivos selecionados e escolha como resolver conflitos.</x:String>
|
||||||
|
<x:String x:Key="Text.Worktree" xml:space="preserve">WORKTREE</x:String>
|
||||||
|
<x:String x:Key="Text.Worktree.CopyPath" xml:space="preserve">Copiar Caminho</x:String>
|
||||||
|
<x:String x:Key="Text.Worktree.Lock" xml:space="preserve">Travar</x:String>
|
||||||
|
<x:String x:Key="Text.Worktree.Remove" xml:space="preserve">Remover</x:String>
|
||||||
|
<x:String x:Key="Text.Worktree.Unlock" xml:space="preserve">Destravar</x:String>
|
||||||
|
</ResourceDictionary>
|
|
@ -363,6 +363,7 @@
|
||||||
<x:String x:Key="Text.Preference.Appearance.DefaultFont" xml:space="preserve">缺省字体</x:String>
|
<x:String x:Key="Text.Preference.Appearance.DefaultFont" xml:space="preserve">缺省字体</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.DefaultFontSize" xml:space="preserve">默认字体大小</x:String>
|
<x:String x:Key="Text.Preference.Appearance.DefaultFontSize" xml:space="preserve">默认字体大小</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.MonospaceFont" xml:space="preserve">等宽字体</x:String>
|
<x:String x:Key="Text.Preference.Appearance.MonospaceFont" xml:space="preserve">等宽字体</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.OnlyUseMonoFontInEditor" xml:space="preserve">仅在文本编辑器中使用等宽字体</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">主题</x:String>
|
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">主题</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.ThemeOverrides" xml:space="preserve">主题自定义</x:String>
|
<x:String x:Key="Text.Preference.Appearance.ThemeOverrides" xml:space="preserve">主题自定义</x:String>
|
||||||
<x:String x:Key="Text.Preference.General" xml:space="preserve">通用配置</x:String>
|
<x:String x:Key="Text.Preference.General" xml:space="preserve">通用配置</x:String>
|
||||||
|
@ -554,6 +555,7 @@
|
||||||
<x:String x:Key="Text.UpdateSubmodules.Target" xml:space="preserve">子模块 :</x:String>
|
<x:String x:Key="Text.UpdateSubmodules.Target" xml:space="preserve">子模块 :</x:String>
|
||||||
<x:String x:Key="Text.UpdateSubmodules.UseRemote" xml:space="preserve">启用 '--remote'</x:String>
|
<x:String x:Key="Text.UpdateSubmodules.UseRemote" xml:space="preserve">启用 '--remote'</x:String>
|
||||||
<x:String x:Key="Text.Warn" xml:space="preserve">警告</x:String>
|
<x:String x:Key="Text.Warn" xml:space="preserve">警告</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome" xml:space="preserve">起始页</x:String>
|
||||||
<x:String x:Key="Text.Welcome.AddRootFolder" xml:space="preserve">新建分组</x:String>
|
<x:String x:Key="Text.Welcome.AddRootFolder" xml:space="preserve">新建分组</x:String>
|
||||||
<x:String x:Key="Text.Welcome.AddSubFolder" xml:space="preserve">新建子分组</x:String>
|
<x:String x:Key="Text.Welcome.AddSubFolder" xml:space="preserve">新建子分组</x:String>
|
||||||
<x:String x:Key="Text.Welcome.Clone" xml:space="preserve">克隆远程仓库</x:String>
|
<x:String x:Key="Text.Welcome.Clone" xml:space="preserve">克隆远程仓库</x:String>
|
||||||
|
|
|
@ -363,6 +363,7 @@
|
||||||
<x:String x:Key="Text.Preference.Appearance.DefaultFont" xml:space="preserve">預設字型</x:String>
|
<x:String x:Key="Text.Preference.Appearance.DefaultFont" xml:space="preserve">預設字型</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.DefaultFontSize" xml:space="preserve">預設字型大小</x:String>
|
<x:String x:Key="Text.Preference.Appearance.DefaultFontSize" xml:space="preserve">預設字型大小</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.MonospaceFont" xml:space="preserve">等寬字型</x:String>
|
<x:String x:Key="Text.Preference.Appearance.MonospaceFont" xml:space="preserve">等寬字型</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.Appearance.OnlyUseMonoFontInEditor" xml:space="preserve">僅在文字編輯器中使用等寬字體</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">主題</x:String>
|
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">主題</x:String>
|
||||||
<x:String x:Key="Text.Preference.Appearance.ThemeOverrides" xml:space="preserve">主題自訂</x:String>
|
<x:String x:Key="Text.Preference.Appearance.ThemeOverrides" xml:space="preserve">主題自訂</x:String>
|
||||||
<x:String x:Key="Text.Preference.General" xml:space="preserve">通用配置</x:String>
|
<x:String x:Key="Text.Preference.General" xml:space="preserve">通用配置</x:String>
|
||||||
|
@ -554,6 +555,7 @@
|
||||||
<x:String x:Key="Text.UpdateSubmodules.Target" xml:space="preserve">子模組 :</x:String>
|
<x:String x:Key="Text.UpdateSubmodules.Target" xml:space="preserve">子模組 :</x:String>
|
||||||
<x:String x:Key="Text.UpdateSubmodules.UseRemote" xml:space="preserve">啟用『--remote』選項</x:String>
|
<x:String x:Key="Text.UpdateSubmodules.UseRemote" xml:space="preserve">啟用『--remote』選項</x:String>
|
||||||
<x:String x:Key="Text.Warn" xml:space="preserve">警告</x:String>
|
<x:String x:Key="Text.Warn" xml:space="preserve">警告</x:String>
|
||||||
|
<x:String x:Key="Text.Welcome" xml:space="preserve">起始頁</x:String>
|
||||||
<x:String x:Key="Text.Welcome.AddRootFolder" xml:space="preserve">新建分組</x:String>
|
<x:String x:Key="Text.Welcome.AddRootFolder" xml:space="preserve">新建分組</x:String>
|
||||||
<x:String x:Key="Text.Welcome.AddSubFolder" xml:space="preserve">新建子分組</x:String>
|
<x:String x:Key="Text.Welcome.AddSubFolder" xml:space="preserve">新建子分組</x:String>
|
||||||
<x:String x:Key="Text.Welcome.Clone" xml:space="preserve">克隆遠端倉庫</x:String>
|
<x:String x:Key="Text.Welcome.Clone" xml:space="preserve">克隆遠端倉庫</x:String>
|
||||||
|
|
|
@ -258,8 +258,8 @@
|
||||||
<Style Selector="TextBlock.italic">
|
<Style Selector="TextBlock.italic">
|
||||||
<Setter Property="FontStyle" Value="Italic"/>
|
<Setter Property="FontStyle" Value="Italic"/>
|
||||||
</Style>
|
</Style>
|
||||||
<Style Selector="TextBlock.monospace, SelectableTextBlock.monospace">
|
<Style Selector="TextBlock.primary, SelectableTextBlock.primary">
|
||||||
<Setter Property="FontFamily" Value="{Binding Source={x:Static vm:Preference.Instance}, Path=MonospaceFont}"/>
|
<Setter Property="FontFamily" Value="{Binding Source={x:Static vm:Preference.Instance}, Path=PrimaryFont}"/>
|
||||||
</Style>
|
</Style>
|
||||||
<Style Selector="TextBlock.group_header_label">
|
<Style Selector="TextBlock.group_header_label">
|
||||||
<Setter Property="Foreground" Value="{DynamicResource Brush.FG2}"/>
|
<Setter Property="Foreground" Value="{DynamicResource Brush.FG2}"/>
|
||||||
|
@ -781,7 +781,7 @@
|
||||||
ContentTemplate="{TemplateBinding HeaderTemplate}"
|
ContentTemplate="{TemplateBinding HeaderTemplate}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
RecognizesAccessKey="True"/>
|
RecognizesAccessKey="False"/>
|
||||||
<TextBlock x:Name="PART_InputGestureText"
|
<TextBlock x:Name="PART_InputGestureText"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Classes="CaptionTextBlockStyle"
|
Classes="CaptionTextBlockStyle"
|
||||||
|
|
|
@ -29,10 +29,11 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<AvaloniaResource Include="App.ico" />
|
<AvaloniaResource Include="App.ico" />
|
||||||
<AvaloniaResource Include="Resources/ExternalToolIcons/*" />
|
|
||||||
<AvaloniaResource Include="Resources/ExternalToolIcons/JetBrains/*" />
|
|
||||||
<AvaloniaResource Include="Resources/Fonts/*" />
|
<AvaloniaResource Include="Resources/Fonts/*" />
|
||||||
<AvaloniaResource Include="Resources/ShellIcons/*" />
|
<AvaloniaResource Include="Resources/Images/*" />
|
||||||
|
<AvaloniaResource Include="Resources/Images/ExternalToolIcons/*" />
|
||||||
|
<AvaloniaResource Include="Resources/Images/ExternalToolIcons/JetBrains/*" />
|
||||||
|
<AvaloniaResource Include="Resources/Images/ShellIcons/*" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -384,6 +384,7 @@ namespace SourceGit.ViewModels
|
||||||
{
|
{
|
||||||
_changes = null;
|
_changes = null;
|
||||||
FullMessage = string.Empty;
|
FullMessage = string.Empty;
|
||||||
|
Changes = [];
|
||||||
VisibleChanges = null;
|
VisibleChanges = null;
|
||||||
SelectedChanges = null;
|
SelectedChanges = null;
|
||||||
ViewRevisionFileContent = null;
|
ViewRevisionFileContent = null;
|
||||||
|
|
|
@ -12,7 +12,7 @@ namespace SourceGit.ViewModels
|
||||||
}
|
}
|
||||||
|
|
||||||
[Required(ErrorMessage = "Tag name is required!")]
|
[Required(ErrorMessage = "Tag name is required!")]
|
||||||
[RegularExpression(@"^[^/]{1}[\w\-\./]*$", ErrorMessage = "Bad tag name format!")]
|
[RegularExpression(@"^(?!\.)(?!/)(?!.*\.$)(?!.*/$)(?!.*\.\.)[\w\-\./]+$", ErrorMessage = "Bad tag name format!")]
|
||||||
[CustomValidation(typeof(CreateTag), nameof(ValidateTagName))]
|
[CustomValidation(typeof(CreateTag), nameof(ValidateTagName))]
|
||||||
public string TagName
|
public string TagName
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,11 +19,10 @@ namespace SourceGit.ViewModels
|
||||||
View = new Views.Discard { DataContext = this };
|
View = new Views.Discard { DataContext = this };
|
||||||
}
|
}
|
||||||
|
|
||||||
public Discard(Repository repo, List<Models.Change> changes, bool isUnstaged)
|
public Discard(Repository repo, List<Models.Change> changes)
|
||||||
{
|
{
|
||||||
_repo = repo;
|
_repo = repo;
|
||||||
_changes = changes;
|
_changes = changes;
|
||||||
_isUnstaged = isUnstaged;
|
|
||||||
|
|
||||||
if (_changes == null)
|
if (_changes == null)
|
||||||
Mode = new Models.Null();
|
Mode = new Models.Null();
|
||||||
|
@ -44,10 +43,8 @@ namespace SourceGit.ViewModels
|
||||||
{
|
{
|
||||||
if (_changes == null)
|
if (_changes == null)
|
||||||
Commands.Discard.All(_repo.FullPath);
|
Commands.Discard.All(_repo.FullPath);
|
||||||
else if (_isUnstaged)
|
|
||||||
Commands.Discard.ChangesInWorkTree(_repo.FullPath, _changes);
|
|
||||||
else
|
else
|
||||||
Commands.Discard.ChangesInStaged(_repo.FullPath, _changes);
|
Commands.Discard.Changes(_repo.FullPath, _changes);
|
||||||
|
|
||||||
CallUIThread(() =>
|
CallUIThread(() =>
|
||||||
{
|
{
|
||||||
|
@ -61,6 +58,5 @@ namespace SourceGit.ViewModels
|
||||||
|
|
||||||
private readonly Repository _repo = null;
|
private readonly Repository _repo = null;
|
||||||
private readonly List<Models.Change> _changes = null;
|
private readonly List<Models.Change> _changes = null;
|
||||||
private readonly bool _isUnstaged = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,6 +142,38 @@ namespace SourceGit.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DoubleTapped(Models.Commit commit)
|
||||||
|
{
|
||||||
|
if (commit == null || commit.IsCurrentHead)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var firstRemoteBranch = null as Models.Branch;
|
||||||
|
foreach (var d in commit.Decorators)
|
||||||
|
{
|
||||||
|
if (d.Type == Models.DecoratorType.LocalBranchHead)
|
||||||
|
{
|
||||||
|
var b = _repo.Branches.Find(x => x.FriendlyName == d.Name);
|
||||||
|
if (b != null)
|
||||||
|
{
|
||||||
|
_repo.CheckoutBranch(b);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (d.Type == Models.DecoratorType.RemoteBranchHead && firstRemoteBranch == null)
|
||||||
|
{
|
||||||
|
firstRemoteBranch = _repo.Branches.Find(x => x.FriendlyName == d.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PopupHost.CanCreatePopup())
|
||||||
|
{
|
||||||
|
if (firstRemoteBranch != null)
|
||||||
|
PopupHost.ShowPopup(new CreateBranch(_repo, firstRemoteBranch));
|
||||||
|
else
|
||||||
|
PopupHost.ShowPopup(new CheckoutCommit(_repo, commit));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public ContextMenu MakeContextMenu(DataGrid datagrid)
|
public ContextMenu MakeContextMenu(DataGrid datagrid)
|
||||||
{
|
{
|
||||||
if (datagrid.SelectedItems.Count != 1)
|
if (datagrid.SelectedItems.Count != 1)
|
||||||
|
|
|
@ -51,9 +51,7 @@ namespace SourceGit.ViewModels
|
||||||
public InteractiveRebaseItem(Models.Commit c, string message)
|
public InteractiveRebaseItem(Models.Commit c, string message)
|
||||||
{
|
{
|
||||||
Commit = c;
|
Commit = c;
|
||||||
|
FullMessage = message;
|
||||||
_subject = c.Subject;
|
|
||||||
_fullMessage = message;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetAction(object param)
|
public void SetAction(object param)
|
||||||
|
@ -120,21 +118,14 @@ namespace SourceGit.ViewModels
|
||||||
|
|
||||||
Task.Run(() =>
|
Task.Run(() =>
|
||||||
{
|
{
|
||||||
var commits = new Commands.QueryCommits(repoPath, $"{on.SHA}...HEAD", false).Result();
|
var commits = new Commands.QueryCommitsWithFullMessage(repoPath, $"{on.SHA}...HEAD").Result();
|
||||||
var messages = new Dictionary<string, string>();
|
var list = new List<InteractiveRebaseItem>();
|
||||||
|
|
||||||
foreach (var c in commits)
|
foreach (var c in commits)
|
||||||
{
|
list.Add(new InteractiveRebaseItem(c.Commit, c.Message));
|
||||||
var fullMessage = new Commands.QueryCommitFullMessage(repoPath, c.SHA).Result();
|
|
||||||
messages.Add(c.SHA, fullMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
Dispatcher.UIThread.Invoke(() =>
|
Dispatcher.UIThread.Invoke(() =>
|
||||||
{
|
{
|
||||||
var list = new List<InteractiveRebaseItem>();
|
|
||||||
foreach (var c in commits)
|
|
||||||
list.Add(new InteractiveRebaseItem(c, messages[c.SHA]));
|
|
||||||
|
|
||||||
Items.AddRange(list);
|
Items.AddRange(list);
|
||||||
IsLoading = false;
|
IsLoading = false;
|
||||||
});
|
});
|
||||||
|
|
|
@ -83,13 +83,37 @@ namespace SourceGit.ViewModels
|
||||||
public FontFamily DefaultFont
|
public FontFamily DefaultFont
|
||||||
{
|
{
|
||||||
get => _defaultFont;
|
get => _defaultFont;
|
||||||
set => SetProperty(ref _defaultFont, value);
|
set
|
||||||
|
{
|
||||||
|
if (SetProperty(ref _defaultFont, value) && _onlyUseMonoFontInEditor)
|
||||||
|
OnPropertyChanged(nameof(PrimaryFont));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public FontFamily MonospaceFont
|
public FontFamily MonospaceFont
|
||||||
{
|
{
|
||||||
get => _monospaceFont;
|
get => _monospaceFont;
|
||||||
set => SetProperty(ref _monospaceFont, value);
|
set
|
||||||
|
{
|
||||||
|
if (SetProperty(ref _monospaceFont, value) && !_onlyUseMonoFontInEditor)
|
||||||
|
OnPropertyChanged(nameof(PrimaryFont));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public FontFamily PrimaryFont
|
||||||
|
{
|
||||||
|
get => _onlyUseMonoFontInEditor ? _defaultFont : _monospaceFont;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool OnlyUseMonoFontInEditor
|
||||||
|
{
|
||||||
|
get => _onlyUseMonoFontInEditor;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (SetProperty(ref _onlyUseMonoFontInEditor, value))
|
||||||
|
OnPropertyChanged(nameof(PrimaryFont));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public double DefaultFontSize
|
public double DefaultFontSize
|
||||||
|
@ -486,6 +510,7 @@ namespace SourceGit.ViewModels
|
||||||
private string _themeOverrides = string.Empty;
|
private string _themeOverrides = string.Empty;
|
||||||
private FontFamily _defaultFont = null;
|
private FontFamily _defaultFont = null;
|
||||||
private FontFamily _monospaceFont = null;
|
private FontFamily _monospaceFont = null;
|
||||||
|
private bool _onlyUseMonoFontInEditor = false;
|
||||||
private double _defaultFontSize = 13;
|
private double _defaultFontSize = 13;
|
||||||
private LayoutInfo _layout = new LayoutInfo();
|
private LayoutInfo _layout = new LayoutInfo();
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ using System.IO;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Avalonia.Collections;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Avalonia.Media;
|
using Avalonia.Media;
|
||||||
using Avalonia.Media.Imaging;
|
using Avalonia.Media.Imaging;
|
||||||
|
@ -170,8 +171,15 @@ namespace SourceGit.ViewModels
|
||||||
{
|
{
|
||||||
SearchedCommits = new List<Models.Commit>();
|
SearchedCommits = new List<Models.Commit>();
|
||||||
SearchCommitFilter = string.Empty;
|
SearchCommitFilter = string.Empty;
|
||||||
|
SearchCommitFilterSuggestion.Clear();
|
||||||
|
IsSearchCommitSuggestionOpen = false;
|
||||||
|
_revisionFiles.Clear();
|
||||||
|
|
||||||
if (value)
|
if (value)
|
||||||
|
{
|
||||||
SelectedViewIndex = 0;
|
SelectedViewIndex = 0;
|
||||||
|
UpdateCurrentRevisionFilesForSearchSuggestion();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,14 +193,58 @@ namespace SourceGit.ViewModels
|
||||||
public int SearchCommitFilterType
|
public int SearchCommitFilterType
|
||||||
{
|
{
|
||||||
get => _searchCommitFilterType;
|
get => _searchCommitFilterType;
|
||||||
set => SetProperty(ref _searchCommitFilterType, value);
|
set
|
||||||
|
{
|
||||||
|
if (SetProperty(ref _searchCommitFilterType, value))
|
||||||
|
UpdateCurrentRevisionFilesForSearchSuggestion();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string SearchCommitFilter
|
public string SearchCommitFilter
|
||||||
{
|
{
|
||||||
get => _searchCommitFilter;
|
get => _searchCommitFilter;
|
||||||
set => SetProperty(ref _searchCommitFilter, value);
|
set
|
||||||
|
{
|
||||||
|
if (SetProperty(ref _searchCommitFilter, value) &&
|
||||||
|
_searchCommitFilterType == 3 &&
|
||||||
|
!string.IsNullOrEmpty(value) &&
|
||||||
|
value.Length >= 2 &&
|
||||||
|
_revisionFiles.Count > 0)
|
||||||
|
{
|
||||||
|
var suggestion = new List<string>();
|
||||||
|
foreach (var file in _revisionFiles)
|
||||||
|
{
|
||||||
|
if (file.Contains(value, StringComparison.OrdinalIgnoreCase) && file.Length != value.Length)
|
||||||
|
{
|
||||||
|
suggestion.Add(file);
|
||||||
|
if (suggestion.Count > 100)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SearchCommitFilterSuggestion.Clear();
|
||||||
|
SearchCommitFilterSuggestion.AddRange(suggestion);
|
||||||
|
IsSearchCommitSuggestionOpen = SearchCommitFilterSuggestion.Count > 0;
|
||||||
|
}
|
||||||
|
else if (SearchCommitFilterSuggestion.Count > 0)
|
||||||
|
{
|
||||||
|
SearchCommitFilterSuggestion.Clear();
|
||||||
|
IsSearchCommitSuggestionOpen = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsSearchCommitSuggestionOpen
|
||||||
|
{
|
||||||
|
get => _isSearchCommitSuggestionOpen;
|
||||||
|
set => SetProperty(ref _isSearchCommitSuggestionOpen, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AvaloniaList<string> SearchCommitFilterSuggestion
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
private set;
|
||||||
|
} = new AvaloniaList<string>();
|
||||||
|
|
||||||
public List<Models.Commit> SearchedCommits
|
public List<Models.Commit> SearchedCommits
|
||||||
{
|
{
|
||||||
|
@ -306,6 +358,9 @@ namespace SourceGit.ViewModels
|
||||||
_visibleTags.Clear();
|
_visibleTags.Clear();
|
||||||
_submodules.Clear();
|
_submodules.Clear();
|
||||||
_searchedCommits.Clear();
|
_searchedCommits.Clear();
|
||||||
|
|
||||||
|
_revisionFiles.Clear();
|
||||||
|
SearchCommitFilterSuggestion.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RefreshAll()
|
public void RefreshAll()
|
||||||
|
@ -450,6 +505,8 @@ namespace SourceGit.ViewModels
|
||||||
return;
|
return;
|
||||||
|
|
||||||
IsSearchLoadingVisible = true;
|
IsSearchLoadingVisible = true;
|
||||||
|
IsSearchCommitSuggestionOpen = false;
|
||||||
|
SearchCommitFilterSuggestion.Clear();
|
||||||
|
|
||||||
Task.Run(() =>
|
Task.Run(() =>
|
||||||
{
|
{
|
||||||
|
@ -1886,6 +1943,20 @@ namespace SourceGit.ViewModels
|
||||||
return visible;
|
return visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UpdateCurrentRevisionFilesForSearchSuggestion()
|
||||||
|
{
|
||||||
|
_revisionFiles.Clear();
|
||||||
|
|
||||||
|
if (_searchCommitFilterType == 3)
|
||||||
|
{
|
||||||
|
Task.Run(() =>
|
||||||
|
{
|
||||||
|
var files = new Commands.QueryCurrentRevisionFiles(_fullpath).Result();
|
||||||
|
Dispatcher.UIThread.Invoke(() => _revisionFiles.AddRange(files));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private string _fullpath = string.Empty;
|
private string _fullpath = string.Empty;
|
||||||
private string _gitDir = string.Empty;
|
private string _gitDir = string.Empty;
|
||||||
private Models.RepositorySettings _settings = null;
|
private Models.RepositorySettings _settings = null;
|
||||||
|
@ -1899,9 +1970,11 @@ namespace SourceGit.ViewModels
|
||||||
|
|
||||||
private bool _isSearching = false;
|
private bool _isSearching = false;
|
||||||
private bool _isSearchLoadingVisible = false;
|
private bool _isSearchLoadingVisible = false;
|
||||||
|
private bool _isSearchCommitSuggestionOpen = false;
|
||||||
private int _searchCommitFilterType = 0;
|
private int _searchCommitFilterType = 0;
|
||||||
private string _searchCommitFilter = string.Empty;
|
private string _searchCommitFilter = string.Empty;
|
||||||
private List<Models.Commit> _searchedCommits = new List<Models.Commit>();
|
private List<Models.Commit> _searchedCommits = new List<Models.Commit>();
|
||||||
|
private List<string> _revisionFiles = new List<string>();
|
||||||
|
|
||||||
private bool _isLocalBranchGroupExpanded = true;
|
private bool _isLocalBranchGroupExpanded = true;
|
||||||
private bool _isRemoteGroupExpanded = false;
|
private bool _isRemoteGroupExpanded = false;
|
||||||
|
|
|
@ -23,11 +23,8 @@ namespace SourceGit.ViewModels
|
||||||
{
|
{
|
||||||
Task.Run(() =>
|
Task.Run(() =>
|
||||||
{
|
{
|
||||||
var result = new Commands.IsConflictResolved(repo, change).Result();
|
var result = new Commands.IsConflictResolved(repo, change).ReadToEnd().IsSuccess;
|
||||||
Dispatcher.UIThread.Post(() =>
|
Dispatcher.UIThread.Post(() => IsResolved = result);
|
||||||
{
|
|
||||||
IsResolved = result;
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,7 +85,9 @@ namespace SourceGit.ViewModels
|
||||||
get => _useAmend;
|
get => _useAmend;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (SetProperty(ref _useAmend, value) && value)
|
if (SetProperty(ref _useAmend, value))
|
||||||
|
{
|
||||||
|
if (value)
|
||||||
{
|
{
|
||||||
var currentBranch = _repo.CurrentBranch;
|
var currentBranch = _repo.CurrentBranch;
|
||||||
if (currentBranch == null)
|
if (currentBranch == null)
|
||||||
|
@ -102,9 +101,12 @@ namespace SourceGit.ViewModels
|
||||||
CommitMessage = new Commands.QueryCommitFullMessage(_repo.FullPath, currentBranch.Head).Result();
|
CommitMessage = new Commands.QueryCommitFullMessage(_repo.FullPath, currentBranch.Head).Result();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Staged = GetStagedChanges();
|
||||||
|
SelectedStaged = [];
|
||||||
OnPropertyChanged(nameof(IsCommitWithPushVisible));
|
OnPropertyChanged(nameof(IsCommitWithPushVisible));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsCommitWithPushVisible
|
public bool IsCommitWithPushVisible
|
||||||
{
|
{
|
||||||
|
@ -216,6 +218,8 @@ namespace SourceGit.ViewModels
|
||||||
|
|
||||||
public bool SetData(List<Models.Change> changes)
|
public bool SetData(List<Models.Change> changes)
|
||||||
{
|
{
|
||||||
|
_cached = changes;
|
||||||
|
|
||||||
var unstaged = new List<Models.Change>();
|
var unstaged = new List<Models.Change>();
|
||||||
var staged = new List<Models.Change>();
|
var staged = new List<Models.Change>();
|
||||||
var selectedUnstaged = new List<Models.Change>();
|
var selectedUnstaged = new List<Models.Change>();
|
||||||
|
@ -237,17 +241,6 @@ namespace SourceGit.ViewModels
|
||||||
var hasConflict = false;
|
var hasConflict = false;
|
||||||
foreach (var c in changes)
|
foreach (var c in changes)
|
||||||
{
|
{
|
||||||
if (c.Index == Models.ChangeState.Modified
|
|
||||||
|| c.Index == Models.ChangeState.Added
|
|
||||||
|| c.Index == Models.ChangeState.Deleted
|
|
||||||
|| c.Index == Models.ChangeState.Renamed)
|
|
||||||
{
|
|
||||||
staged.Add(c);
|
|
||||||
|
|
||||||
if (lastSelectedStaged.Contains(c.Path))
|
|
||||||
selectedStaged.Add(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (c.WorkTree != Models.ChangeState.None)
|
if (c.WorkTree != Models.ChangeState.None)
|
||||||
{
|
{
|
||||||
unstaged.Add(c);
|
unstaged.Add(c);
|
||||||
|
@ -258,6 +251,13 @@ namespace SourceGit.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
staged = GetStagedChanges();
|
||||||
|
foreach (var c in staged)
|
||||||
|
{
|
||||||
|
if (lastSelectedStaged.Contains(c.Path))
|
||||||
|
selectedStaged.Add(c);
|
||||||
|
}
|
||||||
|
|
||||||
_count = changes.Count;
|
_count = changes.Count;
|
||||||
|
|
||||||
Dispatcher.UIThread.Invoke(() =>
|
Dispatcher.UIThread.Invoke(() =>
|
||||||
|
@ -358,7 +358,11 @@ namespace SourceGit.ViewModels
|
||||||
SetDetail(null);
|
SetDetail(null);
|
||||||
IsUnstaging = true;
|
IsUnstaging = true;
|
||||||
_repo.SetWatcherEnabled(false);
|
_repo.SetWatcherEnabled(false);
|
||||||
if (changes.Count == _staged.Count)
|
if (_useAmend)
|
||||||
|
{
|
||||||
|
await Task.Run(() => new Commands.UnstageChangesForAmend(_repo.FullPath, changes).Exec());
|
||||||
|
}
|
||||||
|
else if (changes.Count == _staged.Count)
|
||||||
{
|
{
|
||||||
await Task.Run(() => new Commands.Reset(_repo.FullPath).Exec());
|
await Task.Run(() => new Commands.Reset(_repo.FullPath).Exec());
|
||||||
}
|
}
|
||||||
|
@ -376,24 +380,14 @@ namespace SourceGit.ViewModels
|
||||||
IsUnstaging = false;
|
IsUnstaging = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Discard(List<Models.Change> changes, bool isUnstaged)
|
public void Discard(List<Models.Change> changes)
|
||||||
{
|
{
|
||||||
if (PopupHost.CanCreatePopup())
|
if (PopupHost.CanCreatePopup())
|
||||||
{
|
|
||||||
if (isUnstaged)
|
|
||||||
{
|
{
|
||||||
if (changes.Count == _unstaged.Count && _staged.Count == 0)
|
if (changes.Count == _unstaged.Count && _staged.Count == 0)
|
||||||
PopupHost.ShowPopup(new Discard(_repo));
|
PopupHost.ShowPopup(new Discard(_repo));
|
||||||
else
|
else
|
||||||
PopupHost.ShowPopup(new Discard(_repo, changes, true));
|
PopupHost.ShowPopup(new Discard(_repo, changes));
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (changes.Count == _staged.Count && _unstaged.Count == 0)
|
|
||||||
PopupHost.ShowPopup(new Discard(_repo));
|
|
||||||
else
|
|
||||||
PopupHost.ShowPopup(new Discard(_repo, changes, false));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -491,13 +485,13 @@ namespace SourceGit.ViewModels
|
||||||
discard.Icon = App.CreateMenuIcon("Icons.Undo");
|
discard.Icon = App.CreateMenuIcon("Icons.Undo");
|
||||||
discard.Click += (_, e) =>
|
discard.Click += (_, e) =>
|
||||||
{
|
{
|
||||||
Discard(_selectedUnstaged, true);
|
Discard(_selectedUnstaged);
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
var stash = new MenuItem();
|
var stash = new MenuItem();
|
||||||
stash.Header = App.Text("FileCM.Stash");
|
stash.Header = App.Text("FileCM.Stash");
|
||||||
stash.Icon = App.CreateMenuIcon("Icons.Stashes");
|
stash.Icon = App.CreateMenuIcon("Icons.Stashes.Add");
|
||||||
stash.Click += (_, e) =>
|
stash.Click += (_, e) =>
|
||||||
{
|
{
|
||||||
if (PopupHost.CanCreatePopup())
|
if (PopupHost.CanCreatePopup())
|
||||||
|
@ -815,13 +809,13 @@ namespace SourceGit.ViewModels
|
||||||
discard.Icon = App.CreateMenuIcon("Icons.Undo");
|
discard.Icon = App.CreateMenuIcon("Icons.Undo");
|
||||||
discard.Click += (_, e) =>
|
discard.Click += (_, e) =>
|
||||||
{
|
{
|
||||||
Discard(_selectedUnstaged, true);
|
Discard(_selectedUnstaged);
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
var stash = new MenuItem();
|
var stash = new MenuItem();
|
||||||
stash.Header = App.Text("FileCM.StashMulti", _selectedUnstaged.Count);
|
stash.Header = App.Text("FileCM.StashMulti", _selectedUnstaged.Count);
|
||||||
stash.Icon = App.CreateMenuIcon("Icons.Stashes");
|
stash.Icon = App.CreateMenuIcon("Icons.Stashes.Add");
|
||||||
stash.Click += (_, e) =>
|
stash.Click += (_, e) =>
|
||||||
{
|
{
|
||||||
if (PopupHost.CanCreatePopup())
|
if (PopupHost.CanCreatePopup())
|
||||||
|
@ -904,18 +898,9 @@ namespace SourceGit.ViewModels
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
var discard = new MenuItem();
|
|
||||||
discard.Header = App.Text("FileCM.Discard");
|
|
||||||
discard.Icon = App.CreateMenuIcon("Icons.Undo");
|
|
||||||
discard.Click += (_, e) =>
|
|
||||||
{
|
|
||||||
Discard(_selectedStaged, false);
|
|
||||||
e.Handled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
var stash = new MenuItem();
|
var stash = new MenuItem();
|
||||||
stash.Header = App.Text("FileCM.Stash");
|
stash.Header = App.Text("FileCM.Stash");
|
||||||
stash.Icon = App.CreateMenuIcon("Icons.Stashes");
|
stash.Icon = App.CreateMenuIcon("Icons.Stashes.Add");
|
||||||
stash.Click += (_, e) =>
|
stash.Click += (_, e) =>
|
||||||
{
|
{
|
||||||
if (PopupHost.CanCreatePopup())
|
if (PopupHost.CanCreatePopup())
|
||||||
|
@ -971,7 +956,6 @@ namespace SourceGit.ViewModels
|
||||||
menu.Items.Add(openWith);
|
menu.Items.Add(openWith);
|
||||||
menu.Items.Add(new MenuItem() { Header = "-" });
|
menu.Items.Add(new MenuItem() { Header = "-" });
|
||||||
menu.Items.Add(unstage);
|
menu.Items.Add(unstage);
|
||||||
menu.Items.Add(discard);
|
|
||||||
menu.Items.Add(stash);
|
menu.Items.Add(stash);
|
||||||
menu.Items.Add(patch);
|
menu.Items.Add(patch);
|
||||||
menu.Items.Add(new MenuItem() { Header = "-" });
|
menu.Items.Add(new MenuItem() { Header = "-" });
|
||||||
|
@ -1071,18 +1055,9 @@ namespace SourceGit.ViewModels
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
var discard = new MenuItem();
|
|
||||||
discard.Header = App.Text("FileCM.DiscardMulti", _selectedStaged.Count);
|
|
||||||
discard.Icon = App.CreateMenuIcon("Icons.Undo");
|
|
||||||
discard.Click += (_, e) =>
|
|
||||||
{
|
|
||||||
Discard(_selectedStaged, false);
|
|
||||||
e.Handled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
var stash = new MenuItem();
|
var stash = new MenuItem();
|
||||||
stash.Header = App.Text("FileCM.StashMulti", _selectedStaged.Count);
|
stash.Header = App.Text("FileCM.StashMulti", _selectedStaged.Count);
|
||||||
stash.Icon = App.CreateMenuIcon("Icons.Stashes");
|
stash.Icon = App.CreateMenuIcon("Icons.Stashes.Add");
|
||||||
stash.Click += (_, e) =>
|
stash.Click += (_, e) =>
|
||||||
{
|
{
|
||||||
if (PopupHost.CanCreatePopup())
|
if (PopupHost.CanCreatePopup())
|
||||||
|
@ -1118,7 +1093,6 @@ namespace SourceGit.ViewModels
|
||||||
};
|
};
|
||||||
|
|
||||||
menu.Items.Add(unstage);
|
menu.Items.Add(unstage);
|
||||||
menu.Items.Add(discard);
|
|
||||||
menu.Items.Add(stash);
|
menu.Items.Add(stash);
|
||||||
menu.Items.Add(patch);
|
menu.Items.Add(patch);
|
||||||
}
|
}
|
||||||
|
@ -1162,6 +1136,25 @@ namespace SourceGit.ViewModels
|
||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<Models.Change> GetStagedChanges()
|
||||||
|
{
|
||||||
|
if (_useAmend)
|
||||||
|
{
|
||||||
|
return new Commands.QueryStagedChangesWithAmend(_repo.FullPath).Result();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var rs = new List<Models.Change>();
|
||||||
|
foreach (var c in _cached)
|
||||||
|
{
|
||||||
|
if (c.Index != Models.ChangeState.None &&
|
||||||
|
c.Index != Models.ChangeState.Untracked)
|
||||||
|
rs.Add(c);
|
||||||
|
}
|
||||||
|
return rs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void SetDetail(Models.Change change)
|
private void SetDetail(Models.Change change)
|
||||||
{
|
{
|
||||||
if (_isLoadingData)
|
if (_isLoadingData)
|
||||||
|
@ -1287,6 +1280,7 @@ namespace SourceGit.ViewModels
|
||||||
private bool _isCommitting = false;
|
private bool _isCommitting = false;
|
||||||
private bool _useAmend = false;
|
private bool _useAmend = false;
|
||||||
private bool _canCommitWithPush = false;
|
private bool _canCommitWithPush = false;
|
||||||
|
private List<Models.Change> _cached = [];
|
||||||
private List<Models.Change> _unstaged = [];
|
private List<Models.Change> _unstaged = [];
|
||||||
private List<Models.Change> _staged = [];
|
private List<Models.Change> _staged = [];
|
||||||
private List<Models.Change> _selectedUnstaged = [];
|
private List<Models.Change> _selectedUnstaged = [];
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
<StackPanel Height="48" Orientation="Horizontal">
|
<StackPanel Height="48" Orientation="Horizontal">
|
||||||
<TextBlock Classes="bold" Text="SourceGit" FontSize="32" />
|
<TextBlock Classes="bold" Text="SourceGit" FontSize="32" />
|
||||||
<Border Margin="12,0,0,0" Height="20" CornerRadius="10" Background="{DynamicResource Brush.Accent}" Effect="drop-shadow(0 0 6 #40000000)">
|
<Border Margin="12,0,0,0" Height="20" CornerRadius="10" Background="{DynamicResource Brush.Accent}" Effect="drop-shadow(0 0 6 #40000000)">
|
||||||
<TextBlock Classes="monospace" Margin="8,0" Text="{Binding Version}" FontSize="12" Foreground="White"/>
|
<TextBlock Classes="primary" Margin="8,0" Text="{Binding Version}" FontSize="12" Foreground="White"/>
|
||||||
</Border>
|
</Border>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
<DataTemplate DataType="m:Commit">
|
<DataTemplate DataType="m:Commit">
|
||||||
<Grid ColumnDefinitions="Auto,Auto,*">
|
<Grid ColumnDefinitions="Auto,Auto,*">
|
||||||
<Path Grid.Column="0" Width="14" Height="14" Margin="0,8,0,0" Data="{StaticResource Icons.Commit}"/>
|
<Path Grid.Column="0" Width="14" Height="14" Margin="0,8,0,0" Data="{StaticResource Icons.Commit}"/>
|
||||||
<TextBlock Grid.Column="1" Classes="monospace" VerticalAlignment="Center" Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="1" Classes="primary" VerticalAlignment="Center" Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
|
||||||
<TextBlock Grid.Column="2" VerticalAlignment="Center" Text="{Binding Subject}" Margin="4,0,0,0" TextTrimming="CharacterEllipsis"/>
|
<TextBlock Grid.Column="2" VerticalAlignment="Center" Text="{Binding Subject}" Margin="4,0,0,0" TextTrimming="CharacterEllipsis"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Security.Cryptography;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
using Avalonia;
|
using Avalonia;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
|
@ -42,7 +40,7 @@ namespace SourceGit.Views
|
||||||
{
|
{
|
||||||
if (User != null)
|
if (User != null)
|
||||||
{
|
{
|
||||||
Models.AvatarManager.Request(_emailMD5, true);
|
Models.AvatarManager.Request(User.Email, true);
|
||||||
InvalidateVisual();
|
InvalidateVisual();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -59,7 +57,7 @@ namespace SourceGit.Views
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var corner = (float)Math.Max(2, Bounds.Width / 16);
|
var corner = (float)Math.Max(2, Bounds.Width / 16);
|
||||||
var img = Models.AvatarManager.Request(_emailMD5);
|
var img = Models.AvatarManager.Request(User.Email, false);
|
||||||
if (img != null)
|
if (img != null)
|
||||||
{
|
{
|
||||||
var rect = new Rect(0, 0, Bounds.Width, Bounds.Height);
|
var rect = new Rect(0, 0, Bounds.Width, Bounds.Height);
|
||||||
|
@ -74,9 +72,9 @@ namespace SourceGit.Views
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnAvatarResourceChanged(string md5)
|
public void OnAvatarResourceChanged(string email)
|
||||||
{
|
{
|
||||||
if (_emailMD5 == md5)
|
if (User.Email.Equals(email, StringComparison.Ordinal))
|
||||||
{
|
{
|
||||||
InvalidateVisual();
|
InvalidateVisual();
|
||||||
}
|
}
|
||||||
|
@ -97,10 +95,7 @@ namespace SourceGit.Views
|
||||||
private static void OnUserPropertyChanged(Avatar avatar, AvaloniaPropertyChangedEventArgs e)
|
private static void OnUserPropertyChanged(Avatar avatar, AvaloniaPropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
if (avatar.User == null)
|
if (avatar.User == null)
|
||||||
{
|
|
||||||
avatar._emailMD5 = null;
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
var placeholder = string.IsNullOrWhiteSpace(avatar.User.Name) ? "?" : avatar.User.Name.Substring(0, 1);
|
var placeholder = string.IsNullOrWhiteSpace(avatar.User.Name) ? "?" : avatar.User.Name.Substring(0, 1);
|
||||||
var chars = placeholder.ToCharArray();
|
var chars = placeholder.ToCharArray();
|
||||||
|
@ -108,15 +103,6 @@ namespace SourceGit.Views
|
||||||
foreach (var c in chars)
|
foreach (var c in chars)
|
||||||
sum += Math.Abs(c);
|
sum += Math.Abs(c);
|
||||||
|
|
||||||
var lowered = avatar.User.Email.ToLower(CultureInfo.CurrentCulture).Trim();
|
|
||||||
var hash = MD5.Create().ComputeHash(Encoding.Default.GetBytes(lowered));
|
|
||||||
var builder = new StringBuilder();
|
|
||||||
foreach (var c in hash)
|
|
||||||
builder.Append(c.ToString("x2"));
|
|
||||||
var md5 = builder.ToString();
|
|
||||||
if (avatar._emailMD5 == null || avatar._emailMD5 != md5)
|
|
||||||
avatar._emailMD5 = md5;
|
|
||||||
|
|
||||||
avatar._fallbackBrush = new LinearGradientBrush
|
avatar._fallbackBrush = new LinearGradientBrush
|
||||||
{
|
{
|
||||||
GradientStops = FALLBACK_GRADIENTS[sum % FALLBACK_GRADIENTS.Length],
|
GradientStops = FALLBACK_GRADIENTS[sum % FALLBACK_GRADIENTS.Length],
|
||||||
|
@ -139,6 +125,5 @@ namespace SourceGit.Views
|
||||||
|
|
||||||
private FormattedText _fallbackLabel = null;
|
private FormattedText _fallbackLabel = null;
|
||||||
private LinearGradientBrush _fallbackBrush = null;
|
private LinearGradientBrush _fallbackBrush = null;
|
||||||
private string _emailMD5 = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,15 +57,15 @@
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
IsHitTestVisible="False"
|
IsHitTestVisible="False"
|
||||||
User="{Binding BaseHead.Author}"/>
|
User="{Binding BaseHead.Author}"/>
|
||||||
<TextBlock Grid.Column="1" Classes="monospace" Text="{Binding BaseHead.Author.Name}" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="1" Classes="primary" Text="{Binding BaseHead.Author.Name}" Margin="8,0,0,0"/>
|
||||||
<Border Grid.Column="2" Background="{DynamicResource Brush.Accent}" CornerRadius="4">
|
<Border Grid.Column="2" Background="{DynamicResource Brush.Accent}" CornerRadius="4">
|
||||||
<TextBlock Text="{Binding Base.FriendlyName}" Classes="monospace" Margin="4,0" Foreground="#FFDDDDDD"/>
|
<TextBlock Text="{Binding Base.FriendlyName}" Classes="primary" Margin="4,0" Foreground="#FFDDDDDD"/>
|
||||||
</Border>
|
</Border>
|
||||||
<TextBlock Grid.Column="3" Classes="monospace" Text="{Binding BaseHead.SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0" TextDecorations="Underline" PointerPressed="OnPressedSHA"/>
|
<TextBlock Grid.Column="3" Classes="primary" Text="{Binding BaseHead.SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0" TextDecorations="Underline" PointerPressed="OnPressedSHA"/>
|
||||||
<TextBlock Grid.Column="4" Classes="monospace" Text="{Binding BaseHead.CommitterTimeStr}" Foreground="{DynamicResource Brush.FG2}" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="4" Classes="primary" Text="{Binding BaseHead.CommitterTimeStr}" Foreground="{DynamicResource Brush.FG2}" Margin="8,0,0,0"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<TextBlock Grid.Row="1" Classes="monospace" Text="{Binding BaseHead.Subject}" VerticalAlignment="Bottom"/>
|
<TextBlock Grid.Row="1" Classes="primary" Text="{Binding BaseHead.Subject}" VerticalAlignment="Bottom"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
|
@ -81,15 +81,15 @@
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
IsHitTestVisible="False"
|
IsHitTestVisible="False"
|
||||||
User="{Binding ToHead.Author}"/>
|
User="{Binding ToHead.Author}"/>
|
||||||
<TextBlock Grid.Column="1" Classes="monospace" Text="{Binding ToHead.Author.Name}" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="1" Classes="primary" Text="{Binding ToHead.Author.Name}" Margin="8,0,0,0"/>
|
||||||
<Border Grid.Column="2" Background="{DynamicResource Brush.Accent}" CornerRadius="4">
|
<Border Grid.Column="2" Background="{DynamicResource Brush.Accent}" CornerRadius="4">
|
||||||
<TextBlock Text="{Binding To.FriendlyName}" Classes="monospace" Margin="4,0" Foreground="#FFDDDDDD"/>
|
<TextBlock Text="{Binding To.FriendlyName}" Classes="primary" Margin="4,0" Foreground="#FFDDDDDD"/>
|
||||||
</Border>
|
</Border>
|
||||||
<TextBlock Grid.Column="3" Classes="monospace" Text="{Binding ToHead.SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0" TextDecorations="Underline" PointerPressed="OnPressedSHA"/>
|
<TextBlock Grid.Column="3" Classes="primary" Text="{Binding ToHead.SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0" TextDecorations="Underline" PointerPressed="OnPressedSHA"/>
|
||||||
<TextBlock Grid.Column="4" Classes="monospace" Text="{Binding ToHead.CommitterTimeStr}" Foreground="{DynamicResource Brush.FG2}" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="4" Classes="primary" Text="{Binding ToHead.CommitterTimeStr}" Foreground="{DynamicResource Brush.FG2}" Margin="8,0,0,0"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<TextBlock Grid.Row="1" Classes="monospace" Text="{Binding ToHead.Subject}" VerticalAlignment="Bottom"/>
|
<TextBlock Grid.Row="1" Classes="primary" Text="{Binding ToHead.Subject}" VerticalAlignment="Bottom"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -78,7 +78,7 @@
|
||||||
<!-- Name -->
|
<!-- Name -->
|
||||||
<TextBlock Grid.Column="1"
|
<TextBlock Grid.Column="1"
|
||||||
Text="{Binding Name}"
|
Text="{Binding Name}"
|
||||||
Classes="monospace"
|
Classes="primary"
|
||||||
FontWeight="{Binding NameFontWeight}"/>
|
FontWeight="{Binding NameFontWeight}"/>
|
||||||
|
|
||||||
<!-- Tracking status -->
|
<!-- Tracking status -->
|
||||||
|
@ -89,7 +89,7 @@
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Background="{DynamicResource Brush.Badge}"
|
Background="{DynamicResource Brush.Badge}"
|
||||||
IsVisible="{Binding TrackStatus, Converter={x:Static StringConverters.IsNotNullOrEmpty}}">
|
IsVisible="{Binding TrackStatus, Converter={x:Static StringConverters.IsNotNullOrEmpty}}">
|
||||||
<TextBlock Classes="monospace"
|
<TextBlock Classes="primary"
|
||||||
FontSize="10"
|
FontSize="10"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Margin="9,0"
|
Margin="9,0"
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
IsVisible="{Binding IsFolder}"/>
|
IsVisible="{Binding IsFolder}"/>
|
||||||
|
|
||||||
<v:ChangeStatusIcon Grid.Column="1" Width="14" Height="14" IsUnstagedChange="{Binding #ThisControl.IsUnstagedChange}" Change="{Binding Change}" IsVisible="{Binding !IsFolder}"/>
|
<v:ChangeStatusIcon Grid.Column="1" Width="14" Height="14" IsUnstagedChange="{Binding #ThisControl.IsUnstagedChange}" Change="{Binding Change}" IsVisible="{Binding !IsFolder}"/>
|
||||||
<TextBlock Grid.Column="2" Classes="monospace" Text="{Binding FullPath, Converter={x:Static c:PathConverters.PureFileName}}" Margin="6,0,0,0"/>
|
<TextBlock Grid.Column="2" Classes="primary" Text="{Binding FullPath, Converter={x:Static c:PathConverters.PureFileName}}" Margin="6,0,0,0"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ListBox.ItemTemplate>
|
</ListBox.ItemTemplate>
|
||||||
|
@ -79,12 +79,12 @@
|
||||||
Change="{Binding}" />
|
Change="{Binding}" />
|
||||||
|
|
||||||
<TextBlock Grid.Column="1"
|
<TextBlock Grid.Column="1"
|
||||||
Classes="monospace"
|
Classes="primary"
|
||||||
Text="{Binding Path, Converter={x:Static c:PathConverters.PureFileName}}"
|
Text="{Binding Path, Converter={x:Static c:PathConverters.PureFileName}}"
|
||||||
Margin="4,0"/>
|
Margin="4,0"/>
|
||||||
|
|
||||||
<TextBlock Grid.Column="2"
|
<TextBlock Grid.Column="2"
|
||||||
Classes="monospace"
|
Classes="primary"
|
||||||
Text="{Binding Path, Converter={x:Static c:PathConverters.PureDirectoryName}}"
|
Text="{Binding Path, Converter={x:Static c:PathConverters.PureDirectoryName}}"
|
||||||
Foreground="{DynamicResource Brush.FG2}"/>
|
Foreground="{DynamicResource Brush.FG2}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -108,7 +108,7 @@
|
||||||
Change="{Binding}" />
|
Change="{Binding}" />
|
||||||
|
|
||||||
<TextBlock Grid.Column="1"
|
<TextBlock Grid.Column="1"
|
||||||
Classes="monospace"
|
Classes="primary"
|
||||||
Text="{Binding Path}"
|
Text="{Binding Path}"
|
||||||
Margin="4,0"/>
|
Margin="4,0"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -18,6 +18,12 @@ namespace SourceGit.Views
|
||||||
EndPoint = new RelativePoint(0, 1, RelativeUnit.Relative),
|
EndPoint = new RelativePoint(0, 1, RelativeUnit.Relative),
|
||||||
},
|
},
|
||||||
new LinearGradientBrush
|
new LinearGradientBrush
|
||||||
|
{
|
||||||
|
GradientStops = new GradientStops() { new GradientStop(Color.FromRgb(238, 160, 14), 0), new GradientStop(Color.FromRgb(228, 172, 67), 1) },
|
||||||
|
StartPoint = new RelativePoint(0, 0, RelativeUnit.Relative),
|
||||||
|
EndPoint = new RelativePoint(0, 1, RelativeUnit.Relative),
|
||||||
|
},
|
||||||
|
new LinearGradientBrush
|
||||||
{
|
{
|
||||||
GradientStops = new GradientStops() { new GradientStop(Color.FromRgb(47, 185, 47), 0), new GradientStop(Color.FromRgb(75, 189, 75), 1) },
|
GradientStops = new GradientStops() { new GradientStop(Color.FromRgb(47, 185, 47), 0), new GradientStop(Color.FromRgb(75, 189, 75), 1) },
|
||||||
StartPoint = new RelativePoint(0, 0, RelativeUnit.Relative),
|
StartPoint = new RelativePoint(0, 0, RelativeUnit.Relative),
|
||||||
|
@ -55,7 +61,7 @@ namespace SourceGit.Views
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
private static readonly string[] INDICATOR = ["?", "±", "+", "−", "➜", "❏", "U", "★"];
|
private static readonly string[] INDICATOR = ["?", "±", "T", "+", "−", "➜", "❏", "U", "★"];
|
||||||
|
|
||||||
public static readonly StyledProperty<bool> IsUnstagedChangeProperty =
|
public static readonly StyledProperty<bool> IsUnstagedChangeProperty =
|
||||||
AvaloniaProperty.Register<ChangeStatusIcon, bool>(nameof(IsUnstagedChange));
|
AvaloniaProperty.Register<ChangeStatusIcon, bool>(nameof(IsUnstagedChange));
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
Text="{DynamicResource Text.Checkout.Commit.Target}" />
|
Text="{DynamicResource Text.Checkout.Commit.Target}" />
|
||||||
<Grid Grid.Row="0" Grid.Column="1" ColumnDefinitions="Auto,Auto,*">
|
<Grid Grid.Row="0" Grid.Column="1" ColumnDefinitions="Auto,Auto,*">
|
||||||
<Path Grid.Column="0" Width="14" Height="14" Margin="0,8,0,0" Data="{StaticResource Icons.Commit}" />
|
<Path Grid.Column="0" Width="14" Height="14" Margin="0,8,0,0" Data="{StaticResource Icons.Commit}" />
|
||||||
<TextBlock Grid.Column="1" Classes="monospace" Foreground="DarkOrange" VerticalAlignment="Center" Margin="8,0" Text="{Binding Commit.SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" />
|
<TextBlock Grid.Column="1" Classes="primary" Foreground="DarkOrange" VerticalAlignment="Center" Margin="8,0" Text="{Binding Commit.SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" />
|
||||||
<TextBlock Grid.Column="2" Text="{Binding Commit.Subject}" TextTrimming="CharacterEllipsis"/>
|
<TextBlock Grid.Column="2" Text="{Binding Commit.Subject}" TextTrimming="CharacterEllipsis"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
<Grid Grid.Row="0" Grid.Column="1" ColumnDefinitions="Auto,Auto,*">
|
<Grid Grid.Row="0" Grid.Column="1" ColumnDefinitions="Auto,Auto,*">
|
||||||
<Path Grid.Column="0" Width="14" Height="14" Margin="0,8,0,0" Data="{StaticResource Icons.Commit}"/>
|
<Path Grid.Column="0" Width="14" Height="14" Margin="0,8,0,0" Data="{StaticResource Icons.Commit}"/>
|
||||||
<TextBlock Grid.Column="1" Classes="monospace" VerticalAlignment="Center" Text="{Binding Target.SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="1" Classes="primary" VerticalAlignment="Center" Text="{Binding Target.SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
|
||||||
<TextBlock Grid.Column="2" VerticalAlignment="Center" Text="{Binding Target.Subject}" Margin="4,0,0,0" TextTrimming="CharacterEllipsis"/>
|
<TextBlock Grid.Column="2" VerticalAlignment="Center" Text="{Binding Target.Subject}" Margin="4,0,0,0" TextTrimming="CharacterEllipsis"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
<Grid RowDefinitions="24,Auto,Auto,Auto" ColumnDefinitions="96,*">
|
<Grid RowDefinitions="24,Auto,Auto,Auto" ColumnDefinitions="96,*">
|
||||||
<!-- SHA -->
|
<!-- SHA -->
|
||||||
<TextBlock Grid.Row="0" Grid.Column="0" Classes="info_label" Text="{DynamicResource Text.CommitDetail.Info.SHA}" />
|
<TextBlock Grid.Row="0" Grid.Column="0" Classes="info_label" Text="{DynamicResource Text.CommitDetail.Info.SHA}" />
|
||||||
<SelectableTextBlock Grid.Row="0" Grid.Column="1" Classes="monospace" Text="{Binding SHA}" Margin="12,0,0,0" VerticalAlignment="Center"/>
|
<SelectableTextBlock Grid.Row="0" Grid.Column="1" Classes="primary" Text="{Binding SHA}" Margin="12,0,0,0" VerticalAlignment="Center"/>
|
||||||
|
|
||||||
<!-- PARENTS -->
|
<!-- PARENTS -->
|
||||||
<TextBlock Grid.Row="1" Grid.Column="0" Classes="info_label" Text="{DynamicResource Text.CommitDetail.Info.Parents}" IsVisible="{Binding Parents.Count, Converter={x:Static c:IntConverters.IsGreaterThanZero}}"/>
|
<TextBlock Grid.Row="1" Grid.Column="0" Classes="info_label" Text="{DynamicResource Text.CommitDetail.Info.Parents}" IsVisible="{Binding Parents.Count, Converter={x:Static c:IntConverters.IsGreaterThanZero}}"/>
|
||||||
|
@ -67,7 +67,7 @@
|
||||||
|
|
||||||
<ItemsControl.ItemTemplate>
|
<ItemsControl.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Classes="monospace"
|
<TextBlock Classes="primary"
|
||||||
Text="{Binding Converter={x:Static c:StringConverters.ToShortSHA}}"
|
Text="{Binding Converter={x:Static c:StringConverters.ToShortSHA}}"
|
||||||
Foreground="DarkOrange"
|
Foreground="DarkOrange"
|
||||||
TextDecorations="Underline"
|
TextDecorations="Underline"
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
|
|
||||||
<!-- Messages -->
|
<!-- Messages -->
|
||||||
<TextBlock Grid.Row="3" Grid.Column="0" Classes="info_label" Text="{DynamicResource Text.CommitDetail.Info.Message}" VerticalAlignment="Top" Margin="0,4,0,0" />
|
<TextBlock Grid.Row="3" Grid.Column="0" Classes="info_label" Text="{DynamicResource Text.CommitDetail.Info.Message}" VerticalAlignment="Top" Margin="0,4,0,0" />
|
||||||
<SelectableTextBlock Grid.Row="3" Grid.Column="1" Margin="12,5,8,0" Classes="monospace" Text="{Binding #ThisControl.Message}" TextWrapping="Wrap"/>
|
<SelectableTextBlock Grid.Row="3" Grid.Column="1" Margin="12,5,8,0" Classes="primary" Text="{Binding #ThisControl.Message}" TextWrapping="Wrap"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
|
@ -8,8 +8,7 @@
|
||||||
xmlns:c="using:SourceGit.Converters"
|
xmlns:c="using:SourceGit.Converters"
|
||||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||||
x:Class="SourceGit.Views.CommitDetail"
|
x:Class="SourceGit.Views.CommitDetail"
|
||||||
x:DataType="vm:CommitDetail"
|
x:DataType="vm:CommitDetail">
|
||||||
Background="{DynamicResource Brush.Window}">
|
|
||||||
<TabControl SelectedIndex="{Binding ActivePageIndex, Mode=TwoWay}" Padding="4">
|
<TabControl SelectedIndex="{Binding ActivePageIndex, Mode=TwoWay}" Padding="4">
|
||||||
<!-- Information Page -->
|
<!-- Information Page -->
|
||||||
<TabItem>
|
<TabItem>
|
||||||
|
@ -33,7 +32,7 @@
|
||||||
<ListBox.Styles>
|
<ListBox.Styles>
|
||||||
<Style Selector="ListBoxItem">
|
<Style Selector="ListBoxItem">
|
||||||
<Setter Property="Padding" Value="0"/>
|
<Setter Property="Padding" Value="0"/>
|
||||||
<Setter Property="MinHeight" Value="26"/>
|
<Setter Property="MinHeight" Value="24"/>
|
||||||
<Setter Property="CornerRadius" Value="4"/>
|
<Setter Property="CornerRadius" Value="4"/>
|
||||||
</Style>
|
</Style>
|
||||||
</ListBox.Styles>
|
</ListBox.Styles>
|
||||||
|
@ -46,13 +45,13 @@
|
||||||
|
|
||||||
<ListBox.ItemTemplate>
|
<ListBox.ItemTemplate>
|
||||||
<DataTemplate DataType="m:Change">
|
<DataTemplate DataType="m:Change">
|
||||||
<Grid Background="Transparent" Height="26" ColumnDefinitions="36,*" ContextRequested="OnChangeContextRequested" DoubleTapped="OnChangeDoubleTapped">
|
<Grid Background="Transparent" Height="24" ColumnDefinitions="36,*" ContextRequested="OnChangeContextRequested" DoubleTapped="OnChangeDoubleTapped">
|
||||||
<v:ChangeStatusIcon Grid.Column="0"
|
<v:ChangeStatusIcon Grid.Column="0"
|
||||||
Width="14" Height="14"
|
Width="14" Height="14"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Margin="16,0,0,0"
|
Margin="16,0,0,0"
|
||||||
Change="{Binding}"/>
|
Change="{Binding}"/>
|
||||||
<TextBlock Grid.Column="1" Classes="monospace" Text="{Binding Path}" Margin="8,0" TextTrimming="CharacterEllipsis"/>
|
<TextBlock Grid.Column="1" Classes="primary" Text="{Binding Path}" Margin="8,0" TextTrimming="CharacterEllipsis"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ListBox.ItemTemplate>
|
</ListBox.ItemTemplate>
|
||||||
|
|
|
@ -41,10 +41,10 @@
|
||||||
Margin="8,0"
|
Margin="8,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<TextBlock Classes="monospace" Margin="2,0,0,0" FontSize="11" Text="{Binding #ThisControl.Subject.Length}" IsVisible="{Binding #ThisControl.Subject.Length, Converter={x:Static c:IntConverters.IsSubjectLengthGood}}"/>
|
<TextBlock Classes="primary" Margin="2,0,0,0" FontSize="11" Text="{Binding #ThisControl.Subject.Length}" IsVisible="{Binding #ThisControl.Subject.Length, Converter={x:Static c:IntConverters.IsSubjectLengthGood}}"/>
|
||||||
<TextBlock Classes="monospace" Margin="2,0,0,0" FontSize="11" Foreground="DarkGoldenrod" Text="{Binding #ThisControl.Subject.Length}" IsVisible="{Binding #ThisControl.Subject.Length, Converter={x:Static c:IntConverters.IsSubjectLengthBad}}"/>
|
<TextBlock Classes="primary" Margin="2,0,0,0" FontSize="11" Foreground="DarkGoldenrod" Text="{Binding #ThisControl.Subject.Length}" IsVisible="{Binding #ThisControl.Subject.Length, Converter={x:Static c:IntConverters.IsSubjectLengthBad}}"/>
|
||||||
<TextBlock Classes="monospace" FontSize="11" Text="/"/>
|
<TextBlock Classes="primary" FontSize="11" Text="/"/>
|
||||||
<TextBlock Classes="monospace" FontSize="11" Text="{Binding Source={x:Static vm:Preference.Instance}, Path=SubjectGuideLength}"/>
|
<TextBlock Classes="primary" FontSize="11" Text="{Binding Source={x:Static vm:Preference.Instance}, Path=SubjectGuideLength}"/>
|
||||||
<Path Width="10" Height="10" Margin="4,0,0,0" Data="{StaticResource Icons.Error}" Fill="DarkGoldenrod" IsVisible="{Binding #ThisControl.Subject.Length, Converter={x:Static c:IntConverters.IsSubjectLengthBad}}"/>
|
<Path Width="10" Height="10" Margin="4,0,0,0" Data="{StaticResource Icons.Error}" Fill="DarkGoldenrod" IsVisible="{Binding #ThisControl.Subject.Length, Converter={x:Static c:IntConverters.IsSubjectLengthBad}}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -146,7 +146,7 @@ namespace SourceGit.Views
|
||||||
SubjectEditor.Paste(text.Substring(0, idx));
|
SubjectEditor.Paste(text.Substring(0, idx));
|
||||||
DescriptionEditor.Focus();
|
DescriptionEditor.Focus();
|
||||||
DescriptionEditor.CaretIndex = 0;
|
DescriptionEditor.CaretIndex = 0;
|
||||||
DescriptionEditor.Paste(text.Substring(idx + 1) + "\n");
|
DescriptionEditor.Paste(text.Substring(idx + 1).Trim());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<DataTemplate DataType="m:Commit">
|
<DataTemplate DataType="m:Commit">
|
||||||
<Grid ColumnDefinitions="Auto,Auto,*">
|
<Grid ColumnDefinitions="Auto,Auto,*">
|
||||||
<Path Grid.Column="0" Width="14" Height="14" Margin="0,8,0,0" Data="{StaticResource Icons.Commit}"/>
|
<Path Grid.Column="0" Width="14" Height="14" Margin="0,8,0,0" Data="{StaticResource Icons.Commit}"/>
|
||||||
<TextBlock Grid.Column="1" Classes="monospace" VerticalAlignment="Center" Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="1" Classes="primary" VerticalAlignment="Center" Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
|
||||||
<TextBlock Grid.Column="2" VerticalAlignment="Center" Text="{Binding Subject}" Margin="4,0,0,0" TextTrimming="CharacterEllipsis"/>
|
<TextBlock Grid.Column="2" VerticalAlignment="Center" Text="{Binding Subject}" Margin="4,0,0,0" TextTrimming="CharacterEllipsis"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
<DataTemplate DataType="m:Commit">
|
<DataTemplate DataType="m:Commit">
|
||||||
<Grid ColumnDefinitions="Auto,Auto,*">
|
<Grid ColumnDefinitions="Auto,Auto,*">
|
||||||
<Path Grid.Column="0" Width="14" Height="14" Margin="0,8,0,0" Data="{StaticResource Icons.Commit}"/>
|
<Path Grid.Column="0" Width="14" Height="14" Margin="0,8,0,0" Data="{StaticResource Icons.Commit}"/>
|
||||||
<TextBlock Grid.Column="1" Classes="monospace" VerticalAlignment="Center" Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="1" Classes="primary" VerticalAlignment="Center" Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
|
||||||
<TextBlock Grid.Column="2" VerticalAlignment="Center" Text="{Binding Subject}" Margin="4,0,0,0" TextTrimming="CharacterEllipsis"/>
|
<TextBlock Grid.Column="2" VerticalAlignment="Center" Text="{Binding Subject}" Margin="4,0,0,0" TextTrimming="CharacterEllipsis"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
<DataGridTemplateColumn Width="*" Header="NAME">
|
<DataGridTemplateColumn Width="*" Header="NAME">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding FriendlyName}" ClipToBounds="True" Classes="monospace" />
|
<TextBlock Text="{Binding FriendlyName}" ClipToBounds="True" Classes="primary" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
|
|
@ -26,11 +26,11 @@
|
||||||
Background="{DynamicResource Brush.Badge}"
|
Background="{DynamicResource Brush.Badge}"
|
||||||
IsVisible="{Binding FileModeChange, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
|
IsVisible="{Binding FileModeChange, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
|
||||||
ToolTip.Tip="{DynamicResource Text.Diff.FileModeChanged}">
|
ToolTip.Tip="{DynamicResource Text.Diff.FileModeChanged}">
|
||||||
<TextBlock Classes="monospace" FontSize="10" HorizontalAlignment="Center" Margin="4,0" Text="{Binding FileModeChange}" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
<TextBlock Classes="primary" FontSize="10" HorizontalAlignment="Center" Margin="4,0" Text="{Binding FileModeChange}" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<TextBlock Grid.Column="2" Classes="monospace" Margin="4,0,0,0" Text="{Binding Title}" FontSize="11" TextTrimming="CharacterEllipsis"/>
|
<TextBlock Grid.Column="2" Classes="primary" Margin="4,0,0,0" Text="{Binding Title}" FontSize="11" TextTrimming="CharacterEllipsis"/>
|
||||||
|
|
||||||
<!-- Toolbar Buttons -->
|
<!-- Toolbar Buttons -->
|
||||||
<StackPanel Grid.Column="3" Margin="8,0,0,0" Orientation="Horizontal" VerticalAlignment="Center">
|
<StackPanel Grid.Column="3" Margin="8,0,0,0" Orientation="Horizontal" VerticalAlignment="Center">
|
||||||
|
@ -116,18 +116,18 @@
|
||||||
<Path Width="64" Height="64" Data="{StaticResource Icons.Binary}" Fill="{DynamicResource Brush.FG2}"/>
|
<Path Width="64" Height="64" Data="{StaticResource Icons.Binary}" Fill="{DynamicResource Brush.FG2}"/>
|
||||||
<Grid Margin="0,16,0,0" HorizontalAlignment="Center" RowDefinitions="32,32" ColumnDefinitions="Auto,Auto,Auto">
|
<Grid Margin="0,16,0,0" HorizontalAlignment="Center" RowDefinitions="32,32" ColumnDefinitions="Auto,Auto,Auto">
|
||||||
<Border Grid.Row="0" Grid.Column="0" Height="16" Background="{DynamicResource Brush.Badge}" CornerRadius="8" VerticalAlignment="Center">
|
<Border Grid.Row="0" Grid.Column="0" Height="16" Background="{DynamicResource Brush.Badge}" CornerRadius="8" VerticalAlignment="Center">
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Diff.Binary.Old}" Margin="8,0" FontSize="10" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Diff.Binary.Old}" Margin="8,0" FontSize="10" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<TextBlock Grid.Row="0" Grid.Column="1" Classes="monospace" Text="{Binding OldSize}" Foreground="{DynamicResource Brush.FG2}" HorizontalAlignment="Right" FontSize="16" Margin="8,0"/>
|
<TextBlock Grid.Row="0" Grid.Column="1" Classes="primary" Text="{Binding OldSize}" Foreground="{DynamicResource Brush.FG2}" HorizontalAlignment="Right" FontSize="16" Margin="8,0"/>
|
||||||
<TextBlock Grid.Row="0" Grid.Column="2" Classes="monospace" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" FontSize="16"/>
|
<TextBlock Grid.Row="0" Grid.Column="2" Classes="primary" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" FontSize="16"/>
|
||||||
|
|
||||||
<Border Grid.Row="1" Grid.Column="0" Height="16" Background="Green" CornerRadius="8" VerticalAlignment="Center">
|
<Border Grid.Row="1" Grid.Column="0" Height="16" Background="Green" CornerRadius="8" VerticalAlignment="Center">
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Diff.Binary.New}" Margin="8,0" FontSize="10"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Diff.Binary.New}" Margin="8,0" FontSize="10"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<TextBlock Grid.Row="1" Grid.Column="1" Classes="monospace" Text="{Binding NewSize}" Foreground="{DynamicResource Brush.FG2}" HorizontalAlignment="Right" FontSize="16" Margin="8,0"/>
|
<TextBlock Grid.Row="1" Grid.Column="1" Classes="primary" Text="{Binding NewSize}" Foreground="{DynamicResource Brush.FG2}" HorizontalAlignment="Right" FontSize="16" Margin="8,0"/>
|
||||||
<TextBlock Grid.Row="1" Grid.Column="2" Classes="monospace" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" FontSize="16"/>
|
<TextBlock Grid.Row="1" Grid.Column="2" Classes="primary" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" FontSize="16"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
@ -143,18 +143,18 @@
|
||||||
<Path Width="64" Height="64" Data="{StaticResource Icons.LFS}" Fill="{DynamicResource Brush.FG2}"/>
|
<Path Width="64" Height="64" Data="{StaticResource Icons.LFS}" Fill="{DynamicResource Brush.FG2}"/>
|
||||||
<Grid Margin="0,16,0,0" HorizontalAlignment="Center" RowDefinitions="32,32" ColumnDefinitions="Auto,Auto,Auto">
|
<Grid Margin="0,16,0,0" HorizontalAlignment="Center" RowDefinitions="32,32" ColumnDefinitions="Auto,Auto,Auto">
|
||||||
<Border Grid.Row="0" Grid.Column="0" Height="16" Background="{DynamicResource Brush.Badge}" CornerRadius="8" VerticalAlignment="Center">
|
<Border Grid.Row="0" Grid.Column="0" Height="16" Background="{DynamicResource Brush.Badge}" CornerRadius="8" VerticalAlignment="Center">
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Diff.Binary.Old}" Margin="8,0" FontSize="10" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Diff.Binary.Old}" Margin="8,0" FontSize="10" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<TextBlock Grid.Row="0" Grid.Column="1" Classes="monospace" Text="{Binding Old.Size}" Foreground="{DynamicResource Brush.FG2}" HorizontalAlignment="Right" FontSize="16" Margin="8,0"/>
|
<TextBlock Grid.Row="0" Grid.Column="1" Classes="primary" Text="{Binding Old.Size}" Foreground="{DynamicResource Brush.FG2}" HorizontalAlignment="Right" FontSize="16" Margin="8,0"/>
|
||||||
<TextBlock Grid.Row="0" Grid.Column="2" Classes="monospace" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" FontSize="16"/>
|
<TextBlock Grid.Row="0" Grid.Column="2" Classes="primary" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" FontSize="16"/>
|
||||||
|
|
||||||
<Border Grid.Row="1" Grid.Column="0" Height="16" Background="Green" CornerRadius="8" VerticalAlignment="Center">
|
<Border Grid.Row="1" Grid.Column="0" Height="16" Background="Green" CornerRadius="8" VerticalAlignment="Center">
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Diff.Binary.New}" Margin="8,0" FontSize="10"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Diff.Binary.New}" Margin="8,0" FontSize="10"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<TextBlock Grid.Row="1" Grid.Column="1" Classes="monospace" Text="{Binding New.Size}" Foreground="{DynamicResource Brush.FG2}" HorizontalAlignment="Right" FontSize="16" Margin="8,0"/>
|
<TextBlock Grid.Row="1" Grid.Column="1" Classes="primary" Text="{Binding New.Size}" Foreground="{DynamicResource Brush.FG2}" HorizontalAlignment="Right" FontSize="16" Margin="8,0"/>
|
||||||
<TextBlock Grid.Row="1" Grid.Column="2" Classes="monospace" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" FontSize="16"/>
|
<TextBlock Grid.Row="1" Grid.Column="2" Classes="primary" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" FontSize="16"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
@ -184,7 +184,7 @@
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<Border Height="16" HorizontalAlignment="Center" Background="Green" CornerRadius="8" IsVisible="{Binding Old, Converter={x:Static ObjectConverters.IsNull}}">
|
<Border Height="16" HorizontalAlignment="Center" Background="Green" CornerRadius="8" IsVisible="{Binding Old, Converter={x:Static ObjectConverters.IsNull}}">
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Diff.Submodule.New}" Margin="8,0" FontSize="10"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Diff.Submodule.New}" Margin="8,0" FontSize="10"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<Path Width="16" Height="16" Data="{StaticResource Icons.DoubleDown}" HorizontalAlignment="Center" IsVisible="{Binding Old, Converter={x:Static ObjectConverters.IsNotNull}}"/>
|
<Path Width="16" Height="16" Data="{StaticResource Icons.DoubleDown}" HorizontalAlignment="Center" IsVisible="{Binding Old, Converter={x:Static ObjectConverters.IsNotNull}}"/>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
HorizontalAlignment="Left" VerticalAlignment="Center"
|
HorizontalAlignment="Left" VerticalAlignment="Center"
|
||||||
Data="{StaticResource Icons.Stashes}"/>
|
Data="{StaticResource Icons.Stashes}"/>
|
||||||
|
|
||||||
<TextBlock VerticalAlignment="Center" Classes="monospace" Text="{Binding Stash.SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange"/>
|
<TextBlock VerticalAlignment="Center" Classes="primary" Text="{Binding Stash.SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange"/>
|
||||||
<TextBlock VerticalAlignment="Center" Text="{Binding Stash.Message}" Margin="8,0,0,0"/>
|
<TextBlock VerticalAlignment="Center" Text="{Binding Stash.Message}" Margin="8,0,0,0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -80,12 +80,12 @@
|
||||||
<Grid RowDefinitions="Auto,*">
|
<Grid RowDefinitions="Auto,*">
|
||||||
<Grid Grid.Row="0" ColumnDefinitions="Auto,*,Auto,Auto">
|
<Grid Grid.Row="0" ColumnDefinitions="Auto,*,Auto,Auto">
|
||||||
<v:Avatar Grid.Column="0" Width="16" Height="16" VerticalAlignment="Center" IsHitTestVisible="False" User="{Binding Author}"/>
|
<v:Avatar Grid.Column="0" Width="16" Height="16" VerticalAlignment="Center" IsHitTestVisible="False" User="{Binding Author}"/>
|
||||||
<TextBlock Grid.Column="1" Classes="monospace" Text="{Binding Author.Name}" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="1" Classes="primary" Text="{Binding Author.Name}" Margin="8,0,0,0"/>
|
||||||
<TextBlock Grid.Column="2" Classes="monospace" Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="2" Classes="primary" Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
|
||||||
<TextBlock Grid.Column="3" Classes="monospace" Text="{Binding AuthorTimeShortStr}" Foreground="{DynamicResource Brush.FG2}" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="3" Classes="primary" Text="{Binding AuthorTimeShortStr}" Foreground="{DynamicResource Brush.FG2}" Margin="8,0,0,0"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<TextBlock Grid.Row="1" Classes="monospace" Text="{Binding Subject}" VerticalAlignment="Bottom"/>
|
<TextBlock Grid.Row="1" Classes="primary" Text="{Binding Subject}" VerticalAlignment="Bottom"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
@ -120,22 +120,26 @@
|
||||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
|
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
|
||||||
Background="Transparent"/>
|
Background="Transparent"/>
|
||||||
|
|
||||||
<Grid Grid.Row="2" Margin="0,0,4,4">
|
<Border Grid.Row="2" Margin="0,0,4,4">
|
||||||
<Border Background="{DynamicResource Brush.Window}">
|
<ContentControl>
|
||||||
|
<ContentControl.Content>
|
||||||
|
<Binding Path="DetailContext">
|
||||||
|
<Binding.TargetNullValue>
|
||||||
<Path Width="128" Height="128"
|
<Path Width="128" Height="128"
|
||||||
Data="{StaticResource Icons.Detail}"
|
Data="{StaticResource Icons.Detail}"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Fill="{DynamicResource Brush.FG2}"/>
|
Fill="{DynamicResource Brush.FG2}"/>
|
||||||
</Border>
|
</Binding.TargetNullValue>
|
||||||
|
</Binding>
|
||||||
|
</ContentControl.Content>
|
||||||
|
|
||||||
<ContentControl Content="{Binding DetailContext}">
|
|
||||||
<ContentControl.DataTemplates>
|
<ContentControl.DataTemplates>
|
||||||
<DataTemplate DataType="vm:CommitDetail">
|
<DataTemplate DataType="vm:CommitDetail">
|
||||||
<v:CommitDetail/>
|
<v:CommitDetail/>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ContentControl.DataTemplates>
|
</ContentControl.DataTemplates>
|
||||||
</ContentControl>
|
</ContentControl>
|
||||||
</Grid>
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -29,7 +29,8 @@
|
||||||
VerticalScrollBarVisibility="Auto"
|
VerticalScrollBarVisibility="Auto"
|
||||||
LayoutUpdated="OnCommitDataGridLayoutUpdated"
|
LayoutUpdated="OnCommitDataGridLayoutUpdated"
|
||||||
SelectionChanged="OnCommitDataGridSelectionChanged"
|
SelectionChanged="OnCommitDataGridSelectionChanged"
|
||||||
ContextRequested="OnCommitDataGridContextRequested">
|
ContextRequested="OnCommitDataGridContextRequested"
|
||||||
|
DoubleTapped="OnCommitDataGridDoubleTapped">
|
||||||
<DataGrid.Styles>
|
<DataGrid.Styles>
|
||||||
<Style Selector="DataGridColumnHeader">
|
<Style Selector="DataGridColumnHeader">
|
||||||
<Setter Property="MinHeight" Value="24"/>
|
<Setter Property="MinHeight" Value="24"/>
|
||||||
|
@ -79,7 +80,7 @@
|
||||||
FontSize="10"
|
FontSize="10"
|
||||||
VerticalAlignment="Center"/>
|
VerticalAlignment="Center"/>
|
||||||
|
|
||||||
<TextBlock Classes="monospace"
|
<TextBlock Classes="primary"
|
||||||
Text="{Binding Subject}"
|
Text="{Binding Subject}"
|
||||||
Opacity="{Binding Opacity}"
|
Opacity="{Binding Opacity}"
|
||||||
FontWeight="{Binding FontWeight}"/>
|
FontWeight="{Binding FontWeight}"/>
|
||||||
|
@ -104,7 +105,7 @@
|
||||||
User="{Binding Author}"
|
User="{Binding Author}"
|
||||||
Opacity="{Binding Opacity}"/>
|
Opacity="{Binding Opacity}"/>
|
||||||
<TextBlock Grid.Column="1"
|
<TextBlock Grid.Column="1"
|
||||||
Classes="monospace"
|
Classes="primary"
|
||||||
Text="{Binding Author.Name}"
|
Text="{Binding Author.Name}"
|
||||||
Margin="8,0,0,0"
|
Margin="8,0,0,0"
|
||||||
Opacity="{Binding Opacity}"
|
Opacity="{Binding Opacity}"
|
||||||
|
@ -121,7 +122,7 @@
|
||||||
|
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate x:DataType="{x:Type m:Commit}">
|
<DataTemplate x:DataType="{x:Type m:Commit}">
|
||||||
<TextBlock Classes="monospace"
|
<TextBlock Classes="primary"
|
||||||
Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}"
|
Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}"
|
||||||
Margin="8,0"
|
Margin="8,0"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
|
@ -144,7 +145,7 @@
|
||||||
|
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate x:DataType="{x:Type m:Commit}">
|
<DataTemplate x:DataType="{x:Type m:Commit}">
|
||||||
<v:CommitTimeTextBlock Classes="monospace"
|
<v:CommitTimeTextBlock Classes="primary"
|
||||||
Margin="8,0"
|
Margin="8,0"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Opacity="{Binding Opacity}"
|
Opacity="{Binding Opacity}"
|
||||||
|
@ -174,15 +175,19 @@
|
||||||
Background="{DynamicResource Brush.Window}"
|
Background="{DynamicResource Brush.Window}"
|
||||||
BorderBrush="{DynamicResource Brush.Border0}"/>
|
BorderBrush="{DynamicResource Brush.Border0}"/>
|
||||||
|
|
||||||
<Grid Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3">
|
<Border Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3">
|
||||||
<Border Background="{DynamicResource Brush.Window}">
|
<ContentControl>
|
||||||
|
<ContentControl.Content>
|
||||||
|
<Binding Path="DetailContext">
|
||||||
|
<Binding.TargetNullValue>
|
||||||
<Path Width="128" Height="128"
|
<Path Width="128" Height="128"
|
||||||
Data="{StaticResource Icons.Detail}"
|
Data="{StaticResource Icons.Detail}"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Fill="{DynamicResource Brush.FG2}"/>
|
Fill="{DynamicResource Brush.FG2}"/>
|
||||||
</Border>
|
</Binding.TargetNullValue>
|
||||||
|
</Binding>
|
||||||
|
</ContentControl.Content>
|
||||||
|
|
||||||
<ContentControl Content="{Binding DetailContext}">
|
|
||||||
<ContentControl.DataTemplates>
|
<ContentControl.DataTemplates>
|
||||||
<DataTemplate DataType="vm:CommitDetail">
|
<DataTemplate DataType="vm:CommitDetail">
|
||||||
<v:CommitDetail/>
|
<v:CommitDetail/>
|
||||||
|
@ -193,7 +198,6 @@
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<DataTemplate DataType="x:Int32">
|
<DataTemplate DataType="x:Int32">
|
||||||
<Grid Background="{DynamicResource Brush.Window}">
|
|
||||||
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
|
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||||
<Path Width="128" Height="128"
|
<Path Width="128" Height="128"
|
||||||
Data="{StaticResource Icons.Detail}"
|
Data="{StaticResource Icons.Detail}"
|
||||||
|
@ -206,10 +210,9 @@
|
||||||
Foreground="{DynamicResource Brush.FG2}"
|
Foreground="{DynamicResource Brush.FG2}"
|
||||||
Text="{Binding Converter={x:Static c:StringConverters.FormatByResourceKey}, ConverterParameter='Histories.Selected'}"/>
|
Text="{Binding Converter={x:Static c:StringConverters.FormatByResourceKey}, ConverterParameter='Histories.Selected'}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ContentControl.DataTemplates>
|
</ContentControl.DataTemplates>
|
||||||
</ContentControl>
|
</ContentControl>
|
||||||
</Grid>
|
</Border>
|
||||||
</v:LayoutableGrid>
|
</v:LayoutableGrid>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|
|
@ -3,6 +3,7 @@ using System;
|
||||||
using Avalonia;
|
using Avalonia;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
|
using Avalonia.Input;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Avalonia.Media;
|
using Avalonia.Media;
|
||||||
using Avalonia.Threading;
|
using Avalonia.Threading;
|
||||||
|
@ -409,5 +410,14 @@ namespace SourceGit.Views
|
||||||
}
|
}
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnCommitDataGridDoubleTapped(object sender, TappedEventArgs e)
|
||||||
|
{
|
||||||
|
if (DataContext is ViewModels.Histories histories && sender is DataGrid datagrid && datagrid.SelectedItems is { Count: 1 } selectedItems)
|
||||||
|
{
|
||||||
|
histories.DoubleTapped(selectedItems[0] as Models.Commit);
|
||||||
|
}
|
||||||
|
e.Handled = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,22 +59,22 @@
|
||||||
Margin="0,0,0,8"/>
|
Margin="0,0,0,8"/>
|
||||||
|
|
||||||
<Grid RowDefinitions="20,20,20,20,20,20" ColumnDefinitions="150,*">
|
<Grid RowDefinitions="20,20,20,20,20,20" ColumnDefinitions="150,*">
|
||||||
<TextBlock Grid.Row="0" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+Shift+P, macOS=⌘+\,}"/>
|
<TextBlock Grid.Row="0" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+Shift+P, macOS=⌘+\,}"/>
|
||||||
<TextBlock Grid.Row="0" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.OpenPreference}"/>
|
<TextBlock Grid.Row="0" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.OpenPreference}"/>
|
||||||
|
|
||||||
<TextBlock Grid.Row="1" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+T, macOS=⌘+T}"/>
|
<TextBlock Grid.Row="1" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+T, macOS=⌘+T}"/>
|
||||||
<TextBlock Grid.Row="1" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.NewTab}" />
|
<TextBlock Grid.Row="1" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.NewTab}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="2" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+W, macOS=⌘+W}" />
|
<TextBlock Grid.Row="2" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+W, macOS=⌘+W}" />
|
||||||
<TextBlock Grid.Row="2" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.CloseTab}" />
|
<TextBlock Grid.Row="2" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.CloseTab}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="3" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Shift+Ctrl+Tab, macOS=⌘+⌥+←}"/>
|
<TextBlock Grid.Row="3" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Shift+Ctrl+Tab, macOS=⌘+⌥+←}"/>
|
||||||
<TextBlock Grid.Row="3" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.GotoPrevTab}" />
|
<TextBlock Grid.Row="3" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.GotoPrevTab}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="4" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+Tab, macOS=⌘+⌥+→}"/>
|
<TextBlock Grid.Row="4" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+Tab, macOS=⌘+⌥+→}"/>
|
||||||
<TextBlock Grid.Row="4" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.GotoNextTab}" />
|
<TextBlock Grid.Row="4" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.GotoNextTab}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="5" Grid.Column="0" Classes="monospace bold" Text="ESC"/>
|
<TextBlock Grid.Row="5" Grid.Column="0" Classes="primary bold" Text="ESC"/>
|
||||||
<TextBlock Grid.Row="5" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.CancelPopup}" />
|
<TextBlock Grid.Row="5" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Global.CancelPopup}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
|
@ -85,31 +85,31 @@
|
||||||
Margin="0,8"/>
|
Margin="0,8"/>
|
||||||
|
|
||||||
<Grid RowDefinitions="20,20,20,20,20,20,20,20,20" ColumnDefinitions="150,*">
|
<Grid RowDefinitions="20,20,20,20,20,20,20,20,20" ColumnDefinitions="150,*">
|
||||||
<TextBlock Grid.Row="0" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+Shift+H, macOS=⌘+⇧+H}"/>
|
<TextBlock Grid.Row="0" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+Shift+H, macOS=⌘+⇧+H}"/>
|
||||||
<TextBlock Grid.Row="0" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.GoHome}" />
|
<TextBlock Grid.Row="0" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.GoHome}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="1" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+F, macOS=⌘+F}"/>
|
<TextBlock Grid.Row="1" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+F, macOS=⌘+F}"/>
|
||||||
<TextBlock Grid.Row="1" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.OpenSearchCommits}" />
|
<TextBlock Grid.Row="1" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.OpenSearchCommits}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="2" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+1, macOS=⌘+1}"/>
|
<TextBlock Grid.Row="2" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+1, macOS=⌘+1}"/>
|
||||||
<TextBlock Grid.Row="2" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.ViewHistories}" />
|
<TextBlock Grid.Row="2" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.ViewHistories}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="3" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+2, macOS=⌘+2}"/>
|
<TextBlock Grid.Row="3" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+2, macOS=⌘+2}"/>
|
||||||
<TextBlock Grid.Row="3" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.ViewChanges}" />
|
<TextBlock Grid.Row="3" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.ViewChanges}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="4" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+3, macOS=⌘+3}"/>
|
<TextBlock Grid.Row="4" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+3, macOS=⌘+3}"/>
|
||||||
<TextBlock Grid.Row="4" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.ViewStashes}" />
|
<TextBlock Grid.Row="4" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.ViewStashes}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="5" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Space, macOS=␣}"/>
|
<TextBlock Grid.Row="5" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Space, macOS=␣}"/>
|
||||||
<TextBlock Grid.Row="5" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.StageOrUnstageSelected}" />
|
<TextBlock Grid.Row="5" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.StageOrUnstageSelected}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="6" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+Enter, macOS=⌘+Enter}"/>
|
<TextBlock Grid.Row="6" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+Enter, macOS=⌘+Enter}"/>
|
||||||
<TextBlock Grid.Row="6" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.Commit}" />
|
<TextBlock Grid.Row="6" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.Commit}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="7" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+Shift+Enter, macOS=⌘+⇧+Enter}"/>
|
<TextBlock Grid.Row="7" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+Shift+Enter, macOS=⌘+⇧+Enter}"/>
|
||||||
<TextBlock Grid.Row="7" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.CommitAndPush}" />
|
<TextBlock Grid.Row="7" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.CommitAndPush}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="8" Grid.Column="0" Classes="monospace bold" Text="F5"/>
|
<TextBlock Grid.Row="8" Grid.Column="0" Classes="primary bold" Text="F5"/>
|
||||||
<TextBlock Grid.Row="8" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.Refresh}" />
|
<TextBlock Grid.Row="8" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.Repo.Refresh}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
|
@ -120,16 +120,16 @@
|
||||||
Margin="0,8"/>
|
Margin="0,8"/>
|
||||||
|
|
||||||
<Grid RowDefinitions="20,20,20,20" ColumnDefinitions="150,*">
|
<Grid RowDefinitions="20,20,20,20" ColumnDefinitions="150,*">
|
||||||
<TextBlock Grid.Row="0" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Ctrl+F, macOS=⌘+F}"/>
|
<TextBlock Grid.Row="0" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Ctrl+F, macOS=⌘+F}"/>
|
||||||
<TextBlock Grid.Row="0" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.TextEditor.Search}" />
|
<TextBlock Grid.Row="0" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.TextEditor.Search}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="1" Grid.Column="0" Classes="monospace bold" Text="{OnPlatform Shift+F3/Shift+Enter, macOS=⇧+F3/⇧+Enter}"/>
|
<TextBlock Grid.Row="1" Grid.Column="0" Classes="primary bold" Text="{OnPlatform Shift+F3/Shift+Enter, macOS=⇧+F3/⇧+Enter}"/>
|
||||||
<TextBlock Grid.Row="1" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.TextEditor.GotoPrevMatch}" />
|
<TextBlock Grid.Row="1" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.TextEditor.GotoPrevMatch}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="2" Grid.Column="0" Classes="monospace bold" Text="F3/Enter"/>
|
<TextBlock Grid.Row="2" Grid.Column="0" Classes="primary bold" Text="F3/Enter"/>
|
||||||
<TextBlock Grid.Row="2" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.TextEditor.GotoNextMatch}" />
|
<TextBlock Grid.Row="2" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.TextEditor.GotoNextMatch}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="3" Grid.Column="0" Classes="monospace bold" Text="ESC"/>
|
<TextBlock Grid.Row="3" Grid.Column="0" Classes="primary bold" Text="ESC"/>
|
||||||
<TextBlock Grid.Row="3" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.TextEditor.CloseSearch}" />
|
<TextBlock Grid.Row="3" Grid.Column="1" Margin="16,0,0,0" Text="{DynamicResource Text.Hotkeys.TextEditor.CloseSearch}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
|
@ -24,12 +24,12 @@
|
||||||
<Grid RowDefinitions="Auto,*" Margin="16,0" IsVisible="{Binding Old, Converter={x:Static ObjectConverters.IsNotNull}}">
|
<Grid RowDefinitions="Auto,*" Margin="16,0" IsVisible="{Binding Old, Converter={x:Static ObjectConverters.IsNotNull}}">
|
||||||
<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Center">
|
<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Center">
|
||||||
<Border Height="16" Background="{DynamicResource Brush.Badge}" CornerRadius="8" VerticalAlignment="Center">
|
<Border Height="16" Background="{DynamicResource Brush.Badge}" CornerRadius="8" VerticalAlignment="Center">
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Diff.Binary.Old}" Margin="8,0" FontSize="10" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Diff.Binary.Old}" Margin="8,0" FontSize="10" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<TextBlock Classes="monospace" Text="{Binding OldImageSize}" Margin="8,0,0,0"/>
|
<TextBlock Classes="primary" Text="{Binding OldImageSize}" Margin="8,0,0,0"/>
|
||||||
<TextBlock Classes="monospace" Text="{Binding OldFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
<TextBlock Classes="primary" Text="{Binding OldFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<Border Grid.Row="1" Margin="0,12,0,0" Effect="drop-shadow(0 0 8 #A0000000)">
|
<Border Grid.Row="1" Margin="0,12,0,0" Effect="drop-shadow(0 0 8 #A0000000)">
|
||||||
|
@ -47,12 +47,12 @@
|
||||||
<Grid RowDefinitions="Auto,*" Margin="16,0" IsVisible="{Binding New, Converter={x:Static ObjectConverters.IsNotNull}}">
|
<Grid RowDefinitions="Auto,*" Margin="16,0" IsVisible="{Binding New, Converter={x:Static ObjectConverters.IsNotNull}}">
|
||||||
<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Center">
|
<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Center">
|
||||||
<Border Height="16" Background="Green" CornerRadius="8" VerticalAlignment="Center">
|
<Border Height="16" Background="Green" CornerRadius="8" VerticalAlignment="Center">
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Diff.Binary.New}" Margin="8,0" FontSize="10"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Diff.Binary.New}" Margin="8,0" FontSize="10"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<TextBlock Classes="monospace" Text="{Binding NewImageSize}" Margin="8,0,0,0"/>
|
<TextBlock Classes="primary" Text="{Binding NewImageSize}" Margin="8,0,0,0"/>
|
||||||
<TextBlock Classes="monospace" Text="{Binding NewFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
<TextBlock Classes="primary" Text="{Binding NewFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<Border Grid.Row="1" Margin="0,12,0,0" Effect="drop-shadow(0 0 8 #A0000000)">
|
<Border Grid.Row="1" Margin="0,12,0,0" Effect="drop-shadow(0 0 8 #A0000000)">
|
||||||
|
@ -77,20 +77,20 @@
|
||||||
<Grid RowDefinitions="Auto,*" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="8,16">
|
<Grid RowDefinitions="Auto,*" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="8,16">
|
||||||
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto" HorizontalAlignment="Center">
|
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto" HorizontalAlignment="Center">
|
||||||
<Border Grid.Column="0" Height="16" Background="{DynamicResource Brush.Badge}" CornerRadius="8" VerticalAlignment="Center">
|
<Border Grid.Column="0" Height="16" Background="{DynamicResource Brush.Badge}" CornerRadius="8" VerticalAlignment="Center">
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Diff.Binary.Old}" Margin="8,0" FontSize="10" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Diff.Binary.Old}" Margin="8,0" FontSize="10" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<TextBlock Grid.Column="1" Classes="monospace" Text="{Binding OldImageSize}" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="1" Classes="primary" Text="{Binding OldImageSize}" Margin="8,0,0,0"/>
|
||||||
<TextBlock Grid.Column="2" Classes="monospace" Text="{Binding OldFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
<TextBlock Grid.Column="2" Classes="primary" Text="{Binding OldFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
||||||
<TextBlock Grid.Column="3" Classes="monospace" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
<TextBlock Grid.Column="3" Classes="primary" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
||||||
|
|
||||||
<Border Grid.Column="4" Height="16" Background="Green" CornerRadius="8" VerticalAlignment="Center" Margin="32,0,0,0">
|
<Border Grid.Column="4" Height="16" Background="Green" CornerRadius="8" VerticalAlignment="Center" Margin="32,0,0,0">
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Diff.Binary.New}" Margin="8,0" FontSize="10"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Diff.Binary.New}" Margin="8,0" FontSize="10"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<TextBlock Grid.Column="5" Classes="monospace" Text="{Binding NewImageSize}" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="5" Classes="primary" Text="{Binding NewImageSize}" Margin="8,0,0,0"/>
|
||||||
<TextBlock Grid.Column="6" Classes="monospace" Text="{Binding NewFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
<TextBlock Grid.Column="6" Classes="primary" Text="{Binding NewFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
||||||
<TextBlock Grid.Column="7" Classes="monospace" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
<TextBlock Grid.Column="7" Classes="primary" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Border Grid.Row="1" Margin="0,12,0,0" Effect="drop-shadow(0 0 8 #A0000000)">
|
<Border Grid.Row="1" Margin="0,12,0,0" Effect="drop-shadow(0 0 8 #A0000000)">
|
||||||
|
@ -113,20 +113,20 @@
|
||||||
<Grid RowDefinitions="Auto,*,Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="8,16,8,0">
|
<Grid RowDefinitions="Auto,*,Auto" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="8,16,8,0">
|
||||||
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto" HorizontalAlignment="Center">
|
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto" HorizontalAlignment="Center">
|
||||||
<Border Grid.Column="0" Height="16" Background="{DynamicResource Brush.Badge}" CornerRadius="8" VerticalAlignment="Center">
|
<Border Grid.Column="0" Height="16" Background="{DynamicResource Brush.Badge}" CornerRadius="8" VerticalAlignment="Center">
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Diff.Binary.Old}" Margin="8,0" FontSize="10" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Diff.Binary.Old}" Margin="8,0" FontSize="10" Foreground="{DynamicResource Brush.BadgeFG}"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<TextBlock Grid.Column="1" Classes="monospace" Text="{Binding OldImageSize}" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="1" Classes="primary" Text="{Binding OldImageSize}" Margin="8,0,0,0"/>
|
||||||
<TextBlock Grid.Column="2" Classes="monospace" Text="{Binding OldFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
<TextBlock Grid.Column="2" Classes="primary" Text="{Binding OldFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
||||||
<TextBlock Grid.Column="3" Classes="monospace" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
<TextBlock Grid.Column="3" Classes="primary" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
||||||
|
|
||||||
<Border Grid.Column="4" Height="16" Background="Green" CornerRadius="8" VerticalAlignment="Center" Margin="32,0,0,0">
|
<Border Grid.Column="4" Height="16" Background="Green" CornerRadius="8" VerticalAlignment="Center" Margin="32,0,0,0">
|
||||||
<TextBlock Classes="monospace" Text="{DynamicResource Text.Diff.Binary.New}" Margin="8,0" FontSize="10"/>
|
<TextBlock Classes="primary" Text="{DynamicResource Text.Diff.Binary.New}" Margin="8,0" FontSize="10"/>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<TextBlock Grid.Column="5" Classes="monospace" Text="{Binding NewImageSize}" Margin="8,0,0,0"/>
|
<TextBlock Grid.Column="5" Classes="primary" Text="{Binding NewImageSize}" Margin="8,0,0,0"/>
|
||||||
<TextBlock Grid.Column="6" Classes="monospace" Text="{Binding NewFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
<TextBlock Grid.Column="6" Classes="primary" Text="{Binding NewFileSize}" Foreground="{DynamicResource Brush.FG2}" Margin="16,0,0,0" HorizontalAlignment="Right"/>
|
||||||
<TextBlock Grid.Column="7" Classes="monospace" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
<TextBlock Grid.Column="7" Classes="primary" Text="{DynamicResource Text.Bytes}" Foreground="{DynamicResource Brush.FG2}" Margin="2,0,0,0"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Border Grid.Row="1" Margin="0,12,0,0" Effect="drop-shadow(0 0 8 #A0000000)">
|
<Border Grid.Row="1" Margin="0,12,0,0" Effect="drop-shadow(0 0 8 #A0000000)">
|
||||||
|
@ -141,8 +141,8 @@
|
||||||
|
|
||||||
<Grid Grid.Row="2" ColumnDefinitions="100,200,100" Margin="0,12,0,0" HorizontalAlignment="Center">
|
<Grid Grid.Row="2" ColumnDefinitions="100,200,100" Margin="0,12,0,0" HorizontalAlignment="Center">
|
||||||
<StackPanel Grid.Column="0" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,0,8,0">
|
<StackPanel Grid.Column="0" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,0,8,0">
|
||||||
<TextBlock Classes="monospace" Text="OLD"/>
|
<TextBlock Classes="primary" Text="OLD"/>
|
||||||
<TextBlock Classes="monospace"
|
<TextBlock Classes="primary"
|
||||||
Margin="8,0,0,0"
|
Margin="8,0,0,0"
|
||||||
Text="{Binding #ImageBlendSlider.Value, Converter={x:Static c:DoubleConverters.OneMinusToPercentage}}"
|
Text="{Binding #ImageBlendSlider.Value, Converter={x:Static c:DoubleConverters.OneMinusToPercentage}}"
|
||||||
Foreground="{DynamicResource Brush.FG2}"/>
|
Foreground="{DynamicResource Brush.FG2}"/>
|
||||||
|
@ -159,8 +159,8 @@
|
||||||
Value="0.5"/>
|
Value="0.5"/>
|
||||||
|
|
||||||
<StackPanel Grid.Column="2" Orientation="Horizontal" VerticalAlignment="Top" Margin="8,0,0,0">
|
<StackPanel Grid.Column="2" Orientation="Horizontal" VerticalAlignment="Top" Margin="8,0,0,0">
|
||||||
<TextBlock Classes="monospace" Text="NEW"/>
|
<TextBlock Classes="primary" Text="NEW"/>
|
||||||
<TextBlock Classes="monospace"
|
<TextBlock Classes="primary"
|
||||||
Margin="8,0,0,0"
|
Margin="8,0,0,0"
|
||||||
Text="{Binding #ImageBlendSlider.Value, Converter={x:Static c:DoubleConverters.ToPercentage}}"
|
Text="{Binding #ImageBlendSlider.Value, Converter={x:Static c:DoubleConverters.ToPercentage}}"
|
||||||
Foreground="{DynamicResource Brush.FG2}"/>
|
Foreground="{DynamicResource Brush.FG2}"/>
|
||||||
|
|