void LoadFile(string filePath) { XmlSerializer serializer = new XmlSerializer(typeof(MainModel)); StreamReader reader = new StreamReader(filePath); mainModel = (MainModel)serializer.Deserialize(reader); reader.Close(); Data.TreeData.Clear(); foreach (var parentSet in mainModel.RepoSetModels) { RepoSet repoSet = new RepoSet() { Name = parentSet.Name }; foreach (var repoPath in parentSet.RepoPaths) { AddRepo(repoSet, repoPath); } Data.TreeData.Add(repoSet); } Properties.Settings.Default.LastFileUsed = filePath; Properties.Settings.Default.Save(); }
private void MainTree_Drop(object sender, DragEventArgs e) { //find the target folder - the top node of the tree TreeViewItem hitTarget; // = dea.OriginalSource; TreeViewItem treeViewItem; if (e.OriginalSource is System.Windows.Documents.Run) { hitTarget = VisualUpwardSearch(((System.Windows.Documents.Run)e.OriginalSource).Parent as DependencyObject); } else { hitTarget = VisualUpwardSearch(e.OriginalSource as DependencyObject); } if (hitTarget == null) { //you must have dropped it in the main "grid" of the tree //lets ASSume the "selected" folder, or maybe the top folder? hitTarget = MainTree.SelectedItem as TreeViewItem; } if (hitTarget != null) { if (hitTarget.DataContext is RepoData) { hitTarget = VisualUpwardSearch(VisualTreeHelper.GetParent(hitTarget as DependencyObject)); } if (hitTarget.DataContext is RepoSet) { RepoSet repoSet = (RepoSet)hitTarget.DataContext; string[] names = (string[])e.Data.GetData(DataFormats.FileDrop); foreach (var name in names) { if (Directory.Exists(name)) { AddRepo(repoSet, name); } else { Debug.WriteLine($"File name {name} NOT handled"); } } } e.Handled = true; Debug.WriteLine("TEST"); return; } else { Debug.WriteLine("NOOOOOOOOOOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); return; } }
private void AddRepo(RepoSet repoSet, string path) { try { using (var repo = new Repository(path)) { string remoteSource = "<none>"; if (repo.Network.Remotes.Any()) { remoteSource = repo.Network.Remotes.First().Url.ToString(); } string repoName; if (path.EndsWith(".git", StringComparison.OrdinalIgnoreCase)) { repoName = Path.GetFileName(Path.GetDirectoryName(path)); } else { repoName = Path.GetFileName(path.TrimEnd('\\')); } var newRepo = new RepoData() { RepoName = repoName, CurrentBranch = repo.Head.FriendlyName, LocalPath = path, RepoOrigin = remoteSource, AheadBy = repo.Head.TrackingDetails.AheadBy, BehindBy = repo.Head.TrackingDetails.BehindBy }; repoSet.Members.Add(newRepo); } } catch (RepositoryNotFoundException exc) { Debug.WriteLine($"Path not a GIT repo: {path}"); } catch (Exception exc) { Debug.WriteLine(exc); } }