Merge branch 'master' of git://gitorious.org/sparkleshare/sparkleshare

This commit is contained in:
Alex Hudson 2010-08-02 12:32:50 +01:00
commit 570414c495
33 changed files with 2104 additions and 3478 deletions

View file

@ -4,7 +4,9 @@ Maintainer:
Contributors:
Alex Hudson <home@alexhudson.com>
Andreas Nilsson <andreasn@gnome.org>
Benjamin Podszun <benjamin.podszun@gmail.com>
Bertrand Lorentz <bertrand.lorentz@gmail.com>
Garrett LeSage <garrett@novell.com>
Jakub Steiner <jimmac@novell.com>

View file

@ -1 +1,50 @@
<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProductVersion>8.0.50727</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{3BA434AF-494F-4F5D-9D21-B7BD24FD67AF}</ProjectGuid> <OutputType>Exe</OutputType> <RootNamespace>FriendFace</RootNamespace> <AssemblyName>FriendFace</AssemblyName> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug</OutputPath> <DefineConstants>DEBUG</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>none</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Release</OutputPath> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> </ItemGroup> <ItemGroup> <Compile Include="FriendFace.cs" /> <Compile Include="Gravatar.cs" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> <MonoDevelop> <Properties InternalTargetFrameworkVersion="3.5" xmlns="" /> </MonoDevelop> </ProjectExtensions> </Project>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{3BA434AF-494F-4F5D-9D21-B7BD24FD67AF}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>FriendFace</RootNamespace>
<AssemblyName>FriendFace</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\bin</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\bin</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
<Package>gtk-sharp-2.0</Package>
</Reference>
<Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
<Package>gtk-sharp-2.0</Package>
</Reference>
<Reference Include="Mono.Posix" />
<Reference Include="System" />
</ItemGroup>
<ItemGroup>
<Compile Include="FriendFace.cs" />
<Compile Include="GravatarIconProvider.cs" />
<Compile Include="IconProvider.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<MonoDevelop>
<Properties InternalTargetFrameworkVersion="3.5" />
</MonoDevelop>
</ProjectExtensions>
</Project>

View file

@ -15,7 +15,6 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.using Gtk;
using Gtk;
using Mono.Unix;
using System;
using System.IO;
using System.Net;

View file

@ -17,7 +17,6 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.using Gtk;
using Gtk;
using Mono.Unix;
using System;
using System.IO;

View file

@ -4,7 +4,7 @@ TARGET = library
LINK = $(REF_NOTIFY_SHARP)
SOURCES = \
SOURCES = \
Global.cs \
Notification.cs

View file

@ -14,7 +14,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<OutputPath>..\bin</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@ -22,7 +22,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Release</OutputPath>
<OutputPath>..\bin</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@ -31,11 +31,36 @@
<Compile Include="Notification.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099" />
<Reference Include="NDesk.DBus.GLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099" />
<Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="NDesk.DBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099">
<Package>ndesk-dbus-1.0</Package>
</Reference>
<Reference Include="NDesk.DBus.GLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099">
<Package>ndesk-dbus-glib-1.0</Package>
</Reference>
<Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
<Package>gtk-sharp-2.0</Package>
</Reference>
<Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
<Package>glib-sharp-2.0</Package>
</Reference>
<Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
<Package>gtk-sharp-2.0</Package>
</Reference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<MonoDevelop>
<Properties>
<MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="true" RelativeMakefileName="Makefile.am">
<BuildFilesVar Sync="true" Name="SOURCES" />
<DeployFilesVar />
<ResourcesVar Sync="true" Name="RESOURCES" />
<OthersVar />
<GacRefVar />
<AsmRefVar />
<ProjectRefVar />
</MonoDevelop.Autotools.MakefileInfo>
</Properties>
</MonoDevelop>
</ProjectExtensions>
</Project>

View file

@ -1,36 +0,0 @@
// SparkleShare, an instant update workflow to Git.
// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com>
//
// 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 <http://www.gnu.org/licenses/>.
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;
}
}
}

View file

@ -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));
}

View file

@ -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

View file

@ -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

View file

@ -1,247 +0,0 @@
// SparkleShare, an instant update workflow to Git.
// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com>
//
// 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 <http://www.gnu.org/licenses/>.
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;
}
}
}

View file

@ -0,0 +1,139 @@
// SparkleShare, an instant update workflow to Git.
// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com>
//
// 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 <http://www.gnu.org/licenses/>.
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 ();
}
}
}

View file

@ -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;
}
}
}

View file

