diff --git a/src/Helpers/TreeViewHelper.cs b/src/Helpers/TreeViewHelper.cs index d1b74bf2..605fc4f4 100644 --- a/src/Helpers/TreeViewHelper.cs +++ b/src/Helpers/TreeViewHelper.cs @@ -122,6 +122,25 @@ namespace SourceGit.Helpers { if (tree != null) tree.RemoveHandler(MultiSelectionChangedEvent, handler); } + /// + /// Find ScrollViewer of a tree view + /// + /// + /// + public static ScrollViewer GetScrollViewer(FrameworkElement owner) { + if (owner == null) return null; + if (owner is ScrollViewer) return owner as ScrollViewer; + + int n = VisualTreeHelper.GetChildrenCount(owner); + for (int i = 0; i < n; i++) { + var child = VisualTreeHelper.GetChild(owner, i) as FrameworkElement; + var deep = GetScrollViewer(child); + if (deep != null) return deep; + } + + return null; + } + /// /// Select all items in tree. /// diff --git a/src/SourceGit.csproj b/src/SourceGit.csproj index 6b4dca0f..d846c6f3 100644 --- a/src/SourceGit.csproj +++ b/src/SourceGit.csproj @@ -3,7 +3,6 @@ net46 WinExe true - true App.ico sourcegit OpenSource GIT client for Windows diff --git a/src/UI/AddSubmodule.xaml.cs b/src/UI/AddSubmodule.xaml.cs index 7a9c9471..8307faae 100644 --- a/src/UI/AddSubmodule.xaml.cs +++ b/src/UI/AddSubmodule.xaml.cs @@ -38,17 +38,6 @@ namespace SourceGit.UI { } #region EVENTS - private void SelectFolder(object sender, RoutedEventArgs e) { - var dialog = new System.Windows.Forms.FolderBrowserDialog(); - dialog.Description = "Select Folder To Clone Repository"; - dialog.SelectedPath = repo.Path; - dialog.ShowNewFolderButton = true; - - if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { - txtPath.Text = dialog.SelectedPath; - } - } - private async void Sure(object sender, RoutedEventArgs e) { txtRepoUrl.GetBindingExpression(TextBox.TextProperty).UpdateSource(); if (Validation.GetHasError(txtRepoUrl)) return; diff --git a/src/UI/Clone.xaml.cs b/src/UI/Clone.xaml.cs index 278f13cb..6beccdf9 100644 --- a/src/UI/Clone.xaml.cs +++ b/src/UI/Clone.xaml.cs @@ -1,4 +1,3 @@ -using System; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; @@ -46,14 +45,8 @@ namespace SourceGit.UI { /// /// private void SelectParentFolder(object sender, RoutedEventArgs e) { - var dialog = new System.Windows.Forms.FolderBrowserDialog(); - dialog.Description = "Git Repository URL"; - dialog.RootFolder = Environment.SpecialFolder.MyComputer; - dialog.ShowNewFolderButton = true; - - if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { - txtParentFolder.Text = dialog.SelectedPath; - } + var dialog = new FolderDailog("Select folder to store repository", null); + dialog.Open(path => txtParentFolder.Text = path); } /// diff --git a/src/UI/CommitViewer.xaml.cs b/src/UI/CommitViewer.xaml.cs index f63cc373..f84f64b3 100644 --- a/src/UI/CommitViewer.xaml.cs +++ b/src/UI/CommitViewer.xaml.cs @@ -297,14 +297,11 @@ namespace SourceGit.UI { MenuItem saveAs = new MenuItem(); saveAs.Header = "Save As ..."; saveAs.Click += (obj, ev) => { - var dialog = new System.Windows.Forms.FolderBrowserDialog(); - dialog.Description = path; - dialog.ShowNewFolderButton = true; - - if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { - var savePath = Path.Combine(dialog.SelectedPath, Path.GetFileName(path)); + var dialog = new FolderDailog("Save To ...", null); + dialog.Open(saveTo => { + var savePath = Path.Combine(saveTo, Path.GetFileName(path)); commit.SaveFileTo(repo, path, savePath); - } + }); }; menu.Items.Add(saveAs); } @@ -453,22 +450,8 @@ namespace SourceGit.UI { } } - private ScrollViewer GetScrollViewer(FrameworkElement owner) { - if (owner == null) return null; - if (owner is ScrollViewer) return owner as ScrollViewer; - - int n = VisualTreeHelper.GetChildrenCount(owner); - for (int i = 0; i < n; i++) { - var child = VisualTreeHelper.GetChild(owner, i) as FrameworkElement; - var deep = GetScrollViewer(child); - if (deep != null) return deep; - } - - return null; - } - private void TreeMouseWheel(object sender, MouseWheelEventArgs e) { - var scroll = GetScrollViewer(sender as TreeView); + var scroll = Helpers.TreeViewHelper.GetScrollViewer(sender as TreeView); if (scroll == null) return; if (e.Delta > 0) { @@ -520,14 +503,11 @@ namespace SourceGit.UI { saveAs.Header = "Save As ..."; saveAs.IsEnabled = node.CommitObject == null || node.CommitObject.Kind == Git.Commit.Object.Type.Blob; saveAs.Click += (obj, ev) => { - var dialog = new System.Windows.Forms.FolderBrowserDialog(); - dialog.Description = node.FilePath; - dialog.ShowNewFolderButton = true; - - if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { - var path = Path.Combine(dialog.SelectedPath, node.Name); + var dialog = new FolderDailog("Save To ...", null); + dialog.Open(saveTo => { + var path = Path.Combine(saveTo, node.Name); commit.SaveFileTo(repo, node.FilePath, path); - } + }); }; menu.Items.Add(saveAs); } diff --git a/src/UI/Dashboard.xaml.cs b/src/UI/Dashboard.xaml.cs index 9b60dc35..f4d6a048 100644 --- a/src/UI/Dashboard.xaml.cs +++ b/src/UI/Dashboard.xaml.cs @@ -1054,22 +1054,8 @@ namespace SourceGit.UI { if (item != null) item.IsSelected = false; } - private ScrollViewer GetScrollViewer(FrameworkElement owner) { - if (owner == null) return null; - if (owner is ScrollViewer) return owner as ScrollViewer; - - int n = VisualTreeHelper.GetChildrenCount(owner); - for (int i = 0; i < n; i++) { - var child = VisualTreeHelper.GetChild(owner, i) as FrameworkElement; - var deep = GetScrollViewer(child); - if (deep != null) return deep; - } - - return null; - } - private void TreeMouseWheel(object sender, MouseWheelEventArgs e) { - var scroll = GetScrollViewer(sender as TreeView); + var scroll = Helpers.TreeViewHelper.GetScrollViewer(sender as TreeView); if (scroll == null) return; if (e.Delta > 0) { diff --git a/src/UI/DiffViewer.xaml.cs b/src/UI/DiffViewer.xaml.cs index 6f0dc81c..672001df 100644 --- a/src/UI/DiffViewer.xaml.cs +++ b/src/UI/DiffViewer.xaml.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Globalization; -using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; diff --git a/src/UI/FolderDailog.xaml b/src/UI/FolderDailog.xaml new file mode 100644 index 00000000..744c719d --- /dev/null +++ b/src/UI/FolderDailog.xaml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +