From a1d5054af45a2c10e9193bc8aa9c003b6fa164a6 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Wed, 14 Mar 2012 03:26:42 +0000 Subject: [PATCH] setup controller: refactor some order logic. Fixes #627 #630 --- SparkleLib/Git/SparkleFetcherGit.cs | 8 ++++-- SparkleLib/SparkleHelpers.cs | 12 -------- SparkleShare/Linux/SparkleSetup.cs | 17 ++++++++---- SparkleShare/SparkleControllerBase.cs | 38 ++++++++++---------------- SparkleShare/SparkleSetupController.cs | 16 ++++++----- SparkleShare/Windows/SparkleSetup.cs | 29 +++++++------------- 6 files changed, 51 insertions(+), 69 deletions(-) diff --git a/SparkleLib/Git/SparkleFetcherGit.cs b/SparkleLib/Git/SparkleFetcherGit.cs index 15376cbc..e85becdc 100755 --- a/SparkleLib/Git/SparkleFetcherGit.cs +++ b/SparkleLib/Git/SparkleFetcherGit.cs @@ -20,6 +20,7 @@ using System.IO; using System.Diagnostics; using System.Text.RegularExpressions; using System.Threading; + using SparkleLib; namespace SparkleLib.Git { @@ -33,10 +34,13 @@ namespace SparkleLib.Git { public SparkleFetcher (string server, string remote_path, string target_folder) : base (server, remote_path, target_folder) { + //server = server.Trim ("/".ToCharArray ()); + remote_path = remote_path.Trim ("/".ToCharArray ()); + if (server.EndsWith ("/")) server = server.Substring (0, server.Length - 1); - // FIXME: Adding these lines makes the fetcher fail + //FIXME: Adding these lines makes the fetcher fail // if (remote_path.EndsWith ("/")) // remote_path = remote_path.Substring (0, remote_path.Length - 1); @@ -97,7 +101,7 @@ namespace SparkleLib.Git { this.git = new SparkleGit (SparkleConfig.DefaultConfig.TmpPath, "clone " + "--progress " + // Redirects progress stats to standarderror - "\"" + RemoteUrl + "\" " + "\"" + SparkleHelpers.NormalizeSeparatorsToOS(TargetFolder) + "\""); + "\"" + RemoteUrl + "\" \"" + TargetFolder + "\""); this.git.StartInfo.RedirectStandardError = true; this.git.Start (); diff --git a/SparkleLib/SparkleHelpers.cs b/SparkleLib/SparkleHelpers.cs index 3012a4f4..6de09a2e 100755 --- a/SparkleLib/SparkleHelpers.cs +++ b/SparkleLib/SparkleHelpers.cs @@ -109,18 +109,6 @@ namespace SparkleLib { || platform == PlatformID.Win32Windows); } } - - public static string NormalizeSeparatorsToOS(string path) - { - if (IsWindows) - { - return path.Replace('\\', '/'); - } - else - { - return path; - } - } } } diff --git a/SparkleShare/Linux/SparkleSetup.cs b/SparkleShare/Linux/SparkleSetup.cs index cc3f354f..3b7bc5d5 100755 --- a/SparkleShare/Linux/SparkleSetup.cs +++ b/SparkleShare/Linux/SparkleSetup.cs @@ -179,10 +179,18 @@ namespace SparkleShare { tree.AppendColumn (service_column); - Entry address_entry = new Entry (); - Entry path_entry = new Entry (); - Label address_example = new Label ("1") { Xalign = 0, UseMarkup = true }; - Label path_example = new Label ("2") { Xalign = 0, UseMarkup = true }; + Entry address_entry = new Entry () { + Text = Controller.PreviousAddress, + Sensitive = (SelectedPlugin.Address == null) + }; + + Entry path_entry = new Entry () { + Text = Controller.PreviousPath, + Sensitive = (SelectedPlugin.Path == null) + }; + + Label address_example = new Label ("1") { Xalign = 0, UseMarkup = true }; + Label path_example = new Label ("2") { Xalign = 0, UseMarkup = true }; // Select the first plugin by default @@ -199,7 +207,6 @@ namespace SparkleShare { address_entry.Sensitive = (state == FieldState.Enabled); address_example.Markup = "" + example_text + ""; - }); }; diff --git a/SparkleShare/SparkleControllerBase.cs b/SparkleShare/SparkleControllerBase.cs index 6f1bac60..4072a78c 100644 --- a/SparkleShare/SparkleControllerBase.cs +++ b/SparkleShare/SparkleControllerBase.cs @@ -941,44 +941,37 @@ namespace SparkleShare { } - public void FetchFolder (string server, string remote_folder, string announcements_url) + public void FetchFolder (string address, string remote_path, string announcements_url) { - server = server.Trim (); - remote_folder = remote_folder.Trim (); - if (announcements_url != null) announcements_url = announcements_url.Trim (); - string tmp_path = SparkleConfig.DefaultConfig.TmpPath; - if (!Directory.Exists (tmp_path)) { + + if (!Directory.Exists (tmp_path)) { Directory.CreateDirectory (tmp_path); File.SetAttributes (tmp_path, FileAttributes.Directory | FileAttributes.Hidden); } - - // Strip the '.git' from the name - string canonical_name = Path.GetFileNameWithoutExtension (remote_folder); + string canonical_name = Path.GetFileNameWithoutExtension (remote_path); string tmp_folder = Path.Combine (tmp_path, canonical_name); - string backend = Path.GetExtension (remote_folder); - + string backend = Path.GetExtension (remote_path); + if (!string.IsNullOrEmpty (backend)) { - backend = backend.Substring (1); - + backend = backend.Substring (1); char [] letters = backend.ToCharArray (); - letters [0] = char.ToUpper (letters [0]); - backend = new string (letters); + letters [0] = char.ToUpper (letters [0]); + backend = new string (letters); } else { backend = "Git"; } - try { this.fetcher = (SparkleFetcherBase) Activator.CreateInstance ( Type.GetType ("SparkleLib." + backend + ".SparkleFetcher, SparkleLib." + backend), - server, - remote_folder, + address, + remote_path, tmp_folder ); @@ -987,16 +980,15 @@ namespace SparkleShare { "Failed to load \"" + backend + "\" backend for \"" + canonical_name + "\""); if (FolderFetchError != null) - FolderFetchError (Path.Combine (server, remote_folder).Replace (@"\", "/")); + FolderFetchError (Path.Combine (address, remote_path).Replace (@"\", "/")); return; } - bool target_folder_exists = Directory.Exists ( Path.Combine (SparkleConfig.DefaultConfig.FoldersPath, canonical_name)); - // Add a numbered suffix to the nameif a folder with the same name + // Add a numbered suffix to the name if a folder with the same name // already exists. Example: "Folder (2)" int i = 1; while (target_folder_exists) { @@ -1051,11 +1043,10 @@ namespace SparkleShare { FolderFetchError (this.fetcher.RemoteUrl); this.fetcher.Dispose (); + this.fetcher = null; if (Directory.Exists (tmp_path)) Directory.Delete (tmp_path, true); - - this.fetcher = null; }; this.fetcher.ProgressChanged += delegate (double percentage) { @@ -1063,7 +1054,6 @@ namespace SparkleShare { FolderFetching (percentage); }; - this.fetcher.Start (); } diff --git a/SparkleShare/SparkleSetupController.cs b/SparkleShare/SparkleSetupController.cs index afdc56bb..f2246b15 100755 --- a/SparkleShare/SparkleSetupController.cs +++ b/SparkleShare/SparkleSetupController.cs @@ -162,8 +162,6 @@ namespace SparkleShare { if (ShowWindowEvent != null) ShowWindowEvent (); - - SelectedPluginChanged (SelectedPluginIndex); } return; @@ -271,6 +269,7 @@ namespace SparkleShare { } else if (SelectedPlugin.AddressExample != null) { if (ChangeAddressFieldEvent != null) ChangeAddressFieldEvent (this.saved_address, SelectedPlugin.AddressExample, FieldState.Enabled); + } else { if (ChangeAddressFieldEvent != null) ChangeAddressFieldEvent (this.saved_address, "", FieldState.Enabled); @@ -293,9 +292,6 @@ namespace SparkleShare { public void CheckAddPage (string address, string remote_path, int selected_plugin) { - if (SelectedPluginIndex != selected_plugin) - SelectedPluginChanged (selected_plugin); - address = address.Trim (); remote_path = remote_path.Trim (); @@ -304,8 +300,10 @@ namespace SparkleShare { this.saved_remote_path = remote_path; - bool fields_valid = address != null && address.Trim ().Length > 0 && - remote_path != null && remote_path.Trim ().Length > 0; + bool fields_valid = (address != null && + address.Trim ().Length > 0 && + remote_path != null && + remote_path.Trim ().Length > 0); if (UpdateAddProjectButtonEvent != null) UpdateAddProjectButtonEvent (fields_valid); @@ -314,6 +312,10 @@ namespace SparkleShare { public void AddPageCompleted (string address, string remote_path) { + address = address.Trim (); + remote_path = remote_path.Trim (); + remote_path = remote_path.TrimEnd ("/".ToCharArray ()); + SyncingFolder = Path.GetFileNameWithoutExtension (remote_path); PreviousAddress = address; PreviousPath = remote_path; diff --git a/SparkleShare/Windows/SparkleSetup.cs b/SparkleShare/Windows/SparkleSetup.cs index fa43abf1..38cbcafe 100644 --- a/SparkleShare/Windows/SparkleSetup.cs +++ b/SparkleShare/Windows/SparkleSetup.cs @@ -291,7 +291,8 @@ namespace SparkleShare { TextBox address_box = new TextBox () { Width = 200, - Text = Controller.PreviousAddress + Text = Controller.PreviousAddress, + IsEnabled = (Controller.SelectedPlugin.Address == null) }; TextBlock address_help_label = new TextBlock () { @@ -308,7 +309,8 @@ namespace SparkleShare { TextBox path_box = new TextBox () { Width = 200, - Text = Controller.PreviousPath + Text = Controller.PreviousPath, + IsEnabled = (Controller.SelectedPlugin.Path == null) }; TextBlock path_help_label = new TextBlock () { @@ -361,6 +363,7 @@ namespace SparkleShare { address_box.Focus (); address_box.Select (address_box.Text.Length, 0); + Controller.ChangeAddressFieldEvent += delegate (string text, string example_text, FieldState state) { @@ -394,21 +397,15 @@ namespace SparkleShare { list_view.KeyDown += delegate { Controller.SelectedPluginChanged (list_view.SelectedIndex); }; + + Controller.CheckAddPage (address_box.Text, path_box.Text, list_view.SelectedIndex); address_box.TextChanged += delegate { - Controller.CheckAddPage ( - address_box.Text, - path_box.Text, - list_view.SelectedIndex - ); + Controller.CheckAddPage (address_box.Text, path_box.Text, list_view.SelectedIndex); }; path_box.TextChanged += delegate { - Controller.CheckAddPage ( - address_box.Text, - path_box.Text, - list_view.SelectedIndex - ); + Controller.CheckAddPage (address_box.Text, path_box.Text, list_view.SelectedIndex); }; cancel_button.Click += delegate { @@ -418,13 +415,7 @@ namespace SparkleShare { add_button.Click += delegate { Controller.AddPageCompleted (address_box.Text, path_box.Text); }; - - Controller.CheckAddPage ( - address_box.Text, - path_box.Text, - list_view.SelectedIndex - ); - + break; }