diff --git a/AUTHORS b/AUTHORS index 230a6c16..fb859a62 100644 --- a/AUTHORS +++ b/AUTHORS @@ -4,7 +4,9 @@ Maintainer: Contributors: + Alex Hudson Andreas Nilsson + Benjamin Podszun Bertrand Lorentz Garrett LeSage Jakub Steiner diff --git a/FriendFace/FriendFace.csproj b/FriendFace/FriendFace.csproj index 522e24e6..6d63a00f 100644 --- a/FriendFace/FriendFace.csproj +++ b/FriendFace/FriendFace.csproj @@ -1 +1,50 @@ - Debug AnyCPU 8.0.50727 2.0 {3BA434AF-494F-4F5D-9D21-B7BD24FD67AF} Exe FriendFace FriendFace true full false bin\Debug DEBUG prompt 4 none false bin\Release prompt 4 \ No newline at end of file + + + + Debug + AnyCPU + 8.0.50727 + 2.0 + {3BA434AF-494F-4F5D-9D21-B7BD24FD67AF} + Library + FriendFace + FriendFace + + + true + full + false + ..\bin + DEBUG + prompt + 4 + + + none + false + ..\bin + prompt + 4 + + + + gtk-sharp-2.0 + + + gtk-sharp-2.0 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/FriendFace/GravatarIconProvider.cs b/FriendFace/GravatarIconProvider.cs index 1eee1f02..a958c5c0 100644 --- a/FriendFace/GravatarIconProvider.cs +++ b/FriendFace/GravatarIconProvider.cs @@ -15,7 +15,6 @@ // along with this program. If not, see .using Gtk; using Gtk; -using Mono.Unix; using System; using System.IO; using System.Net; diff --git a/FriendFace/IconProvider.cs b/FriendFace/IconProvider.cs index 4f16fefb..e23a5d95 100644 --- a/FriendFace/IconProvider.cs +++ b/FriendFace/IconProvider.cs @@ -17,7 +17,6 @@ // along with this program. If not, see .using Gtk; using Gtk; -using Mono.Unix; using System; using System.IO; diff --git a/NotifySharp/Makefile.am b/NotifySharp/Makefile.am index edc94265..c01305d6 100644 --- a/NotifySharp/Makefile.am +++ b/NotifySharp/Makefile.am @@ -4,7 +4,7 @@ TARGET = library LINK = $(REF_NOTIFY_SHARP) -SOURCES = \ +SOURCES = \ Global.cs \ Notification.cs diff --git a/NotifySharp/NotifySharp.csproj b/NotifySharp/NotifySharp.csproj index 4562b26f..f7301a81 100644 --- a/NotifySharp/NotifySharp.csproj +++ b/NotifySharp/NotifySharp.csproj @@ -14,7 +14,7 @@ true full false - bin\Debug + ..\bin DEBUG prompt 4 @@ -22,7 +22,7 @@ none false - bin\Release + ..\bin prompt 4 @@ -31,11 +31,36 @@ - - - - - + + ndesk-dbus-1.0 + + + ndesk-dbus-glib-1.0 + + + gtk-sharp-2.0 + + + glib-sharp-2.0 + + + gtk-sharp-2.0 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SparkleDiff/LeftRevisionView.cs b/SparkleDiff/LeftRevisionView.cs deleted file mode 100644 index 402112be..00000000 --- a/SparkleDiff/LeftRevisionView.cs +++ /dev/null @@ -1,36 +0,0 @@ -// SparkleShare, an instant update workflow to Git. -// Copyright (C) 2010 Hylke Bons -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -using Gtk; - -namespace SparkleShare { - - public class LeftRevisionView : RevisionView { - - public LeftRevisionView (string [] revisions) : base (revisions) { - - ComboBox.Active = 1; - - if (Direction == Gtk.TextDirection.Ltr) - ScrolledWindow.Placement = CornerType.TopRight; - else - ScrolledWindow.Placement = CornerType.TopLeft; - - } - - } - -} diff --git a/SparkleDiff/RevisionView.cs b/SparkleDiff/RevisionView.cs index 9b4be802..49cec875 100644 --- a/SparkleDiff/RevisionView.cs +++ b/SparkleDiff/RevisionView.cs @@ -117,10 +117,12 @@ namespace SparkleShare { // Example: from "rgb:0,0,0" to "#000000" public string GdkColorToHex (Gdk.Color color) { + return String.Format("#{0:X2}{1:X2}{2:X2}", (int) Math.Truncate(color.Red / 256.00), (int) Math.Truncate(color.Green / 256.00), (int) Math.Truncate(color.Blue / 256.00)); + } diff --git a/SparkleShare.sln b/SparkleShare.sln index af6794fc..3d33d811 100644 --- a/SparkleShare.sln +++ b/SparkleShare.sln @@ -5,8 +5,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SparkleShare", "SparkleShar EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NotifySharp", "NotifySharp\NotifySharp.csproj", "{005CCA8E-DFBF-464A-B6DA-452C62D4589C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpSSH", "SharpSSH\SharpSSH.csproj", "{BB50B7E2-4622-4D8B-B7FF-5E5D8F02D91F}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FriendFace", "FriendFace\FriendFace.csproj", "{3BA434AF-494F-4F5D-9D21-B7BD24FD67AF}" EndProject Global @@ -27,13 +25,10 @@ Global {728483AA-E34B-4441-BF2C-C8BC2901E4E0}.Debug|Any CPU.Build.0 = Debug|Any CPU {728483AA-E34B-4441-BF2C-C8BC2901E4E0}.Release|Any CPU.ActiveCfg = Release|Any CPU {728483AA-E34B-4441-BF2C-C8BC2901E4E0}.Release|Any CPU.Build.0 = Release|Any CPU - {BB50B7E2-4622-4D8B-B7FF-5E5D8F02D91F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BB50B7E2-4622-4D8B-B7FF-5E5D8F02D91F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BB50B7E2-4622-4D8B-B7FF-5E5D8F02D91F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BB50B7E2-4622-4D8B-B7FF-5E5D8F02D91F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution StartupItem = SparkleShare\SparkleShare.csproj + outputpath = bin name = SparkleShare EndGlobalSection EndGlobal diff --git a/SparkleShare/Makefile.am b/SparkleShare/Makefile.am index 7dc70ae9..0bd4c5cd 100644 --- a/SparkleShare/Makefile.am +++ b/SparkleShare/Makefile.am @@ -7,20 +7,20 @@ TARGET = exe LINK = $(REF_SPARKLESHARE) -SOURCES = \ -Defines.cs \ -SparkleBubble.cs \ -SparkleDialog.cs \ -SparkleHelpers.cs \ -SparkleIntro.cs \ -SparklePaths.cs \ -SparklePlatform.cs \ -SparkleRepo.cs \ -SparkleShare.cs \ -SparkleSpinner.cs \ -SparkleStatusIcon.cs \ -SparkleUI.cs \ -SparkleWindow.cs +SOURCES = \ + Defines.cs \ + SparkleBubble.cs \ + SparkleFetcher.cs \ + SparkleHelpers.cs \ + SparkleIntro.cs \ + SparklePaths.cs \ + SparklePlatform.cs \ + SparkleRepo.cs \ + SparkleShare.cs \ + SparkleSpinner.cs \ + SparkleStatusIcon.cs \ + SparkleUI.cs \ + SparkleWindow.cs include $(top_srcdir)/build/build.mk diff --git a/SparkleShare/SparkleDialog.cs b/SparkleShare/SparkleDialog.cs deleted file mode 100644 index e3017d3d..00000000 --- a/SparkleShare/SparkleDialog.cs +++ /dev/null @@ -1,247 +0,0 @@ -// SparkleShare, an instant update workflow to Git. -// Copyright (C) 2010 Hylke Bons -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -using Gtk; -using Mono.Unix; -using SparkleShare; -using System; -using System.Diagnostics; -using System.IO; -using System.Text.RegularExpressions; - -namespace SparkleShare { - - // A dialog where the user can enter a folder - // name and url to sync changes with - public class SparkleDialog : Window { - - // Short alias for the translations - public static string _ (string s) - { - return Catalog.GetString (s); - } - - private Button AddButton; - private ComboBoxEntry RemoteUrlCombo; - - public SparkleDialog (string Url) : base ("") - { - BorderWidth = 12; - IconName = "folder-sparkleshare"; - WidthRequest = 320; - Title = "SparkleShare"; - - SetPosition (WindowPosition.Center); - - VBox VBox = new VBox (false, 0); - - Label RemoteUrlLabel = new Label (_("Address of remote SparkleShare folder:")); - RemoteUrlLabel.Xalign = 0; - - ListStore Defaults = new ListStore (typeof (string)); - - RemoteUrlCombo = new ComboBoxEntry (Defaults, 0); - - if (Url.Equals ("")) - RemoteUrlCombo.Entry.Text = "ssh://"; - else - RemoteUrlCombo.Entry.Text = Url; - - RemoteUrlCombo.Entry.Completion = new EntryCompletion (); - RemoteUrlCombo.Entry.Completion.Model = Defaults; - - RemoteUrlCombo.Entry.Completion.InlineCompletion = true; - RemoteUrlCombo.Entry.Completion.PopupCompletion = true; - RemoteUrlCombo.Entry.Completion.TextColumn = 0; - RemoteUrlCombo.Entry.Changed += CheckFields; - - // Add some preset addresses - Defaults.AppendValues ("ssh://git@github.com/"); - Defaults.AppendValues ("ssh://git@git.gnome.org/"); - Defaults.AppendValues ("ssh://git@fedorahosted.org/"); - Defaults.AppendValues ("ssh://git@gitorious.org/"); - - HButtonBox ButtonBox = new HButtonBox (); - ButtonBox.Layout = ButtonBoxStyle.End; - ButtonBox.Spacing = 6; - ButtonBox.BorderWidth = 0; - - AddButton = new Button (_("Add Folder")); - AddButton.Clicked += CloneRepo; - AddButton.Sensitive = false; - - Button CancelButton = new Button (Stock.Cancel); - - CancelButton.Clicked += delegate { - Destroy (); - }; - - ButtonBox.Add (CancelButton); - ButtonBox.Add (AddButton); - - VBox.PackStart (RemoteUrlLabel, false, false, 0); - VBox.PackStart (RemoteUrlCombo, false, false, 12); - VBox.PackStart (ButtonBox, false, false, 0); - - Add (VBox); - - ShowAll (); - - } - - // Clones a remote repo - public void CloneRepo (object o, EventArgs args) { - -// SparkleUI.NotificationIcon.SetSyncingState (); - - HideAll (); - - string RepoRemoteUrl = RemoteUrlCombo.Entry.Text; - RepoRemoteUrl = SparkleToGitUrl (RepoRemoteUrl); - - int SlashPos = RepoRemoteUrl.LastIndexOf ("/"); - int ColumnPos = RepoRemoteUrl.LastIndexOf (":"); - - // Check whether a "/" or ":" is used to separate the - // repo name from the domain. - string RepoName; - if (SlashPos > ColumnPos) - RepoName = RepoRemoteUrl.Substring (SlashPos + 1); - else - RepoName = RepoRemoteUrl.Substring (ColumnPos + 1); - - SparkleBubble SyncingBubble; - SyncingBubble = new SparkleBubble (String.Format(_("Syncing folder ‘{0}’"), RepoName), - _("SparkleShare will notify you when this is done.")); - - SyncingBubble.AddAction ("", _("Dismiss"), - delegate { - SyncingBubble.Close (); - }); - - SyncingBubble.Show (); - - Process Process = new Process (); - Process.EnableRaisingEvents = true; - Process.StartInfo.RedirectStandardOutput = true; - Process.StartInfo.UseShellExecute = false; - - SparkleHelpers.DebugInfo ("Config", "[" + RepoName + "] Cloning repository..."); - - // TODO: don't freeze the UI while cloning a repo - // Clone into the system's temporary folder - Process.StartInfo.FileName = "git"; - Process.StartInfo.WorkingDirectory = SparklePaths.SparkleTmpPath; - Process.StartInfo.Arguments = String.Format ("clone {0} {1}", - RepoRemoteUrl, - RepoName); - - Process.Start (); - Process.WaitForExit (); - - if (Process.ExitCode != 0) { - - SparkleBubble ErrorBubble; - ErrorBubble = new SparkleBubble (String.Format(_("Something went wrong while syncing ‘{0}’"), RepoName), - "Please double check the address and\n" + - "network connection."); - - try { - Directory.Delete (SparkleHelpers.CombineMore (SparklePaths.SparkleTmpPath, RepoName)); - } catch (System.IO.DirectoryNotFoundException) { - SparkleHelpers.DebugInfo ("Config", "[" + RepoName + "] Temporary directory did not exist..."); - } - - ErrorBubble.AddAction ("", _("Try Again…"), - delegate { - SparkleDialog SparkleDialog = new SparkleDialog (RepoRemoteUrl); - SparkleDialog.ShowAll (); - }); - ErrorBubble.Show (); - - } else { - - SparkleHelpers.DebugInfo ("Git", "[" + RepoName + "] Repository cloned"); - - Directory.Move (SparkleHelpers.CombineMore (SparklePaths.SparkleTmpPath, RepoName), - SparkleHelpers.CombineMore (SparklePaths.SparklePath, RepoName)); - - - // Add a .gitignore file to the repo - TextWriter Writer = new StreamWriter (SparkleHelpers.CombineMore (SparklePaths.SparklePath, RepoName, - ".gitignore")); - Writer.WriteLine ("*~"); // Ignore gedit swap files - Writer.WriteLine (".*.sw?"); // Ignore vi swap files - Writer.WriteLine (".DS_store"); // Ignore OSX's invisible directories - Writer.Close (); - - File.Create (SparkleHelpers.CombineMore (SparklePaths.SparklePath, RepoName, - ".emblems")); - - SparkleShare.SparkleUI.UpdateRepositories (); - - // Show a confirmation notification - SparkleBubble FinishedBubble; - FinishedBubble = new SparkleBubble (String.Format(_("Successfully synced folder ‘{0}’"), RepoName), - _("Now make great stuff happen!")); - - FinishedBubble.AddAction ("", _("Open Folder"), - delegate { - Process.StartInfo.FileName = "xdg-open"; - Process.StartInfo.Arguments = SparkleHelpers.CombineMore (SparklePaths.SparklePath, RepoName); - Process.Start (); - } ); - FinishedBubble.Show (); - - } - - } - - // Enables the Add button when the fields are - // filled in correctly - public void CheckFields (object o, EventArgs args) { - if (IsGitUrl (RemoteUrlCombo.Entry.Text)) - AddButton.Sensitive = true; - else - AddButton.Sensitive = false; - } - - - // Convert the more human readable sparkle:// url to something Git can use. - // Example: sparkle://gitorious.org/sparkleshare ssh://git@gitorious.org/sparkleshare - public static string SparkleToGitUrl (string Url) - { - if (Url.StartsWith ("sparkle://")) - Url = Url.Replace ("sparkle://", "ssh://git@"); - - // Usually don't need the ".git" at the end. - // It looks ugly as a folder too. - if (Url.EndsWith (".git")) - Url = Url.Substring (0, Url.Length - 4); - - return Url; - } - - - // Checks if a url is a valid git url - public static bool IsGitUrl (string Url) - { - return Regex.Match (Url, @"(.)+(/|:)(.)+").Success; - } - - } - -} diff --git a/SparkleShare/SparkleFetcher.cs b/SparkleShare/SparkleFetcher.cs new file mode 100644 index 00000000..ce8ef033 --- /dev/null +++ b/SparkleShare/SparkleFetcher.cs @@ -0,0 +1,139 @@ +// SparkleShare, an instant update workflow to Git. +// Copyright (C) 2010 Hylke Bons +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +using Gtk; +using System; +using System.IO; +using System.Diagnostics; + +namespace SparkleShare { + + public class SparkleFetcher { + + public delegate void CloningStartedEventHandler (object o, SparkleEventArgs args); + public delegate void CloningFinishedEventHandler (object o, SparkleEventArgs args); + public delegate void CloningFailedEventHandler (object o, SparkleEventArgs args); + + public event CloningStartedEventHandler CloningStarted; + public event CloningFinishedEventHandler CloningFinished; + public event CloningFailedEventHandler CloningFailed; + + private string TargetFolder; + private string RemoteOriginUrl; + + + public SparkleFetcher (string url, string folder) + { + + TargetFolder = folder; + RemoteOriginUrl = url; + + } + + + public void Clone () + { + + if (Directory.Exists (TargetFolder)) + Directory.Delete (TargetFolder, true); + + SparkleEventArgs args = new SparkleEventArgs ("CloningStarted"); + + if (CloningStarted != null) + CloningStarted (this, args); + + Process process = new Process () { + EnableRaisingEvents = true + }; + + process.StartInfo.RedirectStandardOutput = true; + process.StartInfo.UseShellExecute = false; + process.StartInfo.FileName = "git"; + process.StartInfo.Arguments = "clone " + RemoteOriginUrl + " " + TargetFolder; + + process.Exited += delegate { + + SparkleHelpers.DebugInfo ("Git", "Exit code " + process.ExitCode.ToString ()); + + if (process.ExitCode != 0) { + + args = new SparkleEventArgs ("CloningFailed"); + + if (CloningFailed != null) + CloningFailed (this, args); + + } else { + + InstallUserInfo (); + InstallExcludeRules (); + + args = new SparkleEventArgs ("CloningFinished"); + + if (CloningFinished != null) + CloningFinished (this, args); + + } + + }; + + process.Start (); + + } + + + // Install the user's name and email into + // the newly cloned repository + private void InstallUserInfo () + { + + string global_config_file_path = SparkleHelpers.CombineMore (SparklePaths.SparkleConfigPath, "config"); + + if (File.Exists (global_config_file_path)) { + + StreamReader reader = new StreamReader (global_config_file_path); + string user_info = reader.ReadToEnd (); + reader.Close (); + + string repo_config_file_path = SparkleHelpers.CombineMore (TargetFolder, ".git", "config"); + + TextWriter writer = File.AppendText (repo_config_file_path); + writer.WriteLine (user_info); + writer.Close (); + + SparkleHelpers.DebugInfo ("Config", "Added user info to '" + repo_config_file_path + "'"); + + } + + } + + + // Add a .gitignore file to the repo + private void InstallExcludeRules () + { + + TextWriter writer = new StreamWriter (SparkleHelpers.CombineMore (TargetFolder, ".git/info/exclude")); + + writer.WriteLine ("*~"); // Ignore gedit swap files + writer.WriteLine (".*.sw?"); // Ignore vi swap files + writer.WriteLine (".DS_store"); // Ignore OSX's invisible directories + + writer.Close (); + + } + + } + +} diff --git a/SparkleShare/SparkleHelpers.cs b/SparkleShare/SparkleHelpers.cs index a76dffee..cb8efd84 100644 --- a/SparkleShare/SparkleHelpers.cs +++ b/SparkleShare/SparkleHelpers.cs @@ -96,12 +96,31 @@ namespace SparkleShare { // Looks up an icon from the system's theme - public static Gdk.Pixbuf GetIcon (string Name, int Size) + public static Gdk.Pixbuf GetIcon (string name, int size) { + IconTheme IconTheme = new IconTheme (); IconTheme.AppendSearchPath (SparklePaths.SparkleIconPath); IconTheme.AppendSearchPath (SparklePaths.SparkleLocalIconPath); - return IconTheme.LoadIcon (Name, Size, IconLookupFlags.GenericFallback); + + try { + + return IconTheme.LoadIcon (name, size, IconLookupFlags.GenericFallback); + + } catch { + + try { + + return IconTheme.LoadIcon ("gtk-missing-image", size, IconLookupFlags.GenericFallback); + + } catch { + + return null; + + } + + } + } diff --git a/SparkleShare/SparkleIntro.cs b/SparkleShare/SparkleIntro.cs index 24ac0601..2d9b31aa 100644 --- a/SparkleShare/SparkleIntro.cs +++ b/SparkleShare/SparkleIntro.cs @@ -29,7 +29,11 @@ namespace SparkleShare { private Entry NameEntry; private Entry EmailEntry; private Entry ServerEntry; + private Entry FolderEntry; private Button NextButton; + private Button AddButton; + private bool StepTwoOnly; + private string SecondaryTextColor; // Short alias for the translations public static string _ (string s) @@ -46,7 +50,12 @@ namespace SparkleShare { Resizable = false; WindowPosition = WindowPosition.Center; - SetSizeRequest (640, 400); + StepTwoOnly = false; + + SetSizeRequest (640, 440); + + Window window = new Window (""); + SecondaryTextColor = GdkColorToHex (window.Style.Foreground (StateType.Insensitive)); ShowStepOne (); @@ -56,9 +65,10 @@ namespace SparkleShare { private void ShowStepOne () { + Title = _("Welcome!"); + HBox layout_horizontal = new HBox (false, 6); - // TODO: Fix the path Image side_splash = new Image (SparkleHelpers.CombineMore (Defines.PREFIX, "share", "pixmaps", "side-splash.png")); @@ -68,7 +78,7 @@ namespace SparkleShare { BorderWidth = 30 }; - Label introduction = new Label ("" + + Label header = new Label ("" + _("Welcome to SparkleShare!") + "") { UseMarkup = true, @@ -81,7 +91,7 @@ namespace SparkleShare { Wrap = true }; - Table table = new Table (6, 2, true) { + Table table = new Table (4, 2, true) { RowSpacing = 6 }; @@ -94,13 +104,13 @@ namespace SparkleShare { NameEntry = new Entry (unix_user_info.RealName); NameEntry.Changed += delegate { - CheckFields (); + CheckStepOneFields (); }; EmailEntry = new Entry (GetUserEmail ()); EmailEntry.Changed += delegate { - CheckFields (); + CheckStepOneFields (); }; Label email_label = new Label ("" + _("Email:") + "") { @@ -108,46 +118,11 @@ namespace SparkleShare { Xalign = 0 }; - ServerEntry = new Entry ("ssh://gitorious.org/sparkleshare") { - Sensitive = false - }; - - Label server_label = new Label ("" + _("Folder Address:") + "") { - UseMarkup = true, - Xalign = 0, - Sensitive = false - }; - - CheckButton check_button; - check_button = new CheckButton (_("I'm already subscribed to a " + - "folder on a SparkleServer")); - - check_button.Clicked += delegate { - - if (check_button.Active) { - - server_label.Sensitive = true; - ServerEntry.Sensitive = true; - ServerEntry.HasFocus = true; - - } else { - - server_label.Sensitive = false; - ServerEntry.Sensitive = false; - - } - - ShowAll (); - - }; table.Attach (name_label, 0, 1, 0, 1); table.Attach (NameEntry, 1, 2, 0, 1); table.Attach (email_label, 0, 1, 1, 2); table.Attach (EmailEntry, 1, 2, 1, 2); - table.Attach (check_button, 0, 2, 3, 4); - table.Attach (server_label, 0, 1, 4, 5); - table.Attach (ServerEntry, 1, 2, 4, 5); HButtonBox controls = new HButtonBox () { BorderWidth = 12, @@ -161,13 +136,7 @@ namespace SparkleShare { NextButton.Clicked += delegate (object o, EventArgs args) { NextButton.Remove (NextButton.Child); - - HBox hbox = new HBox (); - - hbox.Add (new SparkleSpinner ()); - hbox.Add (new Label (_("Configuring…"))); - - NextButton.Add (hbox); + NextButton.Add (new Label (_("Configuring…"))); NextButton.Sensitive = false; table.Sensitive = false; @@ -175,15 +144,18 @@ namespace SparkleShare { NextButton.ShowAll (); Configure (); + ShowStepTwo (); }; controls.Add (NextButton); - layout_vertical.PackStart (introduction, false, false, 0); + layout_vertical.PackStart (header, false, false, 0); layout_vertical.PackStart (information, false, false, 21); layout_vertical.PackStart (new Label (""), false, false, 0); layout_vertical.PackStart (table, false, false, 0); +// layout_vertical.PackStart (check_button, false, false, 0); + wrapper.PackStart (layout_vertical, true, true, 0); wrapper.PackStart (controls, false, true, 0); @@ -193,15 +165,518 @@ namespace SparkleShare { Add (layout_horizontal); - CheckFields (); + CheckStepOneFields (); ShowAll (); } - private void ShowStepTwo () + public void ShowStepTwo (bool step_two_only) { + + StepTwoOnly = step_two_only; + ShowStepTwo (); + + } + + + public void ShowStepTwo () + { + + Title = _("Add Remote Folder"); + + Remove (Child); + + HBox layout_horizontal = new HBox (false, 6); + + Image side_splash = new Image (SparkleHelpers.CombineMore (Defines.PREFIX, "share", "pixmaps", + "side-splash.png")); + + VBox wrapper = new VBox (false, 0); + + VBox layout_vertical = new VBox (false, 0) { + BorderWidth = 30 + }; + + Label header = new Label ("" + + _("Where does your remote folder reside?") + + "") { + UseMarkup = true, + Xalign = 0 + }; + + Table table = new Table (7, 2, false) { + RowSpacing = 12 + }; + + HBox layout_server = new HBox (true, 0); + + ServerEntry = new Entry (_("ssh://address-to-my-server/")); + + ServerEntry.Changed += CheckStepTwoFields; + + RadioButton radio_button = new RadioButton ("" + _("On my own server:") + ""); + + layout_server.Add (radio_button); + layout_server.Add (ServerEntry); + + string github_text = "" + "Github" + "\n" + + "" + + _("Github provides free hosting for Open Source projects, ") + + _("but also has paid accounts for extra space and bandwidth.") + + ""; + + RadioButton radio_button_github = new RadioButton (radio_button, github_text); + + (radio_button_github.Child as Label).UseMarkup = true; + (radio_button_github.Child as Label).Wrap = true; + + string gnome_text = "" + _("The GNOME Project") + "\n" + + "" + + _("GNOME is an easy to understand interface to your computer.") + " " + + _("Select this option if you’re a developer or designer working on GNOME.") + + ""; + + RadioButton radio_button_gnome = new RadioButton (radio_button, gnome_text); + + (radio_button_gnome.Child as Label).UseMarkup = true; + (radio_button_gnome.Child as Label).Wrap = true; + + string gitorious_text = "" + _("Gitorious") + "\n" + + "" + + _("Gitorious provides a completely Free and Open Source infrastructure ") + + _("for hosting Open Source projects.") + + ""; + + RadioButton radio_button_gitorious = new RadioButton (radio_button, gitorious_text) { + Xalign = 0 + }; + + (radio_button_gitorious.Child as Label).UseMarkup = true; + (radio_button_gitorious.Child as Label).Wrap = true; + + radio_button.Toggled += delegate { + + if (radio_button.Active) { + + ServerEntry.Sensitive = true; + + CheckStepTwoFields (); + + } else { + + ServerEntry.Sensitive = false; + + CheckStepTwoFields (); + + } + + ShowAll (); + + }; + + table.Attach (layout_server, 0, 2, 1, 2); + table.Attach (radio_button_github, 0, 2, 2, 3); + table.Attach (radio_button_gitorious, 0, 2, 3, 4); + table.Attach (radio_button_gnome, 0, 2, 4, 5); + + HBox layout_folder = new HBox (true, 0); + + FolderEntry = new Entry (); + + FolderEntry.Changed += CheckStepTwoFields; + + Label folder_label = new Label ("" + _("Folder Name:") + "") { + UseMarkup = true, + Xalign = 1 + }; + + (radio_button.Child as Label).UseMarkup = true; + + layout_folder.PackStart (folder_label, true, true, 12); + layout_folder.PackStart (FolderEntry, true, true, 0); + + + HButtonBox controls = new HButtonBox () { + BorderWidth = 12, + Layout = ButtonBoxStyle.End, + Spacing = 6 + }; + + AddButton = new Button (_("Add")); + + AddButton.Clicked += delegate { + + string server = ""; + + if (radio_button.Active) { + + server = SparkleToGitUrl (ServerEntry.Text); + + // Remove the trailing slash if there is one + if (server.EndsWith ("/")) + server = server.Trim ("/".ToCharArray ()); + + } + + if (radio_button_gitorious.Active) + server = "ssh://git@gitorious.org"; + + if (radio_button_github.Active) + server = "ssh://git@github.com"; + + if (radio_button_gnome.Active) + server = "ssh://git@gnome.org"; + + + string name = FolderEntry.Text; + + // Remove the starting slash if there is one + if (name.StartsWith ("/")) + name = name.Substring (1); + + string canonical_name = System.IO.Path.GetFileNameWithoutExtension (name); + + string url = server + "/" + name; + string tmp_folder = SparkleHelpers.CombineMore (SparklePaths.SparkleTmpPath, + canonical_name); + + SparkleFetcher fetcher = new SparkleFetcher (url, tmp_folder); + + Console.WriteLine (url); + + fetcher.CloningStarted += delegate { + + SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Cloning Repository"); + + }; + + + fetcher.CloningFinished += delegate { + + SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Repository cloned"); + + ClearAttributes (tmp_folder); + + try { + + bool folder_exists = Directory.Exists ( + SparkleHelpers.CombineMore (SparklePaths.SparklePath, canonical_name)); + + int i = 1; + while (folder_exists) { + + i++; + folder_exists = Directory.Exists ( + SparkleHelpers.CombineMore (SparklePaths.SparklePath, + canonical_name + " (" + i + ")")); + + } + + string target_folder_name = canonical_name + " (" + i + ")"; + + Directory.Move (tmp_folder, + SparkleHelpers.CombineMore (SparklePaths.SparklePath, target_folder_name)); + + } catch (Exception e) { + + SparkleHelpers.DebugInfo ("Git", + "[" + name + "] Error moving folder: " + e.Message); + + } + + Application.Invoke (delegate { ShowFinishedStep (); }); + + }; + + + fetcher.CloningFailed += delegate { + + SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Cloning failed"); + + if (Directory.Exists (tmp_folder)) { + + ClearAttributes (tmp_folder); + Directory.Delete (tmp_folder, true); + + SparkleHelpers.DebugInfo ("Config", + "[" + name + "] Deleted temporary directory"); + + } + + Application.Invoke (delegate { ShowErrorStep (); }); + + }; + + ShowStepTwoAndAHalf (); + fetcher.Clone (); + + }; + + Button skip_button = new Button (_("Skip")); + + skip_button.Clicked += delegate { + ShowStepThree (); + }; + + + if (!StepTwoOnly) + controls.Add (skip_button); + + controls.Add (AddButton); + + layout_vertical.PackStart (header, false, false, 0); + layout_vertical.PackStart (new Label (""), false, false, 3); + layout_vertical.PackStart (table, false, false, 0); + layout_vertical.PackStart (layout_folder, false, false, 6); + + wrapper.PackStart (layout_vertical, true, true, 0); + wrapper.PackStart (controls, false, true, 0); + + layout_horizontal.PackStart (side_splash, false, false, 0); + layout_horizontal.PackStart (wrapper, true, true, 0); + + Add (layout_horizontal); + + CheckStepTwoFields (); + + ShowAll (); + + } + + + private void ShowErrorStep () + { + + Remove (Child); + + Title = _("Error adding folder"); + + HBox layout_horizontal = new HBox (false, 6); + + Image side_splash = new Image (SparkleHelpers.CombineMore (Defines.PREFIX, "share", "pixmaps", + "side-splash.png")); + + VBox wrapper = new VBox (false, 0); + + VBox layout_vertical = new VBox (false, 0) { + BorderWidth = 30 + }; + + Label header = new Label ("" + + _("Something went wrong…") + + "\n") { + UseMarkup = true, + Xalign = 0 + }; + + Label information = new Label ("" + + _("Hey, it's an Alpha!") + + "") { + Xalign = 0, + Wrap = true, + UseMarkup = true + }; + + + HButtonBox controls = new HButtonBox () { + BorderWidth = 12, + Layout = ButtonBoxStyle.End + }; + + Button try_again_button = new Button (_("Try again…")) { + Sensitive = true + }; + + try_again_button.Clicked += delegate (object o, EventArgs args) { + + ShowStepTwo (); + + }; + + controls.Add (try_again_button); + + layout_vertical.PackStart (header, false, false, 0); + layout_vertical.PackStart (information, false, false, 0); + + wrapper.PackStart (layout_vertical, true, true, 0); + wrapper.PackStart (controls, false, true, 0); + + layout_horizontal.PackStart (side_splash, false, false, 0); + layout_horizontal.PackStart (wrapper, true, true, 0); + + Add (layout_horizontal); + + ShowAll (); + + } + + + private void ShowFinishedStep () + { + + Remove (Child); + + Title = _("Folder Added Successfully"); + + HBox layout_horizontal = new HBox (false, 6); + + Image side_splash = new Image (SparkleHelpers.CombineMore (Defines.PREFIX, "share", "pixmaps", + "side-splash.png")); + + VBox wrapper = new VBox (false, 0); + + VBox layout_vertical = new VBox (false, 0) { + BorderWidth = 30 + }; + + Label header = new Label ("" + + _("Folder successfully retrieved!") + + "") { + UseMarkup = true, + Xalign = 0 + }; + + Label information = new Label ("" + + _("Buy a lottery ticket!") + + "") { + Xalign = 0, + Wrap = true, + UseMarkup = true + }; + + + HButtonBox controls = new HButtonBox () { + BorderWidth = 12, + Layout = ButtonBoxStyle.End + }; + + Button finish_button = new Button (_("Finish")); + + finish_button.Clicked += delegate (object o, EventArgs args) { + + SparkleShare.SparkleUI.UpdateRepositories (); +// Destroy (); + + }; + + controls.Add (finish_button); + + layout_vertical.PackStart (header, false, false, 0); + layout_vertical.PackStart (information, false, false, 0); + + wrapper.PackStart (layout_vertical, true, true, 0); + wrapper.PackStart (controls, false, true, 0); + + layout_horizontal.PackStart (side_splash, false, false, 0); + layout_horizontal.PackStart (wrapper, true, true, 0); + + Add (layout_horizontal); + + ShowAll (); + + } + + + private void ShowStepTwoAndAHalf () + { + + Title = _("Add Remote Folder"); + + Remove (Child); + + HBox layout_horizontal = new HBox (false, 6); + + Image side_splash = new Image (SparkleHelpers.CombineMore (Defines.PREFIX, "share", "pixmaps", + "side-splash.png")); + + VBox wrapper = new VBox (false, 0); + + VBox layout_vertical = new VBox (false, 0) { + BorderWidth = 30 + }; + + Label header = new Label ("" + + String.Format (_("Retrieving folder ‘{0}’…"), FolderEntry.Text) + + "") { + UseMarkup = true, + Xalign = 0, + Wrap = true + }; + + Label information = new Label ("" + + _("This may take a while.\n") + + _("You sure it’s not coffee o-clock?" + + "")) { + UseMarkup = true, + Xalign = 0 + }; + + HButtonBox controls = new HButtonBox () { + BorderWidth = 12, + Layout = ButtonBoxStyle.End, + Spacing = 6 + }; + + Button button = new Button () { + Sensitive = false + }; + + if (StepTwoOnly) { + + button.Label = _("Finish"); + button.Clicked += delegate { + Destroy (); + }; + + } else { + + button.Label = _("Next"); + button.Clicked += delegate { + ShowStepThree (); + }; + + } + + controls.Add (button); + + SparkleSpinner spinner = new SparkleSpinner (22); + + Table table = new Table (2, 2, false) { + RowSpacing = 12, + ColumnSpacing = 9 + }; + + HBox box = new HBox (false, 0); + + table.Attach (spinner, 0, 1, 0, 1); + table.Attach (header, 1, 2, 0, 1); + table.Attach (information, 1, 2, 1, 2); + + box.PackStart (table, false, false, 0); + + layout_vertical.PackStart (box, false, false, 0); + + wrapper.PackStart (layout_vertical, true, true, 0); + wrapper.PackStart (controls, false, true, 0); + + layout_horizontal.PackStart (side_splash, false, false, 0); + layout_horizontal.PackStart (wrapper, true, true, 0); + + Add (layout_horizontal); + + CheckStepTwoFields (); + + ShowAll (); + + } + + + private void ShowStepThree () + { + + Title = _("Done!"); Remove (Child); @@ -216,7 +691,7 @@ namespace SparkleShare { BorderWidth = 30 }; - Label introduction = new Label ("" + + Label header = new Label ("" + _("SparkleShare is ready to go!") + "") { UseMarkup = true, @@ -238,7 +713,7 @@ namespace SparkleShare { link_wrapper.PackStart (link, false, false, 0); - layout_vertical.PackStart (introduction, false, false, 0); + layout_vertical.PackStart (header, false, false, 0); layout_vertical.PackStart (information, false, false, 21); layout_vertical.PackStart (link_wrapper, false, false, 0); @@ -271,7 +746,7 @@ namespace SparkleShare { // Enables or disables the 'Next' button depending on the // entries filled in by the user - private void CheckFields () + private void CheckStepOneFields () { if (NameEntry.Text.Length > 0 && @@ -288,24 +763,54 @@ namespace SparkleShare { } + // Enables the Add button when the fields are + // filled in correctly + public void CheckStepTwoFields (object o, EventArgs args) + { + + CheckStepTwoFields (); + + } + + + // Enables the Add button when the fields are + // filled in correctly + public void CheckStepTwoFields () + { + + AddButton.Sensitive = false; + bool IsFolder = !FolderEntry.Text.Trim ().Equals (""); + + if (ServerEntry.Sensitive == true) { + + if (IsGitUrl (ServerEntry.Text) && IsFolder) + AddButton.Sensitive = true; + + } else if (IsFolder) { + + AddButton.Sensitive = true; + + } + + } + + // Configures SparkleShare with the user's information private void Configure () { - string config_file_path = SparkleHelpers.CombineMore (SparklePaths.SparkleConfigPath, ".gitconfig"); + string config_file_path = SparkleHelpers.CombineMore (SparklePaths.SparkleConfigPath, "config"); TextWriter writer = new StreamWriter (config_file_path); writer.WriteLine ("[user]\n" + "\tname = " + NameEntry.Text + "\n" + - "\temail = " + EmailEntry.Text + "\n"); + "\temail = " + EmailEntry.Text); writer.Close (); SparkleHelpers.DebugInfo ("Config", "Created '" + config_file_path + "'"); GenerateKeyPair (); - ShowStepTwo (); - } @@ -365,8 +870,10 @@ namespace SparkleShare { process.Start (); process.Exited += delegate { + SparkleHelpers.DebugInfo ("Config", "Created key '" + key_file_name + "'"); SparkleHelpers.DebugInfo ("Config", "Created key '" + key_file_name + ".pub'"); + }; } @@ -383,6 +890,62 @@ namespace SparkleShare { } + + // Checks if a url is a valid git url + private static bool IsGitUrl (string url) + { + + return Regex.Match (url, @"ssh://(.)+").Success; + + } + + + // Recursively sets access rights of a folder to 'Normal' + private void ClearAttributes (string path) + { + + if (Directory.Exists (path)) { + + string [] folders = Directory .GetDirectories (path); + + foreach (string folder in folders) + ClearAttributes (folder); + + string [] files = Directory .GetFiles(path); + + foreach (string file in files) + File.SetAttributes (file, FileAttributes.Normal); + + } + + } + + + // Converts a Gdk RGB color to a hex value. + // Example: from "rgb:0,0,0" to "#000000" + public string GdkColorToHex (Gdk.Color color) + { + + return String.Format ("#{0:X2}{1:X2}{2:X2}", + (int) Math.Truncate (color.Red / 256.00), + (int) Math.Truncate (color.Green / 256.00), + (int) Math.Truncate (color.Blue / 256.00)); + + } + + + // Convert the more human readable sparkle:// url to something Git can use. + // Example: sparkle://gitorious.org/sparkleshare ssh://git@gitorious.org/sparkleshare + private static string SparkleToGitUrl (string url) + { + + if (url.StartsWith ("sparkle://")) + url = url.Replace ("sparkle://", "ssh://git@"); + + return url; + + } + } } diff --git a/SparkleShare/SparklePaths.cs b/SparkleShare/SparklePaths.cs index 3f291b26..ce712cb6 100644 --- a/SparkleShare/SparklePaths.cs +++ b/SparkleShare/SparklePaths.cs @@ -37,8 +37,8 @@ namespace SparkleShare { public static string SparkleLocalIconPath = SparkleHelpers.CombineMore (HomePath, ".icons", "sparkleshare"); - public static string SparkleIconPath = SparkleHelpers.CombineMore (Defines.PREFIX, - "sparkleshare", "icons", "hicolor"); + public static string SparkleIconPath = SparkleHelpers.CombineMore (Defines.PREFIX, "share", "sparkleshare", + "icons"); } diff --git a/SparkleShare/SparkleRepo.cs b/SparkleShare/SparkleRepo.cs index ab0f51ab..a9c87391 100644 --- a/SparkleShare/SparkleRepo.cs +++ b/SparkleShare/SparkleRepo.cs @@ -32,7 +32,7 @@ namespace SparkleShare { private Timer FetchTimer; private Timer BufferTimer; private FileSystemWatcher Watcher; - private bool HasChanged = false; + private bool HasChanged; private DateTime LastChange; private System.Object ChangeLock = new System.Object(); @@ -66,14 +66,19 @@ namespace SparkleShare { public SparkleRepo (string path) { + if (!Directory.Exists (path)) + Directory.CreateDirectory (path); + LocalPath = path; Name = Path.GetFileName (LocalPath); - Process = new Process (); - Process.EnableRaisingEvents = true; + Process = new Process () { + EnableRaisingEvents = true + }; + + Process.StartInfo.FileName = "git"; Process.StartInfo.RedirectStandardOutput = true; Process.StartInfo.UseShellExecute = false; - Process.StartInfo.FileName = "git"; Process.StartInfo.WorkingDirectory = LocalPath; UserName = GetUserName (); @@ -83,6 +88,8 @@ namespace SparkleShare { Domain = GetDomain (RemoteOriginUrl); + HasChanged = false; + // Watch the repository's folder Watcher = new FileSystemWatcher (LocalPath) { IncludeSubdirectories = true, @@ -97,7 +104,7 @@ namespace SparkleShare { // Fetch remote changes every minute FetchTimer = new Timer () { - Interval = 30000 + Interval = 5000 }; FetchTimer.Elapsed += delegate { @@ -265,11 +272,10 @@ namespace SparkleShare { SparkleHelpers.DebugInfo ("Git", "[" + Name + "] Fetching changes..."); Process.StartInfo.Arguments = "fetch -v"; + Process.WaitForExit (); Process.Start (); - string output = Process.StandardOutput.ReadToEnd ().Trim (); // TODO: This doesn't work :( - SparkleHelpers.DebugInfo ("Git", "[" + Name + "] Changes fetched."); args = new SparkleEventArgs ("FetchingFinished"); @@ -277,9 +283,7 @@ namespace SparkleShare { if (FetchingFinished != null) FetchingFinished (this, args); - // Rebase if there are changes - if (!output.Contains ("up to date")) - Rebase (); + Rebase (); } finally { diff --git a/SparkleShare/SparkleShare.cs b/SparkleShare/SparkleShare.cs index edade95e..adbb9381 100644 --- a/SparkleShare/SparkleShare.cs +++ b/SparkleShare/SparkleShare.cs @@ -12,7 +12,7 @@ // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// along with this program. If not, see . using Gtk; using Mono.Unix; @@ -72,13 +72,8 @@ namespace SparkleShare { } } - Gtk.Application.Init (); - SparkleUI = new SparkleUI (HideUI); - // The main loop - Gtk.Application.Run (); - } // Prints the help output diff --git a/SparkleShare/SparkleShare.csproj b/SparkleShare/SparkleShare.csproj index 62026f09..abe5dc3a 100644 --- a/SparkleShare/SparkleShare.csproj +++ b/SparkleShare/SparkleShare.csproj @@ -14,7 +14,7 @@ true full false - bin\Debug + ..\bin DEBUG prompt 4 @@ -22,25 +22,28 @@ none false - bin\Release + ..\bin prompt 4 - - - + + gtk-sharp-2.0 + + + gtk-sharp-2.0 + + + gtk-sharp-2.0 + - - False - ..\SharpSSH\lib\DiffieHellman.dll - - + + @@ -50,6 +53,8 @@ + + @@ -57,4 +62,19 @@ NotifySharp + + + + + + + + + + + + + + + diff --git a/SparkleShare/SparkleSpinner.cs b/SparkleShare/SparkleSpinner.cs index e18d7e5d..b4ec4389 100644 --- a/SparkleShare/SparkleSpinner.cs +++ b/SparkleShare/SparkleSpinner.cs @@ -32,64 +32,92 @@ namespace SparkleShare { private int NumSteps; private int Size; - public SparkleSpinner () : base () + public SparkleSpinner (int size) : base () { - CycleDuration = 750; + Size = size; + + CycleDuration = 600; CurrentStep = 0; - Size = 16; Gdk.Pixbuf spinner_gallery = SparkleHelpers.GetIcon ("process-working", Size); - int frames_in_width = spinner_gallery.Width / Size; + int frames_in_width = spinner_gallery.Width / Size; int frames_in_height = spinner_gallery.Height / Size; + NumSteps = frames_in_width * frames_in_height; - Images = new Gdk.Pixbuf [NumSteps - 1]; + Images = new Gdk.Pixbuf [NumSteps - 1]; int i = 0; + for (int y = 0; y < frames_in_height; y++) { + for (int x = 0; x < frames_in_width; x++) { + if (!(y == 0 && x == 0)) { + Images [i] = new Gdk.Pixbuf (spinner_gallery, x * Size, y * Size, Size, Size); i++; + } + } + } - Timer = new Timer (); - Timer.Interval = CycleDuration / NumSteps; + Timer = new Timer () { + Interval = CycleDuration / NumSteps + }; + Timer.Elapsed += delegate { NextImage (); }; + Start (); } private void NextImage () { - if (CurrentStep < NumSteps) + + if (CurrentStep < NumSteps - 2) CurrentStep++; else CurrentStep = 0; + + Application.Invoke (delegate { SetImage (); }); + + } + + private void SetImage () + { + Pixbuf = Images [CurrentStep]; + } public bool IsActive () { + return Active; + } public void Start () { + CurrentStep = 0; Active = true; Timer.Start (); + } public void Stop () { + Active = false; Timer.Stop (); + } } diff --git a/SparkleShare/SparkleStatusIcon.cs b/SparkleShare/SparkleStatusIcon.cs index 7189bcf4..f736d88b 100644 --- a/SparkleShare/SparkleStatusIcon.cs +++ b/SparkleShare/SparkleStatusIcon.cs @@ -127,6 +127,7 @@ namespace SparkleShare { Menu.Add (new SeparatorMenuItem ()); + // TODO: Append folder size in secondary text color Gtk.Action folder_action = new Gtk.Action ("", _("SparkleShare Folder")) { IconName = "folder-sparkleshare", IsImportant = true @@ -172,8 +173,9 @@ namespace SparkleShare { add_item.Activated += delegate { - SparkleDialog dialog = new SparkleDialog (""); - dialog.ShowAll (); + SparkleIntro intro = new SparkleIntro (); + intro.ShowStepTwo (true); + intro.ShowAll (); }; diff --git a/SparkleShare/SparkleUI.cs b/SparkleShare/SparkleUI.cs index 170fd073..0f41cc22 100644 --- a/SparkleShare/SparkleUI.cs +++ b/SparkleShare/SparkleUI.cs @@ -43,6 +43,8 @@ namespace SparkleShare { public SparkleUI (bool HideUI) { + Gtk.Application.Init (); + Repositories = new List (); Process = new Process () { @@ -87,6 +89,9 @@ namespace SparkleShare { } + // The main loop + Gtk.Application.Run (); + } @@ -163,6 +168,7 @@ namespace SparkleShare { if (!File.Exists (desktopfile_path)) { if (!Directory.Exists (apps_path)) + Directory.CreateDirectory (apps_path); TextWriter writer = new StreamWriter (desktopfile_path); @@ -254,7 +260,7 @@ namespace SparkleShare { // Updates the statusicon to the syncing state - public void UpdateStatusIconSyncing (object o, EventArgs args) + public void UpdateStatusIconToSyncing (object o, EventArgs args) { NotificationIcon.SyncingReposCount++; @@ -264,7 +270,7 @@ namespace SparkleShare { // Updates the syncing icon to the idle state - public void UpdateStatusIconIdle (object o, EventArgs args) + public void UpdateStatusIconToIdle (object o, EventArgs args) { NotificationIcon.SyncingReposCount--; @@ -296,19 +302,19 @@ namespace SparkleShare { }; repo.FetchingStarted += delegate { - Application.Invoke (UpdateStatusIconSyncing); + Application.Invoke (UpdateStatusIconToSyncing); }; repo.FetchingFinished += delegate { - Application.Invoke (UpdateStatusIconIdle); + Application.Invoke (UpdateStatusIconToIdle); }; repo.PushingStarted += delegate { - Application.Invoke (UpdateStatusIconSyncing); + Application.Invoke (UpdateStatusIconToSyncing); }; repo.PushingFinished += delegate { - Application.Invoke (UpdateStatusIconIdle); + Application.Invoke (UpdateStatusIconToIdle); }; repo.ConflictDetected += delegate { diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am index 4011dc98..4907c766 100644 --- a/data/icons/Makefile.am +++ b/data/icons/Makefile.am @@ -4,7 +4,7 @@ hicolordir = $(DESTDIR)$(datadir)/icons/hicolor theme_icons = \ animations,process-syncing-sparkleshare-24.png \ - animations,process-working-48.png \ + animations,process-working-22.png \ places,folder-16.png \ places,folder-22.png \ places,folder-24.png \ diff --git a/data/icons/folder-sparkleshare-24.png b/data/icons/folder-sparkleshare-24.png index 2136b5db..a93d38f4 100644 Binary files a/data/icons/folder-sparkleshare-24.png and b/data/icons/folder-sparkleshare-24.png differ diff --git a/data/icons/process-syncing-sparkleshare-24.png b/data/icons/process-syncing-sparkleshare-24.png index 5a65b420..632a3e26 100644 Binary files a/data/icons/process-syncing-sparkleshare-24.png and b/data/icons/process-syncing-sparkleshare-24.png differ diff --git a/data/icons/process-working-22.png b/data/icons/process-working-22.png new file mode 100644 index 00000000..9005de75 Binary files /dev/null and b/data/icons/process-working-22.png differ diff --git a/data/icons/process-working-48.png b/data/icons/process-working-48.png deleted file mode 100644 index 3ab6b632..00000000 Binary files a/data/icons/process-working-48.png and /dev/null differ diff --git a/data/side-splash.png b/data/side-splash.png index b6125096..d2e9134c 100644 Binary files a/data/side-splash.png and b/data/side-splash.png differ diff --git a/data/side-splash.svg b/data/side-splash.svg index b20dbc50..256fa574 100644 --- a/data/side-splash.svg +++ b/data/side-splash.svg @@ -11,7 +11,7 @@ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="150.00002" - height="400" + height="440" id="svg8763" version="1.1" inkscape:version="0.47 r22583" @@ -26,9 +26,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="0.98994949" - inkscape:cx="155.50745" - inkscape:cy="162.39878" + inkscape:zoom="1" + inkscape:cx="276.72576" + inkscape:cy="159.36832" inkscape:document-units="px" inkscape:current-layer="g8506" showgrid="false" @@ -569,7 +569,7 @@ x2="15.142853" y1="385.79074" x1="-17.857147" - gradientTransform="matrix(0.93600978,0,0,1,1.5716112,0)" + gradientTransform="matrix(0.93600978,0,0,1,1.5716112,5.089059e-7)" gradientUnits="userSpaceOnUse" id="linearGradient8586" xlink:href="#linearGradient8492" @@ -586,6 +586,26 @@ offset="1" style="stop-color:#2e3436;stop-opacity:0;" /> + + @@ -595,12 +615,12 @@ image/svg+xml - + @@ -608,9 +628,9 @@ transform="translate(374.14287,98.00001)" id="g8506"> @@ -897,533 +917,7 @@ id="image8469" height="128" width="128" - xlink:href="data:image/png;base64,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 -" + xlink:href="data:image/png;base64,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 " transform="matrix(0.94586689,0.32455481,-0.32455481,0.94586689,0,0)" /> + transform="scale(-1,1)" + y="145.38464" + x="-15.142853" + height="440.4061" + width="17.888323" + id="rect3732" + style="opacity:0.2;color:#000000;fill:url(#linearGradient3734);fill-opacity:1;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + diff --git a/data/sparkleshare.svg b/data/sparkleshare.svg index a4ffb6f9..4a092569 100644 --- a/data/sparkleshare.svg +++ b/data/sparkleshare.svg @@ -31,8 +31,8 @@ height="300px" id="base" inkscape:current-layer="layer18" - inkscape:cx="425.02608" - inkscape:cy="65.642722" + inkscape:cx="350.86665" + inkscape:cy="118.43856" inkscape:document-units="px" inkscape:grid-bbox="true" inkscape:pageopacity="0.0" @@ -44,10 +44,10 @@ inkscape:window-width="1332" inkscape:window-x="0" inkscape:window-y="27" - inkscape:zoom="5.6568542" + inkscape:zoom="1" objecttolerance="10000" pagecolor="#ffffff" - showgrid="true" + showgrid="false" stroke="#ef2929" width="400px" showguides="false" @@ -161,7 +161,7 @@ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - Lapo Calamandrei + Hylke Bons, Lapo Calamandrei sparkleshare @@ -173,21 +173,34 @@ dir - Based of Jakub Steiner's design + Derived from Jakub Steiner's design + rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /> + + + Hylke Bons, Lapo Calamandrei + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + id="linearGradient3486" + xlink:href="#linearGradient4989-0" + inkscape:collect="always" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + height="24" + inkscape:export-filename="/home/hbons/github/SparkleShare/data/icons/folder-sparkleshare-24.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + d="m 305.84985,185.48915 4.68974,0 c 0.5327,0 1.21512,-1.08469 1.64776,-1.63322 0.1341,-0.20388 0.34688,-0.35593 0.60228,-0.35593 3.57008,0.006 7.14057,-0.0156 10.71038,0.0141 l 0,9.30895 c 0,3.20283 -1.29007,3.67699 -1.65038,3.67699 l -15.69924,0 c -0.36031,0 -1.65038,-0.40781 -1.65038,-3.67699 l 0,-7.34245 c 0,0 1.34984,0.009 1.34984,0.009 l 0,0 0,0 0,-3e-5 z" /> - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/po/de.po b/po/de.po index a9ab84ed..e4e5f8d4 100644 --- a/po/de.po +++ b/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: SparkleShare 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-07-21 19:48+0000\n" +"POT-Creation-Date: 2010-07-28 08:26+0000\n" "PO-Revision-Date: 2010-06-21 16:26+0100\n" "Last-Translator: Martin Lettner \n" "Language-Team: \n" @@ -18,248 +18,289 @@ msgstr "" "X-Poedit-Language: German\n" "X-Poedit-Country: GERMANY\n" -#: ../SparkleDiff/SparkleDiff.cs:77 ../SparkleShare/SparkleShare.cs:50 +#: ../SparkleDiff/SparkleDiff.cs:77 ../SparkleShare/SparkleShare.cs:49 msgid "Git wasn't found." msgstr "Git konnte nicht gefunden werden." -#: ../SparkleDiff/SparkleDiff.cs:78 ../SparkleShare/SparkleShare.cs:51 +#: ../SparkleDiff/SparkleDiff.cs:78 ../SparkleShare/SparkleShare.cs:50 msgid "You can get Git from http://git-scm.com/." msgstr "Sie können Git auf http://git-scm.com/ herunterladen." -#: ../SparkleDiff/SparkleDiff.cs:86 ../SparkleShare/SparkleShare.cs:58 +#: ../SparkleDiff/SparkleDiff.cs:86 ../SparkleShare/SparkleShare.cs:57 msgid "Sorry, you can't run SparkleShare with these permissions." msgstr "Entschuldigung, SparkleShare kann mit diesen Rechten nicht ausgeführt werden." -#: ../SparkleDiff/SparkleDiff.cs:87 ../SparkleShare/SparkleShare.cs:59 -#, fuzzy +#: ../SparkleDiff/SparkleDiff.cs:87 ../SparkleShare/SparkleShare.cs:58 msgid "Things would go utterly wrong." -msgstr "Vieles würde nicht richtig funktionieren." +msgstr "Alles würde völlig schief gehen." -#: ../SparkleDiff/SparkleDiff.cs:157 +#: ../SparkleDiff/SparkleDiff.cs:161 msgid "SparkleDiff Copyright (C) 2010 Hylke Bons" msgstr "SparkleDiff Copyright (C) 2010 Hylke Bons" -#: ../SparkleDiff/SparkleDiff.cs:159 ../SparkleShare/SparkleShare.cs:90 +#: ../SparkleDiff/SparkleDiff.cs:163 ../SparkleShare/SparkleShare.cs:89 msgid "This program comes with ABSOLUTELY NO WARRANTY." msgstr "Diese Anwendung kommt OHNE IRGENDEINE GARANTIE." -#: ../SparkleDiff/SparkleDiff.cs:160 ../SparkleShare/SparkleShare.cs:91 -#, fuzzy +#: ../SparkleDiff/SparkleDiff.cs:164 ../SparkleShare/SparkleShare.cs:90 msgid "This is free software, and you are welcome to redistribute it " -msgstr "Dies ist freie Software. Sie können es weitergeben und/oder modifizieren" +msgstr "Dies ist freie Software, die Sie gerne weitergeben dürfen" -#: ../SparkleDiff/SparkleDiff.cs:161 ../SparkleShare/SparkleShare.cs:92 +#: ../SparkleDiff/SparkleDiff.cs:165 ../SparkleShare/SparkleShare.cs:91 msgid "under certain conditions. Please read the GNU GPLv3 for details." -msgstr "unter bestimmten Bedingungen. Bitte lesen Sie dazu die GNU GPLv3 für weitere Details." +msgstr "unter bestimmten Bedingungen. Bitte lesen Sie die GNU GPLv3 für weitere Details." -#: ../SparkleDiff/SparkleDiff.cs:163 +#: ../SparkleDiff/SparkleDiff.cs:167 msgid "SparkleDiff let's you compare revisions of an image file side by side." -msgstr "SparkleDiff lässt dich Versionen einer Bilddatei nebeneinander vergleichen." +msgstr "Mit SparkleDiff können Sie Revisionen einer Bilddatei nebeneinander vergleichen." -#: ../SparkleDiff/SparkleDiff.cs:165 +#: ../SparkleDiff/SparkleDiff.cs:169 msgid "Usage: sparklediff [FILE]" msgstr "Verwendung: sparklediff [DATEI]" -#: ../SparkleDiff/SparkleDiff.cs:166 +#: ../SparkleDiff/SparkleDiff.cs:170 msgid "Open an image file to show its revisions" -msgstr "Öffnet eine Bilddatei zur Anzeige ihrer Versionen" +msgstr "Öffnet eine Bilddatei zur Anzeige Ihrer Revisionen" -#: ../SparkleDiff/SparkleDiff.cs:168 ../SparkleShare/SparkleShare.cs:99 +#: ../SparkleDiff/SparkleDiff.cs:172 ../SparkleShare/SparkleShare.cs:98 msgid "Arguments:" msgstr "Parameter:" -#: ../SparkleDiff/SparkleDiff.cs:169 ../SparkleShare/SparkleShare.cs:101 +#: ../SparkleDiff/SparkleDiff.cs:173 ../SparkleShare/SparkleShare.cs:100 msgid "\t -h, --help\t\tDisplay this help text." msgstr "\t -h, --help\t\tDiesen Hilfe-Text anzeigen." -#. TRANSLATORS: The parameter is a filename -#: ../SparkleDiff/SparkleDiffWindow.cs:53 -#, csharp-format -msgid "Comparing Revisions of ‘{0}’" -msgstr "Versionen von »{0}« vergleichen" +#: ../SparkleDiff/SparkleDiffWindow.cs:92 +#, fuzzy, csharp-format +msgid "{0} at {1}" +msgstr "»{0}« auf {1}" -#: ../SparkleDiff/SparkleDiffWindow.cs:81 -msgid "Current Revision" -msgstr "Aktuelle Version" +#: ../SparkleDiff/SparkleDiffWindow.cs:93 +#, fuzzy +msgid "ddd MMM d, yyyy" +msgstr "ddd MMM d, yyyy" -#. TRANSLATORS: This is a format specifier according to -#. System.Globalization.DateTimeFormatInfo -#: ../SparkleDiff/SparkleDiffWindow.cs:85 -msgid "d MMM\tH:mm" -msgstr "d MMM\tH:mm" +#: ../SparkleDiff/SparkleDiffWindow.cs:94 +#, fuzzy +msgid "H:mm" +msgstr "H:mm" -#: ../SparkleShare/SparkleDialog.cs:50 +#: ../SparkleShare/SparkleDialog.cs:51 msgid "Address of remote SparkleShare folder:" -msgstr "Adresse des entfernten SparkleShare-Verzeichnis:" +msgstr "Adresse des entfernten SparkleShare-Ordners:" -#: ../SparkleShare/SparkleDialog.cs:81 +#: ../SparkleShare/SparkleDialog.cs:82 msgid "Add Folder" -msgstr "Verzeichnis hinzufügen" - -#: ../SparkleShare/SparkleDialog.cs:126 -#, csharp-format -msgid "Syncing folder ‘{0}’" -msgstr "Verzeichnis »{0}« wird abgeglichen" +msgstr "Ordner hinzufügen" #: ../SparkleShare/SparkleDialog.cs:127 -msgid "SparkleShare will notify you when this is done." -msgstr "SparkleShare wird Sie benachrichtigen sobald diese Aktion abgeschlossen ist." +#, csharp-format +msgid "Syncing folder ‘{0}’" +msgstr "Ordner »{0}« wird abgeglichen" -#: ../SparkleShare/SparkleDialog.cs:129 +#: ../SparkleShare/SparkleDialog.cs:128 +msgid "SparkleShare will notify you when this is done." +msgstr "SparkleShare wird Sie benachrichtigen, sobald diese Aktion abgeschlossen ist." + +#: ../SparkleShare/SparkleDialog.cs:130 msgid "Dismiss" msgstr "Verwerfen" -#: ../SparkleShare/SparkleDialog.cs:157 +#: ../SparkleShare/SparkleDialog.cs:158 #, csharp-format msgid "Something went wrong while syncing ‘{0}’" -msgstr "Beim Datenabgleich von »{0}« ist ein Fehler aufgetreten" +msgstr "Beim Synchronisieren von »{0}« ist ein Fehler aufgetreten" -#: ../SparkleShare/SparkleDialog.cs:167 +#: ../SparkleShare/SparkleDialog.cs:168 msgid "Try Again…" msgstr "Erneut versuchen …" -#: ../SparkleShare/SparkleDialog.cs:197 +#: ../SparkleShare/SparkleDialog.cs:198 #, csharp-format msgid "Successfully synced folder ‘{0}’" -msgstr "Verzeichnis »{0}« erfolgreich abgeglichen" +msgstr "Ordner »{0}« erfolgreich abgeglichen" -#: ../SparkleShare/SparkleDialog.cs:198 -#, fuzzy +#: ../SparkleShare/SparkleDialog.cs:199 msgid "Now make great stuff happen!" msgstr "Und jetzt, tue etwas großartiges!" -#. Add a button to open the folder where the changed file is -#: ../SparkleShare/SparkleDialog.cs:200 ../SparkleShare/SparkleRepo.cs:319 -#: ../SparkleShare/SparkleWindow.cs:63 +#: ../SparkleShare/SparkleDialog.cs:201 ../SparkleShare/SparkleWindow.cs:62 msgid "Open Folder" -msgstr "Verzeichnis öffnen" +msgstr "Ordner öffnen" -#: ../SparkleShare/SparkleHelpers.cs:164 +#: ../SparkleShare/SparkleHelpers.cs:136 #, csharp-format msgid "a second ago" msgid_plural "{0} seconds ago" msgstr[0] "vor einer Sekunde" msgstr[1] "vor {0} Sekunden" -#: ../SparkleShare/SparkleHelpers.cs:170 +#: ../SparkleShare/SparkleHelpers.cs:142 #, csharp-format msgid "a minute ago" msgid_plural "about {0} minutes ago" msgstr[0] "vor einer Minute" msgstr[1] "vor {0} Minuten" -#: ../SparkleShare/SparkleHelpers.cs:176 +#: ../SparkleShare/SparkleHelpers.cs:148 #, csharp-format msgid "about an hour ago" msgid_plural "about {0} hours ago" msgstr[0] "vor einer Stunde" msgstr[1] "vor {0} Stunden" -#: ../SparkleShare/SparkleHelpers.cs:182 +#: ../SparkleShare/SparkleHelpers.cs:154 #, csharp-format msgid "yesterday" msgid_plural "{0} days ago" msgstr[0] "gestern" msgstr[1] "vor {0} Tagen" -#: ../SparkleShare/SparkleHelpers.cs:188 +#: ../SparkleShare/SparkleHelpers.cs:160 #, csharp-format msgid "a month ago" msgid_plural "{0} months ago" msgstr[0] "vor einem Monat" msgstr[1] "vor {0} Monaten" -#: ../SparkleShare/SparkleHelpers.cs:193 +#: ../SparkleShare/SparkleHelpers.cs:165 #, csharp-format msgid "a year ago" msgid_plural "{0} years ago" msgstr[0] "vor einem Jahr" msgstr[1] "vor {0} Jahren" -#: ../SparkleShare/SparkleHelpers.cs:205 +#: ../SparkleShare/SparkleIntro.cs:72 +msgid "Welcome to SparkleShare!" +msgstr "Willkommen bei SparkleShare!" + +#: ../SparkleShare/SparkleIntro.cs:78 +msgid "Before we can create a SparkleShare folder on this computer, we need a few bits of information from you." +msgstr "Bevor wir einen SparkleShare-Ordner auf diesem Computer einrichten können, benötigen wir ein paar Informationen von Ihnen." + +#: ../SparkleShare/SparkleIntro.cs:90 +msgid "Full Name:" +msgstr "Vollständiger Name: " + +#: ../SparkleShare/SparkleIntro.cs:106 +msgid "Email:" +msgstr "Email:" + +#: ../SparkleShare/SparkleIntro.cs:115 +msgid "Folder Address:" +msgstr "Order-Adresse: " + +#: ../SparkleShare/SparkleIntro.cs:122 +msgid "I'm already subscribed to a folder on a SparkleServer" +msgstr "Ich abonniere bereits einen Order auf einem SparkleServer" + +#: ../SparkleShare/SparkleIntro.cs:157 +msgid "Next" +msgstr "Weiter" + +#: ../SparkleShare/SparkleIntro.cs:168 +msgid "Configuring…" +msgstr "Konfiguriere..." + +#: ../SparkleShare/SparkleIntro.cs:220 +msgid "SparkleShare is ready to go!" +msgstr "SparkleShare ist bereit zum Loslegen!" + +#: ../SparkleShare/SparkleIntro.cs:226 +msgid "Now you can start accepting invitations from others. Just click on invitations you get by email and we will take care of the rest." +msgstr "Sie können nun Einladungen annehmen. Klicken Sie einfach auf Einladungen, die Sie per Email erhalten und wir kümmern uns um den Rest." + +#: ../SparkleShare/SparkleIntro.cs:237 +msgid "Learn how to host your own SparkleServer" +msgstr "Lernen Sie, wie Sie ihren eigenen SparkleServer betreiben können" + +#: ../SparkleShare/SparkleIntro.cs:250 +msgid "Finish" +msgstr "Fertigstellen" + +#: ../SparkleShare/SparkleShare.cs:87 +msgid "SparkleShare Copyright (C) 2010 Hylke Bons" +msgstr "SparkleShare Copyright (C) 2010 Hylke Bons" + +#: ../SparkleShare/SparkleShare.cs:93 +msgid "SparkleShare syncs the ~/SparkleShare folder with remote repositories." +msgstr "SparkleShare synchronisiert den Ordner ~/SparkleShare mit dem Remote-Repository." + +#: ../SparkleShare/SparkleShare.cs:95 +msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..." +msgstr "Verwendung: sparkleshare [start|stop|restart] [OPTION]..." + +#: ../SparkleShare/SparkleShare.cs:96 +msgid "Sync SparkleShare folder with remote repositories." +msgstr "SparkleShare Ordner mit dem Remote-Repository synchronisieren." + +#: ../SparkleShare/SparkleShare.cs:99 +msgid "\t -d, --disable-gui\tDon't show the notification icon." +msgstr "\t -d, --disable-gui\tBenachrichtigungs-Symbol nicht anzeigen." + +#: ../SparkleShare/SparkleStatusIcon.cs:130 +msgid "SparkleShare Folder" +msgstr "SparkleShare-Ordner" + +#: ../SparkleShare/SparkleStatusIcon.cs:163 +msgid "No Shared Folders Yet" +msgstr "Noch keine freigegebenen Ordner" + +#: ../SparkleShare/SparkleStatusIcon.cs:171 +msgid "Add Remote Folder…" +msgstr "Remote-Ordner hinzufügen …" + +#: ../SparkleShare/SparkleStatusIcon.cs:184 +msgid "Show Notifications" +msgstr "Benachrichtigungen anzeigen" + +#: ../SparkleShare/SparkleStatusIcon.cs:205 +msgid "About" +msgstr "Über" + +#: ../SparkleShare/SparkleStatusIcon.cs:222 +msgid "Quit" +msgstr "Beenden" + +#: ../SparkleShare/SparkleStatusIcon.cs:271 +msgid "All up to date" +msgstr "Schon am aktuellsten Stand." + +#: ../SparkleShare/SparkleStatusIcon.cs:280 +msgid "Syncing…" +msgstr "Abgleichen …" + +#: ../SparkleShare/SparkleUI.cs:247 +#, fuzzy +msgid "Ouch! Mid-air collision!" +msgstr "Autsch! Zusammenstoß in der Luft!" + +#: ../SparkleShare/SparkleUI.cs:248 +msgid "Don't worry, SparkleShare made a copy of each conflicting file." +msgstr "Keine Sorge, SparkleShare hat eine Kopie jeder im Konflikt stehenden Datei angelegt." + +#: ../SparkleShare/SparkleUI.cs:334 msgid "Hold your ponies!" msgstr "Immer langsam mit den jungen Pferden!" -#: ../SparkleShare/SparkleHelpers.cs:206 -msgid "" -"SparkleShare is known to be insanely fast with \n" -"pictures of unicorns. Please make sure your internets\n" -"are upgraded to the latest version to avoid problems." +#: ../SparkleShare/SparkleUI.cs:335 +#, fuzzy +msgid "SparkleShare is known to be insanely fast with pictures of unicorns. Please make sure your internets are upgraded to the latest version to avoid any problems." msgstr "" "SparkleShare ist bekannt dafür, Bilder von Einhörnern\n" "wahnsinnig schnell zu bearbeiten. Bitte stellen Sie sicher,\n" "dass Sie die neueste Version des Internets installiert haben,\n" "um Probleme zu vermeiden." -#: ../SparkleShare/SparkleShare.cs:88 -msgid "SparkleShare Copyright (C) 2010 Hylke Bons" -msgstr "SparkleShare Copyright (C) 2010 Hylke Bons" - -#: ../SparkleShare/SparkleShare.cs:94 -msgid "SparkleShare syncs the ~/SparkleShare folder with remote repositories." -msgstr "SparkleShare gleicht das Verzeichnis ~/SparkleShare mit entfernten Verzeichnissen ab" - -#: ../SparkleShare/SparkleShare.cs:96 -msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..." -msgstr "Verwendung: sparkleshare [start|stop|restart] [OPTION]..." - -#: ../SparkleShare/SparkleShare.cs:97 -msgid "Sync SparkleShare folder with remote repositories." -msgstr "SparkleShare Ordner mit entfernten Repositories abgleichen." - -#: ../SparkleShare/SparkleShare.cs:100 -msgid "\t -d, --disable-gui\tDon't show the notification icon." -msgstr "\t -d, --disable-gui\tBenachrichtigungs-Symbol nicht anzeigen." - -#: ../SparkleShare/SparkleStatusIcon.cs:69 -msgid "Error syncing" -msgstr "Fehler beim Datenabgleich" - -#: ../SparkleShare/SparkleStatusIcon.cs:72 -msgid "Everything is up to date" -msgstr "Alles ist auf dem aktuellsten Stand" - -#: ../SparkleShare/SparkleStatusIcon.cs:75 -msgid "Syncing…" -msgstr "Abgleichen …" - -#: ../SparkleShare/SparkleStatusIcon.cs:116 -msgid "Add a Remote Folder…" -msgstr "Ein entferntes Verzeichnis hinzufügen …" - -#: ../SparkleShare/SparkleStatusIcon.cs:124 -msgid "Show Notifications" -msgstr "Benachrichtigungen anzeigen" - -#: ../SparkleShare/SparkleStatusIcon.cs:142 -msgid "Visit Website" -msgstr "Website besuchen" - -#: ../SparkleShare/SparkleStatusIcon.cs:159 -msgid "Quit" -msgstr "Beenden" - -#: ../SparkleShare/SparkleUI.cs:145 -msgid "Welcome to SparkleShare!" -msgstr "Willkommen bei SparkleShare!" - -#: ../SparkleShare/SparkleUI.cs:146 -msgid "You don't have any folders set up yet." -msgstr "Sie haben noch keine Verzeichnisse konfiguriert." - -#: ../SparkleShare/SparkleUI.cs:149 -msgid "Add a Folder…" -msgstr "Ein Verzeichnis hinzufügen …" - #. TRANSLATORS: {0} is a folder name, and {1} is a server address -#: ../SparkleShare/SparkleWindow.cs:51 +#: ../SparkleShare/SparkleWindow.cs:50 #, csharp-format -msgid "‘{0}’ on {1}" -msgstr "»{0}« auf {1}" +msgid "Recent Events in ‘{0}’" +msgstr "Letzte Ereignisse in ‘{0}’" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:108 msgid "Get Earlier Version" -msgstr "Holen einer früheren Version" +msgstr "Frühere Version abrufen" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:109 msgid "Make a copy of an earlier version in this folder" @@ -267,23 +308,41 @@ msgstr "Erstelle eine Kopie einer früheren Version in diesem Verzeichnis" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:122 msgid "Select to get a copy of this version" -msgstr "Wählen Sie eine Kopie dieser Version" +msgstr "Selektieren, um eine Kopie dieser Version abzurufen" + +#~ msgid "Comparing Revisions of ‘{0}’" +#~ msgstr "Versionen von »{0}« vergleichen" + +#~ msgid "Current Revision" +#~ msgstr "Aktuelle Version" + +#~ msgid "d MMM\tH:mm" +#~ msgstr "d MMM\tH:mm" + +#~ msgid "Error syncing" +#~ msgstr "Fehler beim Datenabgleich" + +#~ msgid "Everything is up to date" +#~ msgstr "Alles ist auf dem aktuellsten Stand" + +#~ msgid "Visit Website" +#~ msgstr "Website besuchen" + +#~ msgid "You don't have any folders set up yet." +#~ msgstr "Sie haben noch keine Verzeichnisse konfiguriert." + +#~ msgid "Add a Folder…" +#~ msgstr "Ein Verzeichnis hinzufügen …" #~ msgid "folder-sparkleshare" #~ msgstr "ordner-sparkleshare" -#~ msgid "Folder Name: " -#~ msgstr "Ordner Name: " - #~ msgid "Example: " #~ msgstr "Beispiel: " #~ msgid "‘Project’." #~ msgstr "‘Projekt’." -#~ msgid "Remote address: " -#~ msgstr "Remote-Adresse: " - #~ msgid "Downloading files,\n" #~ msgstr "Herunterladen von Dateien,\n" @@ -348,9 +407,6 @@ msgstr "Wählen Sie eine Kopie dieser Version" #~ msgid "] Changes merged." #~ msgstr "] Änderungen zusammengeführt." -#~ msgid "Already up-to-date." -#~ msgstr "Schon am aktuellsten Stand." - #~ msgid "] Nothing going on... " #~ msgstr "] Nichts passiert... " @@ -405,9 +461,6 @@ msgstr "Wählen Sie eine Kopie dieser Version" #~ msgid "’ to ‘" #~ msgstr "‘ zu ‘" -#~ msgid "Open Sharing Folder" -#~ msgstr "Öffne gemeinsamen Ornder" - #~ msgid "Happenings in ‘" #~ msgstr "Ereignis in ‘" diff --git a/po/fr_FR.po b/po/fr_FR.po index 2c450fdc..12e35764 100644 --- a/po/fr_FR.po +++ b/po/fr_FR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-07-25 06:12+0000\n" +"POT-Creation-Date: 2010-07-29 06:23+0000\n" "PO-Revision-Date: 2010-07-13 16:07+0800\n" "Last-Translator: Yann Hermans \n" "Language-Team: French (France)\n" @@ -20,240 +20,279 @@ msgstr "" "X-Poedit-SourceCharset: utf-8\n" "X-Poedit-Country: FRANCE\n" -#: ../SparkleDiff/SparkleDiff.cs:77 ../SparkleShare/SparkleShare.cs:50 +#: ../SparkleDiff/SparkleDiff.cs:77 ../SparkleShare/SparkleShare.cs:49 msgid "Git wasn't found." msgstr "Git n’a pas été détecté." -#: ../SparkleDiff/SparkleDiff.cs:78 ../SparkleShare/SparkleShare.cs:51 +#: ../SparkleDiff/SparkleDiff.cs:78 ../SparkleShare/SparkleShare.cs:50 msgid "You can get Git from http://git-scm.com/." msgstr "Vous pouvez récupérer Git sur http://git-scm.com/." -#: ../SparkleDiff/SparkleDiff.cs:86 ../SparkleShare/SparkleShare.cs:58 +#: ../SparkleDiff/SparkleDiff.cs:86 ../SparkleShare/SparkleShare.cs:57 msgid "Sorry, you can't run SparkleShare with these permissions." msgstr "Désolé, vous ne disposez pas des autorisations nécessaires pour lancer SparkleShare." -#: ../SparkleDiff/SparkleDiff.cs:87 ../SparkleShare/SparkleShare.cs:59 +#: ../SparkleDiff/SparkleDiff.cs:87 ../SparkleShare/SparkleShare.cs:58 msgid "Things would go utterly wrong." msgstr "Les choses pourraient très mal tourner." -#: ../SparkleDiff/SparkleDiff.cs:157 +#: ../SparkleDiff/SparkleDiff.cs:161 msgid "SparkleDiff Copyright (C) 2010 Hylke Bons" msgstr "Copyright (C) SparkleDiff 2010 Hylke Bons" -#: ../SparkleDiff/SparkleDiff.cs:159 ../SparkleShare/SparkleShare.cs:90 +#: ../SparkleDiff/SparkleDiff.cs:163 ../SparkleShare/SparkleShare.cs:89 msgid "This program comes with ABSOLUTELY NO WARRANTY." msgstr "Ce logiciel est diffusé sans AUCUNE GARANTIE." -#: ../SparkleDiff/SparkleDiff.cs:160 ../SparkleShare/SparkleShare.cs:91 +#: ../SparkleDiff/SparkleDiff.cs:164 ../SparkleShare/SparkleShare.cs:90 msgid "This is free software, and you are welcome to redistribute it " msgstr "Ce logiciel est libre, et vous êtes invité à le re‑distribuer " -#: ../SparkleDiff/SparkleDiff.cs:161 ../SparkleShare/SparkleShare.cs:92 +#: ../SparkleDiff/SparkleDiff.cs:165 ../SparkleShare/SparkleShare.cs:91 msgid "under certain conditions. Please read the GNU GPLv3 for details." msgstr "sous certaines conditions. Merci de lire la licence GNU GPLv3 pour de plus amples informations." -#: ../SparkleDiff/SparkleDiff.cs:163 +#: ../SparkleDiff/SparkleDiff.cs:167 msgid "SparkleDiff let's you compare revisions of an image file side by side." msgstr "SparkleDiff vous permet de comparer les versions d’une image côte à côte." -#: ../SparkleDiff/SparkleDiff.cs:165 +#: ../SparkleDiff/SparkleDiff.cs:169 msgid "Usage: sparklediff [FILE]" msgstr "Utilisation : sparklediff [FICHIER]" -#: ../SparkleDiff/SparkleDiff.cs:166 +#: ../SparkleDiff/SparkleDiff.cs:170 msgid "Open an image file to show its revisions" msgstr "Ouvrir une image pour en afficher les versions" -#: ../SparkleDiff/SparkleDiff.cs:168 ../SparkleShare/SparkleShare.cs:99 +#: ../SparkleDiff/SparkleDiff.cs:172 ../SparkleShare/SparkleShare.cs:98 msgid "Arguments:" msgstr "Paramètres :" -#: ../SparkleDiff/SparkleDiff.cs:169 ../SparkleShare/SparkleShare.cs:101 +#: ../SparkleDiff/SparkleDiff.cs:173 ../SparkleShare/SparkleShare.cs:100 msgid "\t -h, --help\t\tDisplay this help text." msgstr "\t -h, --help\t\tAffiche ce texte d’aide." -#. TRANSLATORS: The parameter is a filename -#: ../SparkleDiff/SparkleDiffWindow.cs:53 +#: ../SparkleDiff/SparkleDiffWindow.cs:92 #, csharp-format -msgid "Comparing Revisions of ‘{0}’" -msgstr "Compare les versions de « {0} »" +msgid "{0} at {1}" +msgstr "{0} sur {1}" -#: ../SparkleDiff/SparkleDiffWindow.cs:81 -msgid "Current Revision" -msgstr "Version actuelle" +#: ../SparkleDiff/SparkleDiffWindow.cs:93 +msgid "ddd MMM d, yyyy" +msgstr "ddd d MMM yyyy" -#. TRANSLATORS: This is a format specifier according to -#. System.Globalization.DateTimeFormatInfo -#: ../SparkleDiff/SparkleDiffWindow.cs:85 -msgid "d MMM\tH:mm" -msgstr "d MMM\tH:mm" +#: ../SparkleDiff/SparkleDiffWindow.cs:94 +msgid "H:mm" +msgstr "H:mm" -#: ../SparkleShare/SparkleDialog.cs:50 +#: ../SparkleShare/SparkleDialog.cs:51 msgid "Address of remote SparkleShare folder:" msgstr "Adresse du dossier distant SparkleShare :" -#: ../SparkleShare/SparkleDialog.cs:81 +#: ../SparkleShare/SparkleDialog.cs:82 msgid "Add Folder" msgstr "Ajouter un dossier" -#: ../SparkleShare/SparkleDialog.cs:126 +#: ../SparkleShare/SparkleDialog.cs:127 #, csharp-format msgid "Syncing folder ‘{0}’" msgstr "Synchronise le dossier « {0} »" -#: ../SparkleShare/SparkleDialog.cs:127 +#: ../SparkleShare/SparkleDialog.cs:128 msgid "SparkleShare will notify you when this is done." msgstr "SparkleShare vous signalera la fin de l’opération." -#: ../SparkleShare/SparkleDialog.cs:129 +#: ../SparkleShare/SparkleDialog.cs:130 msgid "Dismiss" msgstr "Abandonner" -#: ../SparkleShare/SparkleDialog.cs:157 +#: ../SparkleShare/SparkleDialog.cs:158 #, csharp-format msgid "Something went wrong while syncing ‘{0}’" msgstr "Une erreur est survenue lors de la synchronisation de « {0} »" -#: ../SparkleShare/SparkleDialog.cs:167 +#: ../SparkleShare/SparkleDialog.cs:168 msgid "Try Again…" msgstr "Essayer de nouveau…" -#: ../SparkleShare/SparkleDialog.cs:197 +#: ../SparkleShare/SparkleDialog.cs:198 #, csharp-format msgid "Successfully synced folder ‘{0}’" msgstr "Le dossier « {0} » a été synchronisé avec succès" -#: ../SparkleShare/SparkleDialog.cs:198 +#: ../SparkleShare/SparkleDialog.cs:199 msgid "Now make great stuff happen!" msgstr "Maintenant, la magie peut opérer !" -#. Add a button to open the folder where the changed file is -#: ../SparkleShare/SparkleDialog.cs:200 ../SparkleShare/SparkleRepo.cs:319 -#: ../SparkleShare/SparkleWindow.cs:63 +#: ../SparkleShare/SparkleDialog.cs:201 ../SparkleShare/SparkleWindow.cs:62 msgid "Open Folder" msgstr "Ouvrir le dossier" -#: ../SparkleShare/SparkleHelpers.cs:164 +#: ../SparkleShare/SparkleHelpers.cs:136 #, csharp-format msgid "a second ago" msgid_plural "{0} seconds ago" msgstr[0] "il y a une seconde" msgstr[1] "il y a {0} secondes" -#: ../SparkleShare/SparkleHelpers.cs:170 +#: ../SparkleShare/SparkleHelpers.cs:142 #, csharp-format msgid "a minute ago" msgid_plural "about {0} minutes ago" msgstr[0] "il y a une minute" msgstr[1] "il y a environ {0} minutes" -#: ../SparkleShare/SparkleHelpers.cs:176 +#: ../SparkleShare/SparkleHelpers.cs:148 #, csharp-format msgid "about an hour ago" msgid_plural "about {0} hours ago" msgstr[0] "il y a environ une heure" msgstr[1] "il y a environ {0} heures" -#: ../SparkleShare/SparkleHelpers.cs:182 +#: ../SparkleShare/SparkleHelpers.cs:154 #, csharp-format msgid "yesterday" msgid_plural "{0} days ago" msgstr[0] "hier" msgstr[1] "il y a {0} jours" -#: ../SparkleShare/SparkleHelpers.cs:188 +#: ../SparkleShare/SparkleHelpers.cs:160 #, csharp-format msgid "a month ago" msgid_plural "{0} months ago" msgstr[0] "il y a un mois" msgstr[1] "il y a {0} mois" -#: ../SparkleShare/SparkleHelpers.cs:193 +#: ../SparkleShare/SparkleHelpers.cs:165 #, csharp-format msgid "a year ago" msgid_plural "{0} years ago" msgstr[0] "il y a un an" msgstr[1] "il y a {0} ans" -#: ../SparkleShare/SparkleHelpers.cs:205 -msgid "Hold your ponies!" -msgstr "Restons calme !" - -#: ../SparkleShare/SparkleHelpers.cs:206 -msgid "" -"SparkleShare is known to be insanely fast with \n" -"pictures of unicorns. Please make sure your internets\n" -"are upgraded to the latest version to avoid problems." -msgstr "" -"SparkleShare est réputé pour son hallucinante rapidité\n" -"concernant les images de licornes. Merci de vérifier que\n" -"votre navigateur est à jour pour éviter tout problème." - -#: ../SparkleShare/SparkleShare.cs:88 -msgid "SparkleShare Copyright (C) 2010 Hylke Bons" -msgstr "Copyright (C) SparkleShare 2010 Hylke Bons" - -#: ../SparkleShare/SparkleShare.cs:94 -msgid "SparkleShare syncs the ~/SparkleShare folder with remote repositories." -msgstr "SparkleShare synchronize le dossier ~/SparkleShare avec les dépôts distants." - -#: ../SparkleShare/SparkleShare.cs:96 -msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..." -msgstr "Utilisation : sparkleshare [start|stop|restart] [OPTION]…" - -#: ../SparkleShare/SparkleShare.cs:97 -msgid "Sync SparkleShare folder with remote repositories." -msgstr "Synchroniser le dossier SparkleShare avec les dépôts distants." - -#: ../SparkleShare/SparkleShare.cs:100 -msgid "\t -d, --disable-gui\tDon't show the notification icon." -msgstr "\t -d, --disable-gui\tMasquer l’icône de notification." - -#: ../SparkleShare/SparkleStatusIcon.cs:69 -msgid "Error syncing" -msgstr "Erreur de synchronisation" - -#: ../SparkleShare/SparkleStatusIcon.cs:72 -msgid "Everything is up to date" -msgstr "Tout est à jour" - -#: ../SparkleShare/SparkleStatusIcon.cs:75 -msgid "Syncing…" -msgstr "Synchronisation en cours…" - -#: ../SparkleShare/SparkleStatusIcon.cs:116 -msgid "Add a Remote Folder…" -msgstr "Ajouter un dossier distant…" - -#: ../SparkleShare/SparkleStatusIcon.cs:124 -msgid "Show Notifications" -msgstr "Montrer les notifications" - -#: ../SparkleShare/SparkleStatusIcon.cs:142 -msgid "Visit Website" -msgstr "Visiter le site web" - -#: ../SparkleShare/SparkleStatusIcon.cs:159 -msgid "Quit" -msgstr "Quitter" - -#: ../SparkleShare/SparkleUI.cs:145 +#: ../SparkleShare/SparkleIntro.cs:72 msgid "Welcome to SparkleShare!" msgstr "Bienvenue sur SparkleShare !" -#: ../SparkleShare/SparkleUI.cs:146 -msgid "You don't have any folders set up yet." -msgstr "Vous n’avez encore configuré aucun dossier." +#: ../SparkleShare/SparkleIntro.cs:78 +msgid "Before we can create a SparkleShare folder on this computer, we need a few bits of information from you." +msgstr "Afin de pouvoir créer un dossier SparkleShare sur cet ordinateur, nous avons besoin de quelques informations." -#: ../SparkleShare/SparkleUI.cs:149 -msgid "Add a Folder…" -msgstr "Ajouter un dossier…" +#: ../SparkleShare/SparkleIntro.cs:90 +msgid "Full Name:" +msgstr "Nom et prénom:" + +#: ../SparkleShare/SparkleIntro.cs:106 +msgid "Email:" +msgstr "Email:" + +#: ../SparkleShare/SparkleIntro.cs:115 +msgid "Folder Address:" +msgstr "Adresse du dossier:" + +#: ../SparkleShare/SparkleIntro.cs:122 +msgid "I'm already subscribed to a folder on a SparkleServer" +msgstr "Je suis déjà assigné à un dossier sur le serveur SparkleServer" + +#: ../SparkleShare/SparkleIntro.cs:157 +msgid "Next" +msgstr "Suivant" + +#: ../SparkleShare/SparkleIntro.cs:168 +msgid "Configuring…" +msgstr "Configuration en cours..." + +#: ../SparkleShare/SparkleIntro.cs:220 +msgid "SparkleShare is ready to go!" +msgstr "SparkleShare est opérationnel!" + +#: ../SparkleShare/SparkleIntro.cs:226 +msgid "Now you can start accepting invitations from others. Just click on invitations you get by email and we will take care of the rest." +msgstr "" +"Vous pouvez désormais accepter des invitations.\r\n" +"Pour cela, il vous suffira de cliquer sur les invitations que vous aurez reçues par mail et nous nous occuperons du reste." + +#: ../SparkleShare/SparkleIntro.cs:237 +msgid "Learn how to host your own SparkleServer" +msgstr "Apprendre à héberger son propre serveur SparkleServer" + +#: ../SparkleShare/SparkleIntro.cs:250 +msgid "Finish" +msgstr "Terminer" + +#: ../SparkleShare/SparkleShare.cs:87 +msgid "SparkleShare Copyright (C) 2010 Hylke Bons" +msgstr "Copyright (C) SparkleShare 2010 Hylke Bons" + +#: ../SparkleShare/SparkleShare.cs:93 +msgid "SparkleShare syncs the ~/SparkleShare folder with remote repositories." +msgstr "SparkleShare synchronize le dossier ~/SparkleShare avec les dépôts distants." + +#: ../SparkleShare/SparkleShare.cs:95 +msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..." +msgstr "Utilisation : sparkleshare [start|stop|restart] [OPTION]…" + +#: ../SparkleShare/SparkleShare.cs:96 +msgid "Sync SparkleShare folder with remote repositories." +msgstr "Synchroniser le dossier SparkleShare avec les dépôts distants." + +#: ../SparkleShare/SparkleShare.cs:99 +msgid "\t -d, --disable-gui\tDon't show the notification icon." +msgstr "\t -d, --disable-gui\tMasquer l’icône de notification." + +#: ../SparkleShare/SparkleStatusIcon.cs:130 +msgid "SparkleShare Folder" +msgstr "Dossier SparkleShare " + +#: ../SparkleShare/SparkleStatusIcon.cs:163 +msgid "No Shared Folders Yet" +msgstr "Encore aucun dossier de partagé" + +#: ../SparkleShare/SparkleStatusIcon.cs:171 +msgid "Add Remote Folder…" +msgstr "Ajouter un dossier distant..." + +#: ../SparkleShare/SparkleStatusIcon.cs:184 +msgid "Show Notifications" +msgstr "Montrer les notifications" + +#: ../SparkleShare/SparkleStatusIcon.cs:205 +msgid "About" +msgstr "A propos" + +#: ../SparkleShare/SparkleStatusIcon.cs:222 +msgid "Quit" +msgstr "Quitter" + +#: ../SparkleShare/SparkleStatusIcon.cs:271 +msgid "All up to date" +msgstr "Tous à jour" + +#: ../SparkleShare/SparkleStatusIcon.cs:280 +msgid "Syncing…" +msgstr "Synchronisation en cours…" + +#: ../SparkleShare/SparkleUI.cs:247 +msgid "Ouch! Mid-air collision!" +msgstr "Outch! Collision en plein ciel!" + +#: ../SparkleShare/SparkleUI.cs:248 +msgid "Don't worry, SparkleShare made a copy of each conflicting file." +msgstr "Ne vous inquiétez pas, SparkleShare à effectué une copie de chacun des fichiers en conflit." + +#: ../SparkleShare/SparkleUI.cs:334 +msgid "Hold your ponies!" +msgstr "Restons calme !" + +#: ../SparkleShare/SparkleUI.cs:335 +msgid "SparkleShare is known to be insanely fast with pictures of unicorns. Please make sure your internets are upgraded to the latest version to avoid any problems." +msgstr "SparkleShare est réputé pour son hallucinante rapidité concernant les images de licornes. Merci de vérifier que votre navigateur est à jour pour éviter tout problème." #. TRANSLATORS: {0} is a folder name, and {1} is a server address -#: ../SparkleShare/SparkleWindow.cs:51 +#: ../SparkleShare/SparkleWindow.cs:50 #, csharp-format -msgid "‘{0}’ on {1}" -msgstr "« {0} » sur {1}" +msgid "Recent Events in ‘{0}’" +msgstr "Derniers événements dans « {0} »" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:108 msgid "Get Earlier Version" @@ -266,3 +305,27 @@ msgstr "Créer une copie d'une version antérieure de ce dossier" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:122 msgid "Select to get a copy of this version" msgstr "Sélectionner pour obtenir une copie de cette version" + +#~ msgid "Comparing Revisions of ‘{0}’" +#~ msgstr "Compare les versions de « {0} »" + +#~ msgid "Current Revision" +#~ msgstr "Version actuelle" + +#~ msgid "d MMM\tH:mm" +#~ msgstr "d MMM\tH:mm" + +#~ msgid "Error syncing" +#~ msgstr "Erreur de synchronisation" + +#~ msgid "Everything is up to date" +#~ msgstr "Tout est à jour" + +#~ msgid "Visit Website" +#~ msgstr "Visiter le site web" + +#~ msgid "You don't have any folders set up yet." +#~ msgstr "Vous n’avez encore configuré aucun dossier." + +#~ msgid "Add a Folder…" +#~ msgstr "Ajouter un dossier…" diff --git a/po/pl.po b/po/pl.po index 43a7f0f0..29fb3702 100644 --- a/po/pl.po +++ b/po/pl.po @@ -10,133 +10,129 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-07-21 19:48+0000\n" +"POT-Creation-Date: 2010-07-26 00:04+0000\n" "PO-Revision-Date: 2010-06-11 21:59+0200\n" "Last-Translator: Łukasz Jernaś \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Country: Poland\n" "Language: pl\n" +"X-Generator: Virtaal 0.5.2\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Poedit-Language: Polish\n" -"X-Poedit-Country: Poland\n" -"X-Generator: Virtaal 0.5.2\n" -#: ../SparkleDiff/SparkleDiff.cs:77 ../SparkleShare/SparkleShare.cs:50 +#: ../SparkleDiff/SparkleDiff.cs:77 ../SparkleShare/SparkleShare.cs:49 msgid "Git wasn't found." msgstr "Nie znaleziono programu Git." -#: ../SparkleDiff/SparkleDiff.cs:78 ../SparkleShare/SparkleShare.cs:51 +#: ../SparkleDiff/SparkleDiff.cs:78 ../SparkleShare/SparkleShare.cs:50 msgid "You can get Git from http://git-scm.com/." msgstr "Można go pobrać ze strony http://git-scm.com/." -#: ../SparkleDiff/SparkleDiff.cs:86 ../SparkleShare/SparkleShare.cs:58 +#: ../SparkleDiff/SparkleDiff.cs:86 ../SparkleShare/SparkleShare.cs:57 msgid "Sorry, you can't run SparkleShare with these permissions." msgstr "Przepraszamy, nie można uruchomić programu SparkleShare z bieżącymi uprawnieniami." -#: ../SparkleDiff/SparkleDiff.cs:87 ../SparkleShare/SparkleShare.cs:59 +#: ../SparkleDiff/SparkleDiff.cs:87 ../SparkleShare/SparkleShare.cs:58 msgid "Things would go utterly wrong." msgstr "Może to spowodować nieprzewidziane skutki." -#: ../SparkleDiff/SparkleDiff.cs:157 +#: ../SparkleDiff/SparkleDiff.cs:161 msgid "SparkleDiff Copyright (C) 2010 Hylke Bons" msgstr "SparkleDiff Copyright (C) 2010 Hylke Bons" -#: ../SparkleDiff/SparkleDiff.cs:159 ../SparkleShare/SparkleShare.cs:90 +#: ../SparkleDiff/SparkleDiff.cs:163 ../SparkleShare/SparkleShare.cs:89 msgid "This program comes with ABSOLUTELY NO WARRANTY." msgstr "Niniejszy program dostarczany jest BEZ JAKIEJKOLWIEK GWARANCJI." -#: ../SparkleDiff/SparkleDiff.cs:160 ../SparkleShare/SparkleShare.cs:91 +#: ../SparkleDiff/SparkleDiff.cs:164 ../SparkleShare/SparkleShare.cs:90 msgid "This is free software, and you are welcome to redistribute it " msgstr "Niniejszy program jest wolnym oprogramowanie, można go rozprowadzać dalej pod pewnymi warunkami." -#: ../SparkleDiff/SparkleDiff.cs:161 ../SparkleShare/SparkleShare.cs:92 +#: ../SparkleDiff/SparkleDiff.cs:165 ../SparkleShare/SparkleShare.cs:91 msgid "under certain conditions. Please read the GNU GPLv3 for details." msgstr "Aby uzyskać więcej informacji, proszę zapoznać się z tekstem licencji GNU GPLv3." -#: ../SparkleDiff/SparkleDiff.cs:163 +#: ../SparkleDiff/SparkleDiff.cs:167 msgid "SparkleDiff let's you compare revisions of an image file side by side." msgstr "Program SparkleDiff pozwala na porównywanie różnych rewizji pliku graficznego obok siebie." -#: ../SparkleDiff/SparkleDiff.cs:165 +#: ../SparkleDiff/SparkleDiff.cs:169 msgid "Usage: sparklediff [FILE]" msgstr "Sposób użycia: sparklediff [PLIK]" -#: ../SparkleDiff/SparkleDiff.cs:166 +#: ../SparkleDiff/SparkleDiff.cs:170 msgid "Open an image file to show its revisions" msgstr "Otwiera plik graficzny z możliwością porównywania jego rewizji" -#: ../SparkleDiff/SparkleDiff.cs:168 ../SparkleShare/SparkleShare.cs:99 +#: ../SparkleDiff/SparkleDiff.cs:172 ../SparkleShare/SparkleShare.cs:98 msgid "Arguments:" msgstr "Parametry:" -#: ../SparkleDiff/SparkleDiff.cs:169 ../SparkleShare/SparkleShare.cs:101 +#: ../SparkleDiff/SparkleDiff.cs:173 ../SparkleShare/SparkleShare.cs:100 msgid "\t -h, --help\t\tDisplay this help text." msgstr "\t -h, --help\t\tWyświetla opcje pomocy." -#. TRANSLATORS: The parameter is a filename -#: ../SparkleDiff/SparkleDiffWindow.cs:53 +#: ../SparkleDiff/SparkleDiffWindow.cs:92 #, csharp-format -msgid "Comparing Revisions of ‘{0}’" -msgstr "Porównywanie rewizji pliku „{0}”" +msgid "{0} at {1}" +msgstr "{0} na {1}" -#: ../SparkleDiff/SparkleDiffWindow.cs:81 -msgid "Current Revision" -msgstr "Bieżąca rewizja" +#: ../SparkleDiff/SparkleDiffWindow.cs:93 +msgid "ddd MMM d, yyyy" +msgstr "" -#. TRANSLATORS: This is a format specifier according to -#. System.Globalization.DateTimeFormatInfo -#: ../SparkleDiff/SparkleDiffWindow.cs:85 -msgid "d MMM\tH:mm" -msgstr "d MMM\tH:mm" +#: ../SparkleDiff/SparkleDiffWindow.cs:94 +#, fuzzy +msgid "H:mm" +msgstr "H:mm" -#: ../SparkleShare/SparkleDialog.cs:50 +#: ../SparkleShare/SparkleDialog.cs:51 msgid "Address of remote SparkleShare folder:" msgstr "Adres zdalnego katalogu SparkleShare:" -#: ../SparkleShare/SparkleDialog.cs:81 +#: ../SparkleShare/SparkleDialog.cs:82 msgid "Add Folder" msgstr "Dodaj katalog" -#: ../SparkleShare/SparkleDialog.cs:126 +#: ../SparkleShare/SparkleDialog.cs:127 #, csharp-format msgid "Syncing folder ‘{0}’" msgstr "Synchronizowanie katalogu „{0}”" -#: ../SparkleShare/SparkleDialog.cs:127 +#: ../SparkleShare/SparkleDialog.cs:128 msgid "SparkleShare will notify you when this is done." msgstr "Zostanie wyświetlone powiadomienie w momencie zakończenia." -#: ../SparkleShare/SparkleDialog.cs:129 +#: ../SparkleShare/SparkleDialog.cs:130 msgid "Dismiss" msgstr "Porzuć" -#: ../SparkleShare/SparkleDialog.cs:157 +#: ../SparkleShare/SparkleDialog.cs:158 #, csharp-format msgid "Something went wrong while syncing ‘{0}’" msgstr "Wystąpił błąd w trakcie synchronizowania „{0}”" -#: ../SparkleShare/SparkleDialog.cs:167 +#: ../SparkleShare/SparkleDialog.cs:168 msgid "Try Again…" msgstr "Spróbuj ponownie…" -#: ../SparkleShare/SparkleDialog.cs:197 +#: ../SparkleShare/SparkleDialog.cs:198 #, csharp-format msgid "Successfully synced folder ‘{0}’" msgstr "Poprawnie zsynchronizowano katalog „{0}”" -#: ../SparkleShare/SparkleDialog.cs:198 +#: ../SparkleShare/SparkleDialog.cs:199 msgid "Now make great stuff happen!" msgstr "Teraz możesz zacząć czynić wielkie rzeczy!" -#. Add a button to open the folder where the changed file is -#: ../SparkleShare/SparkleDialog.cs:200 ../SparkleShare/SparkleRepo.cs:319 -#: ../SparkleShare/SparkleWindow.cs:63 +#: ../SparkleShare/SparkleDialog.cs:201 ../SparkleShare/SparkleWindow.cs:62 msgid "Open Folder" msgstr "Otwórz katalog" -#: ../SparkleShare/SparkleHelpers.cs:164 +#: ../SparkleShare/SparkleHelpers.cs:136 #, csharp-format msgid "a second ago" msgid_plural "{0} seconds ago" @@ -144,7 +140,7 @@ msgstr[0] "sekundę temu" msgstr[1] "{0} sekundy temu" msgstr[2] "{0} sekund temu" -#: ../SparkleShare/SparkleHelpers.cs:170 +#: ../SparkleShare/SparkleHelpers.cs:142 #, csharp-format msgid "a minute ago" msgid_plural "about {0} minutes ago" @@ -152,7 +148,7 @@ msgstr[0] "minutę temu" msgstr[1] "około {0} minuty temu" msgstr[2] "około {0} minut temu" -#: ../SparkleShare/SparkleHelpers.cs:176 +#: ../SparkleShare/SparkleHelpers.cs:148 #, csharp-format msgid "about an hour ago" msgid_plural "about {0} hours ago" @@ -160,7 +156,7 @@ msgstr[0] "około godzinę temu" msgstr[1] "około {0} godziny temu" msgstr[2] "około {0} godzin temu" -#: ../SparkleShare/SparkleHelpers.cs:182 +#: ../SparkleShare/SparkleHelpers.cs:154 #, csharp-format msgid "yesterday" msgid_plural "{0} days ago" @@ -168,7 +164,7 @@ msgstr[0] "wczoraj" msgstr[1] "{0} dni temu" msgstr[2] "{0} dni temu" -#: ../SparkleShare/SparkleHelpers.cs:188 +#: ../SparkleShare/SparkleHelpers.cs:160 #, csharp-format msgid "a month ago" msgid_plural "{0} months ago" @@ -176,7 +172,7 @@ msgstr[0] "miesiąc temu" msgstr[1] "{0} miesiące temu" msgstr[2] "{0} miesięcy temu" -#: ../SparkleShare/SparkleHelpers.cs:193 +#: ../SparkleShare/SparkleHelpers.cs:165 #, csharp-format msgid "a year ago" msgid_plural "{0} years ago" @@ -184,85 +180,129 @@ msgstr[0] "rok temu" msgstr[1] "{0} lata temu" msgstr[2] "{0} lat temu" -#: ../SparkleShare/SparkleHelpers.cs:205 -msgid "Hold your ponies!" -msgstr "Wstrzymaj konie!" - -#: ../SparkleShare/SparkleHelpers.cs:206 -msgid "" -"SparkleShare is known to be insanely fast with \n" -"pictures of unicorns. Please make sure your internets\n" -"are upgraded to the latest version to avoid problems." -msgstr "" -"Program SparkleShare jest znany z niesamowitej szybkości \n" -" przy wysyłaniu obrazków z jednorożcami.\n" -"Dopilnuj, by Twój internet był w najnowszej wersji, aby uniknąć problemów." - -#: ../SparkleShare/SparkleShare.cs:88 -msgid "SparkleShare Copyright (C) 2010 Hylke Bons" -msgstr "SparkleShare Copyright (C) 2010 Hylke Bons" - -#: ../SparkleShare/SparkleShare.cs:94 -msgid "SparkleShare syncs the ~/SparkleShare folder with remote repositories." -msgstr "Program SparkleShare synchronizuje zawartość katalogu ~/SparkleShare ze zdalnymi repozytoriami." - -#: ../SparkleShare/SparkleShare.cs:96 -msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..." -msgstr "Użycie: sparkleshare [start|stop|restart] [OPCJA]..." - -#: ../SparkleShare/SparkleShare.cs:97 -msgid "Sync SparkleShare folder with remote repositories." -msgstr "Synchronizuj zawartość katalogu SparkleShare ze zdalnymi repozytoriami." - -#: ../SparkleShare/SparkleShare.cs:100 -msgid "\t -d, --disable-gui\tDon't show the notification icon." -msgstr "\t -d, --disable-gui\tWyłącza wyświetlanie ikony w obszarze powiadamiania." - -#: ../SparkleShare/SparkleStatusIcon.cs:69 -msgid "Error syncing" -msgstr "Błąd w trakcie synchronizacji" - -#: ../SparkleShare/SparkleStatusIcon.cs:72 -msgid "Everything is up to date" -msgstr "Wszystko jest aktualne" - -#: ../SparkleShare/SparkleStatusIcon.cs:75 -msgid "Syncing…" -msgstr "Synchronizowanie…" - -#: ../SparkleShare/SparkleStatusIcon.cs:116 -msgid "Add a Remote Folder…" -msgstr "Dodaj zdalny katalog…" - -#: ../SparkleShare/SparkleStatusIcon.cs:124 -msgid "Show Notifications" -msgstr "Wyświetlanie powiadomień" - -#: ../SparkleShare/SparkleStatusIcon.cs:142 -msgid "Visit Website" -msgstr "Odwiedź stronę domową" - -#: ../SparkleShare/SparkleStatusIcon.cs:159 -msgid "Quit" -msgstr "Zakończ" - -#: ../SparkleShare/SparkleUI.cs:145 +#: ../SparkleShare/SparkleIntro.cs:72 msgid "Welcome to SparkleShare!" msgstr "Witamy w programie SparkleShare!" -#: ../SparkleShare/SparkleUI.cs:146 -msgid "You don't have any folders set up yet." -msgstr "Nie ustawiono żadnych katalogów." +#: ../SparkleShare/SparkleIntro.cs:78 +msgid "Before we can create a SparkleShare folder on this computer, we need a few bits of information from you." +msgstr "" -#: ../SparkleShare/SparkleUI.cs:149 -msgid "Add a Folder…" -msgstr "Dodaj katalog…" +#: ../SparkleShare/SparkleIntro.cs:90 +msgid "Full Name:" +msgstr "" + +#: ../SparkleShare/SparkleIntro.cs:106 +#, fuzzy +msgid "Email:" +msgstr "Email:" + +#: ../SparkleShare/SparkleIntro.cs:115 +msgid "Folder Address:" +msgstr "" + +#: ../SparkleShare/SparkleIntro.cs:122 +msgid "I'm already subscribed to a folder on a SparkleServer" +msgstr "" + +#: ../SparkleShare/SparkleIntro.cs:157 +msgid "Next" +msgstr "" + +#: ../SparkleShare/SparkleIntro.cs:168 +msgid "Configuring…" +msgstr "" + +#: ../SparkleShare/SparkleIntro.cs:220 +msgid "SparkleShare is ready to go!" +msgstr "" + +#: ../SparkleShare/SparkleIntro.cs:226 +msgid "Now you can start accepting invitations from others. Just click on invitations you get by email and we will take care of the rest." +msgstr "" + +#: ../SparkleShare/SparkleIntro.cs:237 +msgid "Learn how to host your own SparkleServer" +msgstr "" + +#: ../SparkleShare/SparkleIntro.cs:250 +msgid "Finish" +msgstr "" + +#: ../SparkleShare/SparkleShare.cs:87 +msgid "SparkleShare Copyright (C) 2010 Hylke Bons" +msgstr "SparkleShare Copyright (C) 2010 Hylke Bons" + +#: ../SparkleShare/SparkleShare.cs:93 +msgid "SparkleShare syncs the ~/SparkleShare folder with remote repositories." +msgstr "Program SparkleShare synchronizuje zawartość katalogu ~/SparkleShare ze zdalnymi repozytoriami." + +#: ../SparkleShare/SparkleShare.cs:95 +msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..." +msgstr "Użycie: sparkleshare [start|stop|restart] [OPCJA]..." + +#: ../SparkleShare/SparkleShare.cs:96 +msgid "Sync SparkleShare folder with remote repositories." +msgstr "Synchronizuj zawartość katalogu SparkleShare ze zdalnymi repozytoriami." + +#: ../SparkleShare/SparkleShare.cs:99 +msgid "\t -d, --disable-gui\tDon't show the notification icon." +msgstr "\t -d, --disable-gui\tWyłącza wyświetlanie ikony w obszarze powiadamiania." + +#: ../SparkleShare/SparkleStatusIcon.cs:130 +#, fuzzy +msgid "SparkleShare Folder" +msgstr "Adres zdalnego katalogu SparkleShare:" + +#: ../SparkleShare/SparkleStatusIcon.cs:163 +msgid "No Shared Folders Yet" +msgstr "" + +#: ../SparkleShare/SparkleStatusIcon.cs:171 +msgid "Add Remote Folder…" +msgstr "Dodaj zdalny katalog…" + +#: ../SparkleShare/SparkleStatusIcon.cs:184 +msgid "Show Notifications" +msgstr "Wyświetlanie powiadomień" + +#: ../SparkleShare/SparkleStatusIcon.cs:205 +msgid "About" +msgstr "O programie" + +#: ../SparkleShare/SparkleStatusIcon.cs:222 +msgid "Quit" +msgstr "Zakończ" + +#: ../SparkleShare/SparkleStatusIcon.cs:271 +msgid "All up to date" +msgstr "" + +#: ../SparkleShare/SparkleStatusIcon.cs:280 +msgid "Syncing…" +msgstr "Synchronizowanie…" + +#: ../SparkleShare/SparkleUI.cs:247 +msgid "Ouch! Mid-air collision!" +msgstr "" + +#: ../SparkleShare/SparkleUI.cs:248 +msgid "Don't worry, SparkleShare made a copy of each conflicting file." +msgstr "" + +#: ../SparkleShare/SparkleUI.cs:334 +msgid "Hold your ponies!" +msgstr "Wstrzymaj konie!" + +#: ../SparkleShare/SparkleUI.cs:335 +msgid "SparkleShare is known to be insanely fast with pictures of unicorns. Please make sure your internets are upgraded to the latest version to avoid any problems." +msgstr "Program SparkleShare jest znany z niesamowitej szybkości przy wysyłaniu obrazków z jednorożcami. Dopilnuj, by Twój internet był w najnowszej wersji, aby uniknąć problemów." #. TRANSLATORS: {0} is a folder name, and {1} is a server address -#: ../SparkleShare/SparkleWindow.cs:51 +#: ../SparkleShare/SparkleWindow.cs:50 #, csharp-format -msgid "‘{0}’ on {1}" -msgstr "„{0}” na {1}" +msgid "Recent Events in ‘{0}’" +msgstr "" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:108 msgid "Get Earlier Version" @@ -276,5 +316,29 @@ msgstr "Tworzy kopię wcześniejszej wersji w tym katalogu" msgid "Select to get a copy of this version" msgstr "Zaznacz, aby pobrać kopię tej wersji" +#~ msgid "Comparing Revisions of ‘{0}’" +#~ msgstr "Porównywanie rewizji pliku „{0}”" + +#~ msgid "Current Revision" +#~ msgstr "Bieżąca rewizja" + +#~ msgid "d MMM\tH:mm" +#~ msgstr "d MMM\tH:mm" + +#~ msgid "Error syncing" +#~ msgstr "Błąd w trakcie synchronizacji" + +#~ msgid "Everything is up to date" +#~ msgstr "Wszystko jest aktualne" + +#~ msgid "Visit Website" +#~ msgstr "Odwiedź stronę domową" + +#~ msgid "You don't have any folders set up yet." +#~ msgstr "Nie ustawiono żadnych katalogów." + +#~ msgid "Add a Folder…" +#~ msgstr "Dodaj katalog…" + #~ msgid "That’s you!" #~ msgstr "To ty!" diff --git a/po/pt_BR.po b/po/pt_BR.po index f169601b..d7a48ccf 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: SparkleShare\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-07-22 06:17+0000\n" +"POT-Creation-Date: 2010-07-28 08:26+0000\n" "PO-Revision-Date: 2010-07-05 13:01-0300\n" "Last-Translator: Magnun Leno \n" "Language-Team: Brazilian Portuguese\n" @@ -20,241 +20,277 @@ msgstr "" "X-Poedit-SourceCharset: utf-8\n" "X-Poedit-Country: BRAZIL\n" -#: ../SparkleDiff/SparkleDiff.cs:77 ../SparkleShare/SparkleShare.cs:50 +#: ../SparkleDiff/SparkleDiff.cs:77 ../SparkleShare/SparkleShare.cs:49 msgid "Git wasn't found." msgstr "Git não foi encontrado." -#: ../SparkleDiff/SparkleDiff.cs:78 ../SparkleShare/SparkleShare.cs:51 +#: ../SparkleDiff/SparkleDiff.cs:78 ../SparkleShare/SparkleShare.cs:50 msgid "You can get Git from http://git-scm.com/." msgstr "Você pode obter o Git no site http://git-scm.com/." -#: ../SparkleDiff/SparkleDiff.cs:86 ../SparkleShare/SparkleShare.cs:58 +#: ../SparkleDiff/SparkleDiff.cs:86 ../SparkleShare/SparkleShare.cs:57 msgid "Sorry, you can't run SparkleShare with these permissions." msgstr "Descuple, você não pode rodar o SparkleShare sem essas permissões." -#: ../SparkleDiff/SparkleDiff.cs:87 ../SparkleShare/SparkleShare.cs:59 +#: ../SparkleDiff/SparkleDiff.cs:87 ../SparkleShare/SparkleShare.cs:58 msgid "Things would go utterly wrong." msgstr "As coisas vão dar completamente errado." -#: ../SparkleDiff/SparkleDiff.cs:157 +#: ../SparkleDiff/SparkleDiff.cs:161 msgid "SparkleDiff Copyright (C) 2010 Hylke Bons" msgstr "Direitos Autorais SparkleShare (C) 2010 Hylke Bons" -#: ../SparkleDiff/SparkleDiff.cs:159 ../SparkleShare/SparkleShare.cs:90 +#: ../SparkleDiff/SparkleDiff.cs:163 ../SparkleShare/SparkleShare.cs:89 msgid "This program comes with ABSOLUTELY NO WARRANTY." msgstr "Este programa vem com ABSOLUTAMENTE NENHUMA GARANTIA." -#: ../SparkleDiff/SparkleDiff.cs:160 ../SparkleShare/SparkleShare.cs:91 +#: ../SparkleDiff/SparkleDiff.cs:164 ../SparkleShare/SparkleShare.cs:90 msgid "This is free software, and you are welcome to redistribute it " msgstr "Este é um software livre, e você é incentivado a distribuí-lo " -#: ../SparkleDiff/SparkleDiff.cs:161 ../SparkleShare/SparkleShare.cs:92 +#: ../SparkleDiff/SparkleDiff.cs:165 ../SparkleShare/SparkleShare.cs:91 msgid "under certain conditions. Please read the GNU GPLv3 for details." msgstr "sob certas condições. Por favor leia a licença GNU GPLv3 para mais detalhes." -#: ../SparkleDiff/SparkleDiff.cs:163 +#: ../SparkleDiff/SparkleDiff.cs:167 msgid "SparkleDiff let's you compare revisions of an image file side by side." msgstr "O SparkleDiff permite que você compare lado a lado revisões de uma imagem." -#: ../SparkleDiff/SparkleDiff.cs:165 +#: ../SparkleDiff/SparkleDiff.cs:169 msgid "Usage: sparklediff [FILE]" msgstr "Utilização: sparklediff [ARQUIVO]" -#: ../SparkleDiff/SparkleDiff.cs:166 +#: ../SparkleDiff/SparkleDiff.cs:170 msgid "Open an image file to show its revisions" msgstr "Abre um arquivo de imagem e mostra suas revisões" -#: ../SparkleDiff/SparkleDiff.cs:168 ../SparkleShare/SparkleShare.cs:99 +#: ../SparkleDiff/SparkleDiff.cs:172 ../SparkleShare/SparkleShare.cs:98 msgid "Arguments:" msgstr "Argumentos:" -#: ../SparkleDiff/SparkleDiff.cs:169 ../SparkleShare/SparkleShare.cs:101 +#: ../SparkleDiff/SparkleDiff.cs:173 ../SparkleShare/SparkleShare.cs:100 msgid "\t -h, --help\t\tDisplay this help text." msgstr "\t -h, --help\t\tMostra esse texto de ajuda." -#. TRANSLATORS: The parameter is a filename -#: ../SparkleDiff/SparkleDiffWindow.cs:53 +#: ../SparkleDiff/SparkleDiffWindow.cs:92 #, csharp-format -msgid "Comparing Revisions of ‘{0}’" -msgstr "Comparando revisões de '{0}'" +msgid "{0} at {1}" +msgstr "{0} em {1}" -#: ../SparkleDiff/SparkleDiffWindow.cs:81 -msgid "Current Revision" -msgstr "Revisão Atual" +#: ../SparkleDiff/SparkleDiffWindow.cs:93 +msgid "ddd MMM d, yyyy" +msgstr "ddd MMM d, yyyy" -#. TRANSLATORS: This is a format specifier according to -#. System.Globalization.DateTimeFormatInfo -#: ../SparkleDiff/SparkleDiffWindow.cs:85 -msgid "d MMM\tH:mm" -msgstr "" +#: ../SparkleDiff/SparkleDiffWindow.cs:94 +msgid "H:mm" +msgstr "H:mm" -#: ../SparkleShare/SparkleDialog.cs:50 +#: ../SparkleShare/SparkleDialog.cs:51 msgid "Address of remote SparkleShare folder:" msgstr "Endereço da pasta remota SparkleShare:" -#: ../SparkleShare/SparkleDialog.cs:81 +#: ../SparkleShare/SparkleDialog.cs:82 msgid "Add Folder" msgstr "Adicionar Pasta" -#: ../SparkleShare/SparkleDialog.cs:126 +#: ../SparkleShare/SparkleDialog.cs:127 #, csharp-format msgid "Syncing folder ‘{0}’" msgstr "Sincronizando pasta ‘{0}’" -#: ../SparkleShare/SparkleDialog.cs:127 +#: ../SparkleShare/SparkleDialog.cs:128 msgid "SparkleShare will notify you when this is done." msgstr "SparkleShare irá notifica-lo quando houver concluído." -#: ../SparkleShare/SparkleDialog.cs:129 +#: ../SparkleShare/SparkleDialog.cs:130 msgid "Dismiss" msgstr "Fechar" -#: ../SparkleShare/SparkleDialog.cs:157 +#: ../SparkleShare/SparkleDialog.cs:158 #, csharp-format msgid "Something went wrong while syncing ‘{0}’" msgstr "Alguma coisa deu errado enquanto sincronizava ‘{0}’" -#: ../SparkleShare/SparkleDialog.cs:167 +#: ../SparkleShare/SparkleDialog.cs:168 msgid "Try Again…" msgstr "Tentar novamente…" -#: ../SparkleShare/SparkleDialog.cs:197 +#: ../SparkleShare/SparkleDialog.cs:198 #, csharp-format msgid "Successfully synced folder ‘{0}’" msgstr "Pasta ‘{0}’ sincronizada com sucesso" -#: ../SparkleShare/SparkleDialog.cs:198 +#: ../SparkleShare/SparkleDialog.cs:199 msgid "Now make great stuff happen!" msgstr "Agora faça grandes coisas acontecerem!" -#. Add a button to open the folder where the changed file is -#: ../SparkleShare/SparkleDialog.cs:200 ../SparkleShare/SparkleRepo.cs:319 -#: ../SparkleShare/SparkleWindow.cs:63 +#: ../SparkleShare/SparkleDialog.cs:201 ../SparkleShare/SparkleWindow.cs:62 msgid "Open Folder" msgstr "Abrir Pasta" -#: ../SparkleShare/SparkleHelpers.cs:164 +#: ../SparkleShare/SparkleHelpers.cs:136 #, csharp-format msgid "a second ago" msgid_plural "{0} seconds ago" msgstr[0] "há um segundo" msgstr[1] "há {0} segundos" -#: ../SparkleShare/SparkleHelpers.cs:170 +#: ../SparkleShare/SparkleHelpers.cs:142 #, csharp-format msgid "a minute ago" msgid_plural "about {0} minutes ago" msgstr[0] "há um minuto" msgstr[1] "há quase {0} minutos" -#: ../SparkleShare/SparkleHelpers.cs:176 +#: ../SparkleShare/SparkleHelpers.cs:148 #, csharp-format msgid "about an hour ago" msgid_plural "about {0} hours ago" msgstr[0] "há quase uma hora" msgstr[1] "há quase {0} horas" -#: ../SparkleShare/SparkleHelpers.cs:182 +#: ../SparkleShare/SparkleHelpers.cs:154 #, csharp-format msgid "yesterday" msgid_plural "{0} days ago" msgstr[0] "ontem" msgstr[1] "há {0} dias" -#: ../SparkleShare/SparkleHelpers.cs:188 +#: ../SparkleShare/SparkleHelpers.cs:160 #, csharp-format msgid "a month ago" msgid_plural "{0} months ago" msgstr[0] "há um mês" msgstr[1] "há {0} meses" -#: ../SparkleShare/SparkleHelpers.cs:193 +#: ../SparkleShare/SparkleHelpers.cs:165 #, csharp-format msgid "a year ago" msgid_plural "{0} years ago" msgstr[0] "há um ano" msgstr[1] "há {0} anos" -#: ../SparkleShare/SparkleHelpers.cs:205 -msgid "Hold your ponies!" -msgstr "Segure seus pôneis!" - -#: ../SparkleShare/SparkleHelpers.cs:206 -msgid "" -"SparkleShare is known to be insanely fast with \n" -"pictures of unicorns. Please make sure your internets\n" -"are upgraded to the latest version to avoid problems." -msgstr "" -"SparkleShare é conhecido por ser insanamente rápido com\n" -"imagens de unicórnios. Para evitar problemas, por favor\n" -"verifique se sua internet foi atualizada para a versão\n" -"mais recente." - -#: ../SparkleShare/SparkleShare.cs:88 -msgid "SparkleShare Copyright (C) 2010 Hylke Bons" -msgstr "Diretos Autorais do SparkleShare (C) 2010 Hylke Bons" - -#: ../SparkleShare/SparkleShare.cs:94 -msgid "SparkleShare syncs the ~/SparkleShare folder with remote repositories." -msgstr "SparkleShare sincroniza a pasta ~/SparkleShare com repositórios remotos." - -#: ../SparkleShare/SparkleShare.cs:96 -msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..." -msgstr "Utilização: sparkleshare [start|stop|restart] [OPTION]..." - -#: ../SparkleShare/SparkleShare.cs:97 -msgid "Sync SparkleShare folder with remote repositories." -msgstr "Sincroniza a pasta SparkleShare com repositórios remotos." - -#: ../SparkleShare/SparkleShare.cs:100 -msgid "\t -d, --disable-gui\tDon't show the notification icon." -msgstr "\t -d, --disable-gui\tNão mostra o ícone de notificação." - -#: ../SparkleShare/SparkleStatusIcon.cs:69 -msgid "Error syncing" -msgstr "Erro ao sincronizar" - -#: ../SparkleShare/SparkleStatusIcon.cs:72 -msgid "Everything is up to date" -msgstr "Tudo está atualizado" - -#: ../SparkleShare/SparkleStatusIcon.cs:75 -msgid "Syncing…" -msgstr "Sincronizando…" - -#: ../SparkleShare/SparkleStatusIcon.cs:116 -msgid "Add a Remote Folder…" -msgstr "Adicionar uma Pasta Remota…" - -#: ../SparkleShare/SparkleStatusIcon.cs:124 -msgid "Show Notifications" -msgstr "Mostrar Notificações" - -#: ../SparkleShare/SparkleStatusIcon.cs:142 -msgid "Visit Website" -msgstr "Visitar o Website" - -#: ../SparkleShare/SparkleStatusIcon.cs:159 -msgid "Quit" -msgstr "Sair" - -#: ../SparkleShare/SparkleUI.cs:145 +#: ../SparkleShare/SparkleIntro.cs:72 msgid "Welcome to SparkleShare!" msgstr "Bem vindo ao SparkleShare" -#: ../SparkleShare/SparkleUI.cs:146 -msgid "You don't have any folders set up yet." -msgstr "Você ainda não possui nenhuma pasta configurada." +#: ../SparkleShare/SparkleIntro.cs:78 +msgid "Before we can create a SparkleShare folder on this computer, we need a few bits of information from you." +msgstr "Antes de criarmos uma pasta SparkleShare neste computador, precisamos de algumas informação sobre você;" -#: ../SparkleShare/SparkleUI.cs:149 -msgid "Add a Folder…" -msgstr "Adicionar uma Pasta…" +#: ../SparkleShare/SparkleIntro.cs:90 +msgid "Full Name:" +msgstr "Nome Completo:" + +#: ../SparkleShare/SparkleIntro.cs:106 +msgid "Email:" +msgstr "Email:" + +#: ../SparkleShare/SparkleIntro.cs:115 +msgid "Folder Address:" +msgstr "Endereço da Pasta:" + +#: ../SparkleShare/SparkleIntro.cs:122 +msgid "I'm already subscribed to a folder on a SparkleServer" +msgstr "Eu já tenho uma pasta cadastrada no SparkleShare" + +#: ../SparkleShare/SparkleIntro.cs:157 +msgid "Next" +msgstr "Próximo" + +#: ../SparkleShare/SparkleIntro.cs:168 +msgid "Configuring…" +msgstr "Configurando..." + +#: ../SparkleShare/SparkleIntro.cs:220 +msgid "SparkleShare is ready to go!" +msgstr "SparkleShare está pronto!" + +#: ../SparkleShare/SparkleIntro.cs:226 +msgid "Now you can start accepting invitations from others. Just click on invitations you get by email and we will take care of the rest." +msgstr "Agora você pode aceitar convites. Simplesmente clique nos convites que você recebeu por e-mail e nós tomaremos conta do resto." + +#: ../SparkleShare/SparkleIntro.cs:237 +msgid "Learn how to host your own SparkleServer" +msgstr "Aprenda como hospedar o seu próprio SparkleServer" + +#: ../SparkleShare/SparkleIntro.cs:250 +msgid "Finish" +msgstr "Finalizar" + +#: ../SparkleShare/SparkleShare.cs:87 +msgid "SparkleShare Copyright (C) 2010 Hylke Bons" +msgstr "Diretos Autorais do SparkleShare (C) 2010 Hylke Bons" + +#: ../SparkleShare/SparkleShare.cs:93 +msgid "SparkleShare syncs the ~/SparkleShare folder with remote repositories." +msgstr "SparkleShare sincroniza a pasta ~/SparkleShare com repositórios remotos." + +#: ../SparkleShare/SparkleShare.cs:95 +msgid "Usage: sparkleshare [start|stop|restart] [OPTION]..." +msgstr "Utilização: sparkleshare [start|stop|restart] [OPTION]..." + +#: ../SparkleShare/SparkleShare.cs:96 +msgid "Sync SparkleShare folder with remote repositories." +msgstr "Sincroniza a pasta SparkleShare com repositórios remotos." + +#: ../SparkleShare/SparkleShare.cs:99 +msgid "\t -d, --disable-gui\tDon't show the notification icon." +msgstr "\t -d, --disable-gui\tNão mostra o ícone de notificação." + +#: ../SparkleShare/SparkleStatusIcon.cs:130 +msgid "SparkleShare Folder" +msgstr "Pasta SparkleShare:" + +#: ../SparkleShare/SparkleStatusIcon.cs:163 +msgid "No Shared Folders Yet" +msgstr "Nenhuma Pasta Compartilhada Ainda" + +#: ../SparkleShare/SparkleStatusIcon.cs:171 +msgid "Add Remote Folder…" +msgstr "Adicionar Pasta Remota…" + +#: ../SparkleShare/SparkleStatusIcon.cs:184 +msgid "Show Notifications" +msgstr "Mostrar Notificações" + +#: ../SparkleShare/SparkleStatusIcon.cs:205 +msgid "About" +msgstr "Sobre" + +#: ../SparkleShare/SparkleStatusIcon.cs:222 +msgid "Quit" +msgstr "Sair" + +#: ../SparkleShare/SparkleStatusIcon.cs:271 +msgid "All up to date" +msgstr "Tudo está atualizado" + +#: ../SparkleShare/SparkleStatusIcon.cs:280 +msgid "Syncing…" +msgstr "Sincronizando…" + +#: ../SparkleShare/SparkleUI.cs:247 +msgid "Ouch! Mid-air collision!" +msgstr "Ops! Colisão em pleno ar!" + +#: ../SparkleShare/SparkleUI.cs:248 +msgid "Don't worry, SparkleShare made a copy of each conflicting file." +msgstr "Não se preocupe, SparkleShare fez uma cópia de cada arquivo conflitante." + +#: ../SparkleShare/SparkleUI.cs:334 +msgid "Hold your ponies!" +msgstr "Segure seus pôneis!" + +#: ../SparkleShare/SparkleUI.cs:335 +msgid "SparkleShare is known to be insanely fast with pictures of unicorns. Please make sure your internets are upgraded to the latest version to avoid any problems." +msgstr "SparkleShare é conhecido por ser insanamente rápido com imagens de unicórnios. Para evitar problemas, por favor verifique se sua internet foi atualizada para a versão mais recente." #. TRANSLATORS: {0} is a folder name, and {1} is a server address -#: ../SparkleShare/SparkleWindow.cs:51 +#: ../SparkleShare/SparkleWindow.cs:50 #, csharp-format -msgid "‘{0}’ on {1}" -msgstr "‘{0}’ de {1}" +msgid "Recent Events in ‘{0}’" +msgstr "Eventos Recentes em '{0}'" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:108 msgid "Get Earlier Version" @@ -267,3 +303,24 @@ msgstr "Fazer uma cópia de uma anterior nesta pasta" #: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:122 msgid "Select to get a copy of this version" msgstr "Selecione para obter uma cópia dessa versão" + +#~ msgid "Comparing Revisions of ‘{0}’" +#~ msgstr "Comparando revisões de '{0}'" + +#~ msgid "Current Revision" +#~ msgstr "Revisão Atual" + +#~ msgid "Error syncing" +#~ msgstr "Erro ao sincronizar" + +#~ msgid "Everything is up to date" +#~ msgstr "Tudo está atualizado" + +#~ msgid "Visit Website" +#~ msgstr "Visitar o Website" + +#~ msgid "You don't have any folders set up yet." +#~ msgstr "Você ainda não possui nenhuma pasta configurada." + +#~ msgid "Add a Folder…" +#~ msgstr "Adicionar uma Pasta…"