mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-12-26 21:17:20 -08:00
Compare commits
3 commits
6d1dfad8a1
...
4e57cd50cd
Author | SHA1 | Date | |
---|---|---|---|
|
4e57cd50cd | ||
|
a59600ce18 | ||
|
d746e352a7 |
16 changed files with 183 additions and 58 deletions
|
@ -5,16 +5,16 @@ namespace SourceGit.Commands
|
||||||
{
|
{
|
||||||
public class Clean : Command
|
public class Clean : Command
|
||||||
{
|
{
|
||||||
public Clean(string repo)
|
public Clean(string repo, bool includeIgnored)
|
||||||
{
|
{
|
||||||
WorkingDirectory = repo;
|
WorkingDirectory = repo;
|
||||||
Context = repo;
|
Context = repo;
|
||||||
Args = "clean -qfd";
|
Args = includeIgnored ? "clean -qfdx" : "clean -qfd";
|
||||||
}
|
}
|
||||||
|
|
||||||
public Clean(string repo, List<string> files)
|
public Clean(string repo, List<string> files)
|
||||||
{
|
{
|
||||||
StringBuilder builder = new StringBuilder();
|
var builder = new StringBuilder();
|
||||||
builder.Append("clean -qfd --");
|
builder.Append("clean -qfd --");
|
||||||
foreach (var f in files)
|
foreach (var f in files)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,10 +5,10 @@ namespace SourceGit.Commands
|
||||||
{
|
{
|
||||||
public static class Discard
|
public static class Discard
|
||||||
{
|
{
|
||||||
public static void All(string repo)
|
public static void All(string repo, bool includeIgnored)
|
||||||
{
|
{
|
||||||
new Restore(repo).Exec();
|
new Restore(repo).Exec();
|
||||||
new Clean(repo).Exec();
|
new Clean(repo, includeIgnored).Exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Changes(string repo, List<Models.Change> changes)
|
public static void Changes(string repo, List<Models.Change> changes)
|
||||||
|
|
|
@ -4,6 +4,12 @@ namespace SourceGit.Models
|
||||||
{
|
{
|
||||||
public class RepositorySettings
|
public class RepositorySettings
|
||||||
{
|
{
|
||||||
|
public string DefaultRemote
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
} = string.Empty;
|
||||||
|
|
||||||
public DealWithLocalChanges DealWithLocalChangesOnCheckoutBranch
|
public DealWithLocalChanges DealWithLocalChangesOnCheckoutBranch
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
|
|
|
@ -138,6 +138,7 @@
|
||||||
<x:String x:Key="Text.Configure.Git" xml:space="preserve">GIT</x:String>
|
<x:String x:Key="Text.Configure.Git" xml:space="preserve">GIT</x:String>
|
||||||
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">Fetch remotes automatically</x:String>
|
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">Fetch remotes automatically</x:String>
|
||||||
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">Minute(s)</x:String>
|
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">Minute(s)</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Git.DefaultRemote" xml:space="preserve">Default Remote</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">ISSUE TRACKER</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">ISSUE TRACKER</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGithub" xml:space="preserve">Add Sample Github Rule</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGithub" xml:space="preserve">Add Sample Github Rule</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker.AddSampleJira" xml:space="preserve">Add Sample Jira Rule</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker.AddSampleJira" xml:space="preserve">Add Sample Jira Rule</x:String>
|
||||||
|
@ -223,6 +224,7 @@
|
||||||
<x:String x:Key="Text.Discard" xml:space="preserve">Discard Changes</x:String>
|
<x:String x:Key="Text.Discard" xml:space="preserve">Discard Changes</x:String>
|
||||||
<x:String x:Key="Text.Discard.All" xml:space="preserve">All local changes in working copy.</x:String>
|
<x:String x:Key="Text.Discard.All" xml:space="preserve">All local changes in working copy.</x:String>
|
||||||
<x:String x:Key="Text.Discard.Changes" xml:space="preserve">Changes:</x:String>
|
<x:String x:Key="Text.Discard.Changes" xml:space="preserve">Changes:</x:String>
|
||||||
|
<x:String x:Key="Text.Discard.IncludeIgnored" xml:space="preserve">Include ignored files</x:String>
|
||||||
<x:String x:Key="Text.Discard.Total" xml:space="preserve">Total {0} changes will be discard</x:String>
|
<x:String x:Key="Text.Discard.Total" xml:space="preserve">Total {0} changes will be discard</x:String>
|
||||||
<x:String x:Key="Text.Discard.Warning" xml:space="preserve">You can't undo this action!!!</x:String>
|
<x:String x:Key="Text.Discard.Warning" xml:space="preserve">You can't undo this action!!!</x:String>
|
||||||
<x:String x:Key="Text.EditRepositoryNode.Bookmark" xml:space="preserve">Bookmark:</x:String>
|
<x:String x:Key="Text.EditRepositoryNode.Bookmark" xml:space="preserve">Bookmark:</x:String>
|
||||||
|
|
|
@ -141,6 +141,7 @@
|
||||||
<x:String x:Key="Text.Configure.Git" xml:space="preserve">GIT配置</x:String>
|
<x:String x:Key="Text.Configure.Git" xml:space="preserve">GIT配置</x:String>
|
||||||
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">启用定时自动拉取远程更新</x:String>
|
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">启用定时自动拉取远程更新</x:String>
|
||||||
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">分钟</x:String>
|
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">分钟</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Git.DefaultRemote" xml:space="preserve">默认远程</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">ISSUE追踪</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">ISSUE追踪</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGithub" xml:space="preserve">新增匹配Github Issue规则</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGithub" xml:space="preserve">新增匹配Github Issue规则</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker.AddSampleJira" xml:space="preserve">新增匹配Jira规则</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker.AddSampleJira" xml:space="preserve">新增匹配Jira规则</x:String>
|
||||||
|
@ -226,6 +227,7 @@
|
||||||
<x:String x:Key="Text.Discard" xml:space="preserve">放弃更改确认</x:String>
|
<x:String x:Key="Text.Discard" xml:space="preserve">放弃更改确认</x:String>
|
||||||
<x:String x:Key="Text.Discard.All" xml:space="preserve">所有本地址未提交的修改。</x:String>
|
<x:String x:Key="Text.Discard.All" xml:space="preserve">所有本地址未提交的修改。</x:String>
|
||||||
<x:String x:Key="Text.Discard.Changes" xml:space="preserve">变更 :</x:String>
|
<x:String x:Key="Text.Discard.Changes" xml:space="preserve">变更 :</x:String>
|
||||||
|
<x:String x:Key="Text.Discard.IncludeIgnored" xml:space="preserve">包括所有已忽略的文件</x:String>
|
||||||
<x:String x:Key="Text.Discard.Total" xml:space="preserve">总计{0}项选中更改</x:String>
|
<x:String x:Key="Text.Discard.Total" xml:space="preserve">总计{0}项选中更改</x:String>
|
||||||
<x:String x:Key="Text.Discard.Warning" xml:space="preserve">本操作不支持回退,请确认后继续!!!</x:String>
|
<x:String x:Key="Text.Discard.Warning" xml:space="preserve">本操作不支持回退,请确认后继续!!!</x:String>
|
||||||
<x:String x:Key="Text.EditRepositoryNode.Bookmark" xml:space="preserve">书签 :</x:String>
|
<x:String x:Key="Text.EditRepositoryNode.Bookmark" xml:space="preserve">书签 :</x:String>
|
||||||
|
|
|
@ -141,6 +141,7 @@
|
||||||
<x:String x:Key="Text.Configure.Git" xml:space="preserve">Git 設定</x:String>
|
<x:String x:Key="Text.Configure.Git" xml:space="preserve">Git 設定</x:String>
|
||||||
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">啟用定時自動提取 (fetch) 遠端更新</x:String>
|
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">啟用定時自動提取 (fetch) 遠端更新</x:String>
|
||||||
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">分鐘</x:String>
|
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">分鐘</x:String>
|
||||||
|
<x:String x:Key="Text.Configure.Git.DefaultRemote" xml:space="preserve">預設遠端存放庫</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">Issue 追蹤</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">Issue 追蹤</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGithub" xml:space="preserve">新增符合 GitHub Issue 規則</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGithub" xml:space="preserve">新增符合 GitHub Issue 規則</x:String>
|
||||||
<x:String x:Key="Text.Configure.IssueTracker.AddSampleJira" xml:space="preserve">新增符合 Jira 規則</x:String>
|
<x:String x:Key="Text.Configure.IssueTracker.AddSampleJira" xml:space="preserve">新增符合 Jira 規則</x:String>
|
||||||
|
@ -226,6 +227,7 @@
|
||||||
<x:String x:Key="Text.Discard" xml:space="preserve">捨棄變更</x:String>
|
<x:String x:Key="Text.Discard" xml:space="preserve">捨棄變更</x:String>
|
||||||
<x:String x:Key="Text.Discard.All" xml:space="preserve">所有本機未提交的變更。</x:String>
|
<x:String x:Key="Text.Discard.All" xml:space="preserve">所有本機未提交的變更。</x:String>
|
||||||
<x:String x:Key="Text.Discard.Changes" xml:space="preserve">變更:</x:String>
|
<x:String x:Key="Text.Discard.Changes" xml:space="preserve">變更:</x:String>
|
||||||
|
<x:String x:Key="Text.Discard.IncludeIgnored" xml:space="preserve">包括所有已忽略的檔案</x:String>
|
||||||
<x:String x:Key="Text.Discard.Total" xml:space="preserve">將捨棄總計 {0} 項已選取的變更</x:String>
|
<x:String x:Key="Text.Discard.Total" xml:space="preserve">將捨棄總計 {0} 項已選取的變更</x:String>
|
||||||
<x:String x:Key="Text.Discard.Warning" xml:space="preserve">您無法復原此操作,請確認後再繼續!</x:String>
|
<x:String x:Key="Text.Discard.Warning" xml:space="preserve">您無法復原此操作,請確認後再繼續!</x:String>
|
||||||
<x:String x:Key="Text.EditRepositoryNode.Bookmark" xml:space="preserve">書籤:</x:String>
|
<x:String x:Key="Text.EditRepositoryNode.Bookmark" xml:space="preserve">書籤:</x:String>
|
||||||
|
|
|
@ -7,7 +7,6 @@ namespace SourceGit.ViewModels
|
||||||
public string Branch
|
public string Branch
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
private set;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Models.DealWithLocalChanges PreAction
|
public Models.DealWithLocalChanges PreAction
|
||||||
|
@ -49,7 +48,7 @@ namespace SourceGit.ViewModels
|
||||||
else if (PreAction == Models.DealWithLocalChanges.Discard)
|
else if (PreAction == Models.DealWithLocalChanges.Discard)
|
||||||
{
|
{
|
||||||
SetProgressDescription("Discard local changes ...");
|
SetProgressDescription("Discard local changes ...");
|
||||||
Commands.Discard.All(_repo.FullPath);
|
Commands.Discard.All(_repo.FullPath, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ namespace SourceGit.ViewModels
|
||||||
public Models.Commit Commit
|
public Models.Commit Commit
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
private set;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AutoStash
|
public bool AutoStash
|
||||||
|
@ -49,7 +48,7 @@ namespace SourceGit.ViewModels
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetProgressDescription("Discard local changes ...");
|
SetProgressDescription("Discard local changes ...");
|
||||||
Commands.Discard.All(_repo.FullPath);
|
Commands.Discard.All(_repo.FullPath, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,6 @@ namespace SourceGit.ViewModels
|
||||||
public object BasedOn
|
public object BasedOn
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
private set;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Models.DealWithLocalChanges PreAction
|
public Models.DealWithLocalChanges PreAction
|
||||||
|
@ -105,7 +104,7 @@ namespace SourceGit.ViewModels
|
||||||
else if (PreAction == Models.DealWithLocalChanges.Discard)
|
else if (PreAction == Models.DealWithLocalChanges.Discard)
|
||||||
{
|
{
|
||||||
SetProgressDescription("Discard local changes...");
|
SetProgressDescription("Discard local changes...");
|
||||||
Commands.Discard.All(_repo.FullPath);
|
Commands.Discard.All(_repo.FullPath, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,19 +3,45 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace SourceGit.ViewModels
|
namespace SourceGit.ViewModels
|
||||||
{
|
{
|
||||||
|
public class DiscardAllMode
|
||||||
|
{
|
||||||
|
public bool IncludeIgnored
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
} = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DiscardSingleFile
|
||||||
|
{
|
||||||
|
public string Path
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
} = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DiscardMultipleFiles
|
||||||
|
{
|
||||||
|
public int Count
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
} = 0;
|
||||||
|
}
|
||||||
|
|
||||||
public class Discard : Popup
|
public class Discard : Popup
|
||||||
{
|
{
|
||||||
public object Mode
|
public object Mode
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
private set;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Discard(Repository repo)
|
public Discard(Repository repo)
|
||||||
{
|
{
|
||||||
_repo = repo;
|
_repo = repo;
|
||||||
|
|
||||||
Mode = new Models.Null();
|
Mode = new DiscardAllMode();
|
||||||
View = new Views.Discard { DataContext = this };
|
View = new Views.Discard { DataContext = this };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,11 +51,11 @@ namespace SourceGit.ViewModels
|
||||||
_changes = changes;
|
_changes = changes;
|
||||||
|
|
||||||
if (_changes == null)
|
if (_changes == null)
|
||||||
Mode = new Models.Null();
|
Mode = new DiscardAllMode();
|
||||||
else if (_changes.Count == 1)
|
else if (_changes.Count == 1)
|
||||||
Mode = _changes[0].Path;
|
Mode = new DiscardSingleFile() { Path = _changes[0].Path };
|
||||||
else
|
else
|
||||||
Mode = _changes.Count;
|
Mode = new DiscardMultipleFiles() { Count = _changes.Count };
|
||||||
|
|
||||||
View = new Views.Discard() { DataContext = this };
|
View = new Views.Discard() { DataContext = this };
|
||||||
}
|
}
|
||||||
|
@ -41,8 +67,8 @@ namespace SourceGit.ViewModels
|
||||||
|
|
||||||
return Task.Run(() =>
|
return Task.Run(() =>
|
||||||
{
|
{
|
||||||
if (_changes == null)
|
if (Mode is DiscardAllMode all)
|
||||||
Commands.Discard.All(_repo.FullPath);
|
Commands.Discard.All(_repo.FullPath, all.IncludeIgnored);
|
||||||
else
|
else
|
||||||
Commands.Discard.Changes(_repo.FullPath, _changes);
|
Commands.Discard.Changes(_repo.FullPath, _changes);
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,18 @@ namespace SourceGit.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_selectedRemote = autoSelectedRemote ?? repo.Remotes[0];
|
if (autoSelectedRemote == null)
|
||||||
|
{
|
||||||
|
var remote = null as Models.Remote;
|
||||||
|
if (!string.IsNullOrEmpty(_repo.Settings.DefaultRemote))
|
||||||
|
remote = _repo.Remotes.Find(x => x.Name == _repo.Settings.DefaultRemote);
|
||||||
|
_selectedRemote = remote ?? _repo.Remotes[0];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_selectedRemote = autoSelectedRemote;
|
||||||
|
}
|
||||||
|
|
||||||
PostRemoteSelected();
|
PostRemoteSelected();
|
||||||
HasSpecifiedRemoteBranch = false;
|
HasSpecifiedRemoteBranch = false;
|
||||||
}
|
}
|
||||||
|
@ -128,11 +139,11 @@ namespace SourceGit.ViewModels
|
||||||
else if (PreAction == Models.DealWithLocalChanges.Discard)
|
else if (PreAction == Models.DealWithLocalChanges.Discard)
|
||||||
{
|
{
|
||||||
SetProgressDescription("Discard local changes ...");
|
SetProgressDescription("Discard local changes ...");
|
||||||
Commands.Discard.All(_repo.FullPath);
|
Commands.Discard.All(_repo.FullPath, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var rs = false;
|
bool rs;
|
||||||
if (FetchAllBranches)
|
if (FetchAllBranches)
|
||||||
{
|
{
|
||||||
SetProgressDescription($"Fetching remote: {_selectedRemote.Name}...");
|
SetProgressDescription($"Fetching remote: {_selectedRemote.Name}...");
|
||||||
|
|
|
@ -137,9 +137,15 @@ namespace SourceGit.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set default remote to the first if haven't been set.
|
// Set default remote to the first if it has not been set.
|
||||||
if (_selectedRemote == null)
|
if (_selectedRemote == null)
|
||||||
_selectedRemote = repo.Remotes[0];
|
{
|
||||||
|
var remote = null as Models.Remote;
|
||||||
|
if (!string.IsNullOrEmpty(_repo.Settings.DefaultRemote))
|
||||||
|
remote = repo.Remotes.Find(x => x.Name == _repo.Settings.DefaultRemote);
|
||||||
|
|
||||||
|
_selectedRemote = remote ?? repo.Remotes[0];
|
||||||
|
}
|
||||||
|
|
||||||
// Auto select preferred remote branch.
|
// Auto select preferred remote branch.
|
||||||
AutoSelectBranchByRemote();
|
AutoSelectBranchByRemote();
|
||||||
|
|
|
@ -1271,7 +1271,6 @@ namespace SourceGit.ViewModels
|
||||||
var discard = new MenuItem();
|
var discard = new MenuItem();
|
||||||
discard.Header = App.Text("BranchCM.DiscardAll");
|
discard.Header = App.Text("BranchCM.DiscardAll");
|
||||||
discard.Icon = App.CreateMenuIcon("Icons.Undo");
|
discard.Icon = App.CreateMenuIcon("Icons.Undo");
|
||||||
discard.IsEnabled = _localChangesCount > 0;
|
|
||||||
discard.Click += (_, e) =>
|
discard.Click += (_, e) =>
|
||||||
{
|
{
|
||||||
if (PopupHost.CanCreatePopup())
|
if (PopupHost.CanCreatePopup())
|
||||||
|
|
|
@ -18,6 +18,24 @@ namespace SourceGit.ViewModels
|
||||||
set;
|
set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<string> Remotes
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string DefaultRemote
|
||||||
|
{
|
||||||
|
get => _repo.Settings.DefaultRemote;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_repo.Settings.DefaultRemote != value)
|
||||||
|
{
|
||||||
|
_repo.Settings.DefaultRemote = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool GPGCommitSigningEnabled
|
public bool GPGCommitSigningEnabled
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
|
@ -88,6 +106,10 @@ namespace SourceGit.ViewModels
|
||||||
{
|
{
|
||||||
_repo = repo;
|
_repo = repo;
|
||||||
|
|
||||||
|
Remotes = new List<string>();
|
||||||
|
foreach (var remote in _repo.Remotes)
|
||||||
|
Remotes.Add(remote.Name);
|
||||||
|
|
||||||
_cached = new Commands.Config(repo.FullPath).ListAll();
|
_cached = new Commands.Config(repo.FullPath).ListAll();
|
||||||
if (_cached.TryGetValue("user.name", out var name))
|
if (_cached.TryGetValue("user.name", out var name))
|
||||||
UserName = name;
|
UserName = name;
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:m="using:SourceGit.Models"
|
|
||||||
xmlns:vm="using:SourceGit.ViewModels"
|
xmlns:vm="using:SourceGit.ViewModels"
|
||||||
xmlns:c="using:SourceGit.Converters"
|
xmlns:c="using:SourceGit.Converters"
|
||||||
mc:Ignorable="d" d:DesignWidth="500" d:DesignHeight="450"
|
mc:Ignorable="d" d:DesignWidth="500" d:DesignHeight="450"
|
||||||
|
@ -12,35 +11,69 @@
|
||||||
<TextBlock FontSize="18"
|
<TextBlock FontSize="18"
|
||||||
Classes="bold"
|
Classes="bold"
|
||||||
Text="{DynamicResource Text.Discard}"/>
|
Text="{DynamicResource Text.Discard}"/>
|
||||||
|
|
||||||
<Grid Margin="0,16,0,8" RowDefinitions="32,32" ColumnDefinitions="120,*">
|
<ContentControl Margin="0,16,0,8" Content="{Binding Mode}">
|
||||||
<TextBlock Grid.Row="0" Grid.Column="0" Margin="0,0,8,0" HorizontalAlignment="Right" Text="{DynamicResource Text.Discard.Changes}"/>
|
<ContentControl.DataTemplates>
|
||||||
<ContentControl Grid.Row="0" Grid.Column="1" Content="{Binding Mode}">
|
<DataTemplate DataType="vm:DiscardAllMode">
|
||||||
<ContentControl.DataTemplates>
|
<Grid RowDefinitions="Auto,Auto,36" ColumnDefinitions="120,*">
|
||||||
<DataTemplate DataType="m:Null">
|
<TextBlock Grid.Row="0" Grid.Column="0"
|
||||||
<StackPanel Orientation="Horizontal">
|
Margin="0,0,8,0"
|
||||||
<Path Width="12" Height="12" Margin="0,2,0,0" Data="{StaticResource Icons.Folder.Open}"/>
|
HorizontalAlignment="Right"
|
||||||
<TextBlock Text="{DynamicResource Text.Discard.All}" Margin="4,0,0,0"/>
|
Text="{DynamicResource Text.Discard.Changes}"/>
|
||||||
|
<TextBlock Grid.Row="0" Grid.Column="1"
|
||||||
|
Text="{DynamicResource Text.Discard.All}"/>
|
||||||
|
|
||||||
|
<CheckBox Grid.Row="1" Grid.Column="1"
|
||||||
|
Content="{DynamicResource Text.Discard.IncludeIgnored}"
|
||||||
|
IsChecked="{Binding IncludeIgnored, Mode=TwoWay}"/>
|
||||||
|
|
||||||
|
<StackPanel Grid.Row="2" Grid.Column="1" Orientation="Horizontal">
|
||||||
|
<Path Width="14" Height="14"
|
||||||
|
Data="{StaticResource Icons.Error}"
|
||||||
|
Fill="DarkOrange"/>
|
||||||
|
<TextBlock Margin="4,0,0,0"
|
||||||
|
Text="{DynamicResource Text.Discard.Warning}"
|
||||||
|
Foreground="{DynamicResource Brush.FG2}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DataTemplate>
|
</Grid>
|
||||||
|
</DataTemplate>
|
||||||
<DataTemplate DataType="x:String">
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<DataTemplate DataType="vm:DiscardSingleFile">
|
||||||
|
<Grid RowDefinitions="32,32" ColumnDefinitions="120,*">
|
||||||
|
<TextBlock Grid.Row="0" Grid.Column="0"
|
||||||
|
Margin="0,0,8,0"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
Text="{DynamicResource Text.Discard.Changes}"/>
|
||||||
|
<StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal">
|
||||||
<Path Width="12" Height="12" Data="{StaticResource Icons.File}"/>
|
<Path Width="12" Height="12" Data="{StaticResource Icons.File}"/>
|
||||||
<TextBlock Text="{Binding}" Margin="4,0,0,0"/>
|
<TextBlock Text="{Binding Path}" Margin="4,0,0,0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DataTemplate>
|
|
||||||
|
<TextBlock Grid.Row="1" Grid.Column="1"
|
||||||
<DataTemplate DataType="x:Int32">
|
VerticalAlignment="Center"
|
||||||
<StackPanel Orientation="Horizontal">
|
Text="{DynamicResource Text.Discard.Warning}"
|
||||||
|
Foreground="{DynamicResource Brush.FG2}"/>
|
||||||
|
</Grid>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate DataType="vm:DiscardMultipleFiles">
|
||||||
|
<Grid RowDefinitions="32,32" ColumnDefinitions="120,*">
|
||||||
|
<TextBlock Grid.Row="0" Grid.Column="0"
|
||||||
|
Margin="0,0,8,0"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
Text="{DynamicResource Text.Discard.Changes}"/>
|
||||||
|
<StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal">
|
||||||
<Path Width="12" Height="12" Data="{StaticResource Icons.File}"/>
|
<Path Width="12" Height="12" Data="{StaticResource Icons.File}"/>
|
||||||
<TextBlock Text="{Binding Converter={x:Static c:StringConverters.FormatByResourceKey}, ConverterParameter='Discard.Total'}" Margin="4,0,0,0"/>
|
<TextBlock Text="{Binding Count, Converter={x:Static c:StringConverters.FormatByResourceKey}, ConverterParameter='Discard.Total'}" Margin="4,0,0,0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DataTemplate>
|
|
||||||
</ContentControl.DataTemplates>
|
<TextBlock Grid.Row="1" Grid.Column="1"
|
||||||
</ContentControl>
|
VerticalAlignment="Center"
|
||||||
|
Text="{DynamicResource Text.Discard.Warning}"
|
||||||
<TextBlock Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" Text="{DynamicResource Text.Discard.Warning}" Foreground="{DynamicResource Brush.FG2}"/>
|
Foreground="{DynamicResource Brush.FG2}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
</DataTemplate>
|
||||||
|
</ContentControl.DataTemplates>
|
||||||
|
</ContentControl>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
<TextBlock Classes="tab_header" Text="{DynamicResource Text.Configure.Git}"/>
|
<TextBlock Classes="tab_header" Text="{DynamicResource Text.Configure.Git}"/>
|
||||||
</TabItem.Header>
|
</TabItem.Header>
|
||||||
|
|
||||||
<Grid Margin="16,4,16,8" RowDefinitions="32,32,32,32,32,32,32" ColumnDefinitions="Auto,*">
|
<Grid Margin="16,4,16,8" RowDefinitions="32,32,32,32,32,32,32,32" ColumnDefinitions="Auto,*">
|
||||||
<TextBlock Grid.Row="0" Grid.Column="0"
|
<TextBlock Grid.Row="0" Grid.Column="0"
|
||||||
HorizontalAlignment="Right" VerticalAlignment="Center"
|
HorizontalAlignment="Right" VerticalAlignment="Center"
|
||||||
Margin="0,0,8,0"
|
Margin="0,0,8,0"
|
||||||
|
@ -72,12 +72,31 @@
|
||||||
CornerRadius="3"
|
CornerRadius="3"
|
||||||
Watermark="{DynamicResource Text.Configure.Email.Placeholder}"
|
Watermark="{DynamicResource Text.Configure.Email.Placeholder}"
|
||||||
Text="{Binding UserEmail, Mode=TwoWay}"/>
|
Text="{Binding UserEmail, Mode=TwoWay}"/>
|
||||||
|
|
||||||
<TextBlock Grid.Row="2" Grid.Column="0"
|
<TextBlock Grid.Row="2" Grid.Column="0"
|
||||||
|
HorizontalAlignment="Right" VerticalAlignment="Center"
|
||||||
|
Margin="0,0,8,0"
|
||||||
|
Text="{DynamicResource Text.Configure.Git.DefaultRemote}"/>
|
||||||
|
<ComboBox Grid.Row="2" Grid.Column="1"
|
||||||
|
Height="28" Padding="8,0"
|
||||||
|
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||||
|
ItemsSource="{Binding Remotes}"
|
||||||
|
SelectedItem="{Binding DefaultRemote, Mode=TwoWay}">
|
||||||
|
<ComboBox.ItemTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<StackPanel Orientation="Horizontal" Height="20" VerticalAlignment="Center">
|
||||||
|
<Path Margin="0,6,8,0" Width="14" Height="14" Fill="{DynamicResource Brush.FG1}" Data="{StaticResource Icons.Remote}"/>
|
||||||
|
<TextBlock Text="{Binding}"/>
|
||||||
|
</StackPanel>
|
||||||
|
</DataTemplate>
|
||||||
|
</ComboBox.ItemTemplate>
|
||||||
|
</ComboBox>
|
||||||
|
|
||||||
|
<TextBlock Grid.Row="3" Grid.Column="0"
|
||||||
HorizontalAlignment="Right" VerticalAlignment="Center"
|
HorizontalAlignment="Right" VerticalAlignment="Center"
|
||||||
Margin="0,0,8,0"
|
Margin="0,0,8,0"
|
||||||
Text="{DynamicResource Text.Configure.Proxy}"/>
|
Text="{DynamicResource Text.Configure.Proxy}"/>
|
||||||
<TextBox Grid.Row="2" Grid.Column="1"
|
<TextBox Grid.Row="3" Grid.Column="1"
|
||||||
Height="28"
|
Height="28"
|
||||||
CornerRadius="3"
|
CornerRadius="3"
|
||||||
Watermark="{DynamicResource Text.Configure.Proxy.Placeholder}"
|
Watermark="{DynamicResource Text.Configure.Proxy.Placeholder}"
|
||||||
|
@ -89,25 +108,25 @@
|
||||||
</TextBox.InnerRightContent>
|
</TextBox.InnerRightContent>
|
||||||
</TextBox>
|
</TextBox>
|
||||||
|
|
||||||
<TextBlock Grid.Row="3" Grid.Column="0"
|
<TextBlock Grid.Row="4" Grid.Column="0"
|
||||||
HorizontalAlignment="Right" VerticalAlignment="Center"
|
HorizontalAlignment="Right" VerticalAlignment="Center"
|
||||||
Margin="0,0,8,0"
|
Margin="0,0,8,0"
|
||||||
Text="{DynamicResource Text.Preference.GPG.UserKey}"/>
|
Text="{DynamicResource Text.Preference.GPG.UserKey}"/>
|
||||||
<TextBox Grid.Row="3" Grid.Column="1"
|
<TextBox Grid.Row="4" Grid.Column="1"
|
||||||
Height="28"
|
Height="28"
|
||||||
CornerRadius="3"
|
CornerRadius="3"
|
||||||
Watermark="{DynamicResource Text.Preference.GPG.UserKey.Placeholder}"
|
Watermark="{DynamicResource Text.Preference.GPG.UserKey.Placeholder}"
|
||||||
Text="{Binding GPGUserSigningKey, Mode=TwoWay}"/>
|
Text="{Binding GPGUserSigningKey, Mode=TwoWay}"/>
|
||||||
|
|
||||||
<CheckBox Grid.Row="4" Grid.Column="1"
|
<CheckBox Grid.Row="5" Grid.Column="1"
|
||||||
Content="{DynamicResource Text.Preference.GPG.CommitEnabled}"
|
Content="{DynamicResource Text.Preference.GPG.CommitEnabled}"
|
||||||
IsChecked="{Binding GPGCommitSigningEnabled, Mode=TwoWay}"/>
|
IsChecked="{Binding GPGCommitSigningEnabled, Mode=TwoWay}"/>
|
||||||
|
|
||||||
<CheckBox Grid.Row="5" Grid.Column="1"
|
<CheckBox Grid.Row="6" Grid.Column="1"
|
||||||
Content="{DynamicResource Text.Preference.GPG.TagEnabled}"
|
Content="{DynamicResource Text.Preference.GPG.TagEnabled}"
|
||||||
IsChecked="{Binding GPGTagSigningEnabled, Mode=TwoWay}"/>
|
IsChecked="{Binding GPGTagSigningEnabled, Mode=TwoWay}"/>
|
||||||
|
|
||||||
<StackPanel Grid.Row="6" Grid.Column="1" Orientation="Horizontal">
|
<StackPanel Grid.Row="7" Grid.Column="1" Orientation="Horizontal">
|
||||||
<CheckBox x:Name="AutoFetchCheckBox"
|
<CheckBox x:Name="AutoFetchCheckBox"
|
||||||
Content="{DynamicResource Text.Configure.Git.AutoFetch}"
|
Content="{DynamicResource Text.Configure.Git.AutoFetch}"
|
||||||
IsChecked="{Binding EnableAutoFetch, Mode=TwoWay}"/>
|
IsChecked="{Binding EnableAutoFetch, Mode=TwoWay}"/>
|
||||||
|
|
Loading…
Reference in a new issue