From d0a4d126fcec7992c612c88509e602f6aeb9ceba Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Thu, 3 Nov 2011 17:15:59 -0600 Subject: [PATCH 01/47] attempting to prevent the same announcement from being processed twice --- SparkleLib/SparkleListenerBase.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index 09702fe6..2167c735 100755 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -16,8 +16,10 @@ using System; +using System.Collections; using System.Collections.Generic; using System.Timers; +using System.Linq; namespace SparkleLib { @@ -112,6 +114,7 @@ namespace SparkleLib { protected List channels = new List (); + protected Hashtable last_announce = new Hashtable (); protected List queue_up = new List (); protected List queue_down = new List (); protected bool is_connecting; @@ -197,8 +200,21 @@ namespace SparkleLib { public void OnAnnouncement (SparkleAnnouncement announcement) { - SparkleHelpers.DebugInfo ("Listener", "Got message from " + announcement.FolderIdentifier + " on " + this.server); + SparkleHelpers.DebugInfo ("Listener", "Got message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); + if (this.last_announce.ContainsKey (announcement.FolderIdentifier) ){ + SparkleHelpers.DebugInfo ("Listener", "Received previous message from " + announcement.FolderIdentifier + " on " + this.server); + if (this.last_announce[announcement.FolderIdentifier].Equals(announcement.Message)) { + SparkleHelpers.DebugInfo ("Listener", "Ignoring already processed announcment " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); + return; + } + } + + SparkleHelpers.DebugInfo ("Listener", "Processing message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); + if (this.last_announce.ContainsKey (announcement.FolderIdentifier) ) + this.last_announce.Remove (announcement.FolderIdentifier); + + this.last_announce.Add (announcement.FolderIdentifier, announcement.Message); this.queue_down.Add (announcement); if (Announcement != null) From 04d13ef26b46ea0ddee04d795088d22ed628c7f3 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Thu, 3 Nov 2011 17:16:41 -0600 Subject: [PATCH 02/47] reducing avatars lookups for failed addresses --- SparkleShare/SparkleControllerBase.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/SparkleShare/SparkleControllerBase.cs b/SparkleShare/SparkleControllerBase.cs index d72d236c..e4166465 100755 --- a/SparkleShare/SparkleControllerBase.cs +++ b/SparkleShare/SparkleControllerBase.cs @@ -81,6 +81,7 @@ namespace SparkleShare { public abstract string PluginsPath { get; } private SparkleFetcherBase fetcher; + private List failed_avatars = new List (); // Short alias for the translations @@ -933,6 +934,8 @@ namespace SparkleShare { old_avatars.Add (email); } + } else if (this.failed_avatars.Contains (email)) { + break; } else { WebClient client = new WebClient (); string url = "http://gravatar.com/avatar/" + GetMD5 (email) + @@ -954,8 +957,11 @@ namespace SparkleShare { SparkleHelpers.DebugInfo ("Controller", "Failed fetching gravatar for " + email); // Stop downloading further avatars if we have no internet access - if (e.Status == WebExceptionStatus.Timeout) + if (e.Status == WebExceptionStatus.Timeout){ break; + } else { + this.failed_avatars.Add (email); + } } } } From 3d4a8b5f9dcf38cc35e30d3cb6ce8043fb208cf1 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sat, 5 Nov 2011 15:09:09 -0600 Subject: [PATCH 03/47] making announcements more robust and intelligent --- SparkleLib/SparkleListenerBase.cs | 109 +++++++++++++++++++----------- SparkleLib/SparkleListenerTcp.cs | 17 +++-- SparkleLib/SparkleRepoBase.cs | 37 +++++----- 3 files changed, 101 insertions(+), 62 deletions(-) diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index 30613133..d0fc7afb 100755 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -82,7 +82,7 @@ namespace SparkleLib { listeners.Add (new SparkleListenerTcp (announce_uri, folder_identifier)); break; } - + SparkleHelpers.DebugInfo ("ListenerFactory", "Issued new listener for " + announce_uri); return (SparkleListenerBase) listeners [listeners.Count - 1]; } @@ -113,10 +113,14 @@ namespace SparkleLib { public abstract bool IsConnected { get; } - protected List channels = new List (); - protected Hashtable last_announce = new Hashtable (); - protected List queue_up = new List (); - protected List queue_down = new List (); + protected List channels = new List (); + + protected Dictionary> recent_announcements = new Dictionary> (); + protected int max_recent_announcements = 10; + + protected Dictionary queue_up = new Dictionary (); + protected Dictionary queue_down = new Dictionary (); + protected bool is_connecting; protected Uri server; protected Timer reconnect_timer = new Timer { Interval = 60 * 1000, Enabled = true }; @@ -136,30 +140,22 @@ namespace SparkleLib { public void AnnounceBase (SparkleAnnouncement announcement) { - if (IsConnected) { - SparkleHelpers.DebugInfo ("Listener", - "Announcing to " + announcement.FolderIdentifier + " on " + this.server); + if (!this.IsRecentAnnounement (announcement)) { + if (IsConnected) { + SparkleHelpers.DebugInfo ("Listener", + "Announcing message " + announcement.Message + " to " + announcement.FolderIdentifier + " on " + this.server); - Announce (announcement); - - } else { - SparkleHelpers.DebugInfo ("Listener", "Not connected to " + this.server + ". Queuing message"); - this.queue_up.Add (announcement); - } - } - - - public string NextQueueDownMessage (string folder_identifier) - { - foreach (SparkleAnnouncement announcement in this.queue_down.GetRange (0, this.queue_down.Count)) { - if (announcement.FolderIdentifier.Equals (folder_identifier)) { - string message = announcement.Message; - this.queue_down.Remove (announcement); - return message; + Announce (announcement); + this.AddRecentAnnouncement (announcement); + } else { + SparkleHelpers.DebugInfo ("Listener", "Not connected to " + this.server + ". Queuing message"); + this.queue_up [announcement.FolderIdentifier] = announcement; } + } else { + SparkleHelpers.DebugInfo ("Listener", + "Already received or sent message " + announcement.Message + " to " + announcement.FolderIdentifier + " on " + this.server); } - return null; } @@ -180,10 +176,11 @@ namespace SparkleLib { if (this.queue_up.Count > 0) { SparkleHelpers.DebugInfo ("Listener", "Delivering " + this.queue_up.Count + " queued messages..."); - foreach (SparkleAnnouncement announcement in this.queue_up.GetRange(0, this.queue_up.Count)) { + foreach (KeyValuePair item in this.queue_up) { + SparkleAnnouncement announcement = item.Value; AnnounceBase (announcement); - this.queue_up.Remove (announcement); } + this.queue_down.Clear (); } } @@ -201,26 +198,62 @@ namespace SparkleLib { { SparkleHelpers.DebugInfo ("Listener", "Got message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); - if (this.last_announce.ContainsKey (announcement.FolderIdentifier) ){ - SparkleHelpers.DebugInfo ("Listener", "Received previous message from " + announcement.FolderIdentifier + " on " + this.server); - if (this.last_announce[announcement.FolderIdentifier].Equals(announcement.Message)) { - SparkleHelpers.DebugInfo ("Listener", "Ignoring already processed announcment " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); - return; - } + if (this.IsRecentAnnounement(announcement) ){ + SparkleHelpers.DebugInfo ("Listener", "Ignoring previously received message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); + return; } SparkleHelpers.DebugInfo ("Listener", "Processing message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); - if (this.last_announce.ContainsKey (announcement.FolderIdentifier) ) - this.last_announce.Remove (announcement.FolderIdentifier); - - this.last_announce.Add (announcement.FolderIdentifier, announcement.Message); - this.queue_down.Add (announcement); + + this.AddRecentAnnouncement (announcement); + this.queue_down [announcement.FolderIdentifier] = announcement; if (Announcement != null) Announcement (announcement); } + private bool IsRecentAnnounement (SparkleAnnouncement announcement) + { + if (!this.HasRecentAnnouncements (announcement.FolderIdentifier)) { + return false; + } else { + foreach (SparkleAnnouncement recent_announcement in this.GetRecentAnnouncements (announcement.FolderIdentifier)) { + if (recent_announcement.Message.Equals (announcement.Message)) + return true; + } + return false; + } + } + + + private List GetRecentAnnouncements (string folder_identifier) + { + if (!this.recent_announcements.ContainsKey (folder_identifier)) { + this.recent_announcements [folder_identifier] = new List (); + } + return (List) this.recent_announcements [folder_identifier]; + } + + + private void AddRecentAnnouncement (SparkleAnnouncement announcement) + { + List recent_announcements = this.GetRecentAnnouncements (announcement.FolderIdentifier); + + if (!this.IsRecentAnnounement (announcement)) + recent_announcements.Add (announcement); + + if (recent_announcements.Count > this.max_recent_announcements) + recent_announcements.RemoveRange (0, (recent_announcements.Count - this.max_recent_announcements)); + } + + + private bool HasRecentAnnouncements (string folder_identifier) + { + return this.recent_announcements.ContainsKey (folder_identifier); + } + + public virtual void Dispose () { this.reconnect_timer.Dispose (); diff --git a/SparkleLib/SparkleListenerTcp.cs b/SparkleLib/SparkleListenerTcp.cs index c844bf02..f93b4188 100755 --- a/SparkleLib/SparkleListenerTcp.cs +++ b/SparkleLib/SparkleListenerTcp.cs @@ -29,7 +29,7 @@ namespace SparkleLib { public class SparkleListenerTcp : SparkleListenerBase { private Thread thread; - + // these are shared private readonly Object mutex = new Object(); private Socket socket; @@ -94,9 +94,9 @@ namespace SparkleLib { if (bytes_read > 0) { string received = Encoding.UTF8.GetString (bytes); string folder_identifier = received.Substring (0, received.IndexOf ("!")); - string message = received.Substring (received.IndexOf ("!") + 1); - - OnAnnouncement (new SparkleAnnouncement (folder_identifier, message)); + string message = this.CleanMessage (received.Substring (received.IndexOf ("!") + 1)); + if (!message.Equals("connected...")) + OnAnnouncement (new SparkleAnnouncement (folder_identifier, message)); } else { SparkleHelpers.DebugInfo ("ListenerTcp", "Error on socket"); @@ -109,9 +109,9 @@ namespace SparkleLib { } } } - + SparkleHelpers.DebugInfo ("ListenerTcp", "Disconnected from " + Server.Host); - + } catch (SocketException e) { SparkleHelpers.DebugInfo ("ListenerTcp", "Could not connect to " + Server + ": " + e.Message); @@ -173,5 +173,10 @@ namespace SparkleLib { this.thread.Join (); base.Dispose (); } + + private string CleanMessage(string message) + { + return message.Trim ().Replace ("\n", "").Replace ("\0", ""); + } } } diff --git a/SparkleLib/SparkleRepoBase.cs b/SparkleLib/SparkleRepoBase.cs index d32548f0..69532e16 100755 --- a/SparkleLib/SparkleRepoBase.cs +++ b/SparkleLib/SparkleRepoBase.cs @@ -110,12 +110,6 @@ namespace SparkleLib { if (CheckForRemoteChanges ()) SyncDownBase (); - - string message; - while ((message = this.listener.NextQueueDownMessage (identifier)) != null) { - if (!message.Equals (CurrentRevision)) - SyncDownBase (); - } } // In the unlikely case that we haven't synced up our @@ -265,19 +259,18 @@ namespace SparkleLib { if (announcement.FolderIdentifier.Equals (identifier) && !announcement.Message.Equals (CurrentRevision)) { - if ((Status != SyncStatus.SyncUp) && - (Status != SyncStatus.SyncDown) && - !this.is_buffering) { - - string message; - while ((message = this.listener.NextQueueDownMessage (identifier)) != null) { - if (!message.Equals (CurrentRevision)) - SyncDownBase (); - } + while (this.IsSyncing ()) { + //nothing just wait } + SparkleHelpers.DebugInfo ("Listener", "Syncing due to Announcement"); + if (!announcement.Message.Equals (CurrentRevision)) + SyncDownBase (); + } else { + if (announcement.FolderIdentifier.Equals (identifier)) + SparkleHelpers.DebugInfo ("Listener", "Not syncing message is for current revision"); } }; - + // Start listening if (!this.listener.IsConnected && !this.listener.IsConnecting) { this.listener.Connect (); @@ -285,13 +278,21 @@ namespace SparkleLib { } + private bool IsSyncing () + { + if (Status == SyncStatus.SyncUp || Status == SyncStatus.SyncDown || this.is_buffering) + return true; + return false; + } + + private void CheckForChanges () { lock (this.change_lock) { if (this.has_changed) { if (this.sizebuffer.Count >= 4) this.sizebuffer.RemoveAt (0); - + DirectoryInfo dir_info = new DirectoryInfo (LocalPath); this.sizebuffer.Add (CalculateFolderSize (dir_info)); @@ -303,7 +304,7 @@ namespace SparkleLib { SparkleHelpers.DebugInfo ("Local", "[" + Name + "] Changes have settled."); this.is_buffering = false; this.has_changed = false; - + DisableWatching (); while (AnyDifferences) SyncUpBase (); From 667e63d1a437642a82f1d2358eb861c1443430bf Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 6 Nov 2011 14:29:18 +0000 Subject: [PATCH 04/47] Fox documentation. Closes #405 --- README | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README b/README index 258cd010..0c383626 100644 --- a/README +++ b/README @@ -88,7 +88,7 @@ Just double-click the SparkleShare bundle. # Build on Mac -Install Xcode, the Mono Framework, MonoDevelop and the MonoMac plugin (you find it in Add-in Manager). +Install Xcode, the Mono Framework, MonoDevelop and the MonoMac plugin (you can find it in MonoDevelop => Add-in Manager). You may need to adjust some environment variables to let the build environment tools find mono: @@ -108,7 +108,7 @@ Start the first part of the build: Now that you have compiled the libraries, open 'SparkleShare/Mac/SparkleShare.sln' in MonoDevelop and start the build. -To create the SparkleShare.app, select Project from the menu bar +To create the SparkleShare.app, make sure the project is focused and select Project from the menu bar and click "Create Mac Installer..." Save the SparkleShare.app somewhere. Paste the contents of the following file in SparkleShare.app/Contents/MonoBundle/config: From 9855c1b1548c3cfddd548527f96fe2b470965247 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 6 Nov 2011 14:37:56 +0000 Subject: [PATCH 05/47] Fix build. Closes #403 --- SparkleLib/SparkleFetcherBase.cs | 2 +- SparkleLib/SparkleListenerBase.cs | 2 +- SparkleLib/SparkleRepoBase.cs | 2 +- SparkleShare/Mac/SparkleShare.csproj | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) mode change 100755 => 100644 SparkleShare/Mac/SparkleShare.csproj diff --git a/SparkleLib/SparkleFetcherBase.cs b/SparkleLib/SparkleFetcherBase.cs index f60a6a0d..bc2adf2d 100755 --- a/SparkleLib/SparkleFetcherBase.cs +++ b/SparkleLib/SparkleFetcherBase.cs @@ -202,7 +202,7 @@ namespace SparkleLib { new_ssh_config += line + Environment.NewLine; } - if (string.IsNullOrWhiteSpace (new_ssh_config)) { + if (string.IsNullOrEmpty (new_ssh_config.Trim ())) { File.Delete (ssh_config_file_path); } else { diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index aeb4a004..39c39c1f 100755 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -177,7 +177,7 @@ namespace SparkleLib { if (this.queue_up.Count > 0) { SparkleHelpers.DebugInfo ("Listener", "Delivering " + this.queue_up.Count + " queued messages..."); - foreach (SparkleAnnouncement announcement in this.queue_up.GetRange(0, this.queue_up.Count)) { + foreach (SparkleAnnouncement announcement in this.queue_up.GetRange (0, this.queue_up.Count)) { AnnounceBase (announcement); this.queue_up.Remove (announcement); } diff --git a/SparkleLib/SparkleRepoBase.cs b/SparkleLib/SparkleRepoBase.cs index d32548f0..9168db04 100755 --- a/SparkleLib/SparkleRepoBase.cs +++ b/SparkleLib/SparkleRepoBase.cs @@ -112,7 +112,7 @@ namespace SparkleLib { SyncDownBase (); string message; - while ((message = this.listener.NextQueueDownMessage (identifier)) != null) { + while ((message = this.listener.NextQueueDownMessage (Identifier)) != null) { if (!message.Equals (CurrentRevision)) SyncDownBase (); } diff --git a/SparkleShare/Mac/SparkleShare.csproj b/SparkleShare/Mac/SparkleShare.csproj old mode 100755 new mode 100644 index d9c0e8f1..abcd9ac1 --- a/SparkleShare/Mac/SparkleShare.csproj +++ b/SparkleShare/Mac/SparkleShare.csproj @@ -6,7 +6,7 @@ 10.0.0 2.0 {CF5BC8DB-A633-4FCC-8A3E-E3AC9B59FABC} - {1C533B1C-72DD-4CB1-9F6B-BF11D93BCFBE};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {948B3504-5B70-4649-8FE4-BDE1FB46EC69};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Exe SparkleShare SparkleShare @@ -114,7 +114,7 @@ - + From 5ab8da079494a7eeed8d12b7edf3de03e94b5737 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Mon, 7 Nov 2011 12:08:38 +0000 Subject: [PATCH 06/47] Enable status items manually in build. Fixes #346 --- SparkleShare/Mac/SparkleShare.csproj | 4 ++-- SparkleShare/Mac/SparkleStatusIcon.cs | 21 +++++++++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) mode change 100644 => 100755 SparkleShare/Mac/SparkleShare.csproj diff --git a/SparkleShare/Mac/SparkleShare.csproj b/SparkleShare/Mac/SparkleShare.csproj old mode 100644 new mode 100755 index abcd9ac1..d9c0e8f1 --- a/SparkleShare/Mac/SparkleShare.csproj +++ b/SparkleShare/Mac/SparkleShare.csproj @@ -6,7 +6,7 @@ 10.0.0 2.0 {CF5BC8DB-A633-4FCC-8A3E-E3AC9B59FABC} - {948B3504-5B70-4649-8FE4-BDE1FB46EC69};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {1C533B1C-72DD-4CB1-9F6B-BF11D93BCFBE};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Exe SparkleShare SparkleShare @@ -114,7 +114,7 @@ - + diff --git a/SparkleShare/Mac/SparkleStatusIcon.cs b/SparkleShare/Mac/SparkleStatusIcon.cs index 50238afe..69949bd2 100755 --- a/SparkleShare/Mac/SparkleStatusIcon.cs +++ b/SparkleShare/Mac/SparkleStatusIcon.cs @@ -147,9 +147,11 @@ namespace SparkleShare { StatusItem.AlternateImage.Size = new SizeF (16, 16); Menu = new NSMenu (); + Menu.AutoEnablesItems = false; StateMenuItem = new NSMenuItem () { - Title = StateText + Title = StateText, + Enabled = false }; Menu.AddItem (StateMenuItem); @@ -165,6 +167,7 @@ namespace SparkleShare { FolderMenuItem.Image = SparkleShareImage; FolderMenuItem.Image.Size = new SizeF (16, 16); + FolderMenuItem.Enabled = true; Menu.AddItem (FolderMenuItem); @@ -189,7 +192,8 @@ namespace SparkleShare { FolderMenuItems [i] = item; FolderMenuItems [i].Activated += Tasks [i]; - + FolderMenuItem.Enabled = true; + i++; }; @@ -207,7 +211,8 @@ namespace SparkleShare { Menu.AddItem (NSMenuItem.SeparatorItem); SyncMenuItem = new NSMenuItem () { - Title = "Add Hosted Project…" + Title = "Add Hosted Project…", + Enabled = true }; if (!Program.Controller.FirstRun) { @@ -233,7 +238,8 @@ namespace SparkleShare { Menu.AddItem (NSMenuItem.SeparatorItem); RecentEventsMenuItem = new NSMenuItem () { - Title = "Open Recent Events" + Title = "Open Recent Events", + Enabled = true }; if (Controller.Folders.Length > 0) { @@ -252,7 +258,9 @@ namespace SparkleShare { Menu.AddItem (RecentEventsMenuItem); - NotificationsMenuItem = new NSMenuItem (); + NotificationsMenuItem = new NSMenuItem () { + Enabled = true + }; if (Program.Controller.NotificationsEnabled) NotificationsMenuItem.Title = "Turn Notifications Off"; @@ -274,7 +282,8 @@ namespace SparkleShare { Menu.AddItem (NSMenuItem.SeparatorItem); AboutMenuItem = new NSMenuItem () { - Title = "About SparkleShare" + Title = "About SparkleShare", + Enabled = true }; AboutMenuItem.Activated += delegate { From 448e39924d979d681997268c8919dc0072368c29 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Mon, 7 Nov 2011 08:39:33 -0700 Subject: [PATCH 07/47] bit more sync/listener logic --- SparkleLib/SparkleListenerBase.cs | 4 ++-- SparkleLib/SparkleListenerTcp.cs | 11 +++++++---- SparkleLib/SparkleRepoBase.cs | 33 +++++++++++++++++-------------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index d0fc7afb..5fc878fc 100755 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -153,7 +153,7 @@ namespace SparkleLib { } } else { SparkleHelpers.DebugInfo ("Listener", - "Already received or sent message " + announcement.Message + " to " + announcement.FolderIdentifier + " on " + this.server); + "Already processed message " + announcement.Message + " to " + announcement.FolderIdentifier + " on " + this.server); } } @@ -199,7 +199,7 @@ namespace SparkleLib { SparkleHelpers.DebugInfo ("Listener", "Got message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); if (this.IsRecentAnnounement(announcement) ){ - SparkleHelpers.DebugInfo ("Listener", "Ignoring previously received message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); + SparkleHelpers.DebugInfo ("Listener", "Ignoring previously processed message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server); return; } diff --git a/SparkleLib/SparkleListenerTcp.cs b/SparkleLib/SparkleListenerTcp.cs index f93b4188..6f464c13 100755 --- a/SparkleLib/SparkleListenerTcp.cs +++ b/SparkleLib/SparkleListenerTcp.cs @@ -93,11 +93,14 @@ namespace SparkleLib { if (bytes_read > 0) { string received = Encoding.UTF8.GetString (bytes); - string folder_identifier = received.Substring (0, received.IndexOf ("!")); - string message = this.CleanMessage (received.Substring (received.IndexOf ("!") + 1)); - if (!message.Equals("connected...")) + string line = received.Substring (0, received.IndexOf ("\n")); + if (!line.Contains ("!")) + continue; + string folder_identifier = line.Substring (0, line.IndexOf ("!")); + string message = this.CleanMessage (line.Substring (line.IndexOf ("!") + 1)); + if (!folder_identifier.Equals("debug") && + !String.IsNullOrEmpty(message)) OnAnnouncement (new SparkleAnnouncement (folder_identifier, message)); - } else { SparkleHelpers.DebugInfo ("ListenerTcp", "Error on socket"); diff --git a/SparkleLib/SparkleRepoBase.cs b/SparkleLib/SparkleRepoBase.cs index 69532e16..ef28e979 100755 --- a/SparkleLib/SparkleRepoBase.cs +++ b/SparkleLib/SparkleRepoBase.cs @@ -260,7 +260,7 @@ namespace SparkleLib { !announcement.Message.Equals (CurrentRevision)) { while (this.IsSyncing ()) { - //nothing just wait + System.Threading.Thread.Sleep (100); } SparkleHelpers.DebugInfo ("Listener", "Syncing due to Announcement"); if (!announcement.Message.Equals (CurrentRevision)) @@ -448,6 +448,7 @@ namespace SparkleLib { if (SyncStatusChanged != null) SyncStatusChanged (SyncStatus.SyncDown); + string pre_sync_revision = CurrentRevision; if (SyncDown ()) { SparkleHelpers.DebugInfo ("SyncDown", "[" + Name + "] Done"); this.server_online = true; @@ -455,24 +456,26 @@ namespace SparkleLib { if (SyncStatusChanged != null) SyncStatusChanged (SyncStatus.Idle); - List change_sets = GetChangeSets (1); - if (change_sets != null && change_sets.Count > 0) { - SparkleChangeSet change_set = change_sets [0]; + if (pre_sync_revision != CurrentRevision) { + List change_sets = GetChangeSets (1); + if (change_sets != null && change_sets.Count > 0) { + SparkleChangeSet change_set = change_sets [0]; - bool note_added = false; - foreach (string added in change_set.Added) { - if (added.Contains (".notes")) { - if (NewNote != null) - NewNote (change_set.User.Name, change_set.User.Email); + bool note_added = false; + foreach (string added in change_set.Added) { + if (added.Contains (".notes")) { + if (NewNote != null) + NewNote (change_set.User.Name, change_set.User.Email); - note_added = true; - break; + note_added = true; + break; + } } - } - if (!note_added) { - if (NewChangeSet != null) - NewChangeSet (change_set); + if (!note_added) { + if (NewChangeSet != null) + NewChangeSet (change_set); + } } } From a9de3007d43a49571db06cd0b523d4d8847025f4 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Mon, 7 Nov 2011 08:41:43 -0700 Subject: [PATCH 08/47] add server-side annoucements via post-update hook --- data/git-hooks/post-update | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 data/git-hooks/post-update diff --git a/data/git-hooks/post-update b/data/git-hooks/post-update new file mode 100755 index 00000000..45078f3c --- /dev/null +++ b/data/git-hooks/post-update @@ -0,0 +1,29 @@ +#!/bin/sh + +# for use with gitolite +# +# http://sitaramc.github.com/gitolite/hooks.html +# copy this file to +# .gitolite/hooks/common/post-update +# run gl-setup again + +# for use with standard ssh/http(s)/git repos +# +# simply move this file to +# .git/hooks/post-update in the remote repository + +# make sure to chmod -x in all cases after the file has been copied + +#To supress all output +exec > /dev/null 2>&1 + +# for information on running your own server +# https://github.com/hbons/fanout.node.js +SERVER="204.62.14.135" +PORT="1986" +CHANNEL=$(git rev-list --reverse HEAD | head -n 1) +MESSAGE=$(git rev-list HEAD | head -n 1) +DATA="announce ${CHANNEL} ${MESSAGE}" +echo "${DATA}\n" | socat - TCP-CONNECT:${SERVER}:${PORT} & + +exit 0 From b29c60bf141764d16a997ff258f4c2c24d3abbc7 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Mon, 7 Nov 2011 18:03:19 +0000 Subject: [PATCH 09/47] config: use File.WriteAllText to write initial config --- SparkleLib/SparkleConfig.cs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/SparkleLib/SparkleConfig.cs b/SparkleLib/SparkleConfig.cs index 547e025e..7a90d89b 100755 --- a/SparkleLib/SparkleConfig.cs +++ b/SparkleLib/SparkleConfig.cs @@ -111,17 +111,13 @@ namespace SparkleLib { if (string.IsNullOrEmpty (user_name)) user_name = "Unknown"; - TextWriter writer = new StreamWriter (FullPath); - string n = Environment.NewLine; - - writer.Write ("" + n + - "" + n + - " " + n + - " " + user_name + "" + n + - " Unknown" + n + - " " + n + - ""); - writer.Close (); + File.WriteAllText (FullPath, + "" + n + + "" + n + + " " + n + + " " + user_name + "" + n + + " Unknown" + n + " " + n + + ""); SparkleHelpers.DebugInfo ("Config", "Created \"" + FullPath + "\""); } From 05dd261789d5f85fdaf4bd5bbfc2d7cbba8ad5ee Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Mon, 7 Nov 2011 18:35:00 +0000 Subject: [PATCH 10/47] config: Fix error --- SparkleLib/SparkleConfig.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/SparkleLib/SparkleConfig.cs b/SparkleLib/SparkleConfig.cs index 7a90d89b..03a80846 100755 --- a/SparkleLib/SparkleConfig.cs +++ b/SparkleLib/SparkleConfig.cs @@ -111,6 +111,7 @@ namespace SparkleLib { if (string.IsNullOrEmpty (user_name)) user_name = "Unknown"; + string n = Environment.NewLine; File.WriteAllText (FullPath, "" + n + "" + n + From 677d41ea9219f38cd21a76b61375a27a75b42930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Jerna=C5=9B?= Date: Tue, 8 Nov 2011 00:40:13 +0100 Subject: [PATCH 11/47] Fix string not being translated properly in the UI Adding a newline inside the gettext call confuses gettext and the string ends up not being translated in the UI, although the string is extracted to the PO file properly. Adding the new lien after the getetxt call fixes it. --- SparkleShare/SparkleSetup.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SparkleShare/SparkleSetup.cs b/SparkleShare/SparkleSetup.cs index 6633088a..24a3a4c2 100755 --- a/SparkleShare/SparkleSetup.cs +++ b/SparkleShare/SparkleSetup.cs @@ -333,7 +333,7 @@ namespace SparkleShare { case PageType.Syncing: { Header = String.Format (_("Adding project ‘{0}’…"), Controller.SyncingFolder); - Description = _("This may take a while." + Environment.NewLine) + + Description = _("This may take a while.") + Environment.NewLine + _("Are you sure it’s not coffee o'clock?"); Button finish_button = new Button () { From 1e97dc887c4d058f92e9ec9aa791fdee851d09ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Jerna=C5=9B?= Date: Tue, 8 Nov 2011 01:22:48 +0100 Subject: [PATCH 12/47] Fix Polish translation a bit --- po/pl.po | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/po/pl.po b/po/pl.po index 2dc39c76..89281994 100755 --- a/po/pl.po +++ b/po/pl.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-30 15:50+0100\n" -"PO-Revision-Date: 2011-10-30 14:50+0000\n" +"PO-Revision-Date: 2011-11-08 00:21+0000\n" "Last-Translator: deejay1 \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,7 +26,8 @@ msgstr "Bitbucket" #: ../data/plugins/bitbucket.xml.in.h:3 msgid "Free code hosting for Git and Mercurial" msgstr "" -"Darmowe utrzymywanie kod dla projektów zarządzanych przez git oraz Mercurial" +"Darmowe utrzymywanie kodu dla projektów zarządzanych przez git oraz " +"Mercurial" #: ../data/plugins/github.xml.in.h:2 msgid "Free public Git repositories with collaborator management" @@ -47,8 +48,8 @@ msgstr "Gitorious" #: ../data/plugins/gitorious.xml.in.h:3 msgid "Open source infrastructure for hosting open source projects" msgstr "" -"Infrakstruktura o otwartym kodzie źródłowym dla projektów dla społeczności " -"otwartego kodu" +"Infrastruktura o otwartym kodzie źródłowym dla projektów o otwartym kodzie " +"źródłowym" #: ../data/plugins/gnome.xml.in.h:1 msgid "/project" @@ -141,7 +142,7 @@ msgstr "Niniejszy program dostarczany jest BEZ JAKIEJKOLWIEK GWARANCJI." #: ../SparkleShare/Program.cs:89 msgid "This is free software, and you are welcome to redistribute it " msgstr "" -"Niniejszy program jest wolnym oprogramowanie, można go rozprowadzać dalej " +"Niniejszy program jest wolnym oprogramowaniem, można go rozprowadzać dalej " "pod pewnymi warunkami." #: ../SparkleShare/Program.cs:90 @@ -153,7 +154,7 @@ msgstr "" #: ../SparkleShare/Program.cs:92 msgid "SparkleShare automatically syncs Git repositories in " msgstr "" -"Program SparkleShare automatycznie synchronizuje reozytoria Git znajdujące " +"Program SparkleShare automatycznie synchronizuje repozytoria Git znajdujące " "się" #: ../SparkleShare/Program.cs:93 @@ -289,7 +290,7 @@ msgstr "Dodaj" #: ../SparkleShare/SparkleSetup.cs:335 #, csharp-format msgid "Adding project ‘{0}’…" -msgstr "Dodawanie projektu „{0}…" +msgstr "Dodawanie projektu \"{0}\"…" #: ../SparkleShare/SparkleSetup.cs:336 msgid "This may take a while." From 9e1ed22c80eac49404a89724d57a77aec7644567 Mon Sep 17 00:00:00 2001 From: Claudio Rodrigo Pereyra Diaz Date: Thu, 10 Nov 2011 11:25:01 +0100 Subject: [PATCH 13/47] Update Spanish (Castilian) translation from Transifex --- po/es.po | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/po/es.po b/po/es.po index c3971a6c..553a662a 100755 --- a/po/es.po +++ b/po/es.po @@ -1,6 +1,7 @@ # This file is distributed under the same license as the SparkleShare package. # # Translators: +# Claudio Rodrigo Pereyra Diaz , 2011. # , 2011. # jamelrom , 2011. # , 2011. @@ -9,8 +10,8 @@ msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-30 15:50+0100\n" -"PO-Revision-Date: 2011-10-30 14:50+0000\n" -"Last-Translator: deejay1 \n" +"PO-Revision-Date: 2011-11-02 12:13+0000\n" +"Last-Translator: elsupergomez \n" "Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/sparkleshare/team/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -201,33 +202,33 @@ msgstr "" #: ../SparkleShare/SparkleControllerBase.cs:707 #, csharp-format msgid "added ‘{0}’" -msgstr "" +msgstr "añadido '{0}'" #: ../SparkleShare/SparkleControllerBase.cs:712 #, csharp-format msgid "moved ‘{0}’" -msgstr "" +msgstr "movido '{0}'" #: ../SparkleShare/SparkleControllerBase.cs:717 #, csharp-format msgid "edited ‘{0}’" -msgstr "" +msgstr "editado '{0}'" #: ../SparkleShare/SparkleControllerBase.cs:722 #, csharp-format msgid "deleted ‘{0}’" -msgstr "" +msgstr "eliminado '{0}'" #: ../SparkleShare/SparkleControllerBase.cs:731 #, csharp-format msgid "and {0} more" msgid_plural "and {0} more" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "y {0} más" +msgstr[1] "y {0} más" #: ../SparkleShare/SparkleControllerBase.cs:735 msgid "did something magical" -msgstr "" +msgstr "hizo algo mágico" #: ../SparkleShare/SparkleEventLog.cs:58 msgid "Recent Events" @@ -386,6 +387,8 @@ msgid "" "…or select ‘Add Hosted Project…’ from the status icon menu to add one" " by hand." msgstr "" +"... o seleccione \"Agregar proyecto alojado ... \" en el menú del " +"icono de estado para agregar uno manualmente." #. Opens the wizard to add a new remote folder #: ../SparkleShare/SparkleSetup.cs:551 From a5c43b8d59b0934752da691183d43742ac6acda7 Mon Sep 17 00:00:00 2001 From: Yann Hermans Date: Thu, 10 Nov 2011 11:27:17 +0100 Subject: [PATCH 14/47] Update French translation from Transifex --- po/fr.po | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/po/fr.po b/po/fr.po index 3f28ae5c..c4479fec 100755 --- a/po/fr.po +++ b/po/fr.po @@ -12,8 +12,8 @@ msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-30 15:50+0100\n" -"PO-Revision-Date: 2011-10-30 14:50+0000\n" -"Last-Translator: deejay1 \n" +"PO-Revision-Date: 2011-11-04 22:18+0000\n" +"Last-Translator: chezyann \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -194,31 +194,31 @@ msgstr "Vérification des mises à jour…" #: ../SparkleShare/SparkleControllerBase.cs:493 msgid "dddd, MMMM d, yyyy" -msgstr "" +msgstr "dddd d MMMM yyyy" #: ../SparkleShare/SparkleControllerBase.cs:499 msgid "dddd, MMMM d" -msgstr "" +msgstr "dddd d MMMM" #: ../SparkleShare/SparkleControllerBase.cs:707 #, csharp-format msgid "added ‘{0}’" -msgstr "" +msgstr "Ajouté: ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:712 #, csharp-format msgid "moved ‘{0}’" -msgstr "" +msgstr "Déplacé: ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:717 #, csharp-format msgid "edited ‘{0}’" -msgstr "" +msgstr "Modifié: ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:722 #, csharp-format msgid "deleted ‘{0}’" -msgstr "" +msgstr "Supprimé: ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:731 #, csharp-format @@ -229,7 +229,7 @@ msgstr[1] "" #: ../SparkleShare/SparkleControllerBase.cs:735 msgid "did something magical" -msgstr "" +msgstr "Attendez un miracle" #: ../SparkleShare/SparkleEventLog.cs:58 msgid "Recent Events" From baee0e24e07034f369ed93f606b192b0b0ef56a7 Mon Sep 17 00:00:00 2001 From: mmans Date: Thu, 10 Nov 2011 11:32:01 +0100 Subject: [PATCH 15/47] Update Dutch translation from Transifex --- po/nl.po | 62 +++++++++++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/po/nl.po b/po/nl.po index 944e845e..6aa7dd2d 100755 --- a/po/nl.po +++ b/po/nl.po @@ -2,9 +2,11 @@ # # Translators: # , 2011. +# , 2011. # , 2011. # Łukasz Jernaś , 2011. # , 2011. +# , 2011. # smeagiel , 2011. # , 2011. msgid "" @@ -12,8 +14,8 @@ msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-30 15:50+0100\n" -"PO-Revision-Date: 2011-10-30 14:50+0000\n" -"Last-Translator: deejay1 \n" +"PO-Revision-Date: 2011-11-06 22:01+0000\n" +"Last-Translator: mmans \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -34,7 +36,7 @@ msgstr "Gratis hosting voor Git en Mercurial" #: ../data/plugins/github.xml.in.h:2 msgid "Free public Git repositories with collaborator management" -msgstr "" +msgstr "Gratis publieke repositories met teambeheer." #: ../data/plugins/github.xml.in.h:3 msgid "Github" @@ -50,7 +52,7 @@ msgstr "Gitorious" #: ../data/plugins/gitorious.xml.in.h:3 msgid "Open source infrastructure for hosting open source projects" -msgstr "Opensource infratstructuur voor het hosten van opensource projecten." +msgstr "Opensource infrastructuur voor het hosten van opensource projecten." #: ../data/plugins/gnome.xml.in.h:1 msgid "/project" @@ -66,11 +68,11 @@ msgstr "Het GNOME Project" #: ../data/plugins/own-server.xml.in.h:1 msgid "/path/to/project" -msgstr "" +msgstr "/pad/naar/project" #: ../data/plugins/own-server.xml.in.h:2 msgid "Everything under my control" -msgstr "" +msgstr "Alles onder mijn controle" #: ../data/plugins/own-server.xml.in.h:3 msgid "On my own server" @@ -114,7 +116,7 @@ msgstr "Verkrijg eerdere versie" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:148 msgid "Make a copy of an earlier version in this folder" -msgstr "Maak een kopie van een oudere versie in deze map" +msgstr "Maak een kopie van een oudere versie naar deze map" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:161 msgid "Select to get a copy of this version" @@ -152,7 +154,7 @@ msgstr " onder bepaalde voorwaarden. Zie de GNU GPLv3 voor meer informatie." #: ../SparkleShare/Program.cs:92 msgid "SparkleShare automatically syncs Git repositories in " -msgstr "SparkleShare synchroniseerd automatisch Git repositories in " +msgstr "SparkleShare synchroniseert automatisch Git repositories in " #: ../SparkleShare/Program.cs:93 msgid "the ~/SparkleShare folder with their remote origins." @@ -194,42 +196,42 @@ msgstr "Controleren op updates ..." #: ../SparkleShare/SparkleControllerBase.cs:493 msgid "dddd, MMMM d, yyyy" -msgstr "" +msgstr "dddd, MMMM d, yyyy" #: ../SparkleShare/SparkleControllerBase.cs:499 msgid "dddd, MMMM d" -msgstr "" +msgstr "dddd, MMMM d" #: ../SparkleShare/SparkleControllerBase.cs:707 #, csharp-format msgid "added ‘{0}’" -msgstr "" +msgstr "toegevoegd: ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:712 #, csharp-format msgid "moved ‘{0}’" -msgstr "" +msgstr "verplaatst: ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:717 #, csharp-format msgid "edited ‘{0}’" -msgstr "" +msgstr "bewerkt: ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:722 #, csharp-format msgid "deleted ‘{0}’" -msgstr "" +msgstr "verwijderd: ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:731 #, csharp-format msgid "and {0} more" msgid_plural "and {0} more" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "en nog {0}" +msgstr[1] "en nog {0}" #: ../SparkleShare/SparkleControllerBase.cs:735 msgid "did something magical" -msgstr "" +msgstr "deed iets magisch" #: ../SparkleShare/SparkleEventLog.cs:58 msgid "Recent Events" @@ -270,7 +272,7 @@ msgstr "Adres" #: ../SparkleShare/SparkleSetup.cs:295 msgid "Remote Path" -msgstr "" +msgstr "Extern pad" #. Cancel button #: ../SparkleShare/SparkleSetup.cs:309 ../SparkleShare/SparkleSetup.cs:345 @@ -306,7 +308,7 @@ msgstr "Er ging iets mis" #: ../SparkleShare/SparkleSetup.cs:422 msgid "Try Again…" -msgstr "Probeer opnieuw..." +msgstr "Opnieuw proberen..." #: ../SparkleShare/SparkleSetup.cs:441 #, csharp-format @@ -315,11 +317,11 @@ msgstr "'{0}' is met succes toegevoegd" #: ../SparkleShare/SparkleSetup.cs:447 msgid "Project successfully added!" -msgstr "Project succesvol toegevoeg" +msgstr "Project succesvol toegevoegd!" #: ../SparkleShare/SparkleSetup.cs:448 msgid "Access the files from your SparkleShare folder." -msgstr "" +msgstr "Benader de gesynchroniseerde bestanden in je SparkleShare-map." #. A button that opens the synced folder #: ../SparkleShare/SparkleSetup.cs:451 @@ -328,13 +330,15 @@ msgstr "Map openen" #: ../SparkleShare/SparkleSetup.cs:477 msgid "What's happening next?" -msgstr "" +msgstr "What gebeurt er nu?" #: ../SparkleShare/SparkleSetup.cs:478 msgid "" "SparkleShare creates a special folder in your personal folder that will keep" " track of your projects." msgstr "" +"SparkleShare maakt een speciale map in je persoonlijke map die je projecten " +"in de gaten houdt." #: ../SparkleShare/SparkleSetup.cs:481 msgid "Skip Tutorial" @@ -354,16 +358,20 @@ msgid "" "All files added to your project folders are synced with the host " "automatically, as well as with your collaborators." msgstr "" +"Alle bestanden die je aan je projectmappen toevoegt worden automatisch " +"gesynchroniseerd met de host en je team." #: ../SparkleShare/SparkleSetup.cs:520 msgid "The status icon is here to help" -msgstr "Het status icoon bied hulp" +msgstr "Het statusicoon bied hulp" #: ../SparkleShare/SparkleSetup.cs:521 msgid "" "It shows the syncing process status, and contains links to your projects and" " the event log." msgstr "" +"Het toont de voortgang van het synchroniseerproces en bevat links naar je " +"projecten en het logboek." #: ../SparkleShare/SparkleSetup.cs:538 msgid "Adding projects to SparkleShare" @@ -374,18 +382,22 @@ msgid "" "Just click this button when you see it on the web, and the project will be " "automatically added:" msgstr "" +"Klik op deze knop wanneer je deze tegenkomt op het web, en het project wordt" +" automatisch toegevoegd." #: ../SparkleShare/SparkleSetup.cs:542 msgid "" "…or select ‘Add Hosted Project…’ from the status icon menu to add one" " by hand." msgstr "" +"…of selecteer ‘Gehost project toevoegen…’ in het menu van het " +"statusicoon om een project met de hand toe te voegen." #. Opens the wizard to add a new remote folder #: ../SparkleShare/SparkleSetup.cs:551 #: ../SparkleShare/SparkleStatusIcon.cs:238 msgid "Add Hosted Project…" -msgstr "" +msgstr "Gehost project toevoegen…" #: ../SparkleShare/SparkleSetupWindow.cs:44 msgid "SparkleShare Setup" @@ -397,7 +409,7 @@ msgstr "Nog geen projecten" #: ../SparkleShare/SparkleStatusIcon.cs:262 msgid "Open Recent Events" -msgstr "Open recente gebeurtenissen" +msgstr "Logboek openen" #: ../SparkleShare/SparkleStatusIcon.cs:282 msgid "Turn Notifications Off" From 1c3f67265ce53dc1ec3429b08b3317c20e9b0480 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kan=20Sahlstr=C3=B6m?= Date: Thu, 10 Nov 2011 11:33:14 +0100 Subject: [PATCH 16/47] Update Swedish translation from Transifex --- po/sv.po | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/po/sv.po b/po/sv.po index 9a66158c..178d5c2c 100755 --- a/po/sv.po +++ b/po/sv.po @@ -13,8 +13,8 @@ msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-30 15:50+0100\n" -"PO-Revision-Date: 2011-10-30 14:50+0000\n" -"Last-Translator: deejay1 \n" +"PO-Revision-Date: 2011-11-05 22:22+0000\n" +"Last-Translator: shlstrm \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -202,33 +202,33 @@ msgstr "" #: ../SparkleShare/SparkleControllerBase.cs:707 #, csharp-format msgid "added ‘{0}’" -msgstr "" +msgstr "lade till ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:712 #, csharp-format msgid "moved ‘{0}’" -msgstr "" +msgstr "flyttade ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:717 #, csharp-format msgid "edited ‘{0}’" -msgstr "" +msgstr "ändrade ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:722 #, csharp-format msgid "deleted ‘{0}’" -msgstr "" +msgstr "raderade ‘{0}’" #: ../SparkleShare/SparkleControllerBase.cs:731 #, csharp-format msgid "and {0} more" msgid_plural "and {0} more" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "och {0} till" +msgstr[1] "och {0} fler" #: ../SparkleShare/SparkleControllerBase.cs:735 msgid "did something magical" -msgstr "" +msgstr "gjorde någonting magiskt" #: ../SparkleShare/SparkleEventLog.cs:58 msgid "Recent Events" @@ -387,6 +387,8 @@ msgid "" "…or select ‘Add Hosted Project…’ from the status icon menu to add one" " by hand." msgstr "" +"...eller välj ‘Lägg till Projekt…’ i statusmenyn för att lägga till " +"ett projekt manuellt." #. Opens the wizard to add a new remote folder #: ../SparkleShare/SparkleSetup.cs:551 From 4ad947ca676ac0ffc8474bdadb259a90beff93aa Mon Sep 17 00:00:00 2001 From: Misha Shnurapet Date: Thu, 10 Nov 2011 11:33:53 +0100 Subject: [PATCH 17/47] Update Russian translation from Transifex --- po/ru.po | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/po/ru.po b/po/ru.po index 2f2163c8..d4aeada1 100755 --- a/po/ru.po +++ b/po/ru.po @@ -4,14 +4,15 @@ # Dmitry Golubkov , 2011. # , 2011. # Just a baka , 2011. +# Misha Shnurapet , 2011. # Oleg Shmelyov , 2011. msgid "" msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-30 15:50+0100\n" -"PO-Revision-Date: 2011-10-30 14:50+0000\n" -"Last-Translator: deejay1 \n" +"PO-Revision-Date: 2011-11-02 11:31+0000\n" +"Last-Translator: shnurapet \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -192,43 +193,43 @@ msgstr "Проверка обновлений…" #: ../SparkleShare/SparkleControllerBase.cs:493 msgid "dddd, MMMM d, yyyy" -msgstr "" +msgstr "дддд, ММММ д, гггг" #: ../SparkleShare/SparkleControllerBase.cs:499 msgid "dddd, MMMM d" -msgstr "" +msgstr "дддд, ММММ д" #: ../SparkleShare/SparkleControllerBase.cs:707 #, csharp-format msgid "added ‘{0}’" -msgstr "" +msgstr "«{0}» добавлено" #: ../SparkleShare/SparkleControllerBase.cs:712 #, csharp-format msgid "moved ‘{0}’" -msgstr "" +msgstr "«{0}» перемещено" #: ../SparkleShare/SparkleControllerBase.cs:717 #, csharp-format msgid "edited ‘{0}’" -msgstr "" +msgstr "«{0}» изменено" #: ../SparkleShare/SparkleControllerBase.cs:722 #, csharp-format msgid "deleted ‘{0}’" -msgstr "" +msgstr "«{0}» удалено" #: ../SparkleShare/SparkleControllerBase.cs:731 #, csharp-format msgid "and {0} more" msgid_plural "and {0} more" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "и ещё над {0}" +msgstr[1] "и ещё над {0}" +msgstr[2] "и ещё над {0}" #: ../SparkleShare/SparkleControllerBase.cs:735 msgid "did something magical" -msgstr "" +msgstr "совершено какое-то колдовство" #: ../SparkleShare/SparkleEventLog.cs:58 msgid "Recent Events" @@ -318,7 +319,7 @@ msgstr "Проект успешно добавлен!" #: ../SparkleShare/SparkleSetup.cs:448 msgid "Access the files from your SparkleShare folder." -msgstr "" +msgstr "Получить доступ к файлам из своей папки SparkleShare." #. A button that opens the synced folder #: ../SparkleShare/SparkleSetup.cs:451 @@ -379,18 +380,22 @@ msgid "" "Just click this button when you see it on the web, and the project will be " "automatically added:" msgstr "" +"Просто нажмите эту кнопку, когда увидите её в сети, и проект будет добавлен " +"автоматически:" #: ../SparkleShare/SparkleSetup.cs:542 msgid "" "…or select ‘Add Hosted Project…’ from the status icon menu to add one" " by hand." msgstr "" +"...или выберите «Добавить ведомый проект...» через меню в области " +"уведомлений, чтобы добавить проект вручную." #. Opens the wizard to add a new remote folder #: ../SparkleShare/SparkleSetup.cs:551 #: ../SparkleShare/SparkleStatusIcon.cs:238 msgid "Add Hosted Project…" -msgstr "" +msgstr "Добавить ведомый проект..." #: ../SparkleShare/SparkleSetupWindow.cs:44 msgid "SparkleShare Setup" From 7a7d7f33231d1ff5462a7e89bfdedaefbf557b3a Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Thu, 10 Nov 2011 11:35:05 +0100 Subject: [PATCH 18/47] Update Brazilian translation from Transifex --- po/pt_BR.po | 72 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/po/pt_BR.po b/po/pt_BR.po index f2ef4610..c461ed7b 100755 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-30 15:50+0100\n" -"PO-Revision-Date: 2011-10-30 14:50+0000\n" -"Last-Translator: deejay1 \n" +"PO-Revision-Date: 2011-11-08 12:53+0000\n" +"Last-Translator: eduardosilva \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -19,7 +19,7 @@ msgstr "" #: ../data/plugins/bitbucket.xml.in.h:1 ../data/plugins/github.xml.in.h:1 msgid "/username/project" -msgstr "" +msgstr "/usuário/projeto" #: ../data/plugins/bitbucket.xml.in.h:2 msgid "Bitbucket" @@ -35,11 +35,11 @@ msgstr "" #: ../data/plugins/github.xml.in.h:3 msgid "Github" -msgstr "" +msgstr "Github" #: ../data/plugins/gitorious.xml.in.h:1 msgid "/project/repository" -msgstr "" +msgstr "/projeto/repositório" #: ../data/plugins/gitorious.xml.in.h:2 msgid "Gitorious" @@ -51,7 +51,7 @@ msgstr "" #: ../data/plugins/gnome.xml.in.h:1 msgid "/project" -msgstr "" +msgstr "/projeto" #: ../data/plugins/gnome.xml.in.h:2 msgid "A free and easy interface for your computer" @@ -63,15 +63,15 @@ msgstr "O projeto GNOME" #: ../data/plugins/own-server.xml.in.h:1 msgid "/path/to/project" -msgstr "" +msgstr "/caminho/para/projeto" #: ../data/plugins/own-server.xml.in.h:2 msgid "Everything under my control" -msgstr "" +msgstr "Tudo sob meu controle" #: ../data/plugins/own-server.xml.in.h:3 msgid "On my own server" -msgstr "" +msgstr "Em meu próprio servidor" #: ../SparkleShare/Mac/SparkleStatusIcon.cs:70 #: ../SparkleShare/Mac/SparkleStatusIcon.cs:88 @@ -199,22 +199,22 @@ msgstr "" #: ../SparkleShare/SparkleControllerBase.cs:707 #, csharp-format msgid "added ‘{0}’" -msgstr "" +msgstr "adicionado \"{0} '" #: ../SparkleShare/SparkleControllerBase.cs:712 #, csharp-format msgid "moved ‘{0}’" -msgstr "" +msgstr "movido '{0}'" #: ../SparkleShare/SparkleControllerBase.cs:717 #, csharp-format msgid "edited ‘{0}’" -msgstr "" +msgstr "editado '{0}'" #: ../SparkleShare/SparkleControllerBase.cs:722 #, csharp-format msgid "deleted ‘{0}’" -msgstr "" +msgstr "removido '{0}'" #: ../SparkleShare/SparkleControllerBase.cs:731 #, csharp-format @@ -225,7 +225,7 @@ msgstr[1] "" #: ../SparkleShare/SparkleControllerBase.cs:735 msgid "did something magical" -msgstr "" +msgstr "fez algo mágico" #: ../SparkleShare/SparkleEventLog.cs:58 msgid "Recent Events" @@ -258,15 +258,15 @@ msgstr "Próximo" #: ../SparkleShare/SparkleSetup.cs:129 msgid "Where's your project hosted?" -msgstr "" +msgstr "Onde está o seu projeto está hospedado?" #: ../SparkleShare/SparkleSetup.cs:275 msgid "Address" -msgstr "" +msgstr "Endereço" #: ../SparkleShare/SparkleSetup.cs:295 msgid "Remote Path" -msgstr "" +msgstr "Caminho remoto" #. Cancel button #: ../SparkleShare/SparkleSetup.cs:309 ../SparkleShare/SparkleSetup.cs:345 @@ -276,12 +276,12 @@ msgstr "Cancelar" #. Sync button #: ../SparkleShare/SparkleSetup.cs:316 msgid "Add" -msgstr "" +msgstr "Adicionar" #: ../SparkleShare/SparkleSetup.cs:335 #, csharp-format msgid "Adding project ‘{0}’…" -msgstr "" +msgstr "Adicionando projeto '{0}' ..." #: ../SparkleShare/SparkleSetup.cs:336 msgid "This may take a while." @@ -302,7 +302,7 @@ msgstr "Algum problema ocorreu" #: ../SparkleShare/SparkleSetup.cs:422 msgid "Try Again…" -msgstr "" +msgstr "Tente novamente..." #: ../SparkleShare/SparkleSetup.cs:441 #, csharp-format @@ -311,11 +311,11 @@ msgstr "'{0}' foi incluída com sucesso" #: ../SparkleShare/SparkleSetup.cs:447 msgid "Project successfully added!" -msgstr "" +msgstr "Projeto adicionado com sucesso!" #: ../SparkleShare/SparkleSetup.cs:448 msgid "Access the files from your SparkleShare folder." -msgstr "" +msgstr "Acessar os arquivos da pasta SparkleShare." #. A button that opens the synced folder #: ../SparkleShare/SparkleSetup.cs:451 @@ -324,64 +324,74 @@ msgstr "Abrir Pasta" #: ../SparkleShare/SparkleSetup.cs:477 msgid "What's happening next?" -msgstr "" +msgstr "O que está acontecendo em seguida?" #: ../SparkleShare/SparkleSetup.cs:478 msgid "" "SparkleShare creates a special folder in your personal folder that will keep" " track of your projects." msgstr "" +"SparkleShare cria uma pasta especial em sua pasta pessoal que vai manter o " +"controle de seus projetos." #: ../SparkleShare/SparkleSetup.cs:481 msgid "Skip Tutorial" -msgstr "" +msgstr "Pular Tutorial" #: ../SparkleShare/SparkleSetup.cs:486 ../SparkleShare/SparkleSetup.cs:506 #: ../SparkleShare/SparkleSetup.cs:524 msgid "Continue" -msgstr "" +msgstr "Continuar" #: ../SparkleShare/SparkleSetup.cs:502 msgid "Sharing files with others" -msgstr "" +msgstr "Compartilhar arquivos com outras pessoas" #: ../SparkleShare/SparkleSetup.cs:503 msgid "" "All files added to your project folders are synced with the host " "automatically, as well as with your collaborators." msgstr "" +"Todos os arquivos adicionados a pasta do seu projeto são sincronizados " +"automaticamente com o servidor, bem como com seus colaboradores." #: ../SparkleShare/SparkleSetup.cs:520 msgid "The status icon is here to help" -msgstr "" +msgstr "O ícone de status está aqui para ajudar" #: ../SparkleShare/SparkleSetup.cs:521 msgid "" "It shows the syncing process status, and contains links to your projects and" " the event log." msgstr "" +"Mostra o status do processo de sincronização, e contém links para seus " +"projetos e log de eventos." #: ../SparkleShare/SparkleSetup.cs:538 msgid "Adding projects to SparkleShare" -msgstr "" +msgstr "Adicionando projetos ao SparkleShare" #: ../SparkleShare/SparkleSetup.cs:539 msgid "" "Just click this button when you see it on the web, and the project will be " "automatically added:" msgstr "" +"Basta clicar neste botão quando você vê-la na web, e o projeto será " +"automaticamente adicionado automaticamente:" #: ../SparkleShare/SparkleSetup.cs:542 msgid "" "…or select ‘Add Hosted Project…’ from the status icon menu to add one" " by hand." msgstr "" +"... Ou selecione 'Adicionar Projeto Hosted ...' no menu do ícone de " +"status para adicionar manualmente." #. Opens the wizard to add a new remote folder #: ../SparkleShare/SparkleSetup.cs:551 #: ../SparkleShare/SparkleStatusIcon.cs:238 msgid "Add Hosted Project…" -msgstr "" +msgstr "Adicionar Projeto Hospedado..." #: ../SparkleShare/SparkleSetupWindow.cs:44 msgid "SparkleShare Setup" @@ -389,11 +399,11 @@ msgstr "Configurações do SparkleShare" #: ../SparkleShare/SparkleStatusIcon.cs:228 msgid "No projects yet" -msgstr "" +msgstr "Nenhum projeto ainda" #: ../SparkleShare/SparkleStatusIcon.cs:262 msgid "Open Recent Events" -msgstr "" +msgstr "Abrir Eventos Recentes" #: ../SparkleShare/SparkleStatusIcon.cs:282 msgid "Turn Notifications Off" From a26d1fb48aa4b76e010e6209a481e313f369abea Mon Sep 17 00:00:00 2001 From: Ophir Setter Date: Thu, 10 Nov 2011 11:37:15 +0100 Subject: [PATCH 19/47] Update Hebrew translation from Transifex --- po/he.po | 71 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/po/he.po b/po/he.po index 84ac2dda..8752c0f5 100755 --- a/po/he.po +++ b/po/he.po @@ -1,13 +1,14 @@ # This file is distributed under the same license as the SparkleShare package. # # Translators: +# , 2011. msgid "" msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-30 15:50+0100\n" -"PO-Revision-Date: 2011-10-30 14:50+0000\n" -"Last-Translator: deejay1 \n" +"PO-Revision-Date: 2011-11-01 20:06+0000\n" +"Last-Translator: ophir \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -64,11 +65,11 @@ msgstr "" #: ../data/plugins/own-server.xml.in.h:2 msgid "Everything under my control" -msgstr "" +msgstr "הכל תחת שליטתי" #: ../data/plugins/own-server.xml.in.h:3 msgid "On my own server" -msgstr "" +msgstr "שרת משלי" #: ../SparkleShare/Mac/SparkleStatusIcon.cs:70 #: ../SparkleShare/Mac/SparkleStatusIcon.cs:88 @@ -169,20 +170,20 @@ msgstr "ספארקלשר" #. A menu item that takes the user to http://www.sparkleshare.org/ #: ../SparkleShare/SparkleAbout.cs:53 ../SparkleShare/SparkleStatusIcon.cs:295 msgid "About SparkleShare" -msgstr "" +msgstr "אודות ספארקלשר" #: ../SparkleShare/SparkleAbout.cs:70 #, csharp-format msgid "A newer version ({0}) is available!" -msgstr "" +msgstr "גירסה חדשה יותר ({0}) זמינה!" #: ../SparkleShare/SparkleAbout.cs:79 msgid "You are running the latest version." -msgstr "" +msgstr "אתה מריץ את הגרסה המעודכנת ביותר" #: ../SparkleShare/SparkleAbout.cs:88 ../SparkleShare/SparkleAbout.cs:113 msgid "Checking for updates..." -msgstr "" +msgstr "בודק עדכונים..." #: ../SparkleShare/SparkleControllerBase.cs:493 msgid "dddd, MMMM d, yyyy" @@ -195,22 +196,22 @@ msgstr "" #: ../SparkleShare/SparkleControllerBase.cs:707 #, csharp-format msgid "added ‘{0}’" -msgstr "" +msgstr "‘{0}’ הוסף" #: ../SparkleShare/SparkleControllerBase.cs:712 #, csharp-format msgid "moved ‘{0}’" -msgstr "" +msgstr "‘{0}’ הוזז" #: ../SparkleShare/SparkleControllerBase.cs:717 #, csharp-format msgid "edited ‘{0}’" -msgstr "" +msgstr "‘{0}’ שונה" #: ../SparkleShare/SparkleControllerBase.cs:722 #, csharp-format msgid "deleted ‘{0}’" -msgstr "" +msgstr "‘{0}’ נמחק" #: ../SparkleShare/SparkleControllerBase.cs:731 #, csharp-format @@ -225,12 +226,12 @@ msgstr "" #: ../SparkleShare/SparkleEventLog.cs:58 msgid "Recent Events" -msgstr "" +msgstr "אירועים אחרונים" #: ../SparkleShare/SparkleEventLog.cs:169 #: ../SparkleShare/SparkleEventLog.cs:188 msgid "All Folders" -msgstr "" +msgstr "כל התיקיות" #: ../SparkleShare/SparkleSetup.cs:76 msgid "" @@ -245,7 +246,7 @@ msgstr "שם מלא:" #: ../SparkleShare/SparkleSetup.cs:98 msgid "Email:" -msgstr "דוא\"ל" +msgstr "דוא\"ל:" #: ../SparkleShare/SparkleSetup.cs:108 msgid "Next" @@ -271,20 +272,20 @@ msgstr "בטל" #. Sync button #: ../SparkleShare/SparkleSetup.cs:316 msgid "Add" -msgstr "" +msgstr "הוסף" #: ../SparkleShare/SparkleSetup.cs:335 #, csharp-format msgid "Adding project ‘{0}’…" -msgstr "" +msgstr "מוסיף פרויקט ‘{0}’…" #: ../SparkleShare/SparkleSetup.cs:336 msgid "This may take a while." -msgstr "" +msgstr "זה עלול לקחת זמן מה" #: ../SparkleShare/SparkleSetup.cs:337 msgid "Are you sure it’s not coffee o'clock?" -msgstr "" +msgstr "מה אתה אומר על קפה?" #: ../SparkleShare/SparkleSetup.cs:341 ../SparkleShare/SparkleSetup.cs:457 #: ../SparkleShare/SparkleSetup.cs:556 @@ -293,24 +294,24 @@ msgstr "סיים" #: ../SparkleShare/SparkleSetup.cs:374 msgid "Something went wrong" -msgstr "" +msgstr "משהו השתבש" #: ../SparkleShare/SparkleSetup.cs:422 msgid "Try Again…" -msgstr "" +msgstr "נסה שוב..." #: ../SparkleShare/SparkleSetup.cs:441 #, csharp-format msgid "‘{0}’ has been successfully added" -msgstr "" +msgstr "‘{0}’ הוסף בהצלחה" #: ../SparkleShare/SparkleSetup.cs:447 msgid "Project successfully added!" -msgstr "" +msgstr "פרויקט הוסף בהצלחה!" #: ../SparkleShare/SparkleSetup.cs:448 msgid "Access the files from your SparkleShare folder." -msgstr "" +msgstr "גש לקבצים מתיקיית ספארקלשר" #. A button that opens the synced folder #: ../SparkleShare/SparkleSetup.cs:451 @@ -319,7 +320,7 @@ msgstr "פתח תקייה" #: ../SparkleShare/SparkleSetup.cs:477 msgid "What's happening next?" -msgstr "" +msgstr "מה עכשיו?" #: ../SparkleShare/SparkleSetup.cs:478 msgid "" @@ -329,16 +330,16 @@ msgstr "" #: ../SparkleShare/SparkleSetup.cs:481 msgid "Skip Tutorial" -msgstr "" +msgstr "דלג על הדרכה" #: ../SparkleShare/SparkleSetup.cs:486 ../SparkleShare/SparkleSetup.cs:506 #: ../SparkleShare/SparkleSetup.cs:524 msgid "Continue" -msgstr "" +msgstr "המשך" #: ../SparkleShare/SparkleSetup.cs:502 msgid "Sharing files with others" -msgstr "" +msgstr "שיתוף קבצים עם אחרים" #: ../SparkleShare/SparkleSetup.cs:503 msgid "" @@ -358,13 +359,13 @@ msgstr "" #: ../SparkleShare/SparkleSetup.cs:538 msgid "Adding projects to SparkleShare" -msgstr "" +msgstr "הוספת פרויקטים לספארקלשר" #: ../SparkleShare/SparkleSetup.cs:539 msgid "" "Just click this button when you see it on the web, and the project will be " "automatically added:" -msgstr "" +msgstr "לחץ כאן כשאתה רואה אותו ברשת, והפרויקט יתווסף אוטומטית:" #: ../SparkleShare/SparkleSetup.cs:542 msgid "" @@ -380,23 +381,23 @@ msgstr "" #: ../SparkleShare/SparkleSetupWindow.cs:44 msgid "SparkleShare Setup" -msgstr "" +msgstr "התקנת ספארקלשר" #: ../SparkleShare/SparkleStatusIcon.cs:228 msgid "No projects yet" -msgstr "" +msgstr "עדיין אין פרויקטים" #: ../SparkleShare/SparkleStatusIcon.cs:262 msgid "Open Recent Events" -msgstr "" +msgstr "פתח אירועים אחרונים" #: ../SparkleShare/SparkleStatusIcon.cs:282 msgid "Turn Notifications Off" -msgstr "" +msgstr "כבה הודעות" #: ../SparkleShare/SparkleStatusIcon.cs:284 msgid "Turn Notifications On" -msgstr "" +msgstr "הפעל הודעות" #. A menu item that quits the application #: ../SparkleShare/SparkleStatusIcon.cs:311 From 11609bccf21225c5949a1e2ea29da601a5f9d4d3 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Fri, 11 Nov 2011 22:01:51 +0000 Subject: [PATCH 20/47] Update README to build on OSX. Closes #383 --- README | 5 +++-- SparkleLib/SparkleConfig.cs | 3 ++- SparkleShare/Mac/SparkleShare.csproj | 1 + SparkleShare/SparkleControllerBase.cs | 7 +++---- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/README b/README index 0c383626..8dfd1a40 100644 --- a/README +++ b/README @@ -109,9 +109,10 @@ Now that you have compiled the libraries, open 'SparkleShare/Mac/SparkleShare.sl MonoDevelop and start the build. To create the SparkleShare.app, make sure the project is focused and select Project from the menu bar -and click "Create Mac Installer..." Save the SparkleShare.app somewhere. +and click "Create Mac Installer...". Make sure to select "Don't link assemblies". -Paste the contents of the following file in SparkleShare.app/Contents/MonoBundle/config: +Save the SparkleShare.app somewhere. Paste the contents of +the following file in SparkleShare.app/Contents/MonoBundle/config: https://raw.github.com/gist/1aeffa61bac73fc08eca/0c0f09ef9e36864c35f34fd5e8bf4f99886be193/gistfile1.txt Copy /Library/Frameworks/Mono.framework/Versions/Current/lib/libintl.dylib diff --git a/SparkleLib/SparkleConfig.cs b/SparkleLib/SparkleConfig.cs index 03a80846..61abd5e9 100755 --- a/SparkleLib/SparkleConfig.cs +++ b/SparkleLib/SparkleConfig.cs @@ -117,7 +117,8 @@ namespace SparkleLib { "" + n + " " + n + " " + user_name + "" + n + - " Unknown" + n + " " + n + + " Unknown" + n + + " " + n + ""); SparkleHelpers.DebugInfo ("Config", "Created \"" + FullPath + "\""); diff --git a/SparkleShare/Mac/SparkleShare.csproj b/SparkleShare/Mac/SparkleShare.csproj index d9c0e8f1..d2f87467 100755 --- a/SparkleShare/Mac/SparkleShare.csproj +++ b/SparkleShare/Mac/SparkleShare.csproj @@ -66,6 +66,7 @@ False ..\..\bin\SparkleLib.dll + diff --git a/SparkleShare/SparkleControllerBase.cs b/SparkleShare/SparkleControllerBase.cs index d72d236c..38be86bd 100755 --- a/SparkleShare/SparkleControllerBase.cs +++ b/SparkleShare/SparkleControllerBase.cs @@ -886,15 +886,14 @@ namespace SparkleShare { // Add some restrictions to what the key can // do when uploaded to the server - string public_key = File.ReadAllText (key_file_path + ".pub"); - public_key = "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " + public_key; - File.WriteAllText (key_file_path + ".pub", public_key); + // string public_key = File.ReadAllText (key_file_path + ".pub"); + // public_key = "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " + public_key; + // File.WriteAllText (key_file_path + ".pub", public_key); // Create an easily accessible copy of the public // key in the user's SparkleShare folder File.Copy (key_file_path + ".pub", Path.Combine (SparklePath, UserName + "'s key.txt")); - } } From 76a24f9af3de183bed314aae65d4566065787ab6 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sat, 12 Nov 2011 01:54:08 +0000 Subject: [PATCH 21/47] config: skip badly formatted uris. Fixes #410 --- SparkleLib/SparkleConfig.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/SparkleLib/SparkleConfig.cs b/SparkleLib/SparkleConfig.cs index 61abd5e9..86f869c5 100755 --- a/SparkleLib/SparkleConfig.cs +++ b/SparkleLib/SparkleConfig.cs @@ -272,10 +272,16 @@ namespace SparkleLib { List hosts = new List (); foreach (XmlNode node_folder in SelectNodes ("/sparkleshare/folder")) { - Uri uri = new Uri (node_folder ["url"].InnerText); + try { + Uri uri = new Uri (node_folder ["url"].InnerText); - if ("git" != uri.UserInfo && !hosts.Contains (uri.UserInfo + "@" + uri.Host)) - hosts.Add (uri.UserInfo + "@" + uri.Host); + if (uri.UserInfo != "git" && !hosts.Contains (uri.UserInfo + "@" + uri.Host)) + hosts.Add (uri.UserInfo + "@" + uri.Host); + + } catch (UriFormatException) { + SparkleHelpers.DebugInfo ("Config", + "Ignoring badly formatted URI: " + node_folder ["url"].InnerText); + } } return hosts; From 37ec3e4df9ca201667f884355bc29d1cfb827244 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sat, 12 Nov 2011 02:05:33 +0000 Subject: [PATCH 22/47] controller: Catch harmless FileNotFoundException that sometimes happens even if the file exists. Fixes #408 --- SparkleShare/SparkleControllerBase.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/SparkleShare/SparkleControllerBase.cs b/SparkleShare/SparkleControllerBase.cs index 38be86bd..3d89e086 100755 --- a/SparkleShare/SparkleControllerBase.cs +++ b/SparkleShare/SparkleControllerBase.cs @@ -928,8 +928,17 @@ namespace SparkleShare { // Delete avatars older than a month if (avatar_info.CreationTime < DateTime.Now.AddMonths (-1)) { - avatar_info.Delete (); - old_avatars.Add (email); + try { + avatar_info.Delete (); + old_avatars.Add (email); + + } catch (FileNotFoundException) { + // FIXME: For some reason the previous File.Exists () check + // doesn't cover all cases sometimes, so we catch any errors + + if (old_avatars.Contains (email)) + old_avatars.Remove (email); + } } } else { From b03a393c9c38c57a9c41ab683e563a4f88000095 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sat, 12 Nov 2011 02:23:30 +0000 Subject: [PATCH 23/47] Update version number to 0.4.0 for upcoming release --- NEWS | 4 ++++ configure.ac | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 40c7541c..08f8d4e8 100755 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +0.4.0 for Linux and Mac (Sun Nov 12 2011): + Hylke: bla bla derp derp + + 0.2.5 for Linux and Mac (Mon Jul 25 2011): Hylke: Reimplement notes to be less buggy and backend independent. Polish diff --git a/configure.ac b/configure.ac index ca8c6046..de87cc4a 100755 --- a/configure.ac +++ b/configure.ac @@ -1,9 +1,9 @@ dnl Process this file with autoconf to produce a configure script. m4_define([sparkleshare_version], - [0.2.5]) + [0.4.0]) m4_define([sparkleshare_asm_version], - [0.2.5]) + [0.4.0]) AC_PREREQ([2.54]) AC_INIT([SparkleShare], sparkleshare_version) From 0bd792833da6df7981aad5e57e933fcc1072693d Mon Sep 17 00:00:00 2001 From: Markus Litz Date: Sat, 12 Nov 2011 13:17:32 +0100 Subject: [PATCH 24/47] Update German translation from Transifex --- po/de.po | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/po/de.po b/po/de.po index 0b1a334e..f899ff4f 100755 --- a/po/de.po +++ b/po/de.po @@ -6,6 +6,7 @@ # Heffer , 2011. # Jan-Christoph Borchardt , 2011. # kabum , 2011. +# , 2011. # kxnop , 2011. # Łukasz Jernaś , 2011. # , 2011. @@ -16,8 +17,8 @@ msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-30 15:50+0100\n" -"PO-Revision-Date: 2011-10-30 14:50+0000\n" -"Last-Translator: deejay1 \n" +"PO-Revision-Date: 2011-11-10 15:27+0000\n" +"Last-Translator: MarkusLitz \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -26,11 +27,11 @@ msgstr "" #: ../data/plugins/bitbucket.xml.in.h:1 ../data/plugins/github.xml.in.h:1 msgid "/username/project" -msgstr "" +msgstr "/username/project" #: ../data/plugins/bitbucket.xml.in.h:2 msgid "Bitbucket" -msgstr "" +msgstr "Bitbucket" #: ../data/plugins/bitbucket.xml.in.h:3 msgid "Free code hosting for Git and Mercurial" @@ -42,7 +43,7 @@ msgstr "" #: ../data/plugins/github.xml.in.h:3 msgid "Github" -msgstr "" +msgstr "Github" #: ../data/plugins/gitorious.xml.in.h:1 msgid "/project/repository" @@ -74,11 +75,11 @@ msgstr "" #: ../data/plugins/own-server.xml.in.h:2 msgid "Everything under my control" -msgstr "" +msgstr "Alles unter meiner Kontrolle" #: ../data/plugins/own-server.xml.in.h:3 msgid "On my own server" -msgstr "" +msgstr "Auf meinem eigenen Server" #: ../SparkleShare/Mac/SparkleStatusIcon.cs:70 #: ../SparkleShare/Mac/SparkleStatusIcon.cs:88 @@ -92,21 +93,21 @@ msgstr "Willkommen bei SparkleShare!" #: ../SparkleShare/SparkleStatusIcon.cs:77 #: ../SparkleShare/SparkleStatusIcon.cs:91 msgid "Up to date" -msgstr "Schon auf dem aktuellsten Stand." +msgstr "Aktualisiert" #: ../SparkleShare/Mac/SparkleStatusIcon.cs:99 #: ../SparkleShare/SparkleStatusIcon.cs:106 msgid "Syncing…" -msgstr "Abgleichen …" +msgstr "Synchronisiere..." #: ../SparkleShare/Mac/SparkleStatusIcon.cs:109 #: ../SparkleShare/SparkleStatusIcon.cs:116 msgid "Not everything is synced" -msgstr "Nicht alles ist synchronisiert" +msgstr "Es ist nicht alles synchronisiert" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:113 msgid "Copy Web Link" -msgstr "Internetadresse kopieren" +msgstr "Web Link kopieren" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:114 msgid "Copy the web address of this file to the clipboard" @@ -212,7 +213,7 @@ msgstr "" #: ../SparkleShare/SparkleControllerBase.cs:712 #, csharp-format msgid "moved ‘{0}’" -msgstr "" +msgstr "'{0}' verschoben" #: ../SparkleShare/SparkleControllerBase.cs:717 #, csharp-format @@ -270,11 +271,11 @@ msgstr "" #: ../SparkleShare/SparkleSetup.cs:275 msgid "Address" -msgstr "" +msgstr "Adresse" #: ../SparkleShare/SparkleSetup.cs:295 msgid "Remote Path" -msgstr "" +msgstr "Entfernter Pfad" #. Cancel button #: ../SparkleShare/SparkleSetup.cs:309 ../SparkleShare/SparkleSetup.cs:345 @@ -289,7 +290,7 @@ msgstr "Hinzufügen" #: ../SparkleShare/SparkleSetup.cs:335 #, csharp-format msgid "Adding project ‘{0}’…" -msgstr "" +msgstr "Füge Projekt '{0}' hinzu..." #: ../SparkleShare/SparkleSetup.cs:336 msgid "This may take a while." @@ -323,7 +324,7 @@ msgstr "Projekt erfolgreich hinzugefügt!" #: ../SparkleShare/SparkleSetup.cs:448 msgid "Access the files from your SparkleShare folder." -msgstr "" +msgstr "Zugriff auf die Dateien von Ihrem SparkleShare Ordner." #. A button that opens the synced folder #: ../SparkleShare/SparkleSetup.cs:451 @@ -339,6 +340,8 @@ msgid "" "SparkleShare creates a special folder in your personal folder that will keep" " track of your projects." msgstr "" +"SparkleShare erzeugt einen eigenen Ordner in Ihrem persönlichen Ordner, der " +"den Überblick über Ihre Projekte behalten." #: ../SparkleShare/SparkleSetup.cs:481 msgid "Skip Tutorial" @@ -358,6 +361,8 @@ msgid "" "All files added to your project folders are synced with the host " "automatically, as well as with your collaborators." msgstr "" +"Alle zu Ihrem Projekt hinzugefügten Dateien sind automatisch mit dem Server " +"und Ihren Mitarbeitern synchronisiert." #: ../SparkleShare/SparkleSetup.cs:520 msgid "The status icon is here to help" @@ -371,7 +376,7 @@ msgstr "" #: ../SparkleShare/SparkleSetup.cs:538 msgid "Adding projects to SparkleShare" -msgstr "" +msgstr "Füge Projekte zu SparkleShare" #: ../SparkleShare/SparkleSetup.cs:539 msgid "" @@ -397,7 +402,7 @@ msgstr "SparkleShare Konfiguration" #: ../SparkleShare/SparkleStatusIcon.cs:228 msgid "No projects yet" -msgstr "" +msgstr "Bislang keine Projekte " #: ../SparkleShare/SparkleStatusIcon.cs:262 msgid "Open Recent Events" From 6fb1470d1b55cfd08a0a6a97d9dc0e3e452d85e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Jerna=C5=9B?= Date: Sat, 12 Nov 2011 13:35:00 +0100 Subject: [PATCH 25/47] Update Polish translation from Transifex --- po/pl.po | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/po/pl.po b/po/pl.po index 89281994..1dcdd540 100755 --- a/po/pl.po +++ b/po/pl.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-10-30 15:50+0100\n" -"PO-Revision-Date: 2011-11-08 00:21+0000\n" +"POT-Creation-Date: 2011-11-12 13:18+0100\n" +"PO-Revision-Date: 2011-11-12 12:34+0000\n" "Last-Translator: deejay1 \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -75,26 +75,26 @@ msgstr "Wszystko pod własną kontrolą" msgid "On my own server" msgstr "Na własnym serwerze" -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:70 -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:88 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:84 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:102 #: ../SparkleShare/SparkleSetup.cs:75 ../SparkleShare/SparkleStatusIcon.cs:75 #: ../SparkleShare/SparkleStatusIcon.cs:89 msgid "Welcome to SparkleShare!" msgstr "Witamy w programie SparkleShare!" -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:72 -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:90 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:86 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:104 #: ../SparkleShare/SparkleStatusIcon.cs:77 #: ../SparkleShare/SparkleStatusIcon.cs:91 msgid "Up to date" msgstr "Wszystko jest aktualne" -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:99 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:113 #: ../SparkleShare/SparkleStatusIcon.cs:106 msgid "Syncing…" msgstr "Synchronizowanie…" -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:109 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:123 #: ../SparkleShare/SparkleStatusIcon.cs:116 msgid "Not everything is synced" msgstr "Nie wszystko zostało zsynchronizowane" @@ -196,35 +196,35 @@ msgstr "Korzystasz z najnowszej wersji." msgid "Checking for updates..." msgstr "Wyszukiwanie aktualizacji" -#: ../SparkleShare/SparkleControllerBase.cs:493 +#: ../SparkleShare/SparkleControllerBase.cs:494 msgid "dddd, MMMM d, yyyy" -msgstr "" +msgstr "dddd, d MMMM yyyy" -#: ../SparkleShare/SparkleControllerBase.cs:499 +#: ../SparkleShare/SparkleControllerBase.cs:500 msgid "dddd, MMMM d" -msgstr "" +msgstr "dddd, d MMMM" -#: ../SparkleShare/SparkleControllerBase.cs:707 +#: ../SparkleShare/SparkleControllerBase.cs:708 #, csharp-format msgid "added ‘{0}’" msgstr "dodano \"{0}\"" -#: ../SparkleShare/SparkleControllerBase.cs:712 +#: ../SparkleShare/SparkleControllerBase.cs:713 #, csharp-format msgid "moved ‘{0}’" msgstr "przesunięto \"{0}\"" -#: ../SparkleShare/SparkleControllerBase.cs:717 +#: ../SparkleShare/SparkleControllerBase.cs:718 #, csharp-format msgid "edited ‘{0}’" msgstr "edytowano \"{0}\"" -#: ../SparkleShare/SparkleControllerBase.cs:722 +#: ../SparkleShare/SparkleControllerBase.cs:723 #, csharp-format msgid "deleted ‘{0}’" msgstr "usunięto \"{0}\"" -#: ../SparkleShare/SparkleControllerBase.cs:731 +#: ../SparkleShare/SparkleControllerBase.cs:732 #, csharp-format msgid "and {0} more" msgid_plural "and {0} more" @@ -232,7 +232,7 @@ msgstr[0] "oraz {0} więcej" msgstr[1] "oraz {0} więcej" msgstr[2] "oraz {0} więcej" -#: ../SparkleShare/SparkleControllerBase.cs:735 +#: ../SparkleShare/SparkleControllerBase.cs:736 msgid "did something magical" msgstr "stało się coś magicznego" @@ -324,7 +324,7 @@ msgstr "Projekt został dodany pomyślnie." #: ../SparkleShare/SparkleSetup.cs:448 msgid "Access the files from your SparkleShare folder." -msgstr "" +msgstr "Dostęp do plików możliwy jest z katalogu SparkleShare." #. A button that opens the synced folder #: ../SparkleShare/SparkleSetup.cs:451 @@ -340,7 +340,7 @@ msgid "" "SparkleShare creates a special folder in your personal folder that will keep" " track of your projects." msgstr "" -"Program SparkleShare utwrzy specjalny katalog w katalogu domowym, który " +"Program SparkleShare utworzy specjalny katalog w katalogu domowym, który " "będzie zajmował się projektami." #: ../SparkleShare/SparkleSetup.cs:481 @@ -373,7 +373,7 @@ msgid "" "It shows the syncing process status, and contains links to your projects and" " the event log." msgstr "" -"Wyświetla stan synchronizacji, jak i zawiera odnośniki do projektów i " +"Wyświetla stan synchronizacji, jak i zawiera odnośniki do projektów oraz " "dziennika zdarzeń." #: ../SparkleShare/SparkleSetup.cs:538 @@ -393,6 +393,8 @@ msgid "" "…or select ‘Add Hosted Project…’ from the status icon menu to add one" " by hand." msgstr "" +"…lub można wybrać opcję \"Dodaj utrzymywany projekt…\" z menu " +"powiadamiania, aby dodać projekt ręcznie." #. Opens the wizard to add a new remote folder #: ../SparkleShare/SparkleSetup.cs:551 From 7aa5c954676d21373ae4174c3dd66529616f3ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Jerna=C5=9B?= Date: Sat, 12 Nov 2011 15:45:29 +0100 Subject: [PATCH 26/47] nautilus-plugin: Integrate Nautilus 3 extension into the build system --- SparkleShare/Nautilus/Makefile.am | 15 ++++++---- build/m4/sparkleshare/nautilus-python.m4 | 36 ++++++++++++++++++------ configure.ac | 3 +- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/SparkleShare/Nautilus/Makefile.am b/SparkleShare/Nautilus/Makefile.am index 68b8772d..2c69c977 100755 --- a/SparkleShare/Nautilus/Makefile.am +++ b/SparkleShare/Nautilus/Makefile.am @@ -1,10 +1,15 @@ SOURCES = \ - sparkleshare-nautilus-extension.py + sparkleshare-nautilus-extension.py \ + sparkleshare-nautilus3-extension.py -if NAUTILUS_EXTENSION_ENABLED +if NAUTILUS2_EXTENSION_ENABLED NAUTILUS_PYTHON_INSTALL_DIR=$(subst $(NAUTILUS_PREFIX)/,${prefix}/,$(NAUTILUS_PYTHON_DIR)) extensiondir = $(NAUTILUS_PYTHON_INSTALL_DIR) -extension_SCRIPTS = $(addprefix $(srcdir)/, $(SOURCES)) -else -EXTRA_DIST = $(SOURCES) sparkleshare-nautilus-extension.py.in +extension_SCRIPTS = $(addprefix $(srcdir)/, sparkleshare-nautilus-extension.py)) endif +if NAUTILUS3_EXTENSION_ENABLED +NAUTILUS_PYTHON_INSTALL_DIR=$(subst $(NAUTILUS_PREFIX)/,${prefix}/,$(NAUTILUS_PYTHON_DIR)) +extensiondir = $(NAUTILUS_PYTHON_INSTALL_DIR) +extension_SCRIPTS = $(addprefix $(srcdir)/, sparkleshare-nautilus3-extension.py) +endif +EXTRA_DIST = $(SOURCES) sparkleshare-nautilus-extension.py.in diff --git a/build/m4/sparkleshare/nautilus-python.m4 b/build/m4/sparkleshare/nautilus-python.m4 index 1256f362..cec0a72e 100755 --- a/build/m4/sparkleshare/nautilus-python.m4 +++ b/build/m4/sparkleshare/nautilus-python.m4 @@ -1,14 +1,34 @@ AC_DEFUN([SPARKLESHARE_NAUTILUS_PYTHON], [ - PKG_CHECK_MODULES(NAUTILUS_PYTHON, nautilus-python, have_nautilus_python=yes, have_nautilus_python=no) - if test "x$have_nautilus_python" = "xyes"; then - NAUTILUS_PREFIX="`$PKG_CONFIG --variable=prefix nautilus-python`" - AC_SUBST(NAUTILUS_PREFIX) - NAUTILUS_PYTHON_DIR="`$PKG_CONFIG --variable=pythondir nautilus-python`" - AC_SUBST(NAUTILUS_PYTHON_DIR) - AM_CONDITIONAL(NAUTILUS_EXTENSION_ENABLED, true) + AC_ARG_ENABLE(nautilus-extension, + AC_HELP_STRING([--disable-nautilus-extension],[Do not install the Nautilus plugin]), enable_nautilus_extension=$enableval, enable_nautilus_extension=yes ) + if test x$enable_nautilus_extension = xyes; then + PKG_CHECK_MODULES(NAUTILUS_PYTHON, nautilus-python < 1.1, have_nautilus2_python=yes, have_nautilus2_python=no) + if test "x$have_nautilus2_python" = "xyes"; then + NAUTILUS_PREFIX="`$PKG_CONFIG --variable=prefix nautilus-python`" + AC_SUBST(NAUTILUS_PREFIX) + NAUTILUS_PYTHON_DIR="`$PKG_CONFIG --variable=pythondir nautilus-python`" + AC_SUBST(NAUTILUS_PYTHON_DIR) + AM_CONDITIONAL(NAUTILUS2_EXTENSION_ENABLED, true) + else + AM_CONDITIONAL(NAUTILUS2_EXTENSION_ENABLED, false) + fi + PKG_CHECK_MODULES(NAUTILUS3_PYTHON, nautilus-python >= 1.1, have_nautilus3_python=yes, have_nautilus3_python=no) + if test "x$have_nautilus3_python" = "xyes"; then + NAUTILUS_PREFIX="`$PKG_CONFIG --variable=prefix nautilus-python`" + AC_SUBST(NAUTILUS_PREFIX) + NAUTILUS_PYTHON_DIR="`$PKG_CONFIG --variable=pythondir nautilus-python`" + AC_SUBST(NAUTILUS_PYTHON_DIR) + AM_CONDITIONAL(NAUTILUS3_EXTENSION_ENABLED, true) + else + AM_CONDITIONAL(NAUTILUS3_EXTENSION_ENABLED, false) + fi else - AM_CONDITIONAL(NAUTILUS_EXTENSION_ENABLED, false) + have_nautilus2_python="disabled" + have_nautilus3_python="disabled" fi + + AM_CONDITIONAL(NAUTILUS2_EXTENSION_ENABLED, test "x$enable_nautilus_extension" = "xyes") + AM_CONDITIONAL(NAUTILUS3_EXTENSION_ENABLED, test "x$enable_nautilus_extension" = "xyes") ]) diff --git a/configure.ac b/configure.ac index de87cc4a..2774b617 100755 --- a/configure.ac +++ b/configure.ac @@ -185,7 +185,8 @@ SparkleShare ${VERSION} Configuration: Prefix : ${prefix} Build Gtk+ UI : ${enable_gtkui} - Nautilus plugin : ${have_nautilus_python} + Nautilus 2.x plugin : ${have_nautilus2_python} + Nautilus 3.x plugin : ${have_nautilus3_python} User Help : ${enable_user_help} (requires gnome-doc-utils >= 0.17.3) " From 5d70373f42e25293fb57a840b4615ada60b670e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Jerna=C5=9B?= Date: Sat, 12 Nov 2011 15:49:38 +0100 Subject: [PATCH 27/47] nautilus-plugin: Expand the locale path from the build system --- SparkleShare/Nautilus/Makefile.am | 2 +- ...lus3-extension.py => sparkleshare-nautilus3-extension.py.in} | 2 +- configure.ac | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) rename SparkleShare/Nautilus/{sparkleshare-nautilus3-extension.py => sparkleshare-nautilus3-extension.py.in} (99%) diff --git a/SparkleShare/Nautilus/Makefile.am b/SparkleShare/Nautilus/Makefile.am index 2c69c977..8240d060 100755 --- a/SparkleShare/Nautilus/Makefile.am +++ b/SparkleShare/Nautilus/Makefile.am @@ -12,4 +12,4 @@ NAUTILUS_PYTHON_INSTALL_DIR=$(subst $(NAUTILUS_PREFIX)/,${prefix}/,$(NAUTILUS_PY extensiondir = $(NAUTILUS_PYTHON_INSTALL_DIR) extension_SCRIPTS = $(addprefix $(srcdir)/, sparkleshare-nautilus3-extension.py) endif -EXTRA_DIST = $(SOURCES) sparkleshare-nautilus-extension.py.in +EXTRA_DIST = $(SOURCES) sparkleshare-nautilus-extension.py.in sparkleshare-nautilus3-extension.py.in diff --git a/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py b/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in similarity index 99% rename from SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py rename to SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in index e3abdd44..4d2164fa 100755 --- a/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py +++ b/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in @@ -25,7 +25,7 @@ from gi.repository import Nautilus, GObject, Gtk, Gdk SPARKLESHARE_PATH = os.path.join (os.path.expanduser ('~'), "SparkleShare") import gettext -gettext.bindtextdomain('sparkleshare', '/usr/share/locale') +gettext.bindtextdomain('sparkleshare', '@prefix@/share/locale') gettext.textdomain('sparkleshare') _ = gettext.gettext diff --git a/configure.ac b/configure.ac index 2774b617..2116eb11 100755 --- a/configure.ac +++ b/configure.ac @@ -175,6 +175,7 @@ SparkleShare/Makefile SparkleShare/Mac/Makefile SparkleShare/Nautilus/Makefile SparkleShare/Nautilus/sparkleshare-nautilus-extension.py +SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py po/Makefile.in Makefile ]) From 677c1faa98f2a8002655dc8f4dff2a99e21cbf2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Jerna=C5=9B?= Date: Sat, 12 Nov 2011 15:52:20 +0100 Subject: [PATCH 28/47] nautilus-plugin: Add the Nautilus3 plugin to POTFILES.in --- po/POTFILES.in | 1 + 1 file changed, 1 insertion(+) diff --git a/po/POTFILES.in b/po/POTFILES.in index 02cf6655..fbf8c10f 100755 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -10,6 +10,7 @@ data/plugins/own-server.xml.in SparkleShare/Mac/SparkleStatusIcon.cs SparkleShare/Mac/SparkleUI.cs SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in +SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in SparkleShare/Program.cs SparkleShare/SparkleAbout.cs SparkleShare/SparkleController.cs From ed3110c07b418524bb5f348ad8ddebc700e51147 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Jerna=C5=9B?= Date: Sat, 12 Nov 2011 18:40:17 +0100 Subject: [PATCH 29/47] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a0f5ed4b..9951e2eb 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ Defines.cs SparkleShare/sparkleshare po/sparkleshare.pot SparkleShare/Nautilus/sparkleshare-nautilus-extension.py +SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py gnome-doc-utils.make /sparkleshare-* data/plugins/*.xml From 1100fa205b0087151c738a151a8abb28150e2da6 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 00:27:25 +0000 Subject: [PATCH 30/47] repo: When listening, make poll interval long for every repo --- SparkleLib/SparkleListenerBase.cs | 4 +-- SparkleLib/SparkleRepoBase.cs | 49 +++++++++++++++++++------------ 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index ef27895e..4ef34a4d 100755 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -165,7 +165,7 @@ namespace SparkleLib { public void OnConnected () { - SparkleHelpers.DebugInfo ("Listener", "Connected to " + Server); + SparkleHelpers.DebugInfo ("Listener", "Listening for announcements on " + Server); if (Connected != null) Connected (); @@ -185,7 +185,7 @@ namespace SparkleLib { public void OnDisconnected () { - SparkleHelpers.DebugInfo ("Listener", "Disonnected from " + Server); + SparkleHelpers.DebugInfo ("Listener", "Signal of " + Server + " lost"); if (Disconnected != null) Disconnected (); diff --git a/SparkleLib/SparkleRepoBase.cs b/SparkleLib/SparkleRepoBase.cs index 7cb2ca73..67dfd2d0 100755 --- a/SparkleLib/SparkleRepoBase.cs +++ b/SparkleLib/SparkleRepoBase.cs @@ -126,6 +126,7 @@ namespace SparkleLib { while (HasUnsyncedChanges) SyncUpBase (); + EnableWatching (); } @@ -232,18 +233,28 @@ namespace SparkleLib { { this.listener = SparkleListenerFactory.CreateListener (Name, Identifier); + if (this.listener.IsConnected) { + this.poll_interval = this.long_interval; + + if (!IsSyncing && CheckForRemoteChanges ()) + SyncDownBase (); + } + // Stop polling when the connection to the irc channel is succesful this.listener.Connected += delegate { this.poll_interval = this.long_interval; this.last_poll = DateTime.Now; - // Check for changes manually one more time - if (CheckForRemoteChanges ()) - SyncDownBase (); + if (!IsSyncing) { - // Push changes that were made since the last disconnect - if (HasUnsyncedChanges) - SyncUpBase (); + // Check for changes manually one more time + if (CheckForRemoteChanges ()) + SyncDownBase (); + + // Push changes that were made since the last disconnect + if (HasUnsyncedChanges) + SyncUpBase (); + } }; // Start polling when the connection to the irc channel is lost @@ -259,30 +270,30 @@ namespace SparkleLib { if (announcement.FolderIdentifier.Equals (identifier) && !announcement.Message.Equals (CurrentRevision)) { - while (this.IsSyncing ()) { + while (this.IsSyncing) System.Threading.Thread.Sleep (100); - } - SparkleHelpers.DebugInfo ("Listener", "Syncing due to Announcement"); - if (!announcement.Message.Equals (CurrentRevision)) - SyncDownBase (); + + SparkleHelpers.DebugInfo ("Listener", "Syncing due to announcement"); + SyncDownBase (); + } else { if (announcement.FolderIdentifier.Equals (identifier)) - SparkleHelpers.DebugInfo ("Listener", "Not syncing message is for current revision"); + SparkleHelpers.DebugInfo ("Listener", "Not syncing, message is for current revision"); } }; // Start listening - if (!this.listener.IsConnected && !this.listener.IsConnecting) { + if (!this.listener.IsConnected && !this.listener.IsConnecting) this.listener.Connect (); - } } - private bool IsSyncing () - { - if (Status == SyncStatus.SyncUp || Status == SyncStatus.SyncDown || this.is_buffering) - return true; - return false; + private bool IsSyncing { + get { + return (Status == SyncStatus.SyncUp || + Status == SyncStatus.SyncDown || + this.is_buffering); + } } From 07b727bb72364bceae7dfa2cdb52c5e2c547a021 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 00:39:29 +0000 Subject: [PATCH 31/47] repo git: we only need to determine CurrentRevision once per session. --- SparkleLib/Git/SparkleRepoGit.cs | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/SparkleLib/Git/SparkleRepoGit.cs b/SparkleLib/Git/SparkleRepoGit.cs index e42b51d2..2bba8c01 100755 --- a/SparkleLib/Git/SparkleRepoGit.cs +++ b/SparkleLib/Git/SparkleRepoGit.cs @@ -30,25 +30,31 @@ namespace SparkleLib { base (path, backend) { } + private string identifier = null; + public override string Identifier { get { + if (string.IsNullOrEmpty (this.identifier)) { - // Because git computes a hash based on content, - // author, and timestamp; it is unique enough to - // use the hash of the first commit as an identifier - // for our folder - SparkleGit git = new SparkleGit (LocalPath, "rev-list --reverse HEAD"); - git.Start (); + // Because git computes a hash based on content, + // author, and timestamp; it is unique enough to + // use the hash of the first commit as an identifier + // for our folder + SparkleGit git = new SparkleGit (LocalPath, "rev-list --reverse HEAD"); + git.Start (); - // Reading the standard output HAS to go before - // WaitForExit, or it will hang forever on output > 4096 bytes - string output = git.StandardOutput.ReadToEnd (); - git.WaitForExit (); + // Reading the standard output HAS to go before + // WaitForExit, or it will hang forever on output > 4096 bytes + string output = git.StandardOutput.ReadToEnd (); + git.WaitForExit (); - if (output.Length < 40) - return null; + if (output.Length < 40) + return null; - return output.Substring (0, 40); + this.identifier = output.Substring (0, 40); + } + + return this.identifier; } } From be14c48ae9a1ca06260d83c8938e27cc12dd1da1 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 00:57:00 +0000 Subject: [PATCH 32/47] repo base: Start initial remote check in a new thread. Prevents blocking an fixes #321 --- SparkleLib/SparkleListenerTcp.cs | 7 ++++--- SparkleLib/SparkleRepoBase.cs | 13 ++++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/SparkleLib/SparkleListenerTcp.cs b/SparkleLib/SparkleListenerTcp.cs index 6f464c13..15268a94 100755 --- a/SparkleLib/SparkleListenerTcp.cs +++ b/SparkleLib/SparkleListenerTcp.cs @@ -130,6 +130,7 @@ namespace SparkleLib { public override void AlsoListenTo (string folder_identifier) { string channel = folder_identifier; + if (!base.channels.Contains (channel)) { base.channels.Add (channel); @@ -139,13 +140,13 @@ namespace SparkleLib { string to_send = "subscribe " + folder_identifier + "\n"; try { - lock (this.mutex) { this.socket.Send (Encoding.UTF8.GetBytes (to_send)); } + } catch (SocketException e) { - SparkleHelpers.DebugInfo ("ListenerTcp", "Could not connect to " + Server + ": " + e.Message); - OnDisconnected (); + SparkleHelpers.DebugInfo ("ListenerTcp", "Could not connect to " + Server + ": " + e.Message); + OnDisconnected (); } } } diff --git a/SparkleLib/SparkleRepoBase.cs b/SparkleLib/SparkleRepoBase.cs index 67dfd2d0..16e82f68 100755 --- a/SparkleLib/SparkleRepoBase.cs +++ b/SparkleLib/SparkleRepoBase.cs @@ -21,6 +21,7 @@ using System.IO; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; +using System.Threading; using System.Timers; using System.Xml; @@ -41,10 +42,10 @@ namespace SparkleLib { private SparkleWatcher watcher; private TimeSpan poll_interval; - private Timer local_timer = new Timer () { Interval = 0.25 * 1000 }; - private Timer remote_timer = new Timer () { Interval = 10 * 1000 }; + private System.Timers.Timer local_timer = new System.Timers.Timer () { Interval = 0.25 * 1000 }; + private System.Timers.Timer remote_timer = new System.Timers.Timer () { Interval = 10 * 1000 }; private DateTime last_poll = DateTime.Now; - private List sizebuffer = new List (); + private List sizebuffer = new List (); private bool has_changed = false; private Object change_lock = new Object (); @@ -236,8 +237,10 @@ namespace SparkleLib { if (this.listener.IsConnected) { this.poll_interval = this.long_interval; - if (!IsSyncing && CheckForRemoteChanges ()) - SyncDownBase (); + new Thread (new ThreadStart (delegate { + if (!IsSyncing && CheckForRemoteChanges ()) + SyncDownBase (); + })).Start (); } // Stop polling when the connection to the irc channel is succesful From f2d8159d360b6047a82c32f08693efa69c80b8fb Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 16:21:45 +0000 Subject: [PATCH 33/47] controller: overwrite the stale public key copy if it exists instead of crashing --- SparkleShare/SparkleControllerBase.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SparkleShare/SparkleControllerBase.cs b/SparkleShare/SparkleControllerBase.cs index 14a269a0..38ee1913 100755 --- a/SparkleShare/SparkleControllerBase.cs +++ b/SparkleShare/SparkleControllerBase.cs @@ -894,7 +894,8 @@ namespace SparkleShare { // Create an easily accessible copy of the public // key in the user's SparkleShare folder File.Copy (key_file_path + ".pub", - Path.Combine (SparklePath, UserName + "'s key.txt")); + Path.Combine (SparklePath, UserName + "'s key.txt"), + true); // Overwriting is allowed } } From dc3258a5f981f5e0588b74ba983003b814498c97 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 16:22:10 +0000 Subject: [PATCH 34/47] setup: remove Add Project... button at end of tutorial --- SparkleShare/Mac/SparkleSetup.cs | 10 ---------- SparkleShare/SparkleSetup.cs | 7 ------- 2 files changed, 17 deletions(-) diff --git a/SparkleShare/Mac/SparkleSetup.cs b/SparkleShare/Mac/SparkleSetup.cs index 226b6e8c..30a531da 100755 --- a/SparkleShare/Mac/SparkleSetup.cs +++ b/SparkleShare/Mac/SparkleSetup.cs @@ -41,7 +41,6 @@ namespace SparkleShare { private NSButton SkipTutorialButton; private NSButton OpenFolderButton; private NSButton FinishButton; - private NSButton AddProjectButton; private NSImage SlideImage; private NSImageView SlideImageView; private NSForm UserInfoForm; @@ -567,14 +566,6 @@ namespace SparkleShare { "to add one by hand." }; - AddProjectButton = new NSButton () { - Title = "Add Project…" - }; - - AddProjectButton.Activated += delegate { - Controller.TutorialPageCompleted (); - }; - FinishButton = new NSButton () { Title = "Finish" }; @@ -600,7 +591,6 @@ namespace SparkleShare { ContentView.AddSubview (SlideImageView); ContentView.AddSubview (AddProjectTextField); Buttons.Add (FinishButton); - Buttons.Add (AddProjectButton); break; } diff --git a/SparkleShare/SparkleSetup.cs b/SparkleShare/SparkleSetup.cs index 24a3a4c2..2125055f 100755 --- a/SparkleShare/SparkleSetup.cs +++ b/SparkleShare/SparkleSetup.cs @@ -548,11 +548,6 @@ namespace SparkleShare { Image slide = SparkleUIHelpers.GetImage ("tutorial-slide-4.png"); - Button add_project_button = new Button (_("Add Hosted Project…")); - add_project_button.Clicked += delegate { - Controller.TutorialPageCompleted (); - }; - Button finish_button = new Button (_("Finish")); finish_button.Clicked += delegate { Close (); @@ -564,8 +559,6 @@ namespace SparkleShare { box.Add (label); Add (box); - - AddButton (add_project_button); AddButton (finish_button); break; From 235be36e8c2e4d7d4f6b69a3cab20a99f8a51afd Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 16:58:44 +0000 Subject: [PATCH 35/47] setup mac: prettier text fields for initial setup --- SparkleShare/Mac/SparkleSetup.cs | 59 +++++++++++++++++++-------- SparkleShare/Mac/SparkleStatusIcon.cs | 3 +- 2 files changed, 45 insertions(+), 17 deletions(-) diff --git a/SparkleShare/Mac/SparkleSetup.cs b/SparkleShare/Mac/SparkleSetup.cs index 30a531da..605b062f 100755 --- a/SparkleShare/Mac/SparkleSetup.cs +++ b/SparkleShare/Mac/SparkleSetup.cs @@ -45,9 +45,13 @@ namespace SparkleShare { private NSImageView SlideImageView; private NSForm UserInfoForm; private NSProgressIndicator ProgressIndicator; + private NSTextField EmailLabel; + private NSTextField EmailTextField; + private NSTextField FullNameTextField; + private NSTextField FullNameLabel; private NSTextField AddressTextField; - private NSTextField PathTextField; private NSTextField AddressLabel; + private NSTextField PathTextField; private NSTextField PathLabel; private NSTextField PathHelpLabel; private NSTextField AddProjectTextField; @@ -72,18 +76,36 @@ namespace SparkleShare { Description = "Before we can create a SparkleShare folder on this " + "computer, we need some information from you."; - UserInfoForm = new NSForm (new RectangleF (250, Frame.Height - 280, 350, 64)); - UserInfoForm.AddEntry ("Full Name:"); - UserInfoForm.AddEntry ("Email Address:"); + FullNameLabel = new NSTextField () { + Alignment = NSTextAlignment.Right, + BackgroundColor = NSColor.WindowBackground, + Bordered = false, + Editable = false, + Frame = new RectangleF (165, Frame.Height - 234, 160, 17), + StringValue = "Full Name:", + Font = SparkleUI.Font + }; - UserInfoForm.CellSize = new SizeF (280, 22); - UserInfoForm.IntercellSpacing = new SizeF (4, 4); - UserInfoForm.Cells [0].LineBreakMode = NSLineBreakMode.TruncatingTail; - UserInfoForm.Cells [1].LineBreakMode = NSLineBreakMode.TruncatingTail; + FullNameTextField = new NSTextField () { + Frame = new RectangleF (330, Frame.Height - 238, 196, 22), + StringValue = Controller.GuessedUserName + }; - UserInfoForm.Cells [0].StringValue = Controller.GuessedUserName; - UserInfoForm.Cells [1].StringValue = Controller.GuessedUserEmail; + EmailLabel = new NSTextField () { + Alignment = NSTextAlignment.Right, + BackgroundColor = NSColor.WindowBackground, + Bordered = false, + Editable = false, + Frame = new RectangleF (165, Frame.Height - 264, 160, 17), + StringValue = "Email:", + Font = SparkleUI.Font + }; + + EmailTextField = new NSTextField () { + Frame = new RectangleF (330, Frame.Height - 268, 196, 22), + StringValue = Controller.GuessedUserEmail + }; // TODO: Ugly hack, do properly with events timer = new Timer () { @@ -99,18 +121,18 @@ namespace SparkleShare { timer.Stop (); timer = null; - string full_name = UserInfoForm.Cells [0].StringValue.Trim (); - string email = UserInfoForm.Cells [1].StringValue.Trim (); + string full_name = FullNameTextField.StringValue.Trim (); + string email = EmailTextField.StringValue.Trim (); Controller.SetupPageCompleted (full_name, email); }; timer.Elapsed += delegate { InvokeOnMainThread (delegate { - bool name_is_valid = !UserInfoForm.Cells [0].StringValue.Trim ().Equals (""); + bool name_is_valid = !FullNameTextField.StringValue.Trim ().Equals (""); bool email_is_valid = Program.Controller.IsValidEmail ( - UserInfoForm.Cells [1].StringValue.Trim ()); + EmailTextField.StringValue.Trim ()); ContinueButton.Enabled = (name_is_valid && email_is_valid); }); @@ -118,7 +140,11 @@ namespace SparkleShare { timer.Start (); - ContentView.AddSubview (UserInfoForm); + ContentView.AddSubview (FullNameLabel); + ContentView.AddSubview (FullNameTextField); + ContentView.AddSubview (EmailLabel); + ContentView.AddSubview (EmailTextField); + Buttons.Add (ContinueButton); break; @@ -160,7 +186,8 @@ namespace SparkleShare { PathTextField = new NSTextField () { Frame = new RectangleF (190 + 196 + 16, Frame.Height - 336, 196, 22), StringValue = Controller.PreviousPath, - Enabled = (Controller.SelectedPlugin.Path == null) + Enabled = (Controller.SelectedPlugin.Path == null), + Bezeled = true }; diff --git a/SparkleShare/Mac/SparkleStatusIcon.cs b/SparkleShare/Mac/SparkleStatusIcon.cs index 69949bd2..55563d69 100755 --- a/SparkleShare/Mac/SparkleStatusIcon.cs +++ b/SparkleShare/Mac/SparkleStatusIcon.cs @@ -201,7 +201,8 @@ namespace SparkleShare { FolderMenuItems = new NSMenuItem [1]; FolderMenuItems [0] = new NSMenuItem () { - Title = "No projects yet" + Title = "No projects yet", + Enabled = false }; } From cce819507566578aafe0cced5c97f19c11052b83 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 17:07:17 +0000 Subject: [PATCH 36/47] mac: Fix warning --- SparkleShare/Mac/SparkleSetup.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/SparkleShare/Mac/SparkleSetup.cs b/SparkleShare/Mac/SparkleSetup.cs index 605b062f..f03cc37b 100755 --- a/SparkleShare/Mac/SparkleSetup.cs +++ b/SparkleShare/Mac/SparkleSetup.cs @@ -43,7 +43,6 @@ namespace SparkleShare { private NSButton FinishButton; private NSImage SlideImage; private NSImageView SlideImageView; - private NSForm UserInfoForm; private NSProgressIndicator ProgressIndicator; private NSTextField EmailLabel; private NSTextField EmailTextField; From e3cb5298168c9025b3356513eb2f47c687277bf3 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 17:51:46 +0000 Subject: [PATCH 37/47] about controller: actually compare the major.minor.micro values instead of a Equals() on strings --- SparkleShare/SparkleAboutController.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/SparkleShare/SparkleAboutController.cs b/SparkleShare/SparkleAboutController.cs index 5495dfc9..801d84a6 100755 --- a/SparkleShare/SparkleAboutController.cs +++ b/SparkleShare/SparkleAboutController.cs @@ -71,19 +71,26 @@ namespace SparkleShare { if (args.Error != null) return; - string new_version = args.Result.Trim (); + int running_version = int.Parse ( + "" + RunningVersion [0] + RunningVersion [2] + RunningVersion [4] + ); + + string result = args.Result.Trim (); + int new_version = int.Parse ( + "" + result [0] + result [2] + result [4] + ); // Add a little delay, making it seems we're // actually doing hard work Thread.Sleep (2 * 1000); - if (RunningVersion.Equals (new_version)) { + if (running_version >= new_version) { if (VersionUpToDateEvent != null) VersionUpToDateEvent (); } else { if (NewVersionEvent != null) - NewVersionEvent (new_version); + NewVersionEvent (result); } this.version_checker.Start (); From 7e18e6d3cbe8a9e636562ee3239e6ec4a976345c Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 18:04:13 +0000 Subject: [PATCH 38/47] repo: put a lock on toggling the watcher. Should fix #358 --- SparkleLib/SparkleRepoBase.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/SparkleLib/SparkleRepoBase.cs b/SparkleLib/SparkleRepoBase.cs index 16e82f68..1682b0d5 100755 --- a/SparkleLib/SparkleRepoBase.cs +++ b/SparkleLib/SparkleRepoBase.cs @@ -42,12 +42,13 @@ namespace SparkleLib { private SparkleWatcher watcher; private TimeSpan poll_interval; - private System.Timers.Timer local_timer = new System.Timers.Timer () { Interval = 0.25 * 1000 }; - private System.Timers.Timer remote_timer = new System.Timers.Timer () { Interval = 10 * 1000 }; + private System.Timers.Timer local_timer = new System.Timers.Timer () { Interval = 0.25 * 1000 }; + private System.Timers.Timer remote_timer = new System.Timers.Timer () { Interval = 10 * 1000 }; private DateTime last_poll = DateTime.Now; - private List sizebuffer = new List (); + private List sizebuffer = new List (); private bool has_changed = false; private Object change_lock = new Object (); + private Object watch_lock = new Object (); protected SparkleListenerBase listener; protected SyncStatus status; @@ -519,15 +520,19 @@ namespace SparkleLib { public void DisableWatching () { - this.watcher.EnableRaisingEvents = false; - this.local_timer.Stop (); + lock (watch_lock) { + this.watcher.EnableRaisingEvents = false; + this.local_timer.Stop (); + } } public void EnableWatching () { - this.watcher.EnableRaisingEvents = true; - this.local_timer.Start (); + lock (watch_lock) { + this.watcher.EnableRaisingEvents = true; + this.local_timer.Start (); + } } From 862de9828c125ce8638a1c9fb726da009e75a7ee Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 18:45:34 +0000 Subject: [PATCH 39/47] Update NEWS for 0.4.0 release --- NEWS | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 08f8d4e8..7103f424 100755 --- a/NEWS +++ b/NEWS @@ -1,5 +1,18 @@ 0.4.0 for Linux and Mac (Sun Nov 12 2011): - Hylke: bla bla derp derp + Hylke: It has been a while since the last release. Since so many + things changed, and it being (softly) incompatible with 0.2, I decided + to call it 0.4. Here are the most important improvements: + + - Support OS X Lion + - Revamped "Add Hosted Project..." dialog + - First run tutorial + - Clicking notifications opens the event log + - Support for organisation/host plugins + - Adding empty folders now works + - More useful error reporting + - Progress bar on the initial sync, and a button to cancel + - Replace IRC by a custom protocol as the default notification system + - Many many fixes for crashes and bugs 0.2.5 for Linux and Mac (Mon Jul 25 2011): From 5429d38cdfbbe85531c0ca40da15be96ab0f891a Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 18:50:24 +0000 Subject: [PATCH 40/47] Fix last warnings on linux --- SparkleShare/SparkleAbout.cs | 3 --- SparkleShare/SparkleSetup.cs | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/SparkleShare/SparkleAbout.cs b/SparkleShare/SparkleAbout.cs index 6d0a18f9..6a35cf78 100755 --- a/SparkleShare/SparkleAbout.cs +++ b/SparkleShare/SparkleAbout.cs @@ -97,9 +97,6 @@ namespace SparkleShare { private void CreateAbout () { - Gdk.Color color = Style.Foreground (StateType.Insensitive); - string secondary_text_color = SparkleUIHelpers.GdkColorToHex (color); - Label version = new Label () { Markup = "" + "version " + Controller.RunningVersion + diff --git a/SparkleShare/SparkleSetup.cs b/SparkleShare/SparkleSetup.cs index 2125055f..84a7ffd8 100755 --- a/SparkleShare/SparkleSetup.cs +++ b/SparkleShare/SparkleSetup.cs @@ -218,7 +218,7 @@ namespace SparkleShare { TreeSelection selection = (sender as TreeView).Selection; selection.GetSelected (out model, out iter); - SparklePlugin plugin = (SparklePlugin) model.GetValue (iter, 2); + // SparklePlugin plugin = (SparklePlugin) model.GetValue (iter, 2); int selected_path = int.Parse (model.GetPath (iter).ToString ()); Controller.SelectedPluginChanged (selected_path); From 4869dd1e3afc8bbaba0559aa05edf42f67439086 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 19:00:45 +0000 Subject: [PATCH 41/47] update NEWS --- NEWS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NEWS b/NEWS index 7103f424..6b8eba0b 100755 --- a/NEWS +++ b/NEWS @@ -14,6 +14,10 @@ - Replace IRC by a custom protocol as the default notification system - Many many fixes for crashes and bugs + Travis: + - Nautilus 3.x plugin + - Bugfixes + 0.2.5 for Linux and Mac (Mon Jul 25 2011): From 8d315b7fa95e409e43ddbde65770fb2759faa092 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Sun, 13 Nov 2011 22:03:13 +0000 Subject: [PATCH 42/47] listener: point to a DNS record instead of an IP address --- SparkleLib/SparkleListenerBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index 4ef34a4d..bba5b171 100755 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -52,7 +52,7 @@ namespace SparkleLib { // don't have your own. All data needed to connect is hashed and // we don't store any personal information ever - uri = "tcp://204.62.14.135:1986"; // TODO: announcements.sparkleshare.org + uri = "tcp://notifications.sparkleshare.org:1986"; } Uri announce_uri = new Uri (uri); From 8328c0a4757f489c144cf9dd5a75f7d101c0bd1a Mon Sep 17 00:00:00 2001 From: Sascha Lewandowski Date: Mon, 14 Nov 2011 10:46:50 +0100 Subject: [PATCH 43/47] Update German translation from Transifex --- po/de.po | 60 +++++++++++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/po/de.po b/po/de.po index f899ff4f..9ce2741f 100755 --- a/po/de.po +++ b/po/de.po @@ -10,15 +10,16 @@ # kxnop , 2011. # Łukasz Jernaś , 2011. # , 2011. +# Sascha , 2011. # , 2011. # , 2011. msgid "" msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-10-30 15:50+0100\n" -"PO-Revision-Date: 2011-11-10 15:27+0000\n" -"Last-Translator: MarkusLitz \n" +"POT-Creation-Date: 2011-11-12 18:42+0100\n" +"PO-Revision-Date: 2011-11-14 07:55+0000\n" +"Last-Translator: iwsnipy \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -47,7 +48,7 @@ msgstr "Github" #: ../data/plugins/gitorious.xml.in.h:1 msgid "/project/repository" -msgstr "" +msgstr "/Projekt/Ablage" #: ../data/plugins/gitorious.xml.in.h:2 msgid "Gitorious" @@ -59,11 +60,11 @@ msgstr "" #: ../data/plugins/gnome.xml.in.h:1 msgid "/project" -msgstr "" +msgstr "/Projekt" #: ../data/plugins/gnome.xml.in.h:2 msgid "A free and easy interface for your computer" -msgstr "" +msgstr "Eine freie und einfache Schnittstelle für deinen Computer" #: ../data/plugins/gnome.xml.in.h:3 msgid "The GNOME Project" @@ -71,7 +72,7 @@ msgstr "Das GNOME Projekt" #: ../data/plugins/own-server.xml.in.h:1 msgid "/path/to/project" -msgstr "" +msgstr "/Pfad/zum/Projekt" #: ../data/plugins/own-server.xml.in.h:2 msgid "Everything under my control" @@ -81,47 +82,52 @@ msgstr "Alles unter meiner Kontrolle" msgid "On my own server" msgstr "Auf meinem eigenen Server" -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:70 -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:88 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:84 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:102 #: ../SparkleShare/SparkleSetup.cs:75 ../SparkleShare/SparkleStatusIcon.cs:75 #: ../SparkleShare/SparkleStatusIcon.cs:89 msgid "Welcome to SparkleShare!" msgstr "Willkommen bei SparkleShare!" -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:72 -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:90 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:86 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:104 #: ../SparkleShare/SparkleStatusIcon.cs:77 #: ../SparkleShare/SparkleStatusIcon.cs:91 msgid "Up to date" msgstr "Aktualisiert" -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:99 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:113 #: ../SparkleShare/SparkleStatusIcon.cs:106 msgid "Syncing…" msgstr "Synchronisiere..." -#: ../SparkleShare/Mac/SparkleStatusIcon.cs:109 +#: ../SparkleShare/Mac/SparkleStatusIcon.cs:123 #: ../SparkleShare/SparkleStatusIcon.cs:116 msgid "Not everything is synced" msgstr "Es ist nicht alles synchronisiert" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:113 +#: ../SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in:140 msgid "Copy Web Link" msgstr "Web Link kopieren" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:114 +#: ../SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in:141 msgid "Copy the web address of this file to the clipboard" msgstr "Die Internetadresse dieser Datei in die Zwischenablage kopieren" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:147 +#: ../SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in:173 msgid "Get Earlier Version" msgstr "Frühere Version abrufen" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:148 +#: ../SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in:174 msgid "Make a copy of an earlier version in this folder" msgstr "Erstelle eine Kopie einer früheren Version in diesem Verzeichnis" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:161 +#: ../SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in:187 msgid "Select to get a copy of this version" msgstr "Selektieren, um eine Kopie dieser Version abzurufen" @@ -197,42 +203,42 @@ msgstr "Sie verwenden die aktuelle Version." msgid "Checking for updates..." msgstr "Suche Aktualisierungen..." -#: ../SparkleShare/SparkleControllerBase.cs:493 +#: ../SparkleShare/SparkleControllerBase.cs:494 msgid "dddd, MMMM d, yyyy" msgstr "" -#: ../SparkleShare/SparkleControllerBase.cs:499 +#: ../SparkleShare/SparkleControllerBase.cs:500 msgid "dddd, MMMM d" msgstr "" -#: ../SparkleShare/SparkleControllerBase.cs:707 +#: ../SparkleShare/SparkleControllerBase.cs:708 #, csharp-format msgid "added ‘{0}’" -msgstr "" +msgstr "Hinzugefügt '{0}'" -#: ../SparkleShare/SparkleControllerBase.cs:712 +#: ../SparkleShare/SparkleControllerBase.cs:713 #, csharp-format msgid "moved ‘{0}’" msgstr "'{0}' verschoben" -#: ../SparkleShare/SparkleControllerBase.cs:717 +#: ../SparkleShare/SparkleControllerBase.cs:718 #, csharp-format msgid "edited ‘{0}’" -msgstr "" +msgstr "Bearbeitet '{0}'" -#: ../SparkleShare/SparkleControllerBase.cs:722 +#: ../SparkleShare/SparkleControllerBase.cs:723 #, csharp-format msgid "deleted ‘{0}’" -msgstr "" +msgstr "Gelöscht '{0}'" -#: ../SparkleShare/SparkleControllerBase.cs:731 +#: ../SparkleShare/SparkleControllerBase.cs:732 #, csharp-format msgid "and {0} more" msgid_plural "and {0} more" msgstr[0] "" msgstr[1] "" -#: ../SparkleShare/SparkleControllerBase.cs:735 +#: ../SparkleShare/SparkleControllerBase.cs:736 msgid "did something magical" msgstr "" @@ -373,6 +379,8 @@ msgid "" "It shows the syncing process status, and contains links to your projects and" " the event log." msgstr "" +"Es zeigt den Synchronisierungsstatus und beinhaltet Links zu deinem Projekt " +"und deinen letzten Ereignissen." #: ../SparkleShare/SparkleSetup.cs:538 msgid "Adding projects to SparkleShare" @@ -383,6 +391,8 @@ msgid "" "Just click this button when you see it on the web, and the project will be " "automatically added:" msgstr "" +"Klicken den Button, wenn du ihn im Internet siehst, und das Projekt wird " +"automatisch hinzu gefügt:" #: ../SparkleShare/SparkleSetup.cs:542 msgid "" @@ -406,7 +416,7 @@ msgstr "Bislang keine Projekte " #: ../SparkleShare/SparkleStatusIcon.cs:262 msgid "Open Recent Events" -msgstr "" +msgstr "Öffne letzte Ereignisse" #: ../SparkleShare/SparkleStatusIcon.cs:282 msgid "Turn Notifications Off" From 11dcc996659cb54334f87a8cc35a268bf3d7cdc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 14 Nov 2011 11:37:41 +0100 Subject: [PATCH 44/47] mac: update DIST_EXTRA Some files don't exist anymore and some hadn't been added. Refesh the list and put them in alpha order. --- SparkleShare/Mac/Makefile.am | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/SparkleShare/Mac/Makefile.am b/SparkleShare/Mac/Makefile.am index 4313776a..c7df923a 100755 --- a/SparkleShare/Mac/Makefile.am +++ b/SparkleShare/Mac/Makefile.am @@ -1,16 +1,20 @@ EXTRA_DIST = \ AppDelegate.cs \ + Growl.framework \ + Growl.plist \ Info.plist \ MainMenu.xib \ MainMenu.xib.designer.cs \ SparkleAbout.cs \ SparkleAlert.cs \ - SparkleSetup.cs \ + SparkleBadger.cs \ + SparkleBubbles.cs \ + SparkleController.cs \ SparkleEventLog.cs \ - SparkleMacController.cs \ SparkleMacWatcher.cs \ + SparkleSetup.cs \ + SparkleSetupWindow.cs \ SparkleShare.csproj \ SparkleShare.sln \ SparkleStatusIcon.cs \ - SparkleUI.cs \ - SparkleSetupWindow.cs + SparkleUI.cs From 22626c7ae959a9fb5a25fd8fc29caaec6af1c994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 14 Nov 2011 11:43:16 +0100 Subject: [PATCH 45/47] data: include the .xml.in files in the dist tarball --- data/plugins/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/plugins/Makefile.am b/data/plugins/Makefile.am index 8bf7b4ab..45a936af 100644 --- a/data/plugins/Makefile.am +++ b/data/plugins/Makefile.am @@ -17,7 +17,7 @@ dist_plugins_DATA = \ pluginsdir = $(pkgdatadir)/plugins/ -EXTRA_DIST=$(xml_in_files) $(xml_DATA) +EXTRA_DIST=$(dist_plugins_in_files) $(xml_DATA) MAINTAINERCLEANFILES = \ Makefile.in From 0fb6c68fb919f067e0eb110295c6e32e74b3302e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 14 Nov 2011 11:57:59 +0100 Subject: [PATCH 46/47] po: add the nautilus3 extension to POTFILES.skip --- po/POTFILES.skip | 1 + 1 file changed, 1 insertion(+) diff --git a/po/POTFILES.skip b/po/POTFILES.skip index e340ffb1..0ef022e2 100755 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -1,3 +1,4 @@ MacCore/src/Options.cs SparkleShare/Nautilus/sparkleshare-nautilus-extension.py +SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py SparkleLib/SparkleOptions.cs From a1ec17d17a88a7e54a81c0d4ce7e0097489c4d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 14 Nov 2011 13:01:05 +0100 Subject: [PATCH 47/47] Add missing shebang to nautilus extensions --- SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in | 1 + SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in | 1 + 2 files changed, 2 insertions(+) diff --git a/SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in b/SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in index a43d761a..717761bc 100755 --- a/SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in +++ b/SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in @@ -1,3 +1,4 @@ +#!/usr/bin/python # SparkleShare, an instant update workflow to Git. # Copyright (C) 2010 Hylke Bons # diff --git a/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in b/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in index 4d2164fa..e4de79c7 100755 --- a/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in +++ b/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in @@ -1,3 +1,4 @@ +#!/usr/bin/python # SparkleShare, an instant update workflow to Git. # Copyright (C) 2010 Hylke Bons #