@ -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 ("<span size='x-large'><b>" +
Label header = new Label ("<span size='x-large'><b>" +
_("Welcome to SparkleShare!") +
"</b></span>") {
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 ("<b>" + _("Email:") + "</b>") {
@ -108,46 +118,11 @@ namespace SparkleShare {
Xalign = 0
};
ServerEntry = new Entry ("ssh://gitorious.org/sparkleshare") {
Sensitive = false
};
Label server_label = new Label ("<b>" + _("Folder Address:") + "</b>") {
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 ("<span size='x-large'><b>" +
_("Where does your remote folder reside?") +
"</b></span>") {
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 ("<b>" + _("On my own server:") + "</b>");
layout_server.Add (radio_button);
layout_server.Add (ServerEntry);
string github_text = "<b>" + "Github" + "</b>\n" +
"<span fgcolor='" + SecondaryTextColor + "' size='small'>" +
_("Github provides free hosting for Open Source projects, ") +
_("but also has paid accounts for extra space and bandwidth.") +
"</span>";
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 = "<b>" + _("The GNOME Project") + "</b>\n" +
"<span fgcolor='" + SecondaryTextColor + "' size='small'>" +
_("GNOME is an easy to understand interface to your computer.") + " " +
_("Select this option if youre a developer or designer working on GNOME.") +
"</span>";
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 = "<b>" + _("Gitorious") + "</b>\n" +
"<span fgcolor='" + SecondaryTextColor + "' size='small'>" +
_("Gitorious provides a completely Free and Open Source infrastructure ") +
_("for hosting Open Source projects.") +
"</span>";
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 ("<b>" + _("Folder Name:") + "</b>") {
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 ("<span size='x-large'><b>" +
_("Something went wrong…") +
"</b></span>\n") {
UseMarkup = true,
Xalign = 0
};
Label information = new Label ("<span fgcolor='" + SecondaryTextColor + "'>" +
_("Hey, it's an Alpha!") +
"</span>") {
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 ("<span size='x-large'><b>" +
_("Folder successfully retrieved!") +
"</b></span>") {
UseMarkup = true,
Xalign = 0
};
Label information = new Label ("<span fgcolor='" + SecondaryTextColor + "'>" +
_("Buy a lottery ticket!") +
"</span>") {
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 ("<span size='x-large'><b>" +
String.Format (_("Retrieving folder {0}’…"), FolderEntry.Text) +
"</b></span>") {
UseMarkup = true,
Xalign = 0,
Wrap = true
};
Label information = new Label ("<span fgcolor='" + SecondaryTextColor + "'>" +
_("This may take a while.\n") +
_("You sure its not coffee o-clock?" +
"</span>")) {
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 ("<span size='x-large'><b>" +
Label header = new Label ("<span size='x-large'><b>" +
_("SparkleShare is ready to go!") +
"</b></span>") {
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;
}
}
}

View file

@ -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");
}

View file

@ -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 {

View file

@ -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 <http://www.gnu.org/licenses/>.
// along with this program. If not, see <http://www.gnu.org/licenses/>.
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

View file

@ -14,7 +14,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<OutputPath>..\bin</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@ -22,25 +22,28 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Release</OutputPath>
<OutputPath>..\bin</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
<Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
<Package>gtk-sharp-2.0</Package>
</Reference>
<Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
<Package>gtk-sharp-2.0</Package>
</Reference>
<Reference Include="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
<Package>gtk-sharp-2.0</Package>
</Reference>
<Reference Include="System" />
<Reference Include="Mono.Posix" />
<Reference Include="DiffieHellman, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\SharpSSH\lib\DiffieHellman.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="SparkleBubble.cs" />
<Compile Include="SparkleDialog.cs" />
<Compile Include="SparkleFetcher.cs" />
<Compile Include="SparkleIntro.cs" />
<Compile Include="SparkleHelpers.cs" />
<Compile Include="SparklePaths.cs" />
<Compile Include="SparklePlatform.cs" />
@ -50,6 +53,8 @@
<Compile Include="SparkleStatusIcon.cs" />
<Compile Include="SparkleUI.cs" />
<Compile Include="SparkleWindow.cs" />
<Compile Include="SparkleIntro.cs" />
<Compile Include="Defines.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NotifySharp\NotifySharp.csproj">
@ -57,4 +62,19 @@
<Name>NotifySharp</Name>
</ProjectReference>
</ItemGroup>
<ProjectExtensions>
<MonoDevelop>
<Properties>
<MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="true" RelativeMakefileName="Makefile.am">
<BuildFilesVar Sync="true" Name="SOURCES" />
<DeployFilesVar />
<ResourcesVar />
<OthersVar />
<GacRefVar />
<AsmRefVar />
<ProjectRefVar />
</MonoDevelop.Autotools.MakefileInfo>
</Properties>
</MonoDevelop>
</ProjectExtensions>
</Project>

View file

@ -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 ();
}
}

View file

@ -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 ();
};

View file

@ -43,6 +43,8 @@ namespace SparkleShare {
public SparkleUI (bool HideUI)
{
Gtk.Application.Init ();
Repositories = new List <SparkleRepo> ();
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 {

View file

@ -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 \

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 840 KiB

After

Width:  |  Height:  |  Size: 841 KiB

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 910 KiB

After

Width:  |  Height:  |  Size: 866 KiB

345
po/de.po
View file

@ -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 <m.lettner@gmail.com>\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 "<span size='small'><i>Example: "
#~ msgstr "<span size='small'><i>Beispiel: "
#~ msgid "Project.</i></span>"
#~ msgstr "Projekt.</i></span>"
#~ 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 "

View file

@ -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 <chezyann@gmail.com>\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 na 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 redistribuer "
#: ../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 dune 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 daide."
#. 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 lopé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 licô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 navez 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 licô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 navez encore configuré aucun dossier."
#~ msgid "Add a Folder…"
#~ msgstr "Ajouter un dossier…"

300
po/pl.po
View file

@ -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ś <deejay1@srem.org>\n"
"Language-Team: Polish <gnomepl@aviary.pl>\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 "Thats you!"
#~ msgstr "To ty!"

View file

@ -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 <magnun.leno@gmail.com>\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…"