diff --git a/README.md b/README.md
index c0fd512f..f40071ef 100644
--- a/README.md
+++ b/README.md
@@ -6,11 +6,11 @@
* DarkTheme
-![Preview_Dark](./Preview_Dark.png)
+![Theme Dark](./screenshots/theme_dark.png)
* LightTheme
-![Preview_Light](./Preview_Light.png)
+![Theme Light](./screenshots/theme_light.png)
## Thanks
diff --git a/SourceGit.sln b/SourceGit.sln
deleted file mode 100644
index 50aba2bc..00000000
--- a/SourceGit.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.30011.22
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceGit", "SourceGit\SourceGit.csproj", "{0A04DD59-7A6C-410C-B427-7DC8183993BD}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {0A04DD59-7A6C-410C-B427-7DC8183993BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0A04DD59-7A6C-410C-B427-7DC8183993BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0A04DD59-7A6C-410C-B427-7DC8183993BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0A04DD59-7A6C-410C-B427-7DC8183993BD}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {01F4EC04-5B3C-4D74-BB48-1C251B2D2853}
- EndGlobalSection
-EndGlobal
diff --git a/SourceGit/Properties/AssemblyInfo.cs b/SourceGit/Properties/AssemblyInfo.cs
deleted file mode 100644
index c0ea722f..00000000
--- a/SourceGit/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-using System.Windows;
-
-[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
\ No newline at end of file
diff --git a/Preview_Dark.png b/screenshots/theme_dark.png
similarity index 100%
rename from Preview_Dark.png
rename to screenshots/theme_dark.png
diff --git a/Preview_Light.png b/screenshots/theme_light.png
similarity index 100%
rename from Preview_Light.png
rename to screenshots/theme_light.png
diff --git a/SourceGit/App.config b/src/App.config
similarity index 100%
rename from SourceGit/App.config
rename to src/App.config
diff --git a/SourceGit/App.ico b/src/App.ico
similarity index 100%
rename from SourceGit/App.ico
rename to src/App.ico
diff --git a/SourceGit/App.manifest b/src/App.manifest
similarity index 100%
rename from SourceGit/App.manifest
rename to src/App.manifest
diff --git a/SourceGit/App.xaml b/src/App.xaml
similarity index 100%
rename from SourceGit/App.xaml
rename to src/App.xaml
diff --git a/SourceGit/App.xaml.cs b/src/App.xaml.cs
similarity index 100%
rename from SourceGit/App.xaml.cs
rename to src/App.xaml.cs
diff --git a/SourceGit/Converters/BoolToCollapsed.cs b/src/Converters/BoolToCollapsed.cs
similarity index 100%
rename from SourceGit/Converters/BoolToCollapsed.cs
rename to src/Converters/BoolToCollapsed.cs
diff --git a/SourceGit/Converters/FileStatusToColor.cs b/src/Converters/FileStatusToColor.cs
similarity index 100%
rename from SourceGit/Converters/FileStatusToColor.cs
rename to src/Converters/FileStatusToColor.cs
diff --git a/SourceGit/Converters/FileStatusToIcon.cs b/src/Converters/FileStatusToIcon.cs
similarity index 100%
rename from SourceGit/Converters/FileStatusToIcon.cs
rename to src/Converters/FileStatusToIcon.cs
diff --git a/SourceGit/Converters/IndentToMargin.cs b/src/Converters/IndentToMargin.cs
similarity index 100%
rename from SourceGit/Converters/IndentToMargin.cs
rename to src/Converters/IndentToMargin.cs
diff --git a/SourceGit/Converters/InverseBool.cs b/src/Converters/InverseBool.cs
similarity index 100%
rename from SourceGit/Converters/InverseBool.cs
rename to src/Converters/InverseBool.cs
diff --git a/SourceGit/Converters/InverseBoolToCollapsed.cs b/src/Converters/InverseBoolToCollapsed.cs
similarity index 100%
rename from SourceGit/Converters/InverseBoolToCollapsed.cs
rename to src/Converters/InverseBoolToCollapsed.cs
diff --git a/SourceGit/Converters/PercentToDouble.cs b/src/Converters/PercentToDouble.cs
similarity index 100%
rename from SourceGit/Converters/PercentToDouble.cs
rename to src/Converters/PercentToDouble.cs
diff --git a/SourceGit/Converters/TreeViewItemDepthToMargin.cs b/src/Converters/TreeViewItemDepthToMargin.cs
similarity index 100%
rename from SourceGit/Converters/TreeViewItemDepthToMargin.cs
rename to src/Converters/TreeViewItemDepthToMargin.cs
diff --git a/SourceGit/Git/Blame.cs b/src/Git/Blame.cs
similarity index 100%
rename from SourceGit/Git/Blame.cs
rename to src/Git/Blame.cs
diff --git a/SourceGit/Git/Branch.cs b/src/Git/Branch.cs
similarity index 100%
rename from SourceGit/Git/Branch.cs
rename to src/Git/Branch.cs
diff --git a/SourceGit/Git/Change.cs b/src/Git/Change.cs
similarity index 100%
rename from SourceGit/Git/Change.cs
rename to src/Git/Change.cs
diff --git a/SourceGit/Git/Commit.cs b/src/Git/Commit.cs
similarity index 100%
rename from SourceGit/Git/Commit.cs
rename to src/Git/Commit.cs
diff --git a/SourceGit/Git/Decorator.cs b/src/Git/Decorator.cs
similarity index 100%
rename from SourceGit/Git/Decorator.cs
rename to src/Git/Decorator.cs
diff --git a/SourceGit/Git/Diff.cs b/src/Git/Diff.cs
similarity index 97%
rename from SourceGit/Git/Diff.cs
rename to src/Git/Diff.cs
index 7ce0190c..5f54e173 100644
--- a/SourceGit/Git/Diff.cs
+++ b/src/Git/Diff.cs
@@ -1,263 +1,263 @@
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
-using System.Text.RegularExpressions;
-
-namespace SourceGit.Git {
-
- ///
- /// Diff helper.
- ///
- public class Diff {
- private static readonly Regex REG_INDICATOR = new Regex(@"^@@ \-(\d+),?\d* \+(\d+),?\d* @@", RegexOptions.None);
-
- ///
- /// Line mode.
- ///
- public enum LineMode {
- Normal,
- Indicator,
- Empty,
- Added,
- Deleted,
- }
-
- ///
- /// Side
- ///
- public enum Side {
- Left,
- Right,
- Both,
- }
-
- ///
- /// Binary change.
- ///
- public class BinaryChange {
- public long Size = 0;
- public long PreSize = 0;
- }
-
- ///
- /// Block
- ///
- public class Block {
- public Side Side = Side.Both;
- public LineMode Mode = LineMode.Normal;
- public int LeftStart = 0;
- public int RightStart = 0;
- public int Count = 0;
- public StringBuilder Builder = new StringBuilder();
-
- public bool IsLeftDelete => Side == Side.Left && Mode == LineMode.Deleted;
- public bool IsRightAdded => Side == Side.Right && Mode == LineMode.Added;
- public bool IsBothSideNormal => Side == Side.Both && Mode == LineMode.Normal;
- public bool CanShowNumber => Mode != LineMode.Indicator && Mode != LineMode.Empty;
-
- public void Append(string data) {
- if (Count > 0) Builder.AppendLine();
- Builder.Append(data);
- Count++;
- }
- }
-
- ///
- /// Diff result.
- ///
- public class Result {
- public bool IsValid = false;
- public bool IsBinary = false;
- public List Blocks = new List();
- public int LeftLineCount = 0;
- public int RightLineCount = 0;
-
- public void SetBinary() {
- IsValid = true;
- IsBinary = true;
- }
-
- public void Add(Block b) {
- if (b.Count == 0) return;
-
- switch (b.Side) {
- case Side.Left:
- LeftLineCount += b.Count;
- break;
- case Side.Right:
- RightLineCount += b.Count;
- break;
- default:
- LeftLineCount += b.Count;
- RightLineCount += b.Count;
- break;
- }
-
- Blocks.Add(b);
- }
-
- public void Fit() {
- if (LeftLineCount > RightLineCount) {
- var b = new Block();
- b.Side = Side.Right;
- b.Mode = LineMode.Empty;
-
- var delta = LeftLineCount - RightLineCount;
- for (int i = 0; i < delta; i++) b.Append("");
-
- Add(b);
- } else if (LeftLineCount < RightLineCount) {
- var b = new Block();
- b.Side = Side.Left;
- b.Mode = LineMode.Empty;
-
- var delta = RightLineCount - LeftLineCount;
- for (int i = 0; i < delta; i++) b.Append("");
-
- Add(b);
- }
- }
- }
-
- ///
- /// Run diff process.
- ///
- ///
- ///
- ///
- public static Result Run(Repository repo, string args) {
- var rs = new Result();
- var current = new Block();
- var left = 0;
- var right = 0;
-
- repo.RunCommand($"diff --ignore-cr-at-eol {args}", line => {
- if (rs.IsBinary) return;
-
- if (!rs.IsValid) {
- var match = REG_INDICATOR.Match(line);
- if (!match.Success) {
- if (line.StartsWith("Binary ")) rs.SetBinary();
- return;
- }
-
- rs.IsValid = true;
- left = int.Parse(match.Groups[1].Value);
- right = int.Parse(match.Groups[2].Value);
- current.Mode = LineMode.Indicator;
- current.Append(line);
- } else {
- if (line[0] == '-') {
- if (current.IsLeftDelete) {
- current.Append(line.Substring(1));
- } else {
- rs.Add(current);
-
- current = new Block();
- current.Side = Side.Left;
- current.Mode = LineMode.Deleted;
- current.LeftStart = left;
- current.Append(line.Substring(1));
- }
-
- left++;
- } else if (line[0] == '+') {
- if (current.IsRightAdded) {
- current.Append(line.Substring(1));
- } else {
- rs.Add(current);
-
- current = new Block();
- current.Side = Side.Right;
- current.Mode = LineMode.Added;
- current.RightStart = right;
- current.Append(line.Substring(1));
- }
-
- right++;
- } else if (line[0] == '\\') {
- var tmp = new Block();
- tmp.Side = current.Side;
- tmp.Mode = LineMode.Indicator;
- tmp.Append(line.Substring(1));
-
- rs.Add(current);
- rs.Add(tmp);
- rs.Fit();
-
- current = new Block();
- current.LeftStart = left;
- current.RightStart = right;
- } else {
- var match = REG_INDICATOR.Match(line);
- if (match.Success) {
- rs.Add(current);
- rs.Fit();
-
- left = int.Parse(match.Groups[1].Value);
- right = int.Parse(match.Groups[2].Value);
-
- current = new Block();
- current.Mode = LineMode.Indicator;
- current.Append(line);
- } else {
- if (current.IsBothSideNormal) {
- current.Append(line.Substring(1));
- } else {
- rs.Add(current);
- rs.Fit();
-
- current = new Block();
- current.LeftStart = left;
- current.RightStart = right;
- current.Append(line.Substring(1));
- }
-
- left++;
- right++;
- }
- }
- }
- });
-
- rs.Add(current);
- rs.Fit();
-
- if (rs.IsBinary) rs.Blocks.Clear();
- return rs;
- }
-
- ///
- /// Get file size changes for binary file.
- ///
- ///
- ///
- ///
- ///
- ///
- public static BinaryChange GetSizeChange(Repository repo, string[] revisions, string path, string orgPath = null) {
- var change = new BinaryChange();
-
- if (revisions.Length == 0) { // Compare working copy with HEAD
- change.Size = new FileInfo(Path.Combine(repo.Path, path)).Length;
- change.PreSize = repo.GetFileSize("HEAD", path);
- } else if (revisions.Length == 1) { // Compare HEAD with given revision.
- change.Size = repo.GetFileSize("HEAD", path);
- if (!string.IsNullOrEmpty(orgPath)) {
- change.PreSize = repo.GetFileSize(revisions[0], orgPath);
- } else {
- change.PreSize = repo.GetFileSize(revisions[0], path);
- }
- } else {
- change.Size = repo.GetFileSize(revisions[1], path);
- if (!string.IsNullOrEmpty(orgPath)) {
- change.PreSize = repo.GetFileSize(revisions[0], orgPath);
- } else {
- change.PreSize = repo.GetFileSize(revisions[0], path);
- }
- }
-
- return change;
- }
- }
-}
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace SourceGit.Git {
+
+ ///
+ /// Diff helper.
+ ///
+ public class Diff {
+ private static readonly Regex REG_INDICATOR = new Regex(@"^@@ \-(\d+),?\d* \+(\d+),?\d* @@", RegexOptions.None);
+
+ ///
+ /// Line mode.
+ ///
+ public enum LineMode {
+ Normal,
+ Indicator,
+ Empty,
+ Added,
+ Deleted,
+ }
+
+ ///
+ /// Side
+ ///
+ public enum Side {
+ Left,
+ Right,
+ Both,
+ }
+
+ ///
+ /// Binary change.
+ ///
+ public class BinaryChange {
+ public long Size = 0;
+ public long PreSize = 0;
+ }
+
+ ///
+ /// Block
+ ///
+ public class Block {
+ public Side Side = Side.Both;
+ public LineMode Mode = LineMode.Normal;
+ public int LeftStart = 0;
+ public int RightStart = 0;
+ public int Count = 0;
+ public StringBuilder Builder = new StringBuilder();
+
+ public bool IsLeftDelete => Side == Side.Left && Mode == LineMode.Deleted;
+ public bool IsRightAdded => Side == Side.Right && Mode == LineMode.Added;
+ public bool IsBothSideNormal => Side == Side.Both && Mode == LineMode.Normal;
+ public bool CanShowNumber => Mode != LineMode.Indicator && Mode != LineMode.Empty;
+
+ public void Append(string data) {
+ if (Count > 0) Builder.AppendLine();
+ Builder.Append(data);
+ Count++;
+ }
+ }
+
+ ///
+ /// Diff result.
+ ///
+ public class Result {
+ public bool IsValid = false;
+ public bool IsBinary = false;
+ public List Blocks = new List();
+ public int LeftLineCount = 0;
+ public int RightLineCount = 0;
+
+ public void SetBinary() {
+ IsValid = true;
+ IsBinary = true;
+ }
+
+ public void Add(Block b) {
+ if (b.Count == 0) return;
+
+ switch (b.Side) {
+ case Side.Left:
+ LeftLineCount += b.Count;
+ break;
+ case Side.Right:
+ RightLineCount += b.Count;
+ break;
+ default:
+ LeftLineCount += b.Count;
+ RightLineCount += b.Count;
+ break;
+ }
+
+ Blocks.Add(b);
+ }
+
+ public void Fit() {
+ if (LeftLineCount > RightLineCount) {
+ var b = new Block();
+ b.Side = Side.Right;
+ b.Mode = LineMode.Empty;
+
+ var delta = LeftLineCount - RightLineCount;
+ for (int i = 0; i < delta; i++) b.Append("");
+
+ Add(b);
+ } else if (LeftLineCount < RightLineCount) {
+ var b = new Block();
+ b.Side = Side.Left;
+ b.Mode = LineMode.Empty;
+
+ var delta = RightLineCount - LeftLineCount;
+ for (int i = 0; i < delta; i++) b.Append("");
+
+ Add(b);
+ }
+ }
+ }
+
+ ///
+ /// Run diff process.
+ ///
+ ///
+ ///
+ ///
+ public static Result Run(Repository repo, string args) {
+ var rs = new Result();
+ var current = new Block();
+ var left = 0;
+ var right = 0;
+
+ repo.RunCommand($"diff --ignore-cr-at-eol {args}", line => {
+ if (rs.IsBinary) return;
+
+ if (!rs.IsValid) {
+ var match = REG_INDICATOR.Match(line);
+ if (!match.Success) {
+ if (line.StartsWith("Binary ")) rs.SetBinary();
+ return;
+ }
+
+ rs.IsValid = true;
+ left = int.Parse(match.Groups[1].Value);
+ right = int.Parse(match.Groups[2].Value);
+ current.Mode = LineMode.Indicator;
+ current.Append(line);
+ } else {
+ if (line[0] == '-') {
+ if (current.IsLeftDelete) {
+ current.Append(line.Substring(1));
+ } else {
+ rs.Add(current);
+
+ current = new Block();
+ current.Side = Side.Left;
+ current.Mode = LineMode.Deleted;
+ current.LeftStart = left;
+ current.Append(line.Substring(1));
+ }
+
+ left++;
+ } else if (line[0] == '+') {
+ if (current.IsRightAdded) {
+ current.Append(line.Substring(1));
+ } else {
+ rs.Add(current);
+
+ current = new Block();
+ current.Side = Side.Right;
+ current.Mode = LineMode.Added;
+ current.RightStart = right;
+ current.Append(line.Substring(1));
+ }
+
+ right++;
+ } else if (line[0] == '\\') {
+ var tmp = new Block();
+ tmp.Side = current.Side;
+ tmp.Mode = LineMode.Indicator;
+ tmp.Append(line.Substring(1));
+
+ rs.Add(current);
+ rs.Add(tmp);
+ rs.Fit();
+
+ current = new Block();
+ current.LeftStart = left;
+ current.RightStart = right;
+ } else {
+ var match = REG_INDICATOR.Match(line);
+ if (match.Success) {
+ rs.Add(current);
+ rs.Fit();
+
+ left = int.Parse(match.Groups[1].Value);
+ right = int.Parse(match.Groups[2].Value);
+
+ current = new Block();
+ current.Mode = LineMode.Indicator;
+ current.Append(line);
+ } else {
+ if (current.IsBothSideNormal) {
+ current.Append(line.Substring(1));
+ } else {
+ rs.Add(current);
+ rs.Fit();
+
+ current = new Block();
+ current.LeftStart = left;
+ current.RightStart = right;
+ current.Append(line.Substring(1));
+ }
+
+ left++;
+ right++;
+ }
+ }
+ }
+ });
+
+ rs.Add(current);
+ rs.Fit();
+
+ if (rs.IsBinary) rs.Blocks.Clear();
+ return rs;
+ }
+
+ ///
+ /// Get file size changes for binary file.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static BinaryChange GetSizeChange(Repository repo, string[] revisions, string path, string orgPath = null) {
+ var change = new BinaryChange();
+
+ if (revisions.Length == 0) { // Compare working copy with HEAD
+ change.Size = new FileInfo(Path.Combine(repo.Path, path)).Length;
+ change.PreSize = repo.GetFileSize("HEAD", path);
+ } else if (revisions.Length == 1) { // Compare HEAD with given revision.
+ change.Size = repo.GetFileSize("HEAD", path);
+ if (!string.IsNullOrEmpty(orgPath)) {
+ change.PreSize = repo.GetFileSize(revisions[0], orgPath);
+ } else {
+ change.PreSize = repo.GetFileSize(revisions[0], path);
+ }
+ } else {
+ change.Size = repo.GetFileSize(revisions[1], path);
+ if (!string.IsNullOrEmpty(orgPath)) {
+ change.PreSize = repo.GetFileSize(revisions[0], orgPath);
+ } else {
+ change.PreSize = repo.GetFileSize(revisions[0], path);
+ }
+ }
+
+ return change;
+ }
+ }
+}
diff --git a/SourceGit/Git/MergeTool.cs b/src/Git/MergeTool.cs
similarity index 100%
rename from SourceGit/Git/MergeTool.cs
rename to src/Git/MergeTool.cs
diff --git a/SourceGit/Git/Preference.cs b/src/Git/Preference.cs
similarity index 100%
rename from SourceGit/Git/Preference.cs
rename to src/Git/Preference.cs
diff --git a/SourceGit/Git/Remote.cs b/src/Git/Remote.cs
similarity index 96%
rename from SourceGit/Git/Remote.cs
rename to src/Git/Remote.cs
index ed32e810..079bd2ea 100644
--- a/SourceGit/Git/Remote.cs
+++ b/src/Git/Remote.cs
@@ -1,97 +1,97 @@
-using System.Collections.Generic;
-using System.Text.RegularExpressions;
-
-namespace SourceGit.Git {
-
- ///
- /// Git remote
- ///
- public class Remote {
- private static readonly Regex FORMAT = new Regex(@"^([\w\.\-]+)\s*(\S+).*$");
-
- ///
- /// Name of this remote
- ///
- public string Name { get; set; }
-
- ///
- /// URL
- ///
- public string URL { get; set; }
-
- ///
- /// Parsing remote
- ///
- /// Repository
- ///
- public static List Load(Repository repo) {
- var remotes = new List();
- var added = new List();
-
- repo.RunCommand("remote -v", data => {
- var match = FORMAT.Match(data);
- if (!match.Success) return;
-
- var remote = new Remote() {
- Name = match.Groups[1].Value,
- URL = match.Groups[2].Value,
- };
-
- if (added.Contains(remote.Name)) return;
-
- added.Add(remote.Name);
- remotes.Add(remote);
- });
-
- return remotes;
- }
-
- ///
- /// Add new remote
- ///
- ///
- ///
- ///
- public static void Add(Repository repo, string name, string url) {
- var errs = repo.RunCommand($"remote add {name} {url}", null);
- if (errs != null) {
- App.RaiseError(errs);
- } else {
- repo.Fetch(new Remote() { Name = name }, true, null);
- }
- }
-
- ///
- /// Delete remote.
- ///
- ///
- ///
- public static void Delete(Repository repo, string remote) {
- var errs = repo.RunCommand($"remote remove {remote}", null);
- if (errs != null) App.RaiseError(errs);
- }
-
- ///
- /// Edit remote.
- ///
- ///
- ///
- ///
- public void Edit(Repository repo, string name, string url) {
- string errs = null;
-
- if (name != Name) {
- errs = repo.RunCommand($"remote rename {Name} {name}", null);
- if (errs != null) {
- App.RaiseError(errs);
- return;
- }
- }
-
- if (url != URL) {
- errs = repo.RunCommand($"remote set-url {name} {url}", null);
- if (errs != null) App.RaiseError(errs);
- }
- }
- }
-}
+using System.Collections.Generic;
+using System.Text.RegularExpressions;
+
+namespace SourceGit.Git {
+
+ ///
+ /// Git remote
+ ///
+ public class Remote {
+ private static readonly Regex FORMAT = new Regex(@"^([\w\.\-]+)\s*(\S+).*$");
+
+ ///
+ /// Name of this remote
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// URL
+ ///
+ public string URL { get; set; }
+
+ ///
+ /// Parsing remote
+ ///
+ /// Repository
+ ///
+ public static List Load(Repository repo) {
+ var remotes = new List();
+ var added = new List();
+
+ repo.RunCommand("remote -v", data => {
+ var match = FORMAT.Match(data);
+ if (!match.Success) return;
+
+ var remote = new Remote() {
+ Name = match.Groups[1].Value,
+ URL = match.Groups[2].Value,
+ };
+
+ if (added.Contains(remote.Name)) return;
+
+ added.Add(remote.Name);
+ remotes.Add(remote);
+ });
+
+ return remotes;
+ }
+
+ ///
+ /// Add new remote
+ ///
+ ///
+ ///
+ ///
+ public static void Add(Repository repo, string name, string url) {
+ var errs = repo.RunCommand($"remote add {name} {url}", null);
+ if (errs != null) {
+ App.RaiseError(errs);
+ } else {
+ repo.Fetch(new Remote() { Name = name }, true, null);
+ }
+ }
+
+ ///
+ /// Delete remote.
+ ///
+ ///
+ ///
+ public static void Delete(Repository repo, string remote) {
+ var errs = repo.RunCommand($"remote remove {remote}", null);
+ if (errs != null) App.RaiseError(errs);
+ }
+
+ ///
+ /// Edit remote.
+ ///
+ ///
+ ///
+ ///
+ public void Edit(Repository repo, string name, string url) {
+ string errs = null;
+
+ if (name != Name) {
+ errs = repo.RunCommand($"remote rename {Name} {name}", null);
+ if (errs != null) {
+ App.RaiseError(errs);
+ return;
+ }
+ }
+
+ if (url != URL) {
+ errs = repo.RunCommand($"remote set-url {name} {url}", null);
+ if (errs != null) App.RaiseError(errs);
+ }
+ }
+ }
+}
diff --git a/SourceGit/Git/Repository.cs b/src/Git/Repository.cs
similarity index 99%
rename from SourceGit/Git/Repository.cs
rename to src/Git/Repository.cs
index 9efc74e3..f573cd7a 100644
--- a/SourceGit/Git/Repository.cs
+++ b/src/Git/Repository.cs
@@ -430,10 +430,10 @@ namespace SourceGit.Git {
///
public static Repository Clone(string url, string folder, string rName, string lName, Action onProgress) {
string RemoteName;
- if (rName != null) {
- RemoteName = $" --origin {rName}";
- } else {
- RemoteName = null;
+ if (rName != null) {
+ RemoteName = $" --origin {rName}";
+ } else {
+ RemoteName = null;
}
var errs = RunCommand(folder, $"-c credential.helper=manager clone --progress --verbose {RemoteName} --recurse-submodules {url} {lName}", line => {
@@ -471,8 +471,8 @@ namespace SourceGit.Git {
var errs = RunCommand(args, line => {
if (line != null) onProgress?.Invoke(line);
- }, true);
-
+ }, true);
+
OnSubmoduleChanged?.Invoke();
AssertCommand(errs);
diff --git a/SourceGit/Git/Stash.cs b/src/Git/Stash.cs
similarity index 100%
rename from SourceGit/Git/Stash.cs
rename to src/Git/Stash.cs
diff --git a/SourceGit/Git/Tag.cs b/src/Git/Tag.cs
similarity index 100%
rename from SourceGit/Git/Tag.cs
rename to src/Git/Tag.cs
diff --git a/SourceGit/Git/User.cs b/src/Git/User.cs
similarity index 100%
rename from SourceGit/Git/User.cs
rename to src/Git/User.cs
diff --git a/SourceGit/Helpers/CommitGraph.cs b/src/Helpers/CommitGraph.cs
similarity index 100%
rename from SourceGit/Helpers/CommitGraph.cs
rename to src/Helpers/CommitGraph.cs
diff --git a/SourceGit/Helpers/TextBoxHelper.cs b/src/Helpers/TextBoxHelper.cs
similarity index 97%
rename from SourceGit/Helpers/TextBoxHelper.cs
rename to src/Helpers/TextBoxHelper.cs
index 9e28c20f..dc3c2fb5 100644
--- a/SourceGit/Helpers/TextBoxHelper.cs
+++ b/src/Helpers/TextBoxHelper.cs
@@ -1,224 +1,224 @@
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Input;
-using System.Windows.Media;
-
-namespace SourceGit.Helpers {
-
- ///
- /// Attached properties to TextBox.
- ///
- public static class TextBoxHelper {
-
- ///
- /// Auto scroll on text changed or selection changed.
- ///
- public static readonly DependencyProperty AutoScrollProperty = DependencyProperty.RegisterAttached(
- "AutoScroll",
- typeof(bool),
- typeof(TextBoxHelper),
- new PropertyMetadata(false, OnAutoScrollChanged));
-
- ///
- /// Placeholder property
- ///
- public static readonly DependencyProperty PlaceholderProperty = DependencyProperty.RegisterAttached(
- "Placeholder",
- typeof(string),
- typeof(TextBoxHelper),
- new PropertyMetadata(string.Empty, OnPlaceholderChanged));
-
- ///
- /// Vertical alignment for placeholder.
- ///
- public static readonly DependencyProperty PlaceholderBaselineProperty = DependencyProperty.RegisterAttached(
- "PlaceholderBaseline",
- typeof(AlignmentY),
- typeof(TextBoxHelper),
- new PropertyMetadata(AlignmentY.Center));
-
- ///
- /// Property to store generated placeholder brush.
- ///
- public static readonly DependencyProperty PlaceholderBrushProperty = DependencyProperty.RegisterAttached(
- "PlaceholderBrush",
- typeof(Brush),
- typeof(TextBoxHelper),
- new PropertyMetadata(Brushes.Transparent));
-
- ///
- /// Setter for AutoScrollProperty
- ///
- ///
- ///
- public static void SetAutoScroll(UIElement element, bool enabled) {
- element.SetValue(AutoScrollProperty, enabled);
- }
-
- ///
- /// Getter for AutoScrollProperty
- ///
- ///
- ///
- public static bool GetAutoScroll(UIElement element) {
- return (bool)element.GetValue(AutoScrollProperty);
- }
-
- ///
- /// Triggered when AutoScroll property changed.
- ///
- ///
- ///
- public static void OnAutoScrollChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
- var textBox = d as TextBox;
- if (textBox == null) return;
-
- textBox.SelectionChanged -= UpdateScrollOnSelectionChanged;
- if ((bool)e.NewValue == true) {
- textBox.SelectionChanged += UpdateScrollOnSelectionChanged;
- }
- }
-
- ///
- /// Triggered when placeholder changed.
- ///
- ///
- ///
- private static void OnPlaceholderChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
- var textBox = d as TextBox;
- if (textBox != null) textBox.Loaded += OnTextLoaded;
- }
-
- ///
- /// Setter for Placeholder property
- ///
- ///
- ///
- public static void SetPlaceholder(UIElement element, string value) {
- element.SetValue(PlaceholderProperty, value);
- }
-
- ///
- /// Getter for Placeholder property
- ///
- ///
- ///
- public static string GetPlaceholder(UIElement element) {
- return (string)element.GetValue(PlaceholderProperty);
- }
-
- ///
- /// Setter for PlaceholderBaseline property
- ///
- ///
- ///
- public static void SetPlaceholderBaseline(UIElement element, AlignmentY align) {
- element.SetValue(PlaceholderBaselineProperty, align);
- }
-
- ///
- /// Setter for PlaceholderBaseline property.
- ///
- ///
- ///
- public static AlignmentY GetPlaceholderBaseline(UIElement element) {
- return (AlignmentY)element.GetValue(PlaceholderBaselineProperty);
- }
-
- ///
- /// Setter for PlaceholderBrush property.
- ///
- ///
- ///
- public static void SetPlaceholderBrush(UIElement element, Brush value) {
- element.SetValue(PlaceholderBrushProperty, value);
- }
-
- ///
- /// Getter for PlaceholderBrush property.
- ///
- ///
- ///
- public static Brush GetPlaceholderBrush(UIElement element) {
- return (Brush)element.GetValue(PlaceholderBrushProperty);
- }
-
- ///
- /// Set placeholder as background when TextBox was loaded.
- ///
- ///
- ///
- private static void OnTextLoaded(object sender, RoutedEventArgs e) {
- var textBox = sender as TextBox;
- if (textBox == null) return;
-
- Label placeholder = new Label();
- placeholder.Content = textBox.GetValue(PlaceholderProperty);
-
- VisualBrush brush = new VisualBrush();
- brush.AlignmentX = AlignmentX.Left;
- brush.AlignmentY = GetPlaceholderBaseline(textBox);
- brush.TileMode = TileMode.None;
- brush.Stretch = Stretch.None;
- brush.Opacity = 0.3;
- brush.Visual = placeholder;
-
- textBox.SetValue(PlaceholderBrushProperty, brush);
- textBox.Background = brush;
- textBox.TextChanged += UpdatePlaceholder;
- UpdatePlaceholder(textBox, null);
- }
-
- ///
- /// Dynamically hide/show placeholder.
- ///
- ///
- ///
- private static void UpdatePlaceholder(object sender, RoutedEventArgs e) {
- var textBox = sender as TextBox;
- if (string.IsNullOrEmpty(textBox.Text)) {
- textBox.Background = textBox.GetValue(PlaceholderBrushProperty) as Brush;
- } else {
- textBox.Background = Brushes.Transparent;
- }
- }
-
- ///
- ///
- ///
- ///
- ///
- private static void UpdateScrollOnSelectionChanged(object sender, RoutedEventArgs e) {
- var textBox = sender as TextBox;
- if (textBox != null && textBox.IsFocused) {
- if (Mouse.LeftButton == MouseButtonState.Pressed && textBox.SelectionLength > 0) {
- var p = Mouse.GetPosition(textBox);
- if (p.X <= 8) {
- textBox.LineLeft();
- } else if (p.X >= textBox.ActualWidth - 8) {
- textBox.LineRight();
- }
-
- if (p.Y <= 8) {
- textBox.LineUp();
- } else if (p.Y >= textBox.ActualHeight - 8) {
- textBox.LineDown();
- }
- } else {
- var rect = textBox.GetRectFromCharacterIndex(textBox.CaretIndex);
- if (rect.Left <= 0) {
- textBox.ScrollToHorizontalOffset(textBox.HorizontalOffset + rect.Left);
- } else if (rect.Right >= textBox.ActualWidth) {
- textBox.ScrollToHorizontalOffset(textBox.HorizontalOffset + rect.Right);
- }
-
- if (rect.Top <= 0) {
- textBox.ScrollToVerticalOffset(textBox.VerticalOffset + rect.Top);
- } else if (rect.Bottom >= textBox.ActualHeight) {
- textBox.ScrollToVerticalOffset(textBox.VerticalOffset + rect.Bottom);
- }
- }
- }
- }
- }
-}
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+using System.Windows.Media;
+
+namespace SourceGit.Helpers {
+
+ ///
+ /// Attached properties to TextBox.
+ ///
+ public static class TextBoxHelper {
+
+ ///
+ /// Auto scroll on text changed or selection changed.
+ ///
+ public static readonly DependencyProperty AutoScrollProperty = DependencyProperty.RegisterAttached(
+ "AutoScroll",
+ typeof(bool),
+ typeof(TextBoxHelper),
+ new PropertyMetadata(false, OnAutoScrollChanged));
+
+ ///
+ /// Placeholder property
+ ///
+ public static readonly DependencyProperty PlaceholderProperty = DependencyProperty.RegisterAttached(
+ "Placeholder",
+ typeof(string),
+ typeof(TextBoxHelper),
+ new PropertyMetadata(string.Empty, OnPlaceholderChanged));
+
+ ///
+ /// Vertical alignment for placeholder.
+ ///
+ public static readonly DependencyProperty PlaceholderBaselineProperty = DependencyProperty.RegisterAttached(
+ "PlaceholderBaseline",
+ typeof(AlignmentY),
+ typeof(TextBoxHelper),
+ new PropertyMetadata(AlignmentY.Center));
+
+ ///
+ /// Property to store generated placeholder brush.
+ ///
+ public static readonly DependencyProperty PlaceholderBrushProperty = DependencyProperty.RegisterAttached(
+ "PlaceholderBrush",
+ typeof(Brush),
+ typeof(TextBoxHelper),
+ new PropertyMetadata(Brushes.Transparent));
+
+ ///
+ /// Setter for AutoScrollProperty
+ ///
+ ///
+ ///
+ public static void SetAutoScroll(UIElement element, bool enabled) {
+ element.SetValue(AutoScrollProperty, enabled);
+ }
+
+ ///
+ /// Getter for AutoScrollProperty
+ ///
+ ///
+ ///
+ public static bool GetAutoScroll(UIElement element) {
+ return (bool)element.GetValue(AutoScrollProperty);
+ }
+
+ ///
+ /// Triggered when AutoScroll property changed.
+ ///
+ ///
+ ///
+ public static void OnAutoScrollChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
+ var textBox = d as TextBox;
+ if (textBox == null) return;
+
+ textBox.SelectionChanged -= UpdateScrollOnSelectionChanged;
+ if ((bool)e.NewValue == true) {
+ textBox.SelectionChanged += UpdateScrollOnSelectionChanged;
+ }
+ }
+
+ ///
+ /// Triggered when placeholder changed.
+ ///
+ ///
+ ///
+ private static void OnPlaceholderChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
+ var textBox = d as TextBox;
+ if (textBox != null) textBox.Loaded += OnTextLoaded;
+ }
+
+ ///
+ /// Setter for Placeholder property
+ ///
+ ///
+ ///
+ public static void SetPlaceholder(UIElement element, string value) {
+ element.SetValue(PlaceholderProperty, value);
+ }
+
+ ///
+ /// Getter for Placeholder property
+ ///
+ ///
+ ///
+ public static string GetPlaceholder(UIElement element) {
+ return (string)element.GetValue(PlaceholderProperty);
+ }
+
+ ///
+ /// Setter for PlaceholderBaseline property
+ ///
+ ///
+ ///
+ public static void SetPlaceholderBaseline(UIElement element, AlignmentY align) {
+ element.SetValue(PlaceholderBaselineProperty, align);
+ }
+
+ ///
+ /// Setter for PlaceholderBaseline property.
+ ///
+ ///
+ ///
+ public static AlignmentY GetPlaceholderBaseline(UIElement element) {
+ return (AlignmentY)element.GetValue(PlaceholderBaselineProperty);
+ }
+
+ ///
+ /// Setter for PlaceholderBrush property.
+ ///
+ ///
+ ///
+ public static void SetPlaceholderBrush(UIElement element, Brush value) {
+ element.SetValue(PlaceholderBrushProperty, value);
+ }
+
+ ///
+ /// Getter for PlaceholderBrush property.
+ ///
+ ///
+ ///
+ public static Brush GetPlaceholderBrush(UIElement element) {
+ return (Brush)element.GetValue(PlaceholderBrushProperty);
+ }
+
+ ///
+ /// Set placeholder as background when TextBox was loaded.
+ ///
+ ///
+ ///
+ private static void OnTextLoaded(object sender, RoutedEventArgs e) {
+ var textBox = sender as TextBox;
+ if (textBox == null) return;
+
+ Label placeholder = new Label();
+ placeholder.Content = textBox.GetValue(PlaceholderProperty);
+
+ VisualBrush brush = new VisualBrush();
+ brush.AlignmentX = AlignmentX.Left;
+ brush.AlignmentY = GetPlaceholderBaseline(textBox);
+ brush.TileMode = TileMode.None;
+ brush.Stretch = Stretch.None;
+ brush.Opacity = 0.3;
+ brush.Visual = placeholder;
+
+ textBox.SetValue(PlaceholderBrushProperty, brush);
+ textBox.Background = brush;
+ textBox.TextChanged += UpdatePlaceholder;
+ UpdatePlaceholder(textBox, null);
+ }
+
+ ///
+ /// Dynamically hide/show placeholder.
+ ///
+ ///
+ ///
+ private static void UpdatePlaceholder(object sender, RoutedEventArgs e) {
+ var textBox = sender as TextBox;
+ if (string.IsNullOrEmpty(textBox.Text)) {
+ textBox.Background = textBox.GetValue(PlaceholderBrushProperty) as Brush;
+ } else {
+ textBox.Background = Brushes.Transparent;
+ }
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ private static void UpdateScrollOnSelectionChanged(object sender, RoutedEventArgs e) {
+ var textBox = sender as TextBox;
+ if (textBox != null && textBox.IsFocused) {
+ if (Mouse.LeftButton == MouseButtonState.Pressed && textBox.SelectionLength > 0) {
+ var p = Mouse.GetPosition(textBox);
+ if (p.X <= 8) {
+ textBox.LineLeft();
+ } else if (p.X >= textBox.ActualWidth - 8) {
+ textBox.LineRight();
+ }
+
+ if (p.Y <= 8) {
+ textBox.LineUp();
+ } else if (p.Y >= textBox.ActualHeight - 8) {
+ textBox.LineDown();
+ }
+ } else {
+ var rect = textBox.GetRectFromCharacterIndex(textBox.CaretIndex);
+ if (rect.Left <= 0) {
+ textBox.ScrollToHorizontalOffset(textBox.HorizontalOffset + rect.Left);
+ } else if (rect.Right >= textBox.ActualWidth) {
+ textBox.ScrollToHorizontalOffset(textBox.HorizontalOffset + rect.Right);
+ }
+
+ if (rect.Top <= 0) {
+ textBox.ScrollToVerticalOffset(textBox.VerticalOffset + rect.Top);
+ } else if (rect.Bottom >= textBox.ActualHeight) {
+ textBox.ScrollToVerticalOffset(textBox.VerticalOffset + rect.Bottom);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/SourceGit/Helpers/TreeViewHelper.cs b/src/Helpers/TreeViewHelper.cs
similarity index 100%
rename from SourceGit/Helpers/TreeViewHelper.cs
rename to src/Helpers/TreeViewHelper.cs
diff --git a/SourceGit/Helpers/Validations.cs b/src/Helpers/Validations.cs
similarity index 100%
rename from SourceGit/Helpers/Validations.cs
rename to src/Helpers/Validations.cs
diff --git a/SourceGit/Resources/Controls.xaml b/src/Resources/Controls.xaml
similarity index 100%
rename from SourceGit/Resources/Controls.xaml
rename to src/Resources/Controls.xaml
diff --git a/SourceGit/Resources/Icons.xaml b/src/Resources/Icons.xaml
similarity index 99%
rename from SourceGit/Resources/Icons.xaml
rename to src/Resources/Icons.xaml
index 66103f5a..7ae6c7b1 100644
--- a/SourceGit/Resources/Icons.xaml
+++ b/src/Resources/Icons.xaml
@@ -1,61 +1,61 @@
-
- M1004.824 466.4L557.72 19.328c-25.728-25.76-67.488-25.76-93.28 0L360.568 123.2l78.176 78.176c12.544-5.984 26.56-9.376 41.376-9.376 53.024 0 96 42.976 96 96 0 14.816-3.36 28.864-9.376 41.376l127.968 127.968c12.544-5.984 26.56-9.376 41.376-9.376 53.024 0 96 42.976 96 96s-42.976 96-96 96-96-42.976-96-96c0-14.816 3.36-28.864 9.376-41.376L521.496 374.624a88.837 88.837 0 0 1-9.376 3.872v266.976c37.28 13.184 64 48.704 64 90.528 0 53.024-42.976 96-96 96s-96-42.976-96-96c0-41.792 26.72-77.344 64-90.528V378.496c-37.28-13.184-64-48.704-64-90.528 0-14.816 3.36-28.864 9.376-41.376l-78.176-78.176L19.416 464.288c-25.76 25.792-25.76 67.52 0 93.28l447.136 447.072c25.728 25.76 67.488 25.76 93.28 0l444.992-444.992c25.76-25.76 25.76-67.552 0-93.28z
- M557.696 545.347L789.873 402.66c23.998-14.999 31.297-46.496 16.398-70.493-14.798-23.798-45.995-31.197-69.993-16.699L506.501 456.555 277.123 315.37c-24.098-14.798-55.595-7.3-70.493 16.799-14.799 24.097-7.3 55.594 16.798 70.493l231.778 142.586V819.12c0 28.297 22.897 51.195 51.195 51.195 28.297 0 51.195-22.898 51.195-51.195V545.347h0.1zM506.5 0l443.356 255.975v511.95L506.501 1023.9 63.144 767.925v-511.95L506.5 0z
-
- M753.613 996.727L269.38 511.505 754.602 27.272z
- M270.387 27.273L754.62 512.495 269.398 996.728z
-
- F1M0,6L0,9 9,9 9,6 0,6z
- F1M0,0L0,9 9,9 9,0 0,0 0,3 8,3 8,8 1,8 1,3z
- F1M0,10L0,3 3,3 3,0 10,0 10,2 4,2 4,3 7,3 7,6 6,6 6,5 1,5 1,10z M1,10L7,10 7,7 10,7 10,2 9,2 9,6 6,6 6,9 1,9z
- M810.666667 273.493333L750.506667 213.333333 512 451.84 273.493333 213.333333 213.333333 273.493333 451.84 512 213.333333 750.506667 273.493333 810.666667 512 572.16 750.506667 810.666667 810.666667 750.506667 572.16 512z
- M512 597.33333332m-1.26648097 0a1.26648097 1.26648097 0 1 0 2.53296194 0 1.26648097 1.26648097 0 1 0-2.53296194 0ZM809.691429 392.777143L732.16 314.514286 447.634286 599.771429 292.571429 443.977143 214.308571 521.508571l155.794286 155.794286 77.531429 77.531429 362.057143-362.057143z
- M511.680999 0C233.071131 0 6.524722 222.580887 0.12872 499.655715 6.013042 257.886821 189.834154 63.960025 415.740962 63.960025c229.61649 0 415.740162 200.450718 415.740162 447.720175 0 52.958901 42.981137 95.940037 95.940038 95.940037s95.940037-42.981137 95.940037-95.940037c0-282.57539-229.104809-511.6802-511.6802-511.6802z m0 1023.3604c278.609869 0 505.156277-222.580887 511.55228-499.655715-5.884322 241.768894-189.705434 435.69569-415.612242 435.69569-229.61649 0-415.740162-200.450718-415.740163-447.720175 0-52.958901-42.981137-95.940037-95.940037-95.940038s-95.940037 42.981137-95.940037 95.940038c0 282.57539 229.104809 511.6802 511.680199 511.6802z
- M701.9062029 677.41589899L589.90712068 565.41681675a148.33953321 148.33953321 0 1 0-24.97646381 26.55648342L676.07895931 703.12160261z m-346.38891409-199.50786053a114.97681148 114.97681148 0 1 1 114.85527151 114.97681148A115.09835147 115.09835147 0 0 1 355.45651882 477.90803846z
- M352 64h320L960 352v320L672 960h-320L64 672v-320L352 64z m161.28 362.688L344.128 256 259.584 341.312 428.736 512l-169.152 170.688L344.128 768 513.28 597.312 682.432 768l84.544-85.312L597.824 512l169.152-170.688L682.432 256 513.28 426.688z
-
- M51.2 204.8h102.4v102.4H51.2V204.8z m204.8 0h716.8v102.4H256V204.8zM51.2 460.8h102.4v102.4H51.2V460.8z m204.8 0h716.8v102.4H256V460.8z m-204.8 256h102.4v102.4H51.2v-102.4z m204.8 0h716.8v102.4H256v-102.4z
- M912 737l0 150L362 887l0-100 0-50 0-150 0-150 0-150L112 287l0-150 450 0 0 150L412 287l0 150L912 437l0 150L412 587l0 150L912 737z
-
- M868 545.5L536.1 163c-12.7-14.7-35.5-14.7-48.3 0L156 545.5c-4.5 5.2-0.8 13.2 6 13.2h81c4.6 0 9-2 12.1-5.5L474 300.9V864c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V300.9l218.9 252.3c3 3.5 7.4 5.5 12.1 5.5h81c6.8 0 10.5-8 6-13.2z
- M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861c12.7 14.7 35.5 14.7 48.3 0L868 478.5c4.5-5.2 0.8-13.2-6-13.2z
-
- M509.44 546.304l270.848-270.912 90.56 90.56-347.52 349.056-0.832-0.768-13.056 13.056-362.624-361.28 91.136-91.264z
- M256 224l1e-8 115.2L512 544l255.99999999-204.8 1e-8-115.2-256 204.80000001L256 224zM512 684.8l-256-204.8L256 595.2 512 800 768 595.2l0-115.2L512 684.8z
- M169.5 831l342.8-341.9L855.1 831l105.3-105.3-448.1-448.1L64.2 725.7 169.5 831z
- M768 800V684.8L512 480 256 684.8V800l256-204.8L768 800zM512 339.2L768 544V428.8L512 224 256 428.8V544l256-204.8z
-
- M64.2 180.3h418.2v120.6H64.2zM64.2 461.7h358.5v120.6H64.2zM64.2 723.1h418.2v120.6H64.2zM601.9 180.3h358.5v120.6H601.9zM482.4 119.9h179.2v241.3H482.4zM303.2 401.4h179.2v241.3H303.2zM482.4 662.8h179.2v241.3H482.4zM540.3 461.7h420.1v120.6H540.3zM601.9 723.1h358.5v120.6H601.9z
- M887 576.8v-129.4L796.6 418c-4.6-14-10.2-27.4-16.8-40.4l43.2-84.8-91.6-91.6-84.8 43.2c-13-6.6-26.6-12.2-40.4-16.8l-29.4-90.4h-129.4L418 227.6c-13.8 4.6-27.4 10.2-40.4 16.8l-84.8-43.2-91.6 91.6 43.2 84.8c-6.6 13-12.2 26.6-16.8 40.4l-90.4 29.4v129.4l90.4 29.4c4.6 13.8 10.2 27.4 16.8 40.4l-43.2 84.8 91.6 91.6 84.8-43.2c13 6.6 26.6 12.2 40.4 16.8l29.4 90.4h129.4l29.4-90.4c14-4.6 27.4-10.2 40.4-16.8l84.8 43.2 91.6-91.6-43.2-84.8c6.6-13 12.2-26.6 16.8-40.4l90.4-29.4zM512 662c-82.8 0-150-67.2-150-150s67.2-150 150-150 150 67.2 150 150-67.2 150-150 150z
- M 38,19C 48.4934,19 57,27.5066 57,38C 57,48.4934 48.4934,57 38,57C 27.5066,57 19,48.4934 19,38C 19,27.5066 27.5066,19 38,19 Z M 33.25,33.25L 33.25,36.4167L 36.4166,36.4167L 36.4166,47.5L 33.25,47.5L 33.25,50.6667L 44.3333,50.6667L 44.3333,47.5L 41.1666,47.5L 41.1666,36.4167L 41.1666,33.25L 33.25,33.25 Z M 38.7917,25.3333C 37.48,25.3333 36.4167,26.3967 36.4167,27.7083C 36.4167,29.02 37.48,30.0833 38.7917,30.0833C 40.1033,30.0833 41.1667,29.02 41.1667,27.7083C 41.1667,26.3967 40.1033,25.3333 38.7917,25.3333 Z
- M64 864h896V288h-396.224a64 64 0 0 1-57.242667-35.376L460.224 160H64v704z m-64 32V128a32 32 0 0 1 32-32h448a32 32 0 0 1 28.624 17.690667L563.776 224H992a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H32a32 32 0 0 1-32-32z
- M448 64l128 128h448v768H0V64z
- M832 960l192-512H192L0 960zM128 384L0 960V128h288l128 128h416v128z
- M958.656 320H960v639.936A64 64 0 0 1 896.128 1024H191.936A63.872 63.872 0 0 1 128 959.936V64.064A64 64 0 0 1 191.936 0H640v320.96h319.616L958.656 320zM320 544c0 17.152 14.464 32 32.192 32h383.552A32.384 32.384 0 0 0 768 544c0-17.152-14.464-32-32.256-32H352.192A32.448 32.448 0 0 0 320 544z m0 128c0 17.152 14.464 32 32.192 32h383.552a32.384 32.384 0 0 0 32.256-32c0-17.152-14.464-32-32.256-32H352.192a32.448 32.448 0 0 0-32.192 32z m0 128c0 17.152 14.464 32 32.192 32h383.552a32.384 32.384 0 0 0 32.256-32c0-17.152-14.464-32-32.256-32H352.192a32.448 32.448 0 0 0-32.192 32z
- M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23zM553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM568 753c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42z m0-220c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7v42z
- M599.22969 424.769286 599.22969 657.383158 424.769286 831.844585 424.769286 424.769286 192.155415 192.155415 831.844585 192.155415Z
- M71.111111 1024V0h661.333333L952.888889 219.420444V1024H71.111111z m808.305778-731.420444l-220.444445-219.448889H144.583111V950.897778h734.833778V292.579556zM438.528 512h-220.444444V219.420444h220.444444V512z m-73.500444-219.420444H291.555556v146.289777h73.472v-146.289777z m0 512h73.500444v73.130666h-220.444444v-73.130666H291.555556v-146.289778H218.083556V585.102222h146.944v219.448889z m293.944888-365.710223h73.472V512H512v-73.130667h73.472v-146.289777H512V219.420444h146.972444v219.448889z m73.472 438.840889H512V585.130667h220.444444v292.579555z m-73.472-219.420444h-73.500444v146.289778h73.500444v-146.289778z
-
- M1024 1024H0V0h1024v1024z m-64-64V320H320V256h640V64H64v896h192V64h64v896z
- M81.92 81.92v860.16h860.16V81.92H81.92z m802.304 57.856V322.56H139.776V139.776h744.448z m-744.448 240.64H322.56v503.808H139.776V380.416z m240.128 503.808V380.416h504.32v503.808H379.904z
-
- M1024 896v128H0V704h128v192h768V704h128v192zM576 554.688L810.688 320 896 405.312l-384 384-384-384L213.312 320 448 554.688V0h128v554.688z
- M432 0h160c26.6 0 48 21.4 48 48v336h175.4c35.6 0 53.4 43 28.2 68.2L539.4 756.6c-15 15-39.6 15-54.6 0L180.2 452.2c-25.2-25.2-7.4-68.2 28.2-68.2H384V48c0-26.6 21.4-48 48-48z m592 752v224c0 26.6-21.4 48-48 48H48c-26.6 0-48-21.4-48-48V752c0-26.6 21.4-48 48-48h293.4l98 98c40.2 40.2 105 40.2 145.2 0l98-98H976c26.6 0 48 21.4 48 48z m-248 176c0-22-18-40-40-40s-40 18-40 40 18 40 40 40 40-18 40-40z m128 0c0-22-18-40-40-40s-40 18-40 40 18 40 40 40 40-18 40-40z
- M592 768h-160c-26.6 0-48-21.4-48-48V384h-175.4c-35.6 0-53.4-43-28.2-68.2L484.6 11.4c15-15 39.6-15 54.6 0l304.4 304.4c25.2 25.2 7.4 68.2-28.2 68.2H640v336c0 26.6-21.4 48-48 48z m432-16v224c0 26.6-21.4 48-48 48H48c-26.6 0-48-21.4-48-48V752c0-26.6 21.4-48 48-48h272v16c0 61.8 50.2 112 112 112h160c61.8 0 112-50.2 112-112v-16h272c26.6 0 48 21.4 48 48z m-248 176c0-22-18-40-40-40s-40 18-40 40 18 40 40 40 40-18 40-40z m128 0c0-22-18-40-40-40s-40 18-40 40 18 40 40 40 40-18 40-40z
- M961.3 319.6L512 577.3 62.7 319.6 512 62l449.3 257.6zM512 628.4L185.4 441.6 62.7 512 512 769.6 961.3 512l-122.7-70.4L512 628.4zM512 820.8L185.4 634 62.7 704.3 512 962l449.3-257.7L838.6 634 512 820.8z
- M295.328 472l143.184 276.032S671.184 186.992 1038.096 0c-8.944 133.568-44.8 249.328 17.904 391.792C894.912 427.408 563.792 828.112 456.4 1024 304.272 837.008 125.296 694.544 0 650.016z
- M89.6 806.4h844.8V217.6H89.6v588.8zM0 128h1024v768H0V128z m242.816 577.536L192 654.72l154.304-154.368L192 346.048l50.816-50.816L448 500.352 242.816 705.536z m584.32 13.248H512V640h315.072v78.72z
- M508.928 556.125091l92.904727 148.759273h124.462546l-79.639273-79.173819 49.245091-49.524363 164.584727 163.700363-164.631273 163.002182-49.152-49.617454 79.36-78.568728h-162.955636l-95.650909-153.227636 41.472-65.349818z m186.973091-394.705455l164.584727 163.700364-164.631273 163.002182-49.152-49.617455L726.109091 359.936H529.687273l-135.540364 223.976727H139.636364v-69.818182h215.133091l135.586909-223.976727h235.938909l-79.639273-79.173818 49.245091-49.524364z
-
- M795.968 471.04A291.584 291.584 0 0 0 512 256a293.376 293.376 0 0 0-283.968 215.04H0v144h228.032A292.864 292.864 0 0 0 512 832a291.136 291.136 0 0 0 283.968-216.96H1024V471.04h-228.032M512 688A145.856 145.856 0 0 1 366.016 544 144.576 144.576 0 0 1 512 400c80 0 145.984 63.104 145.984 144A145.856 145.856 0 0 1 512 688
- M0 586.459429l403.968 118.784 497.517714-409.892572-385.536 441.490286-1.609143 250.587428 154.916572-204.580571 278.601143 83.456L1170.285714 36.571429z
- M24.356571 512A488.155429 488.155429 0 0 1 512 24.356571 488.155429 488.155429 0 0 1 999.643429 512 488.155429 488.155429 0 0 1 512 999.643429 488.155429 488.155429 0 0 1 24.356571 512z m446.976-325.046857v326.656L242.614857 619.227429l51.126857 110.665142 299.52-138.24V186.953143H471.332571z
- M714.624 253.648h-404.8l-57.808 57.328h520.48z m-491.568 85.984v200.624h578.336V339.632z m404.8 143.296h-28.88v-28.64H425.472v28.64h-28.912v-57.312h231.328v57.312z m-404.8 295.12h578.336V559.36H223.056z m173.504-132.704h231.328v57.328h-28.912v-28.656H425.472v28.656h-28.912v-57.328z
- M868.736 144.96a144.64 144.64 0 1 0-289.408 0c0 56.064 32.64 107.008 83.456 130.624-4.928 95.552-76.608 128-201.088 174.592-52.48 19.712-110.336 41.6-159.744 74.432V276.16A144.448 144.448 0 0 0 241.664 0.192a144.64 144.64 0 0 0-144.64 144.768c0 58.24 34.688 108.288 84.352 131.2v461.184a144.32 144.32 0 0 0-84.416 131.2 144.704 144.704 0 1 0 289.472 0 144.32 144.32 0 0 0-83.52-130.688c4.992-95.488 76.672-127.936 201.152-174.592 122.368-45.952 273.792-103.168 279.744-286.784a144.64 144.64 0 0 0 84.928-131.52zM241.664 61.44a83.456 83.456 0 1 1 0 166.912 83.456 83.456 0 0 1 0-166.912z m0 890.56a83.52 83.52 0 1 1 0-167.04 83.52 83.52 0 0 1 0 167.04zM724.032 228.416a83.52 83.52 0 1 1 0-167.04 83.52 83.52 0 0 1 0 167.04z
- M896 128h-64V64c0-35.2-28.8-64-64-64s-64 28.8-64 64v64h-64c-35.2 0-64 28.8-64 64s28.8 64 64 64h64v64c0 35.2 28.8 64 64 64s64-28.8 64-64V256h64c35.2 0 64-28.8 64-64s-28.8-64-64-64z m-203.52 307.2C672.64 480.64 628.48 512 576 512H448c-46.72 0-90.24 12.8-128 35.2V372.48C394.24 345.6 448 275.2 448 192c0-106.24-85.76-192-192-192S64 85.76 64 192c0 83.2 53.76 153.6 128 180.48v279.68c-74.24 25.6-128 96.64-128 179.84 0 106.24 85.76 192 192 192s192-85.76 192-192c0-66.56-33.92-124.8-84.48-159.36 22.4-19.84 51.84-32.64 84.48-32.64h128c121.6 0 223.36-85.12 248.96-199.04-18.56 4.48-37.12 7.04-56.96 7.04-26.24 0-51.2-5.12-75.52-12.8zM256 128c35.2 0 64 28.8 64 64s-28.8 64-64 64-64-28.8-64-64 28.8-64 64-64z m0 768c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64z
- M901.802667 479.232v-1.024c0-133.461333-111.616-241.664-249.514667-241.664-105.813333 0-195.925333 63.829333-232.448 153.941333-27.989333-20.138667-62.464-32.426667-100.010667-32.426666-75.776 0-139.605333 49.152-159.744 116.053333-51.882667 36.522667-86.016 96.938667-86.016 165.205333 0 111.616 90.453333 201.728 201.728 201.728h503.466667c111.616 0 201.728-90.453333 201.728-201.728 0-65.194667-31.061333-123.221333-79.189333-160.085333z
- M363.789474 512h67.368421v107.789474h107.789473v67.368421h-107.789473v107.789473h-67.368421v-107.789473h-107.789474v-67.368421h107.789474v-107.789474z m297.539368-64A106.671158 106.671158 0 0 1 768 554.671158C768 613.578105 719.548632 660.210526 660.210526 660.210526h-107.789473v-53.894737h-107.789474v-107.789473h-94.31579v107.789473h-94.315789c4.311579-21.194105 22.231579-46.807579 43.560421-50.755368l-0.889263-11.560421a74.671158 74.671158 0 0 1 71.248842-74.590316 128.053895 128.053895 0 0 1 238.605474-7.437473 106.172632 106.172632 0 0 1 52.816842-13.972211z
- M177.311335 156.116617c-22.478967 4.729721-32.774451 17.336854-36.251645 36.893258-10.080589 56.697303-33.399691 257.604032-13.234419 277.769304l445.342858 445.341834c23.177885 23.177885 60.757782 23.178909 83.935668 0l246.019183-246.019183c23.177885-23.177885 23.177885-60.757782 0-83.935668l-445.341834-445.341834C437.419398 120.463606 231.004211 144.82034 177.311335 156.116617zM331.22375 344.221786c-26.195615 26.195615-68.667939 26.195615-94.863555 0-26.195615-26.195615-26.195615-68.666916 0-94.863555s68.667939-26.195615 94.862531 0C357.418342 275.55487 357.419366 318.02617 331.22375 344.221786z
- M682.666667 536.576h-143.701334v-142.336h-142.336V283.306667H238.933333a44.032 44.032 0 0 0-40.96 40.96v170.666666a55.978667 55.978667 0 0 0 14.336 34.133334l320.512 320.512a40.96 40.96 0 0 0 57.685334 0l173.738666-173.738667a40.96 40.96 0 0 0 0-57.685333z m-341.333334-108.544a40.96 40.96 0 1 1 0-57.685333 40.96 40.96 0 0 1 0 57.685333zM649.216 284.330667V141.994667h-68.608v142.336h-142.336v68.266666h142.336v142.336h68.608v-142.336h142.336v-68.266666h-142.336z
+
+ M1004.824 466.4L557.72 19.328c-25.728-25.76-67.488-25.76-93.28 0L360.568 123.2l78.176 78.176c12.544-5.984 26.56-9.376 41.376-9.376 53.024 0 96 42.976 96 96 0 14.816-3.36 28.864-9.376 41.376l127.968 127.968c12.544-5.984 26.56-9.376 41.376-9.376 53.024 0 96 42.976 96 96s-42.976 96-96 96-96-42.976-96-96c0-14.816 3.36-28.864 9.376-41.376L521.496 374.624a88.837 88.837 0 0 1-9.376 3.872v266.976c37.28 13.184 64 48.704 64 90.528 0 53.024-42.976 96-96 96s-96-42.976-96-96c0-41.792 26.72-77.344 64-90.528V378.496c-37.28-13.184-64-48.704-64-90.528 0-14.816 3.36-28.864 9.376-41.376l-78.176-78.176L19.416 464.288c-25.76 25.792-25.76 67.52 0 93.28l447.136 447.072c25.728 25.76 67.488 25.76 93.28 0l444.992-444.992c25.76-25.76 25.76-67.552 0-93.28z
+ M557.696 545.347L789.873 402.66c23.998-14.999 31.297-46.496 16.398-70.493-14.798-23.798-45.995-31.197-69.993-16.699L506.501 456.555 277.123 315.37c-24.098-14.798-55.595-7.3-70.493 16.799-14.799 24.097-7.3 55.594 16.798 70.493l231.778 142.586V819.12c0 28.297 22.897 51.195 51.195 51.195 28.297 0 51.195-22.898 51.195-51.195V545.347h0.1zM506.5 0l443.356 255.975v511.95L506.501 1023.9 63.144 767.925v-511.95L506.5 0z
+
+ M753.613 996.727L269.38 511.505 754.602 27.272z
+ M270.387 27.273L754.62 512.495 269.398 996.728z
+
+ F1M0,6L0,9 9,9 9,6 0,6z
+ F1M0,0L0,9 9,9 9,0 0,0 0,3 8,3 8,8 1,8 1,3z
+ F1M0,10L0,3 3,3 3,0 10,0 10,2 4,2 4,3 7,3 7,6 6,6 6,5 1,5 1,10z M1,10L7,10 7,7 10,7 10,2 9,2 9,6 6,6 6,9 1,9z
+ M810.666667 273.493333L750.506667 213.333333 512 451.84 273.493333 213.333333 213.333333 273.493333 451.84 512 213.333333 750.506667 273.493333 810.666667 512 572.16 750.506667 810.666667 810.666667 750.506667 572.16 512z
+ M512 597.33333332m-1.26648097 0a1.26648097 1.26648097 0 1 0 2.53296194 0 1.26648097 1.26648097 0 1 0-2.53296194 0ZM809.691429 392.777143L732.16 314.514286 447.634286 599.771429 292.571429 443.977143 214.308571 521.508571l155.794286 155.794286 77.531429 77.531429 362.057143-362.057143z
+ M511.680999 0C233.071131 0 6.524722 222.580887 0.12872 499.655715 6.013042 257.886821 189.834154 63.960025 415.740962 63.960025c229.61649 0 415.740162 200.450718 415.740162 447.720175 0 52.958901 42.981137 95.940037 95.940038 95.940037s95.940037-42.981137 95.940037-95.940037c0-282.57539-229.104809-511.6802-511.6802-511.6802z m0 1023.3604c278.609869 0 505.156277-222.580887 511.55228-499.655715-5.884322 241.768894-189.705434 435.69569-415.612242 435.69569-229.61649 0-415.740162-200.450718-415.740163-447.720175 0-52.958901-42.981137-95.940037-95.940037-95.940038s-95.940037 42.981137-95.940037 95.940038c0 282.57539 229.104809 511.6802 511.680199 511.6802z
+ M701.9062029 677.41589899L589.90712068 565.41681675a148.33953321 148.33953321 0 1 0-24.97646381 26.55648342L676.07895931 703.12160261z m-346.38891409-199.50786053a114.97681148 114.97681148 0 1 1 114.85527151 114.97681148A115.09835147 115.09835147 0 0 1 355.45651882 477.90803846z
+ M352 64h320L960 352v320L672 960h-320L64 672v-320L352 64z m161.28 362.688L344.128 256 259.584 341.312 428.736 512l-169.152 170.688L344.128 768 513.28 597.312 682.432 768l84.544-85.312L597.824 512l169.152-170.688L682.432 256 513.28 426.688z
+
+ M51.2 204.8h102.4v102.4H51.2V204.8z m204.8 0h716.8v102.4H256V204.8zM51.2 460.8h102.4v102.4H51.2V460.8z m204.8 0h716.8v102.4H256V460.8z m-204.8 256h102.4v102.4H51.2v-102.4z m204.8 0h716.8v102.4H256v-102.4z
+ M912 737l0 150L362 887l0-100 0-50 0-150 0-150 0-150L112 287l0-150 450 0 0 150L412 287l0 150L912 437l0 150L412 587l0 150L912 737z
+
+ M868 545.5L536.1 163c-12.7-14.7-35.5-14.7-48.3 0L156 545.5c-4.5 5.2-0.8 13.2 6 13.2h81c4.6 0 9-2 12.1-5.5L474 300.9V864c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V300.9l218.9 252.3c3 3.5 7.4 5.5 12.1 5.5h81c6.8 0 10.5-8 6-13.2z
+ M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861c12.7 14.7 35.5 14.7 48.3 0L868 478.5c4.5-5.2 0.8-13.2-6-13.2z
+
+ M509.44 546.304l270.848-270.912 90.56 90.56-347.52 349.056-0.832-0.768-13.056 13.056-362.624-361.28 91.136-91.264z
+ M256 224l1e-8 115.2L512 544l255.99999999-204.8 1e-8-115.2-256 204.80000001L256 224zM512 684.8l-256-204.8L256 595.2 512 800 768 595.2l0-115.2L512 684.8z
+ M169.5 831l342.8-341.9L855.1 831l105.3-105.3-448.1-448.1L64.2 725.7 169.5 831z
+ M768 800V684.8L512 480 256 684.8V800l256-204.8L768 800zM512 339.2L768 544V428.8L512 224 256 428.8V544l256-204.8z
+
+ M64.2 180.3h418.2v120.6H64.2zM64.2 461.7h358.5v120.6H64.2zM64.2 723.1h418.2v120.6H64.2zM601.9 180.3h358.5v120.6H601.9zM482.4 119.9h179.2v241.3H482.4zM303.2 401.4h179.2v241.3H303.2zM482.4 662.8h179.2v241.3H482.4zM540.3 461.7h420.1v120.6H540.3zM601.9 723.1h358.5v120.6H601.9z
+ M887 576.8v-129.4L796.6 418c-4.6-14-10.2-27.4-16.8-40.4l43.2-84.8-91.6-91.6-84.8 43.2c-13-6.6-26.6-12.2-40.4-16.8l-29.4-90.4h-129.4L418 227.6c-13.8 4.6-27.4 10.2-40.4 16.8l-84.8-43.2-91.6 91.6 43.2 84.8c-6.6 13-12.2 26.6-16.8 40.4l-90.4 29.4v129.4l90.4 29.4c4.6 13.8 10.2 27.4 16.8 40.4l-43.2 84.8 91.6 91.6 84.8-43.2c13 6.6 26.6 12.2 40.4 16.8l29.4 90.4h129.4l29.4-90.4c14-4.6 27.4-10.2 40.4-16.8l84.8 43.2 91.6-91.6-43.2-84.8c6.6-13 12.2-26.6 16.8-40.4l90.4-29.4zM512 662c-82.8 0-150-67.2-150-150s67.2-150 150-150 150 67.2 150 150-67.2 150-150 150z
+ M 38,19C 48.4934,19 57,27.5066 57,38C 57,48.4934 48.4934,57 38,57C 27.5066,57 19,48.4934 19,38C 19,27.5066 27.5066,19 38,19 Z M 33.25,33.25L 33.25,36.4167L 36.4166,36.4167L 36.4166,47.5L 33.25,47.5L 33.25,50.6667L 44.3333,50.6667L 44.3333,47.5L 41.1666,47.5L 41.1666,36.4167L 41.1666,33.25L 33.25,33.25 Z M 38.7917,25.3333C 37.48,25.3333 36.4167,26.3967 36.4167,27.7083C 36.4167,29.02 37.48,30.0833 38.7917,30.0833C 40.1033,30.0833 41.1667,29.02 41.1667,27.7083C 41.1667,26.3967 40.1033,25.3333 38.7917,25.3333 Z
+ M64 864h896V288h-396.224a64 64 0 0 1-57.242667-35.376L460.224 160H64v704z m-64 32V128a32 32 0 0 1 32-32h448a32 32 0 0 1 28.624 17.690667L563.776 224H992a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H32a32 32 0 0 1-32-32z
+ M448 64l128 128h448v768H0V64z
+ M832 960l192-512H192L0 960zM128 384L0 960V128h288l128 128h416v128z
+ M958.656 320H960v639.936A64 64 0 0 1 896.128 1024H191.936A63.872 63.872 0 0 1 128 959.936V64.064A64 64 0 0 1 191.936 0H640v320.96h319.616L958.656 320zM320 544c0 17.152 14.464 32 32.192 32h383.552A32.384 32.384 0 0 0 768 544c0-17.152-14.464-32-32.256-32H352.192A32.448 32.448 0 0 0 320 544z m0 128c0 17.152 14.464 32 32.192 32h383.552a32.384 32.384 0 0 0 32.256-32c0-17.152-14.464-32-32.256-32H352.192a32.448 32.448 0 0 0-32.192 32z m0 128c0 17.152 14.464 32 32.192 32h383.552a32.384 32.384 0 0 0 32.256-32c0-17.152-14.464-32-32.256-32H352.192a32.448 32.448 0 0 0-32.192 32z
+ M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23zM553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM568 753c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42z m0-220c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7v42z
+ M599.22969 424.769286 599.22969 657.383158 424.769286 831.844585 424.769286 424.769286 192.155415 192.155415 831.844585 192.155415Z
+ M71.111111 1024V0h661.333333L952.888889 219.420444V1024H71.111111z m808.305778-731.420444l-220.444445-219.448889H144.583111V950.897778h734.833778V292.579556zM438.528 512h-220.444444V219.420444h220.444444V512z m-73.500444-219.420444H291.555556v146.289777h73.472v-146.289777z m0 512h73.500444v73.130666h-220.444444v-73.130666H291.555556v-146.289778H218.083556V585.102222h146.944v219.448889z m293.944888-365.710223h73.472V512H512v-73.130667h73.472v-146.289777H512V219.420444h146.972444v219.448889z m73.472 438.840889H512V585.130667h220.444444v292.579555z m-73.472-219.420444h-73.500444v146.289778h73.500444v-146.289778z
+
+ M1024 1024H0V0h1024v1024z m-64-64V320H320V256h640V64H64v896h192V64h64v896z
+ M81.92 81.92v860.16h860.16V81.92H81.92z m802.304 57.856V322.56H139.776V139.776h744.448z m-744.448 240.64H322.56v503.808H139.776V380.416z m240.128 503.808V380.416h504.32v503.808H379.904z
+
+ M1024 896v128H0V704h128v192h768V704h128v192zM576 554.688L810.688 320 896 405.312l-384 384-384-384L213.312 320 448 554.688V0h128v554.688z
+ M432 0h160c26.6 0 48 21.4 48 48v336h175.4c35.6 0 53.4 43 28.2 68.2L539.4 756.6c-15 15-39.6 15-54.6 0L180.2 452.2c-25.2-25.2-7.4-68.2 28.2-68.2H384V48c0-26.6 21.4-48 48-48z m592 752v224c0 26.6-21.4 48-48 48H48c-26.6 0-48-21.4-48-48V752c0-26.6 21.4-48 48-48h293.4l98 98c40.2 40.2 105 40.2 145.2 0l98-98H976c26.6 0 48 21.4 48 48z m-248 176c0-22-18-40-40-40s-40 18-40 40 18 40 40 40 40-18 40-40z m128 0c0-22-18-40-40-40s-40 18-40 40 18 40 40 40 40-18 40-40z
+ M592 768h-160c-26.6 0-48-21.4-48-48V384h-175.4c-35.6 0-53.4-43-28.2-68.2L484.6 11.4c15-15 39.6-15 54.6 0l304.4 304.4c25.2 25.2 7.4 68.2-28.2 68.2H640v336c0 26.6-21.4 48-48 48z m432-16v224c0 26.6-21.4 48-48 48H48c-26.6 0-48-21.4-48-48V752c0-26.6 21.4-48 48-48h272v16c0 61.8 50.2 112 112 112h160c61.8 0 112-50.2 112-112v-16h272c26.6 0 48 21.4 48 48z m-248 176c0-22-18-40-40-40s-40 18-40 40 18 40 40 40 40-18 40-40z m128 0c0-22-18-40-40-40s-40 18-40 40 18 40 40 40 40-18 40-40z
+ M961.3 319.6L512 577.3 62.7 319.6 512 62l449.3 257.6zM512 628.4L185.4 441.6 62.7 512 512 769.6 961.3 512l-122.7-70.4L512 628.4zM512 820.8L185.4 634 62.7 704.3 512 962l449.3-257.7L838.6 634 512 820.8z
+ M295.328 472l143.184 276.032S671.184 186.992 1038.096 0c-8.944 133.568-44.8 249.328 17.904 391.792C894.912 427.408 563.792 828.112 456.4 1024 304.272 837.008 125.296 694.544 0 650.016z
+ M89.6 806.4h844.8V217.6H89.6v588.8zM0 128h1024v768H0V128z m242.816 577.536L192 654.72l154.304-154.368L192 346.048l50.816-50.816L448 500.352 242.816 705.536z m584.32 13.248H512V640h315.072v78.72z
+ M508.928 556.125091l92.904727 148.759273h124.462546l-79.639273-79.173819 49.245091-49.524363 164.584727 163.700363-164.631273 163.002182-49.152-49.617454 79.36-78.568728h-162.955636l-95.650909-153.227636 41.472-65.349818z m186.973091-394.705455l164.584727 163.700364-164.631273 163.002182-49.152-49.617455L726.109091 359.936H529.687273l-135.540364 223.976727H139.636364v-69.818182h215.133091l135.586909-223.976727h235.938909l-79.639273-79.173818 49.245091-49.524364z
+
+ M795.968 471.04A291.584 291.584 0 0 0 512 256a293.376 293.376 0 0 0-283.968 215.04H0v144h228.032A292.864 292.864 0 0 0 512 832a291.136 291.136 0 0 0 283.968-216.96H1024V471.04h-228.032M512 688A145.856 145.856 0 0 1 366.016 544 144.576 144.576 0 0 1 512 400c80 0 145.984 63.104 145.984 144A145.856 145.856 0 0 1 512 688
+ M0 586.459429l403.968 118.784 497.517714-409.892572-385.536 441.490286-1.609143 250.587428 154.916572-204.580571 278.601143 83.456L1170.285714 36.571429z
+ M24.356571 512A488.155429 488.155429 0 0 1 512 24.356571 488.155429 488.155429 0 0 1 999.643429 512 488.155429 488.155429 0 0 1 512 999.643429 488.155429 488.155429 0 0 1 24.356571 512z m446.976-325.046857v326.656L242.614857 619.227429l51.126857 110.665142 299.52-138.24V186.953143H471.332571z
+ M714.624 253.648h-404.8l-57.808 57.328h520.48z m-491.568 85.984v200.624h578.336V339.632z m404.8 143.296h-28.88v-28.64H425.472v28.64h-28.912v-57.312h231.328v57.312z m-404.8 295.12h578.336V559.36H223.056z m173.504-132.704h231.328v57.328h-28.912v-28.656H425.472v28.656h-28.912v-57.328z
+ M868.736 144.96a144.64 144.64 0 1 0-289.408 0c0 56.064 32.64 107.008 83.456 130.624-4.928 95.552-76.608 128-201.088 174.592-52.48 19.712-110.336 41.6-159.744 74.432V276.16A144.448 144.448 0 0 0 241.664 0.192a144.64 144.64 0 0 0-144.64 144.768c0 58.24 34.688 108.288 84.352 131.2v461.184a144.32 144.32 0 0 0-84.416 131.2 144.704 144.704 0 1 0 289.472 0 144.32 144.32 0 0 0-83.52-130.688c4.992-95.488 76.672-127.936 201.152-174.592 122.368-45.952 273.792-103.168 279.744-286.784a144.64 144.64 0 0 0 84.928-131.52zM241.664 61.44a83.456 83.456 0 1 1 0 166.912 83.456 83.456 0 0 1 0-166.912z m0 890.56a83.52 83.52 0 1 1 0-167.04 83.52 83.52 0 0 1 0 167.04zM724.032 228.416a83.52 83.52 0 1 1 0-167.04 83.52 83.52 0 0 1 0 167.04z
+ M896 128h-64V64c0-35.2-28.8-64-64-64s-64 28.8-64 64v64h-64c-35.2 0-64 28.8-64 64s28.8 64 64 64h64v64c0 35.2 28.8 64 64 64s64-28.8 64-64V256h64c35.2 0 64-28.8 64-64s-28.8-64-64-64z m-203.52 307.2C672.64 480.64 628.48 512 576 512H448c-46.72 0-90.24 12.8-128 35.2V372.48C394.24 345.6 448 275.2 448 192c0-106.24-85.76-192-192-192S64 85.76 64 192c0 83.2 53.76 153.6 128 180.48v279.68c-74.24 25.6-128 96.64-128 179.84 0 106.24 85.76 192 192 192s192-85.76 192-192c0-66.56-33.92-124.8-84.48-159.36 22.4-19.84 51.84-32.64 84.48-32.64h128c121.6 0 223.36-85.12 248.96-199.04-18.56 4.48-37.12 7.04-56.96 7.04-26.24 0-51.2-5.12-75.52-12.8zM256 128c35.2 0 64 28.8 64 64s-28.8 64-64 64-64-28.8-64-64 28.8-64 64-64z m0 768c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64z
+ M901.802667 479.232v-1.024c0-133.461333-111.616-241.664-249.514667-241.664-105.813333 0-195.925333 63.829333-232.448 153.941333-27.989333-20.138667-62.464-32.426667-100.010667-32.426666-75.776 0-139.605333 49.152-159.744 116.053333-51.882667 36.522667-86.016 96.938667-86.016 165.205333 0 111.616 90.453333 201.728 201.728 201.728h503.466667c111.616 0 201.728-90.453333 201.728-201.728 0-65.194667-31.061333-123.221333-79.189333-160.085333z
+ M363.789474 512h67.368421v107.789474h107.789473v67.368421h-107.789473v107.789473h-67.368421v-107.789473h-107.789474v-67.368421h107.789474v-107.789474z m297.539368-64A106.671158 106.671158 0 0 1 768 554.671158C768 613.578105 719.548632 660.210526 660.210526 660.210526h-107.789473v-53.894737h-107.789474v-107.789473h-94.31579v107.789473h-94.315789c4.311579-21.194105 22.231579-46.807579 43.560421-50.755368l-0.889263-11.560421a74.671158 74.671158 0 0 1 71.248842-74.590316 128.053895 128.053895 0 0 1 238.605474-7.437473 106.172632 106.172632 0 0 1 52.816842-13.972211z
+ M177.311335 156.116617c-22.478967 4.729721-32.774451 17.336854-36.251645 36.893258-10.080589 56.697303-33.399691 257.604032-13.234419 277.769304l445.342858 445.341834c23.177885 23.177885 60.757782 23.178909 83.935668 0l246.019183-246.019183c23.177885-23.177885 23.177885-60.757782 0-83.935668l-445.341834-445.341834C437.419398 120.463606 231.004211 144.82034 177.311335 156.116617zM331.22375 344.221786c-26.195615 26.195615-68.667939 26.195615-94.863555 0-26.195615-26.195615-26.195615-68.666916 0-94.863555s68.667939-26.195615 94.862531 0C357.418342 275.55487 357.419366 318.02617 331.22375 344.221786z
+ M682.666667 536.576h-143.701334v-142.336h-142.336V283.306667H238.933333a44.032 44.032 0 0 0-40.96 40.96v170.666666a55.978667 55.978667 0 0 0 14.336 34.133334l320.512 320.512a40.96 40.96 0 0 0 57.685334 0l173.738666-173.738667a40.96 40.96 0 0 0 0-57.685333z m-341.333334-108.544a40.96 40.96 0 1 1 0-57.685333 40.96 40.96 0 0 1 0 57.685333zM649.216 284.330667V141.994667h-68.608v142.336h-142.336v68.266666h142.336v142.336h68.608v-142.336h142.336v-68.266666h-142.336z
\ No newline at end of file
diff --git a/SourceGit/Resources/Styles/Border.xaml b/src/Resources/Styles/Border.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/Border.xaml
rename to src/Resources/Styles/Border.xaml
diff --git a/SourceGit/Resources/Styles/Button.xaml b/src/Resources/Styles/Button.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/Button.xaml
rename to src/Resources/Styles/Button.xaml
diff --git a/SourceGit/Resources/Styles/CheckBox.xaml b/src/Resources/Styles/CheckBox.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/CheckBox.xaml
rename to src/Resources/Styles/CheckBox.xaml
diff --git a/SourceGit/Resources/Styles/ComboBox.xaml b/src/Resources/Styles/ComboBox.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/ComboBox.xaml
rename to src/Resources/Styles/ComboBox.xaml
diff --git a/SourceGit/Resources/Styles/ContextMenu.xaml b/src/Resources/Styles/ContextMenu.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/ContextMenu.xaml
rename to src/Resources/Styles/ContextMenu.xaml
diff --git a/SourceGit/Resources/Styles/DataGrid.xaml b/src/Resources/Styles/DataGrid.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/DataGrid.xaml
rename to src/Resources/Styles/DataGrid.xaml
diff --git a/SourceGit/Resources/Styles/HyperLink.xaml b/src/Resources/Styles/HyperLink.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/HyperLink.xaml
rename to src/Resources/Styles/HyperLink.xaml
diff --git a/SourceGit/Resources/Styles/Label.xaml b/src/Resources/Styles/Label.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/Label.xaml
rename to src/Resources/Styles/Label.xaml
diff --git a/SourceGit/Resources/Styles/ListView.xaml b/src/Resources/Styles/ListView.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/ListView.xaml
rename to src/Resources/Styles/ListView.xaml
diff --git a/SourceGit/Resources/Styles/Path.xaml b/src/Resources/Styles/Path.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/Path.xaml
rename to src/Resources/Styles/Path.xaml
diff --git a/SourceGit/Resources/Styles/RadioButton.xaml b/src/Resources/Styles/RadioButton.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/RadioButton.xaml
rename to src/Resources/Styles/RadioButton.xaml
diff --git a/SourceGit/Resources/Styles/ScrollBar.xaml b/src/Resources/Styles/ScrollBar.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/ScrollBar.xaml
rename to src/Resources/Styles/ScrollBar.xaml
diff --git a/SourceGit/Resources/Styles/ScrollViewer.xaml b/src/Resources/Styles/ScrollViewer.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/ScrollViewer.xaml
rename to src/Resources/Styles/ScrollViewer.xaml
diff --git a/SourceGit/Resources/Styles/TabControl.xaml b/src/Resources/Styles/TabControl.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/TabControl.xaml
rename to src/Resources/Styles/TabControl.xaml
diff --git a/SourceGit/Resources/Styles/TextBox.xaml b/src/Resources/Styles/TextBox.xaml
similarity index 98%
rename from SourceGit/Resources/Styles/TextBox.xaml
rename to src/Resources/Styles/TextBox.xaml
index 48a96a72..ebd1cc08 100644
--- a/SourceGit/Resources/Styles/TextBox.xaml
+++ b/src/Resources/Styles/TextBox.xaml
@@ -1,126 +1,126 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SourceGit/Resources/Styles/ToggleButton.xaml b/src/Resources/Styles/ToggleButton.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/ToggleButton.xaml
rename to src/Resources/Styles/ToggleButton.xaml
diff --git a/SourceGit/Resources/Styles/Tooltip.xaml b/src/Resources/Styles/Tooltip.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/Tooltip.xaml
rename to src/Resources/Styles/Tooltip.xaml
diff --git a/SourceGit/Resources/Styles/TreeView.xaml b/src/Resources/Styles/TreeView.xaml
similarity index 100%
rename from SourceGit/Resources/Styles/TreeView.xaml
rename to src/Resources/Styles/TreeView.xaml
diff --git a/SourceGit/Resources/Themes/Dark.xaml b/src/Resources/Themes/Dark.xaml
similarity index 100%
rename from SourceGit/Resources/Themes/Dark.xaml
rename to src/Resources/Themes/Dark.xaml
diff --git a/SourceGit/Resources/Themes/Light.xaml b/src/Resources/Themes/Light.xaml
similarity index 100%
rename from SourceGit/Resources/Themes/Light.xaml
rename to src/Resources/Themes/Light.xaml
diff --git a/SourceGit/SourceGit.csproj b/src/SourceGit.csproj
similarity index 71%
rename from SourceGit/SourceGit.csproj
rename to src/SourceGit.csproj
index 896fbe8e..3e0ee49c 100644
--- a/SourceGit/SourceGit.csproj
+++ b/src/SourceGit.csproj
@@ -1,22 +1,27 @@
-
-
- net46
- WinExe
- true
- true
- App.ico
- sourcegit
- OpenSource GIT client for Windows
- Copyright © sourcegit 2020. All rights reserved.
- App.manifest
- 1.5
- MIT
-
-
- AnyCPU
- true
-
-
-
-
+
+
+ net46
+ WinExe
+ true
+ true
+ App.ico
+ sourcegit
+ OpenSource GIT client for Windows
+ Copyright © sourcegit 2020. All rights reserved.
+ App.manifest
+ 1.5
+ MIT
+ SourceGit.App
+ https://gitee.com/sourcegit/SourceGit.git
+ https://gitee.com/sourcegit/SourceGit.git
+ Public
+ true
+
+
+ AnyCPU
+ true
+
+
+
+
\ No newline at end of file
diff --git a/SourceGit/UI/About.xaml b/src/UI/About.xaml
similarity index 97%
rename from SourceGit/UI/About.xaml
rename to src/UI/About.xaml
index 823d9b13..baa70866 100644
--- a/SourceGit/UI/About.xaml
+++ b/src/UI/About.xaml
@@ -1,82 +1,82 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SourceGit/UI/About.xaml.cs b/src/UI/About.xaml.cs
similarity index 100%
rename from SourceGit/UI/About.xaml.cs
rename to src/UI/About.xaml.cs
diff --git a/SourceGit/UI/AddSubmodule.xaml b/src/UI/AddSubmodule.xaml
similarity index 100%
rename from SourceGit/UI/AddSubmodule.xaml
rename to src/UI/AddSubmodule.xaml
diff --git a/SourceGit/UI/AddSubmodule.xaml.cs b/src/UI/AddSubmodule.xaml.cs
similarity index 100%
rename from SourceGit/UI/AddSubmodule.xaml.cs
rename to src/UI/AddSubmodule.xaml.cs
diff --git a/SourceGit/UI/Apply.xaml b/src/UI/Apply.xaml
similarity index 99%
rename from SourceGit/UI/Apply.xaml
rename to src/UI/Apply.xaml
index 5b15371a..c34903d0 100644
--- a/SourceGit/UI/Apply.xaml
+++ b/src/UI/Apply.xaml
@@ -24,8 +24,8 @@
-
-
+
+
@@ -68,9 +68,9 @@
-
diff --git a/SourceGit/UI/Apply.xaml.cs b/src/UI/Apply.xaml.cs
similarity index 100%
rename from SourceGit/UI/Apply.xaml.cs
rename to src/UI/Apply.xaml.cs
diff --git a/SourceGit/UI/Blame.xaml b/src/UI/Blame.xaml
similarity index 99%
rename from SourceGit/UI/Blame.xaml
rename to src/UI/Blame.xaml
index f61c6e9f..c2186c63 100644
--- a/SourceGit/UI/Blame.xaml
+++ b/src/UI/Blame.xaml
@@ -4,7 +4,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d"
+ mc:Ignorable="d"
Title="Blame"
Height="600" Width="800">
@@ -152,11 +152,11 @@
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
FontFamily="Consolas">
-
-
-
-
-
+
+
+
+
+
diff --git a/SourceGit/UI/Blame.xaml.cs b/src/UI/Blame.xaml.cs
similarity index 100%
rename from SourceGit/UI/Blame.xaml.cs
rename to src/UI/Blame.xaml.cs
diff --git a/SourceGit/UI/CherryPick.xaml b/src/UI/CherryPick.xaml
similarity index 100%
rename from SourceGit/UI/CherryPick.xaml
rename to src/UI/CherryPick.xaml
diff --git a/SourceGit/UI/CherryPick.xaml.cs b/src/UI/CherryPick.xaml.cs
similarity index 100%
rename from SourceGit/UI/CherryPick.xaml.cs
rename to src/UI/CherryPick.xaml.cs
diff --git a/SourceGit/UI/Clone.xaml b/src/UI/Clone.xaml
similarity index 100%
rename from SourceGit/UI/Clone.xaml
rename to src/UI/Clone.xaml
diff --git a/SourceGit/UI/Clone.xaml.cs b/src/UI/Clone.xaml.cs
similarity index 100%
rename from SourceGit/UI/Clone.xaml.cs
rename to src/UI/Clone.xaml.cs
diff --git a/SourceGit/UI/CommitViewer.xaml b/src/UI/CommitViewer.xaml
similarity index 100%
rename from SourceGit/UI/CommitViewer.xaml
rename to src/UI/CommitViewer.xaml
diff --git a/SourceGit/UI/CommitViewer.xaml.cs b/src/UI/CommitViewer.xaml.cs
similarity index 97%
rename from SourceGit/UI/CommitViewer.xaml.cs
rename to src/UI/CommitViewer.xaml.cs
index 7d0ecaf9..fb1cf2cd 100644
--- a/SourceGit/UI/CommitViewer.xaml.cs
+++ b/src/UI/CommitViewer.xaml.cs
@@ -1,504 +1,504 @@
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Navigation;
-
-namespace SourceGit.UI {
-
- ///
- /// Commit detail viewer
- ///
- public partial class CommitViewer : UserControl {
- private Git.Repository repo = null;
- private Git.Commit commit = null;
- private List cachedChanges = new List();
- private List displayChanges = new List();
- private string changeFilter = null;
-
- ///
- /// Node for file tree.
- ///
- public class Node {
- public string FilePath { get; set; } = "";
- public string OriginalPath { get; set; } = "";
- public string Name { get; set; } = "";
- public bool IsFile { get; set; } = false;
- public bool IsNodeExpanded { get; set; } = true;
- public Git.Change Change { get; set; } = null;
- public Git.Commit.Object CommitObject { get; set; } = null;
- public List Children { get; set; } = new List();
- }
-
- ///
- /// Constructor.
- ///
- public CommitViewer() {
- InitializeComponent();
- }
-
- #region DATA
- public void SetData(Git.Repository opened, Git.Commit selected) {
- repo = opened;
- commit = selected;
-
- SetBaseInfo(commit);
-
- Task.Run(() => {
- cachedChanges.Clear();
- cachedChanges = commit.GetChanges(repo);
-
- Dispatcher.Invoke(() => {
- changeList1.ItemsSource = null;
- changeList1.ItemsSource = cachedChanges;
- });
-
- LayoutChanges();
- SetRevisionFiles(commit.GetFiles(repo));
- });
- }
-
- private void Cleanup(object sender, RoutedEventArgs e) {
- fileTree.ItemsSource = null;
- changeList1.ItemsSource = null;
- changeList2.ItemsSource = null;
- displayChanges.Clear();
- cachedChanges.Clear();
- diffViewer.Reset();
- }
- #endregion
-
- #region BASE_INFO
- private void SetBaseInfo(Git.Commit commit) {
- var parentIds = new List();
- foreach (var p in commit.Parents) parentIds.Add(p.Substring(0, 8));
-
- SHA.Text = commit.SHA;
- refs.ItemsSource = commit.Decorators;
- parents.ItemsSource = parentIds;
- author.Text = $"{commit.Author.Name} <{commit.Author.Email}>";
- authorTime.Text = commit.Author.Time;
- committer.Text = $"{commit.Committer.Name} <{commit.Committer.Email}>";
- committerTime.Text = commit.Committer.Time;
- subject.Text = commit.Subject;
- message.Text = commit.Message.Trim();
-
- if (commit.Decorators.Count == 0) lblRefs.Visibility = Visibility.Collapsed;
- else lblRefs.Visibility = Visibility.Visible;
-
- if (commit.Committer.Email == commit.Author.Email && commit.Committer.Time == commit.Author.Time) {
- committerRow.Height = new GridLength(0);
- } else {
- committerRow.Height = GridLength.Auto;
- }
- }
-
- private void NavigateParent(object sender, RequestNavigateEventArgs e) {
- repo.OnNavigateCommit?.Invoke(e.Uri.OriginalString);
- e.Handled = true;
- }
-
- #endregion
-
- #region CHANGES
- private void LayoutChanges() {
- displayChanges.Clear();
-
- if (string.IsNullOrEmpty(changeFilter)) {
- displayChanges.AddRange(cachedChanges);
- } else {
- foreach (var c in cachedChanges) {
- if (c.Path.ToUpper().Contains(changeFilter)) displayChanges.Add(c);
- }
- }
-
- List changeTreeSource = new List();
- Dictionary folders = new Dictionary();
- bool isDefaultExpanded = displayChanges.Count < 50;
-
- foreach (var c in displayChanges) {
- var sepIdx = c.Path.IndexOf('/');
- if (sepIdx == -1) {
- Node node = new Node();
- node.FilePath = c.Path;
- node.IsFile = true;
- node.Name = c.Path;
- node.Change = c;
- node.IsNodeExpanded = isDefaultExpanded;
- if (c.OriginalPath != null) node.OriginalPath = c.OriginalPath;
- changeTreeSource.Add(node);
- } else {
- Node lastFolder = null;
- var start = 0;
-
- while (sepIdx != -1) {
- var folder = c.Path.Substring(0, sepIdx);
- if (folders.ContainsKey(folder)) {
- lastFolder = folders[folder];
- } else if (lastFolder == null) {
- lastFolder = new Node();
- lastFolder.FilePath = folder;
- lastFolder.Name = folder.Substring(start);
- lastFolder.IsNodeExpanded = isDefaultExpanded;
- changeTreeSource.Add(lastFolder);
- folders.Add(folder, lastFolder);
- } else {
- var folderNode = new Node();
- folderNode.FilePath = folder;
- folderNode.Name = folder.Substring(start);
- folderNode.IsNodeExpanded = isDefaultExpanded;
- folders.Add(folder, folderNode);
- lastFolder.Children.Add(folderNode);
- lastFolder = folderNode;
- }
-
- start = sepIdx + 1;
- sepIdx = c.Path.IndexOf('/', start);
- }
-
- Node node = new Node();
- node.FilePath = c.Path;
- node.Name = c.Path.Substring(start);
- node.IsFile = true;
- node.Change = c;
- if (c.OriginalPath != null) node.OriginalPath = c.OriginalPath;
- lastFolder.Children.Add(node);
- }
- }
-
- folders.Clear();
- SortTreeNodes(changeTreeSource);
-
- Dispatcher.Invoke(() => {
- changeList2.ItemsSource = null;
- changeList2.ItemsSource = displayChanges;
- changeTree.ItemsSource = changeTreeSource;
- diffViewer.Reset();
- });
- }
-
- private void SearchChangeFileTextChanged(object sender, TextChangedEventArgs e) {
- changeFilter = txtChangeFilter.Text.ToUpper();
- Task.Run(() => LayoutChanges());
- }
-
- private void ChangeTreeItemSelected(object sender, RoutedPropertyChangedEventArgs